/* ===== 09网络问答 样式 ===== */
:root {
  --primary: #2563eb;
  --primary-dark: #1d4ed8;
  --bg: #f4f6fb;
  --card: #ffffff;
  --text: #1f2937;
  --muted: #6b7280;
  --border: #e5e7eb;
  --border-strong: #9ca3af; /* 用户可操作控件（输入框/按钮）边框加深 */
  --radius: 10px;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
  font-family: "Microsoft YaHei", "PingFang SC", system-ui, sans-serif;
  background: var(--bg);
  color: var(--text);
  line-height: 1.7;
}
a { color: var(--primary); text-decoration: none; }
a:hover { color: var(--primary-dark); }
.container { max-width: 1080px; margin: 0 auto; padding: 0 16px; }
.main { min-height: calc(100vh - 200px); padding: 20px 16px 40px; }

/* 头部 */
.site-header {
  background: #fff;
  border-bottom: 1px solid var(--border);
  position: sticky; top: 0; z-index: 100;
}
.header-inner { display: flex; align-items: center; gap: 24px; height: 68px; }
.logo { font-size: 19px; font-weight: 700; color: var(--text); display: flex; align-items: center; gap: 8px; }
/* 2026-11-08 品牌升级：图形 LOGO「八极节点」（矢量源文件在 assets/brand/）
 * 用户反馈：图标再放大 42→48px；站名下加域名两行排版；头部 60→68px；
 * 域名一行相对站名水平居中（letter-spacing 会在行尾多出空隙，用负 margin 补齐） */
.logo-mark { width: 48px; height: 48px; display: block; flex: 0 0 auto; }
.logo-text { display: flex; flex-direction: column; align-items: center; line-height: 1.15; }
.logo-name { white-space: nowrap; font-size: 21px; }
.logo-dom { white-space: nowrap; font-size: 11px; font-weight: 500; color: var(--muted); letter-spacing: 1.2px; margin: 2px -1.2px 0 0; }
.nav { display: flex; gap: 18px; flex: 1; }
.nav a { color: var(--muted); font-weight: 500; }
.nav a:hover { color: var(--primary); }
.user-box { display: flex; align-items: center; gap: 10px; }
.user-name { color: var(--muted); font-size: 14px; }

/* 按钮 */
.btn {
  display: inline-block; padding: 8px 18px; border-radius: 8px;
  border: 1px solid var(--border-strong); background: #fff; color: var(--text);
  cursor: pointer; font-size: 14px; transition: all .15s;
}
.btn:hover { border-color: var(--primary); color: var(--primary); }
.btn-primary { background: var(--primary); border-color: var(--primary); color: #fff; }
.btn-primary:hover { background: var(--primary-dark); color: #fff; }
.btn-sm { padding: 5px 12px; font-size: 13px; }
.btn-danger { border-color: #fca5a5; color: #dc2626; }
/* 王15：发布/保存与取消按钮统一样式——同尺寸同高度、白底无背景色块，用主题色文字区分主次 */
.btn-publish { background: #fff; border-color: var(--border-strong); color: var(--primary); font-weight: 600; }
.btn-publish:hover { background: #fff; }
/* 王17：发布/取消两颗按钮统一大小高低（均白底无背景色块） */
.pub-row .btn { height: 38px; min-width: 96px; padding: 0 24px; display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; }

/* 王17：编辑器占位提示文字隐藏（placeholder 已置空，此处兜底） */
.w-e-text-placeholder { display: none !important; }

/* 王17：图片菜单"有时候选不了"（未聚焦时带 disabled 类显示🚫光标）——
   已在 JS 捕获阶段自动聚焦解决功能问题，这里去掉禁用视觉，菜单任何时刻可点 */
.w-e-toolbar button.disabled { cursor: pointer !important; }
.w-e-toolbar button.disabled .w-e-toolbar svg, .w-e-toolbar button.disabled svg { opacity: 1; }

/* 王17：网络图片弹窗布局固定——标签在上、输入框独占整行（防止标签内联把输入框挤到右边、地址前面空出一截） */
.w-e-modal label.babel-container { display: block; }
.w-e-modal label.babel-container > span { display: block; margin-bottom: 6px; }
.w-e-modal input[type="text"] { display: block; width: 100%; box-sizing: border-box; }
.w-e-modal .button-container { text-align: right; }
/* 王15：详情页点赞/收藏/编辑/删除四个按钮同高同线 */
.post-actions { align-items: center; }
.post-actions .btn { height: 32px; display: inline-flex; align-items: center; box-sizing: border-box; }

/* 卡片 */
.card {
  background: var(--card); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 20px; margin-bottom: 16px;
}
.card-title { font-size: 17px; font-weight: 700; margin-bottom: 14px; }

/* 板块入口 */
.cat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; margin-bottom: 20px; }
.cat-item {
  background: #fff; border: 1px solid var(--border); border-radius: var(--radius);
  padding: 14px; text-align: center; color: var(--text); transition: all .15s;
}
.cat-item:hover { border-color: var(--primary); transform: translateY(-2px); color: var(--text); }
.cat-item .icon { font-size: 24px; }
.cat-item .name { font-weight: 600; margin-top: 4px; }
.cat-item.active { border-color: var(--primary); background: #eff6ff; }
.cat-item.active .name { color: var(--primary); }

/* ===== 2026-11-04 第5批：首页栏目缩小、与搜索同行（横向紧凑卡片） ===== */
.cat-row .cat-grid {
  flex: 1; margin-bottom: 0; min-width: 0;
  display: flex; flex-wrap: nowrap; gap: 8px;
}
.cat-row .cat-item {
  flex: 0 0 auto;
  display: flex; align-items: center; gap: 7px;
  padding: 9px 16px; white-space: nowrap;
}
.cat-row .cat-item .icon { font-size: 17px; line-height: 1; }
.cat-row .cat-item .name { font-weight: 600; margin-top: 0; font-size: 14px; }
.cat-search { flex-shrink: 0; }
.cat-search input[type="text"] { width: 170px; }
/* 2026-11-05 下午：搜索框并入筛选行右侧，与板块 chips 同行 */
.pi-filter-row .cat-search { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.pi-filter-row .cat-search select { width: auto; padding: 8px 10px; }
.pi-filter-row .cat-search input[type="text"] { width: 200px; }

/* ===== 2026-11-04 第5批：列表筛选标签 + 表头行 ===== */
.list-tabs { display: flex; gap: 8px; padding: 4px 0 12px; border-bottom: 1px solid var(--border); margin-bottom: 2px; }
.ltab {
  padding: 6px 16px; border-radius: 999px; border: 1px solid var(--border);
  background: #fff; font-size: 14px; color: var(--text); transition: all .15s;
}
.ltab:hover { border-color: var(--primary); color: var(--primary); }
.ltab.on { background: var(--primary); border-color: var(--primary); color: #fff; }
.pi-head-row { padding: 12px 4px 8px; border-bottom: 1px solid var(--border); }
.pi-head-row .pi-h { font-weight: 600; color: var(--muted); }

/* 帖子列表 */
.post-item {
  display: flex; gap: 14px; padding: 16px 4px;
  border-bottom: 1px solid var(--border);
}
.post-item:last-child { border-bottom: none; }
.post-item .tag {
  flex-shrink: 0; align-self: flex-start; font-size: 12px;
  background: #eff6ff; color: var(--primary); border-radius: 6px; padding: 2px 8px;
}
/* 2026-11-12：列表左侧标签列（分类标签 + 所属程序名称） */
.tagcell { flex-shrink: 0; align-self: flex-start; display: flex; flex-direction: column; align-items: flex-start; gap: 5px; max-width: 96px; min-width: 0; }
.tagcell .tag { align-self: flex-start; }
.tag-prog { font-size: 11.5px; color: var(--muted); line-height: 1.25; word-break: break-all; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.tag-recommend { background: #fef3c7 !important; color: #b45309 !important; }
/* 第9批：标题缩小且只允许显示一行（超出省略号） */
.post-item h3 { font-size: 15px; font-weight: 400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.post-item h3 a { color: var(--text); }
.post-item h3 a:hover { color: var(--primary); }
.post-meta { font-size: 13px; color: var(--muted); margin-top: 4px; }
.post-stats { flex-shrink: 0; text-align: center; color: var(--muted); font-size: 13px; margin-left: auto; }
.post-stats b { display: block; font-size: 17px; color: var(--text); }

/* 王18：内容区标题行 + 导入 Word 文档按钮 */
.content-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 6px; }
.content-head label { margin-bottom: 0 !important; }
.docx-import { display: flex; align-items: center; gap: 10px; }
.docx-import .btn { padding: 5px 12px; font-size: 13px; }
.docx-tip { font-size: 12px; color: var(--muted); }
.docx-tip.ok { color: #059669; }

/* 表单 */
.form-group { margin-bottom: 16px; }
.form-group label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }
.form-group .tip { font-weight: 400; color: var(--muted); font-size: 12px; }
input[type=text], input[type=password], input[type=tel], select, textarea {
  width: 100%; padding: 9px 12px; border: 1px solid var(--border-strong);
  border-radius: 8px; font-size: 14px; font-family: inherit; background: #fff;
}
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--primary); }
input::placeholder, textarea::placeholder { color: #9aa1ac; }
.form-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }
.form-actions { margin-top: 20px; }

/* 编辑器 */
.editor-toolbar { border: 1px solid var(--border); border-bottom: none; border-radius: 8px 8px 0 0; background: #fafafa; z-index: 1; }
.editor-holder { border: 1px solid var(--border); border-radius: 0 0 8px 8px; z-index: 1; }

/* 提问内容展示 */
.post-content img { max-width: 100%; height: auto; border-radius: 8px; margin: 8px 0; }
.post-content p { margin: 8px 0; }
.post-content table { border-collapse: collapse; margin: 8px 0; }
.post-content table td, .post-content table th { border: 1px solid var(--border); padding: 6px 10px; }
.post-content blockquote { border-left: 3px solid var(--border); padding-left: 12px; color: var(--muted); }
.post-content pre { background: #f3f4f6; padding: 12px; border-radius: 8px; overflow-x: auto; }
.post-content ul, .post-content ol { padding-left: 24px; }

/* 联系方式 */
.contact-box { background: #f0f9ff; border: 1px solid #bae6fd; border-radius: var(--radius); padding: 14px 18px; margin: 14px 0; font-size: 14px; }
.contact-box b { color: #0369a1; }

/* 程序推荐 */
/* 王12 第2条：程序名称框缩小（紧凑单行，不再大块占位） */
.program-box { background: #fffbeb; border: 1px solid #fde68a; border-radius: var(--radius); padding: 5px 12px; margin: 10px 0; font-size: 13px; line-height: 1.9; }
.program-box dt { display: inline; font-weight: 600; color: #92400e; margin: 0 8px 0 0; }
.program-box dd { display: inline; margin: 0 18px 0 0; color: var(--text); }

/* 回复 */
.reply-item { padding: 14px 0; border-bottom: 1px solid var(--border); display: flex; gap: 12px; }
.reply-floor { color: var(--muted); font-size: 13px; flex-shrink: 0; }
.avatar {
  width: 38px; height: 38px; border-radius: 50%; flex-shrink: 0;
  background: linear-gradient(135deg, #60a5fa, #a78bfa);
  color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700;
}

/* 提示框 */
.alert { padding: 12px 16px; border-radius: 8px; margin-bottom: 16px; font-size: 14px; }
.alert-success { background: #ecfdf5; border: 1px solid #a7f3d0; color: #065f46; }
.alert-error { background: #fef2f2; border: 1px solid #fecaca; color: #991b1b; }

/* 分页（第9批：靠右显示） */
.pagination { display: flex; gap: 8px; justify-content: flex-end; margin-top: 20px; flex-wrap: wrap; }
.pagination a, .pagination span {
  padding: 6px 12px; border: 1px solid var(--border); border-radius: 6px;
  background: #fff; font-size: 14px; color: var(--text);
}
.pagination .current { background: var(--primary); color: #fff; border-color: var(--primary); }

/* 页脚 */
.site-footer { background: #fff; border-top: 1px solid var(--border); padding: 20px 0; text-align: center; color: var(--muted); font-size: 13px; margin-top: 28px; }
.site-footer a { color: var(--muted); text-decoration: underline; }
.site-footer a:hover { color: var(--primary); }

/* 搜索栏 */
.search-bar { display: flex; gap: 10px; margin-bottom: 16px; }
.search-bar input { flex: 1; }

/* ===== 管理后台 ===== */
.nav-admin { color: #7c3aed !important; font-weight: 600; }
.user-name { color: var(--muted); font-size: 14px; }
.user-name:hover { color: var(--primary); }

/* 管理导航 */
.admin-bar { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-bottom: 18px; }
.admin-bar a {
  padding: 8px 16px; border-radius: 8px; background: #fff;
  border: 1px solid var(--border); color: var(--text); font-size: 14px; font-weight: 500;
}
.admin-bar a:hover { border-color: var(--primary); color: var(--primary); }
.admin-bar a.active { background: var(--primary); border-color: var(--primary); color: #fff; }
.admin-bar a.admin-post { background: #059669; border-color: #059669; color: #fff; }
.admin-bar a.admin-post:hover { background: #047857; border-color: #047857; color: #fff; }
.admin-bar a.admin-back { margin-left: auto; color: var(--muted); }

/* 统计卡片 */
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px; margin-bottom: 18px; }
.stat-card { background: #fff; border: 1px solid var(--border); border-radius: var(--radius); padding: 14px 16px; }
.stat-card .num { font-size: 24px; font-weight: 700; color: var(--primary); line-height: 1.3; }
.stat-card .lbl { font-size: 13px; color: var(--muted); }

/* 数据表格 */
.table-wrap { overflow-x: auto; }
table.data { width: 100%; border-collapse: collapse; font-size: 14px; }
table.data th, table.data td { padding: 10px 12px; border-bottom: 1px solid var(--border); text-align: left; vertical-align: middle; }
table.data th { background: #f9fafb; font-weight: 600; color: var(--muted); font-size: 13px; white-space: nowrap; }
table.data tbody tr:hover td { background: #fafbff; }
table.data td.actions { white-space: nowrap; }
table.data td.actions .btn { margin: 1px 0; }
/* 2026-11-05 下午：后台列表改为「标题整行 + 下方信息列」两行式布局（标题不再是单独一列） */
.al-wrap { border: 1px solid var(--border); border-radius: var(--radius); overflow-x: auto; background: #fff; }
.al-row { padding: 10px 14px; border-bottom: 1px solid var(--border); }
.al-row:last-child { border-bottom: none; }
.al-head, .al-meta {
  display: grid;
  grid-template-columns: 52px 96px 140px 52px 52px 110px minmax(320px, auto);
  gap: 8px; align-items: center;
  font-size: 13px;
}
.al-head { background: #f9fafb; font-weight: 600; color: var(--muted); padding: 10px 14px; white-space: nowrap; }
.al-title { font-size: 14px; margin-bottom: 6px; line-height: 1.5; word-break: break-all; }
.al-title a { color: var(--primary); text-decoration: none; }
.al-title a:hover { text-decoration: underline; }
.al-meta .c-author { line-height: 1.4; }
.al-meta .c-time, .al-head .c-time { white-space: nowrap; }
.c-id { color: var(--muted); }
.c-act.actions { white-space: nowrap; }
.c-act.actions .btn { margin: 1px 0; }
@media (max-width: 900px) {
  .al-head, .al-meta { grid-template-columns: 52px 90px 120px 52px 52px 100px minmax(260px, auto); }
}

/* 徽标 */
.badge { display: inline-block; font-size: 11px; line-height: 1.6; padding: 1px 7px; border-radius: 6px; margin-right: 4px; vertical-align: middle; font-weight: 600; }
.badge-pin { background: #fee2e2; color: #b91c1c; }
.badge-feature { background: #fef3c7; color: #b45309; }
.badge-ban { background: #e5e7eb; color: #374151; }
.badge-admin { background: #ede9fe; color: #6d28d9; }
.badge-favme { background: #fef9c3; color: #a16207; border: 1px solid #fde68a; }
.badge-announce { background: #ffe4e6; color: #be123c; }

/* 点赞 / 收藏按钮激活态 */
.btn-liked { background: #fee2e2; border-color: #fca5a5; color: #dc2626; }
.btn-faved { background: #fef9c3; border-color: #fde047; color: #a16207; }

/* 小按钮 */
.btn-xs { padding: 3px 9px; font-size: 12px; border-radius: 6px; }
.btn:disabled { opacity: .45; cursor: not-allowed; }

/* 管理员操作条 */
.admin-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }

/* 公告条 */
.notice-bar {
  background: #fffbeb; border: 1px solid #fde68a; border-radius: var(--radius);
  padding: 12px 16px; margin-bottom: 16px; color: #92400e; font-size: 14px;
}

@media (max-width: 640px) {
  .form-row { grid-template-columns: 1fr; }
  .header-inner { gap: 10px; }
  .nav { gap: 10px; }
}

/* ===== 消息提醒（右上角铃铛） ===== */
.nav-bell {
  position: relative; font-size: 20px; line-height: 1;
  display: inline-flex; align-items: center; padding: 4px;
}
.user-box { flex-wrap: nowrap; white-space: nowrap; }
.user-name { display: inline-flex !important; align-items: center; gap: 6px; white-space: nowrap; max-width: 260px; overflow: hidden; }
.nav-avatar {
  width: 26px; height: 26px; font-size: 13px; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%; color: #fff; font-weight: 700;
  background: linear-gradient(135deg, #60a5fa, #a78bfa);
}
.bell-badge {
  position: absolute; top: -6px; right: -8px;
  background: #ef4444; color: #fff; font-size: 11px; font-weight: 700;
  min-width: 18px; height: 18px; line-height: 18px; text-align: center;
  border-radius: 9px; padding: 0 4px;
}
.nav-avatar { width: 26px; height: 26px; font-size: 13px; }
.nav-avatar-img, .avatar-img {
  width: 38px; height: 38px; border-radius: 50%; object-fit: cover; flex-shrink: 0;
  border: 1px solid var(--border); display: block;
}
.nav-avatar-img { width: 26px; height: 26px; }
.pts-badge {
  font-size: 11px; color: #b45309; background: #fef3c7;
  border-radius: 6px; padding: 1px 6px; margin-left: 4px; font-weight: 600;
}
.user-name { display: inline-flex; align-items: center; gap: 6px; }

/* 消息列表 */
.msg-item {
  display: flex; gap: 12px; align-items: flex-start;
  padding: 14px 4px; border-bottom: 1px solid var(--border);
}
.msg-item:last-child { border-bottom: none; }
.msg-item.unread { background: #eff6ff; border-radius: 8px; padding-left: 10px; padding-right: 10px; }
.msg-item .dot { width: 8px; height: 8px; border-radius: 50%; background: #ef4444; margin-top: 10px; flex-shrink: 0; }
.msg-item .dot.read { background: #d1d5db; }
.msg-content { flex: 1; font-size: 14px; }
.msg-time { font-size: 12px; color: var(--muted); margin-top: 2px; }

/* ===== 板块卡片行 + 搜索（2026-11-04） ===== */
.cat-row { display: flex; gap: 14px; align-items: center; margin-bottom: 16px; flex-wrap: nowrap; }
.cat-row .cat-grid { flex: 1; margin-bottom: 0; min-width: 0; }
.cat-search {
  display: flex; gap: 8px; align-items: center; flex-wrap: wrap;
  /* 2026-11-06 王：去掉搜索组最外层的边框和底色 */
  align-self: center;
}
.cat-search select { width: auto; padding: 8px 10px; }
.cat-search input[type="text"] { width: 170px; }

/* ===== 发布页：程序标签点选（2026-11-04） ===== */
.pick-chips { display: flex; flex-wrap: wrap; gap: 10px; }
.pick-chip {
  padding: 8px 18px; border: 1.5px solid var(--border); border-radius: 999px;
  background: #fff; font-size: 14px; cursor: pointer; transition: all .15s;
}
.pick-chip:hover { border-color: #93c5fd; background: #eff6ff; }
.pick-chip.on { border-color: #2563eb; background: #2563eb; color: #fff; font-weight: 600; }

/* ===== 发布页：带图标输入框（2026-11-04） ===== */
.input-icon { display: flex; align-items: center; gap: 8px; }
.input-icon .ico { font-size: 18px; flex-shrink: 0; }
.input-icon input { flex: 1; }

/* ===== 帖子页：回复操作按钮（点赞/回复/举报，2026-11-04） ===== */
.reply-actions { display: flex; gap: 14px; align-items: center; margin-top: 8px; flex-wrap: wrap; }
.link-btn {
  background: none; border: none; padding: 0; font-size: 13px; color: var(--muted);
  cursor: pointer; text-decoration: none; display: inline-flex; align-items: center; gap: 3px;
}
.link-btn:hover { color: #2563eb; }
.link-btn.liked { color: #ef4444; font-weight: 600; }
.link-btn.danger:hover { color: #dc2626; }

/* ===== 个人中心：数据表格（2026-11-04） ===== */
.data-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.data-table th {
  text-align: center; font-weight: 600; color: var(--muted); font-size: 13px;
  padding: 10px 8px; border-bottom: 2px solid var(--border); white-space: nowrap;
}
.data-table td {
  text-align: center; padding: 10px 8px; border-bottom: 1px solid var(--border); vertical-align: top;
}
.data-table tr:hover td { background: #f9fafb; }
.my-reply-quote { margin-top: 4px; font-size: 12.5px; color: #9ca3af; font-style: italic; }

/* ===== 首页：用户搜索结果（2026-11-04） ===== */
.user-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.user-card {
  display: flex; gap: 12px; align-items: center; padding: 14px;
  border: 1px solid var(--border); border-radius: 12px;
}
.user-card-name { display: flex; align-items: center; gap: 6px; margin-bottom: 4px; }
.user-card-meta { font-size: 12.5px; color: var(--muted); line-height: 1.7; }
.avatar-lg, .avatar-lg-img { width: 52px; height: 52px; border-radius: 50%; font-size: 22px; flex-shrink: 0; }
.avatar-lg { display: inline-flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #60a5fa, #a78bfa); color: #fff; font-weight: 700; }
.avatar-lg-img { object-fit: cover; }

@media (max-width: 800px) {
  .cat-row { flex-direction: column; flex-wrap: wrap; align-items: stretch; }
  .cat-row .cat-grid { flex-wrap: wrap; }
  .cat-search { width: 100%; }
  .cat-search input[type="text"] { flex: 1; width: auto; }
}

/* ===== 右上角：用户名 / 个人中心 / 提醒下拉 ===== */
.user-box { align-items: center; }
.user-box > a { white-space: nowrap; font-size: 14px; color: var(--muted); }
.user-box > a:hover { color: var(--primary); }
.user-box .btn { color: var(--text); }
/* 2026-11-08：上面这条老规则特异性高于 .btn-primary，导致头部「注册」蓝底按钮文字不是白色，补回白字 */
.user-box .btn-primary, .user-box .btn-primary:hover { color: #fff; }
.nav-notice { position: relative; }
.nav-notice summary {
  list-style: none; cursor: pointer; font-size: 14px; color: var(--muted);
  display: inline-flex; align-items: center; gap: 2px; padding: 4px 6px; border-radius: 6px;
}
.nav-notice summary::-webkit-details-marker { display: none; }
.nav-notice summary:hover { color: var(--primary); background: #f3f4f6; }
.nav-notice[open] summary { color: var(--primary); background: #eff6ff; }
.notice-dropdown {
  position: absolute; right: 0; top: calc(100% + 8px); z-index: 300;
  width: 320px; background: #fff; border: 1px solid var(--border); border-radius: 10px;
  box-shadow: 0 10px 30px rgba(15, 23, 42, .12); padding: 8px 12px;
}
.notice-dropdown::before {
  content: ''; position: absolute; top: -6px; right: 18px;
  width: 10px; height: 10px; background: #fff; border-left: 1px solid var(--border);
  border-top: 1px solid var(--border); transform: rotate(45deg);
}
.notice-dropdown .nd-item {
  display: block; padding: 9px 6px; font-size: 13px; color: var(--text);
  border-bottom: 1px solid var(--border); line-height: 1.5;
}
.notice-dropdown .nd-item:last-of-type { border-bottom: none; }
.notice-dropdown .nd-item.unread { background: #eff6ff; border-radius: 6px; }
.notice-dropdown .nd-time { color: var(--muted); font-size: 12px; }
.notice-dropdown .nd-all { display: block; text-align: center; padding: 8px 0 2px; font-size: 13px; }
.notice-empty { color: var(--muted); text-align: center; padding: 14px 0; font-size: 13px; }

/* ===== 个人中心（左侧菜单 + 内容面板） ===== */
.pc-wrap { display: flex; gap: 16px; align-items: flex-start; margin-top: 6px; }
.pc-side {
  width: 190px; flex-shrink: 0; background: #fff;
  border: 1px solid var(--border); border-radius: var(--radius); padding: 10px 0;
}
.pc-side .group {
  display: flex; align-items: center; gap: 6px;
  font-weight: 700; font-size: 14px; color: var(--text);
  padding: 10px 16px 6px;
}
.pc-side a { display: block; padding: 8px 16px 8px 30px; font-size: 14px; color: var(--muted); }
.pc-side a:hover { color: var(--primary); background: #f8fafc; }
.pc-side a.active { background: var(--primary); color: #fff; font-weight: 600; }
.pc-side a.badge-line::after {
  content: attr(data-count); float: right; font-size: 11px; color: #ef4444; font-weight: 700;
}
.pc-main { flex: 1; min-width: 0; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); padding: 20px; }
.pc-head { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; margin-bottom: 18px; }
.pc-head .pc-avatar, .pc-head .pc-avatar-img { width: 56px; height: 56px; font-size: 22px; border-radius: 50%; object-fit: cover; border: 1px solid var(--border); flex-shrink: 0; }
/* avatar_html() 生成的是 <img class="pc-avatar-img">，必须有独立选择器，否则 SVG 无尺寸撑满容器（王11 第1条） */
.pc-title { font-size: 18px; font-weight: 700; }
.pc-sub { font-size: 13px; color: var(--muted); margin-top: 2px; }
.pc-section { border-top: 1px dashed var(--border); padding-top: 14px; margin-top: 16px; }
.pc-section h3 { font-size: 15px; margin-bottom: 10px; }
.pc-list-item { display: flex; gap: 12px; align-items: center; padding: 10px 2px; border-bottom: 1px solid var(--border); }
.pc-list-item:last-child { border-bottom: none; }
.pc-list-item .t { flex: 1; min-width: 0; font-size: 14px; }
.pc-list-item .m { font-size: 12px; color: var(--muted); margin-top: 2px; }
.pc-list-item .num { font-size: 13px; color: var(--muted); white-space: nowrap; }
.reply-sign { font-size: 12px; color: var(--muted); margin-top: 6px; padding-top: 6px; border-top: 1px dashed var(--border); }
.post-sign { font-size: 13px; color: var(--muted); margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--border); }
/* 签名单行显示：多条用 | 分隔，不换行 */
.post-sign, .reply-sign { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.post-sign a, .reply-sign a { margin: 0 2px; }
.sign-sep { margin: 0 8px; color: var(--border); }

/* ===== 2026-11-04 第5批：联系方式实时校验 ===== */
.contact-errs { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 4px; min-height: 16px; }
.field-err { color: #dc2626; font-size: 12px; }
.input-icon input.input-invalid { border-color: #dc2626 !important; background: #fef2f2; }

@media (max-width: 760px) {
  .pc-wrap { flex-direction: column; }
  .pc-side { width: 100%; }
}

/* ===== 2026-11-04 第4批：列表右侧列 ===== */
.pi-main { flex: 1; min-width: 0; }
.pi-cols { display: flex; gap: 26px; flex-shrink: 0; margin-left: auto; padding-right: 8px; align-self: center; }
.pi-col { display: flex; flex-direction: column; align-items: center; gap: 1px; font-size: 12px; color: var(--muted); min-width: 68px; text-align: center; }
.pi-col b { color: var(--text); }
.pi-h { font-size: 11px; color: #9ca3af; white-space: nowrap; }
.pi-sub { font-size: 11px; color: var(--muted); white-space: nowrap; }
/* 程序名标签（显示在帖子标题前） */
.pi-program {
  display: inline-block; font-size: 12px; font-weight: 600; color: #1d4ed8;
  background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 6px;
  padding: 1px 8px; margin-right: 8px; vertical-align: 1px; white-space: nowrap;
}
/* 筛选行里的程序名标签 */
.ltab-div { width: 1px; align-self: stretch; background: var(--border); margin: 0 6px; }
.ltab-prog { color: #1d4ed8; border-color: #bfdbfe; background: #f8fafc; }
.ltab-prog.on { color: #fff; border-color: var(--primary); background: var(--primary); }
@media (max-width: 860px) {
  .pi-cols .pi-col:nth-child(3) { display: none; }
}
@media (max-width: 640px) {
  .pi-cols { display: none; }
  .post-meta { display: block; }
}

/* 2026-11-05 下午：程序首页图片（列表缩略图） */
.pi-cover { flex-shrink: 0; align-self: center; }
/* 王15：缩略图调小；固定尺寸同时防止图片加载时高度塌陷造成列表「断层」 */
.pi-cover img { width: 54px; height: 40px; object-fit: cover; border-radius: 6px; border: 1px solid var(--border); display: block; background: var(--border); }

@media (max-width: 640px) { .pi-cover img { width: 44px; height: 33px; } }

/* ===== 2026-11-04 第4批：分页补充 ===== */
.pagination .pg-total { border: none; background: none; color: var(--muted); font-size: 13px; align-self: center; }
.pagination .dots { border: none; background: none; }
/* 敖曼第2条：跳转到某页 */
.page-jump { display: inline-flex; align-items: center; gap: 6px; border: none; background: none; padding: 6px 10px; font-size: 13px; color: var(--muted); }
.page-jump input { width: 56px; padding: 5px 8px; text-align: center; font-size: 13px; border: 1px solid var(--border); border-radius: 8px; }
.page-jump button { padding: 5px 12px; font-size: 13px; border: 1px solid var(--border); border-radius: 8px; background: var(--card); cursor: pointer; }
.page-jump button:hover { border-color: var(--primary); color: var(--primary); }
/* 王11：首页板块按钮并入筛选行（与最新/置顶/精华同样椭圆框） */
.ltab-cat .icon { font-size: 13px; margin-right: 2px; }

/* 2026-11-05：发帖/编辑页显示当前所选板块描述 */
.cat-desc-tip { font-size: 12.5px; color: var(--muted); margin-top: 8px; line-height: 1.5; }

/* ===== 2026-11-04 第4批：发布页 ===== */
.fg-narrow { max-width: 480px; }
/* 2026-11-05：标题字数计数（最多 60 字） */
.title-count { text-align: right; font-size: 12px; color: var(--muted); margin-top: 4px; line-height: 1.2; }
.title-count.over { color: #b45309; font-weight: 600; }
.contact-row { grid-template-columns: repeat(3, 230px); }
@media (max-width: 860px) { .contact-row { grid-template-columns: 1fr; } }
.ico-svg { width: 22px; height: 22px; flex-shrink: 0; }
.contact-tip {
  margin-top: 10px; font-size: 12.5px; color: #92400e;
  background: #fffbeb; border: 1px solid #fde68a; border-radius: 8px;
  padding: 6px 12px; display: inline-block;
}
.pub-row { display: flex; align-items: flex-end; gap: 14px; flex-wrap: wrap; }
.pub-row .captcha-compact { margin: 0; text-align: left; }
.pub-row .captcha-compact input { width: 140px; }

/* ===== 2026-11-04 第4批：回复引用（楼中楼） ===== */
.r-quote {
  display: block; background: #f6f8fa; border: 1px solid var(--border);
  border-left: 3px solid #93c5fd; border-radius: 8px;
  padding: 7px 12px; margin: 6px 0; font-size: 13px; color: var(--muted);
}
.r-quote:hover { border-color: #93c5fd; background: #eff6ff; text-decoration: none; }
.r-quote .rq-meta { display: block; color: #2563eb; font-size: 12px; margin-bottom: 2px; }
.r-quote .rq-meta b { font-weight: 700; }
.r-quote .rq-body { display: block; color: #4b5563; }
.r-nick { color: var(--text); font-weight: 700; }
.badge-louzhu { background: #dbeafe; color: #1d4ed8; }

/* ===== 2026-11-04 第7批：举报删除提示 ===== */
/* 第8批：不要外框、不要红，普通字体样式 */
.reply-deleted { margin: 6px 0; color: var(--muted); font-size: 13px; }
.reply-deleted a { color: var(--primary); font-size: 12px; margin-left: 6px; }

/* ===== 2026-11-04 第8批：内容页两列布局 + 最新发布侧栏 ===== */
.pv-cols { display: flex; gap: 18px; align-items: flex-start; }
.pv-main { flex: 1; min-width: 0; }
.pv-side { width: 300px; flex-shrink: 0; position: sticky; top: 74px; }
.pv-latest .card-title { border-bottom: 1px solid var(--border); padding-bottom: 8px; }
.latest-list { list-style: none; margin: 0; padding: 0; }
.latest-list li {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 9px 2px; border-bottom: 1px dashed var(--border); font-size: 13px;
}
.latest-list li:last-child { border-bottom: none; }
.latest-list a {
  flex: 1; min-width: 0; color: var(--text); line-height: 1.5;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.latest-list a:hover { color: var(--primary); }
.latest-time { flex-shrink: 0; color: #9ca3af; font-size: 12px; white-space: nowrap; margin-top: 2px; }
@media (max-width: 960px) {
  .pv-cols { flex-direction: column; }
  .pv-side { width: 100%; position: static; }
}

/* ===== 2026-11-04 第4批：顶栏提醒直跳 ===== */
.nav-remind {
  position: relative; display: inline-flex; align-items: center; gap: 2px;
  font-size: 14px; color: var(--muted); padding: 4px 6px; border-radius: 6px;
}
.nav-remind:hover { color: var(--primary); background: #f3f4f6; }
.nav-remind .bell-badge { top: -5px; right: -6px; }

/* ===== 2026-11-04 第4批：签名列表（个人中心） ===== */
.sign-item {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 10px 0; border-bottom: 1px dashed var(--border);
}
.sign-item:last-of-type { border-bottom: none; }
.sign-text { font-size: 14px; color: var(--text); }

/* ===== 2026-11-12：密码显示/隐藏切换（统一所有浏览器，隐藏 Edge 原生小眼睛） ===== */
input[type="password"]::-ms-reveal, input[type="password"]::-ms-clear { display: none; }
.pwd-wrap { position: relative; }
.pwd-wrap input[type="password"], .pwd-wrap input[type="text"] { padding-right: 42px; }
.pwd-eye { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); border: 0; background: transparent; cursor: pointer; padding: 5px; line-height: 0; color: var(--muted); }
.pwd-eye:hover { color: var(--text); }

/* ===== 2026-11-04 第4批：公开个人资料页 ===== */
.profile-wrap { display: flex; gap: 16px; align-items: flex-start; }
.profile-main { flex: 1; min-width: 0; }
.profile-side {
  width: 250px; flex-shrink: 0; text-align: center; padding: 24px 18px;
}
.profile-avatar, .profile-avatar-img {
  width: 88px; height: 88px; border-radius: 50%; font-size: 34px;
  border: 1px solid var(--border); object-fit: cover;
}
.profile-avatar {
  display: inline-flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; background: linear-gradient(135deg, #60a5fa, #a78bfa);
}
.profile-side-name { font-size: 17px; font-weight: 700; margin-top: 12px; }
.profile-side-meta { font-size: 13px; color: var(--muted); margin-top: 6px; text-align: left; }
.profile-stats {
  display: flex; gap: 10px; margin-top: 16px; padding: 12px 0;
  border-top: 1px dashed var(--border); border-bottom: 1px dashed var(--border);
}
.pstat { flex: 1; text-align: center; }
.pstat b { display: block; font-size: 20px; color: var(--primary); }
.pstat span { font-size: 12.5px; color: var(--muted); }
@media (max-width: 860px) {
  .profile-wrap { flex-direction: column; }
  .profile-side { width: 100%; }
}

/* ===== 2026-11-04 第4批：首页用户卡片可点击 ===== */
a.user-card { color: var(--text); text-decoration: none; }
a.user-card:hover { border-color: var(--primary); }
a.user-card b { color: var(--text); }

/* ===== 2026-11-04 第9批：位置路径（面包屑） ===== */
.crumbs {
  display: flex; align-items: center; gap: 7px; flex-wrap: wrap;
  font-size: 13px; color: #9ca3af; margin-bottom: 12px; line-height: 1.6;
}
.crumbs a { color: #9ca3af; }
.crumbs a:hover { color: var(--primary); }
.crumbs .sep { color: #d1d5db; }
.crumbs .cur { color: var(--text); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ===== 2026-11-05 王12：筛选行拆两组 ===== */
/* 第一行：板块 + 程序筛选 chips */
.pi-filter-row { display: flex; align-items: center; flex-wrap: wrap; padding: 10px 4px 8px; border-bottom: 1px solid var(--border); }
.pi-filter-row .list-tabs { flex: 1; min-width: 0; border-bottom: none; padding: 0; margin: 0; flex-wrap: wrap; }
/* 2026-11-08：首页板块说明行（选中板块显示简介，全部显示站点副标题）；用户反馈太靠上→与标签行拉开间距 */
.cat-hint { font-size: 12.5px; color: var(--muted); padding: 8px 2px 14px; }
.cat-hint b { color: var(--text); font-weight: 500; }
/* 第二行（表头行）：排序标签 + 列标题；敖曼(2)第1条：列标题往下挪一点，贴近列表内容 */
.pi-head-row { align-items: flex-end; padding: 8px 4px 7px; }
.pi-head-row .list-tabs {
  flex: 1; min-width: 0; border-bottom: none;
  padding: 0; margin: 0; flex-wrap: wrap;
}
.pi-head-row .pi-cols { padding-right: 0; padding-bottom: 2px; }

/* 王19：标题字数并入标签括号「标题（N/60）」，超限变色 */
#titleCount.over { color: #b45309; font-weight: 600; }

/* ===== 王（2026-11-06）：右侧「向上/向下」悬浮滑动按钮 ===== */
.scroll-btns {
  position: fixed; right: 18px; bottom: 64px; z-index: 90;
  display: flex; flex-direction: column; gap: 8px;
}
.scroll-btns .sbtn {
  width: 40px; height: 40px; border-radius: 50%;
  border: 1px solid var(--border); background: #fff; color: var(--text);
  font-size: 18px; font-weight: 700; line-height: 1; cursor: pointer;
  box-shadow: 0 2px 8px rgba(31, 41, 55, .12);
  display: flex; align-items: center; justify-content: center;
}
.scroll-btns .sbtn:hover { border-color: var(--primary); color: var(--primary); }
@media (max-width: 640px) {
  .scroll-btns { right: 10px; bottom: 48px; }
  .scroll-btns .sbtn { width: 34px; height: 34px; font-size: 15px; }
}

/* ===== 2026-11-12 SEO / GEO：无障碍与语义化辅助 ===== */
/* 每页保留一个 h1（利于搜索引擎与 AI 理解页面主题），视觉上隐藏但读屏与爬虫可读 */
.sr-only {
  position: absolute !important; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

/* ===== 2026-11-12 最佳答案：徽章、卡片高亮、按钮激活态 ===== */
.badge-best { background: #dcfce7; color: #15803d; }
.reply-item.best {
  background: rgba(22, 163, 74, 0.05);
  border-left: 3px solid #16a34a;
  border-radius: 8px;
  padding-left: 12px !important;
}
.best-btn-on { color: #15803d; font-weight: 600; }
