/* 登录网站公共样式 (由原内嵌 CSS 迁移而来) */
body { font-family: "Microsoft YaHei", Arial, sans-serif; background: #f0f2f5; margin: 0; padding: 0; }

/* 整体布局: 左侧可收缩侧边栏 + 右侧内容区 */
.layout { display: flex; min-height: 100vh; }
.sidebar { width: 180px; background: #001529; color: #fff; flex-shrink: 0;
           transition: width .2s ease; overflow: hidden; }
.sidebar-brand { height: 56px; display: flex; align-items: center; padding: 0 20px;
                 font-size: 17px; font-weight: bold; white-space: nowrap; color: #fff; }
.sidebar-nav a { display: flex; align-items: center; height: 44px; padding: 0 20px;
                 color: #cfd8e3; text-decoration: none; font-size: 14px; white-space: nowrap; }
.sidebar-nav a:hover { background: #0b2a4a; color: #fff; }
.sidebar-nav a.active { background: #1677ff; color: #fff; }
.sidebar-nav .nav-icon { width: 22px; margin-right: 10px; text-align: center; font-size: 15px; }
.nav-arrow { margin-left: auto; font-size: 12px; color: #8fa3b8; }
.nav-parent { cursor: pointer; }
.nav-submenu { display: block; }
.nav-submenu.collapsed { display: none; }
.nav-submenu .nav-item { padding-left: 52px; height: 38px; font-size: 13px; }
.nav-submenu .nav-icon { width: 0; margin: 0; }
body.sidebar-collapsed .nav-submenu { display: none; }
.main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.content { flex: 1; }

/* 收缩状态: 侧边栏只留图标列 */
body.sidebar-collapsed .sidebar { width: 56px; }
body.sidebar-collapsed .sidebar-brand { padding: 0; justify-content: center; }
body.sidebar-collapsed .sidebar-nav a { padding: 0; justify-content: center; }
body.sidebar-collapsed .sidebar-nav .nav-icon { margin-right: 0; }
body.sidebar-collapsed .nav-text { display: none; }

/* 顶栏: 收缩按钮 + 退出登录 */
.topbar { background: #fff; border-bottom: 1px solid #e8e8e8; padding: 0 24px;
          height: 56px; display: flex; align-items: center; }
.topbar-spacer { flex: 1; }
.sidebar-toggle { background: none; border: none; font-size: 18px; cursor: pointer;
                  color: #555; padding: 4px 8px; border-radius: 4px; }
.sidebar-toggle:hover { background: #f0f0f0; }
.inline-form { display: inline; margin: 0; }
.link-btn { background: none; border: none; color: #1677ff; cursor: pointer;
            font-size: 14px; padding: 0; font-family: inherit; }
.link-btn:hover { color: #4096ff; }

.wrap { max-width: none; margin: 32px 16px; padding: 0; }
.card { background: #fff; border-radius: 10px; box-shadow: 0 4px 20px rgba(0,0,0,.08); padding: 32px 40px; }
h1 { font-size: 20px; margin: 0 0 4px; }
.sub { color: #333; font-size: 13px; margin-bottom: 20px; }

.center { display: flex; justify-content: center; align-items: center; height: 100vh; }
.login-card { background: #fff; padding: 40px 48px; border-radius: 10px;
              box-shadow: 0 4px 20px rgba(0,0,0,.08); width: 340px; text-align: center; }

input, select { width: 100%; max-width: 520px; box-sizing: border-box; padding: 10px 12px; margin-bottom: 14px;
                border: 1px solid #d9d9d9; border-radius: 6px; font-size: 14px; }
input:focus { outline: none; border-color: #1677ff; }

button.btn { padding: 10px 18px; background: #1677ff; color: #fff; border: none;
             border-radius: 6px; font-size: 14px; cursor: pointer; }
button.btn:hover { background: #4096ff; }
button.btn-gray { background: #f5f5f5; color: #333; border: 1px solid #d9d9d9; }
button.btn-gray:hover { background: #e8e8e8; }

.msg-err { color: #e53935; font-size: 13px; margin-bottom: 12px; }
.msg-ok  { color: #52c41a; font-size: 13px; margin-bottom: 12px; }
.foot { margin-top: 14px; font-size: 13px; color: #666; }
.foot a { color: #1677ff; text-decoration: none; }

table { width: 100%; border-collapse: collapse; font-size: 14px; }
th, td { border-bottom: 1px solid #f0f0f0; padding: 10px 8px; text-align: left; vertical-align: middle; }
th { background: #fafafa; font-weight: 600; color: #555; }
tr:hover td { background: #fafcff; }
.empty { text-align: center; color: #999; padding: 32px 0; }
.edit-link { color: #1677ff; text-decoration: none; font-size: 13px; }
.edit-link:hover { color: #4096ff; text-decoration: underline; }
/* 档案列表操作列: 编辑 + 删除 同行 */
.row-ops { white-space: nowrap; }
.row-ops .del-link { padding: 0 2px; }

/* 分页控件 */
.list-tools { display: flex; align-items: center; gap: 12px; }
.page-size-form { display: flex; align-items: center; gap: 6px; margin: 0; }
.page-size-form select { width: auto; margin: 0; padding: 6px 8px; font-size: 13px; }
.tool-label { color: #333; font-size: 13px; }
.search-bar .tool-label { margin-left: 16px; font-weight: bold; }
.search-bar .btn { margin-left: 16px; }
.search-bar .btn-gray { margin-left: 8px; }
.field-label { display: block; text-align: left; color: #333; font-size: 13px; margin: 0 0 4px; font-weight: 600; }
.field-label::after { content: '：'; }
.required { color: #e53935; margin-right: 2px; }
/* 表单两列布局: 字段名与输入框同行, 行距1.5倍 */
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 24px; }
.field-item { display: flex; align-items: center; gap: 10px; }
.field-item .field-label { flex-shrink: 0; margin: 0; width: 100px; text-align: right; white-space: nowrap; overflow: hidden; }
.field-item .field-label::after { content: '：'; }
.field-item input, .field-item select, .field-item textarea { margin-bottom: 0; flex: 1; }
.field-item-full { grid-column: 1 / -1; }
.field-item-top { align-items: flex-start; }
.field-item-top > .field-label { padding-top: 9px; width: 100px; text-align: right; }
.field-item-top textarea, .field-item-top input { max-width: none; }
.form-actions { display: flex; justify-content: center; align-items: center; }

/* 关系成员批量添加(2026-09-24): 动态行 */
.rel-box { flex: 1; }
.rel-hint { font-size: 12px; color: #999; margin-bottom: 6px; }
.rel-row { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.rel-row input { flex: 1; margin-bottom: 0; }
.rel-del { flex-shrink: 0; }
#btn-add-rel { margin-top: 2px; }

/* 新建档案批量行(2026-09-24): 姓名/性别/谱系号/出生日期/父/母/所在园区 */
.new-row { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; flex-wrap: wrap; }
.new-row .nr-name { flex: 0 0 110px; min-width: 0; margin-bottom: 0; }
.new-row .nr-g { flex: 0 0 68px; margin-bottom: 0; }
.new-row .nr-ped { flex: 0 0 90px; min-width: 0; margin-bottom: 0; }
.new-row .nr-b { flex: 0 0 110px; min-width: 0; margin-bottom: 0; }
.new-row .nr-f { flex: 0 0 100px; min-width: 0; margin-bottom: 0; }
.new-row .nr-m { flex: 0 0 100px; min-width: 0; margin-bottom: 0; }
.new-row .nr-addr { flex: 1 1 160px; min-width: 0; margin-bottom: 0; }
#btn-add-new { margin-top: 2px; }

/* 批量编辑 */
.batch-table input, .batch-table select { width: 100%; min-width: 70px; padding: 5px 8px; font-size: 13px; }
.batch-table td { padding: 6px 8px; }
.batch-name { font-weight: 600; color: #333; }
/* 数据汇总: 日期列分割线 + 当日高亮 */
.summary-table td:first-child, .summary-table th:first-child {
  border-right: 2px solid #e0e0e0; white-space: nowrap; }
.summary-table .today-row { background: #e6f4ff; }
.summary-table .today-row td { font-weight: 600; }
.batch-hint { font-size: 13px; color: #888; margin: 10px 0; }
.col-check { width: 36px; text-align: center; vertical-align: middle; }
.col-check input[type="checkbox"] { margin: 0; vertical-align: middle; }
.batch-members { margin-bottom: 14px; }
.batch-tag { display: inline-block; background: #e6f4ff; color: #1677ff; border-radius: 4px;
             padding: 3px 10px; margin: 0 6px 6px 0; font-size: 13px; }
.batch-hint { color: #888; font-size: 13px; margin: 0 0 16px; }
.batch-field { margin-bottom: 14px; }
.batch-field input, .batch-field select { width: 320px; margin: 0; }
.batch-field textarea { width: 320px; margin: 0; }

/* 搜索栏 */
.search-bar { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; align-items: center; }
.search-bar input { width: 115px; margin: 0; padding: 8px 10px; font-size: 13px; }
.search-bar input.search-wide { width: 230px; }
/* 搜索框一键清除按钮(✕): 常显, 空值淡灰 / 有值深灰; 尺寸调小(2026-09-17 用户反馈"不好看, 小一点") */
.sc-wrap { position: relative; display: inline-flex; align-items: center; }
.sc-wrap input { padding-right: 20px; }
.sc-wrap select { padding-right: 20px; }
.ph-side .sc-wrap { display: flex; width: 100%; }
.sc-wrap input.ph-search { flex: 1 1 auto; min-width: 0; }
.sc-clear { position: absolute; right: 3px; top: 50%; transform: translateY(-50%);
            border: 0; background: transparent; color: #a6a6a6; font-size: 9px; line-height: 1;
            padding: 2px 3px; border-radius: 50%; cursor: pointer; }
.sc-clear:hover { color: #434343; }
.sc-clear.sc-empty { color: #d9d9d9; }   /* 空值: 淡灰常显 */
.sc-wrap-select .sc-clear { right: 4px; }
.search-bar select { width: 90px; margin: 0; padding: 8px 10px; font-size: 13px; }
.search-bar .btn { padding: 8px 16px; }
/* 搜索/重置按钮组: 固定右对齐, 搜索在前重置在后 */
.search-actions { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.search-actions .btn { margin-left: 0; }
.search-actions .btn + .btn { margin-left: 8px; }
.search-clear { color: #1677ff; text-decoration: none; font-size: 13px; margin-left: 4px; }
.search-clear:hover { color: #4096ff; }

/* 备注列 */
.remark-cell { max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #555; font-size: 13px; }

/* 姓名链接 / 详情页 */
.name-link { color: #1677ff; text-decoration: none; }
.name-link:hover { color: #4096ff; text-decoration: underline; }
.name-red { color: #e53935 !important; font-weight: bold; }
.name-red:hover { color: #ff7875 !important; }
/* 列表已故标记: 姓名后灰色小字"已故"(不占括号宽度), 列宽 110px 够用 */
.suffix-gray { color: #999; font-size: 11px; margin-left: 4px; font-weight: normal; }
.form-photo { margin-bottom: 14px; flex: 1; }
.photo-hint { font-size: 12px; color: #999; }
.photo-preview { max-width: 120px; max-height: 120px; border-radius: 8px; border: 1px solid #eee; display: block; margin-bottom: 8px; }
.photo-delete { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; color: #e53935; margin-bottom: 10px; cursor: pointer; }
/* 自定义照片选择: 按钮/文件名/缩略图, 行距1.5倍 */
.file-input-hidden { display: none; }
.form-photo .field-label { margin-bottom: 12px; }
.photo-btn { display: inline-block; padding: 6px 18px; background: #1677ff; color: #fff;
  border-radius: 4px; cursor: pointer; font-size: 13px; }
.photo-btn:hover { background: #4096ff; }
.photo-file-name-input { margin-top: 12px; max-width: 320px; }
.photo-thumb { margin-top: 12px; max-width: 120px; max-height: 120px; border-radius: 8px;
  border: 1px solid #eee; box-shadow: 0 2px 8px rgba(0,0,0,.08); }
.photo-zoomable { cursor: zoom-in; }
.photo-delete input { width: auto; margin: 0; }
.detail-wrap { display: flex; gap: 24px; align-items: flex-start; flex-wrap: wrap; }
.detail-photo { flex-shrink: 0; }
.detail-info { flex: 1; min-width: 0; display: flex; flex-wrap: wrap; gap: 24px; align-items: flex-start; }
.photo-large { max-width: 260px; max-height: 260px; border-radius: 8px; border: 1px solid #eee; }
.photo-clickable { cursor: zoom-in; }
/* 照片预览 lightbox */
.lightbox { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.75);
  z-index: 999; align-items: center; justify-content: center; cursor: zoom-out; }
.lightbox img { max-width: 92vw; max-height: 92vh; border-radius: 8px;
  box-shadow: 0 8px 40px rgba(0,0,0,.5); }
.photo-empty { width: 200px; height: 200px; border: 2px dashed #d9d9d9; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: #bbb; font-size: 14px; }
.detail-table { max-width: 520px; flex: 1; min-width: 280px; }
.detail-table th { width: 90px; }
.detail-table td { word-break: break-all; }
.detail-remark { white-space: pre-wrap; word-break: break-all; }
/* 备注行: 字段名样式同表格th, 内容区域横跨整行(占用两列) */
.detail-remark-full { flex-basis: 100%; display: flex; align-items: stretch;
  border: 1px solid #f0f0f0; border-radius: 6px; overflow: hidden; }
.detail-remark-label { width: 90px; flex-shrink: 0; padding: 10px 8px; box-sizing: border-box;
  background: #fafafa; color: #555; font-weight: 600; font-size: 14px; }
.detail-remark-full .detail-remark { flex: 1; padding: 10px 8px; font-size: 14px; color: #333; }

/* 亲属关系 */
.rel-section { margin-top: 24px; padding-top: 20px; border-top: 1px solid #f0f0f0; }
.rel-section h2 { font-size: 17px; margin: 0 0 14px; }
.rel-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.rel-head h2 { margin: 0; }
.rel-manual { margin: 0 0 14px; padding: 10px 12px; background: #fafaff; border: 1px dashed #c9d4f0; border-radius: 6px; }
.rel-manual-item { display: inline-flex; align-items: center; gap: 6px; margin: 4px 14px 4px 0; }
.rel-manual-type { color: #666; font-size: 12px; background: #eef1f8; border-radius: 3px; padding: 1px 6px; }
.rel-manual-note { color: #999; font-size: 12px; }
.rel-grid { display: grid;
  grid-template-columns: minmax(90px, 0.7fr) minmax(120px, 1fr) minmax(170px, 1.6fr);
  gap: 12px; }
.rel-group { background: #fafafa; border-radius: 8px; padding: 12px 14px; }
.rel-group-wide { grid-column: 1 / -1; }
.rel-title { font-size: 13px; color: #888; margin-bottom: 8px; }
.rel-body { display: flex; flex-wrap: wrap; gap: 6px; }
.rel-tag { display: inline-block; background: #fff; border: 1px solid #e8e8e8; border-radius: 4px;
           padding: 3px 10px; font-size: 13px; color: #333; text-decoration: none; }
.rel-tag:hover { border-color: #1677ff; color: #1677ff; }
.rel-empty { color: #bbb; }
.rel-title.rel-total { color: #1677ff; font-weight: bold; }

/* 知识答题 */
.quiz-question { margin-bottom: 18px; padding: 14px 16px; background: #fafafa; border-radius: 8px; }
.quiz-q-title { font-size: 14px; color: #333; margin-bottom: 8px; }
.quiz-opt { display: block; margin: 4px 0; font-size: 14px; cursor: pointer; }
.quiz-opt input { width: auto; margin: 0 6px 0 0; }
.quiz-score { display: flex; align-items: baseline; gap: 12px; padding: 16px; border-radius: 8px; margin-bottom: 16px; }
.quiz-score-good { background: #f6ffed; }
.quiz-score-bad { background: #fff1f0; }
.quiz-score-num { font-size: 36px; font-weight: bold; }
.quiz-score-good .quiz-score-num { color: #389e0d; }
.quiz-score-bad .quiz-score-num { color: #e53935; }
.quiz-score-info { font-size: 14px; color: #555; }
.quiz-detail { margin-bottom: 12px; padding: 12px 16px; border-radius: 8px; }
.quiz-detail-ok { background: #f6ffed; }
.quiz-detail-no { background: #fff7e6; }
.quiz-tag { display: inline-block; padding: 2px 10px; border-radius: 4px; font-size: 13px; }
.quiz-tag-ok { background: #d9f7be; color: #389e0d; }
.quiz-tag-no { background: #ffd6d6; color: #e53935; }
.quiz-ans { margin-left: 10px; font-size: 13px; color: #555; }
.quiz-analysis { margin-top: 6px; font-size: 13px; color: #888; }
.radio-inline { display: inline-flex; align-items: center; margin-right: 16px; cursor: pointer; }
.radio-inline input { width: auto; margin: 0 4px 0 0; }
.link-danger { color: #e53935; }
.link-danger:hover { color: #ff7875; }

/* 系统管理 */
.role-tag { display: inline-block; padding: 2px 10px; border-radius: 4px; font-size: 12px;
  background: #eef4ff; color: #1677ff; }
.role-admin { background: #fff1f0; color: #e53935; }
.role-select { width: auto; margin: 0 4px; padding: 4px 8px; font-size: 13px; }
.role-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; }
.role-card { background: #fafafa; border-radius: 8px; padding: 16px 18px; }
.role-card-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.role-count { font-size: 13px; color: #888; }
.role-desc { font-size: 13px; color: #555; line-height: 1.6; }

/* 首页左右布局: 统计图占左1/3 */
.home-layout { display: flex; gap: 18px; align-items: flex-start; margin-top: 14px; }
.home-left { flex: 1; min-width: 0; }
.home-right { flex: 2; min-width: 0; }

/* 首页统计块 */
.stats-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 14px; margin-top: 6px; }
.stat-card { background: #fafafa; border-radius: 8px; padding: 16px 18px; text-align: center;
  border: 1px solid #f0f0f0; }
.stat-num { font-size: 30px; font-weight: bold; color: #1677ff; }
.stat-label { font-size: 13px; color: #888; margin: 4px 0 8px; }
.stat-link { font-size: 13px; color: #1677ff; text-decoration: none; }
.stat-link:hover { text-decoration: underline; }
/* panda 星球按年条形图 */
.panda-chart { margin-top: 16px; padding: 14px 18px; background: #fff1f0; border-radius: 8px; }
.panda-chart-title { font-size: 13px; color: #555; margin-bottom: 10px; }
.panda-bar-row { display: flex; align-items: center; gap: 10px; margin: 6px 0; }
.panda-bar-year { width: 64px; font-size: 13px; color: #555; text-align: right; flex-shrink: 0; text-decoration: none; }
a.panda-bar-year:hover { color: #1677ff; }
.panda-bar-track { flex: 1; max-width: 480px; height: 18px; background: #ffd6d6; border-radius: 4px; overflow: hidden; }
.panda-bar { height: 100%; background: #e53935; border-radius: 4px; min-width: 2px; transition: width .3s; }
.panda-bar-num { width: auto; min-width: 56px; font-size: 13px; color: #e53935; font-weight: 600; white-space: nowrap; }
.panda-bar-empty { font-size: 13px; color: #bbb; }
/* 统计分析 */
.stats-two-col { display: flex; gap: 16px; margin-top: 16px; align-items: flex-start; }
.stats-two-col .panda-chart { flex: 1; min-width: 0; margin-top: 0; }
.stats-summary { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; margin-bottom: 16px; }
.stats-chart-scroll { max-height: 62vh; overflow-y: auto; }
.comp-bar { background: #52c41a; min-width: 0; }
.breed-bar { background: #1677ff; min-width: 0; }
.addr-bar { background: #2e8b57; min-width: 0; }
/* 可搜索下拉弹层: 可视6行, 剩余滚动 */
.panda-dd {
  position: fixed;
  z-index: 9999;
  max-height: 180px;   /* 6行 × 30px */
  overflow-y: auto;
  background: #fff;
  border: 1px solid #d9d9d9;
  border-radius: 4px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, .12);
  display: none;
  box-sizing: border-box;
}
.panda-dd-item {
  padding: 6px 10px;
  font-size: 13px;
  color: #333;
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.panda-dd-item:hover { background: #e6f4ff; }
.panda-dd-empty { color: #999; cursor: default; }
.panda-dd-empty:hover { background: #fff; }
.panda-dd::-webkit-scrollbar { width: 8px; }
.panda-dd::-webkit-scrollbar-thumb { background: #c9c9c9; border-radius: 4px; }
/* 园区管理: 紧凑列表行距 */
.compact-table td, .compact-table th { padding: 4px 8px; line-height: 1.5; }
.compact-table tbody tr:hover { background: #f6faff; }
.addr-name { color: #1677ff; text-decoration: none; font-weight: 600; }
.addr-name:hover { text-decoration: underline; }
.addr-intro {
  max-width: 25em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: default;
  color: #666;
}
/* 园区管理: 操作列对齐档案列表 edit-link 风格 */
.addr-actions { white-space: nowrap; }
.addr-actions .edit-link { padding: 0 6px; }
.addr-actions .edit-link + .edit-link { border-left: 1px solid #e0e0e0; }
.addr-actions form { display: inline; margin: 0; }
.del-link { background: none; border: none; cursor: pointer; color: #e53935; font-size: 13px; padding: 0 6px; }
.del-link:hover { color: #ff4d4f; text-decoration: underline; }
/* 园区详情: 关联档案姓名标签 */
.addr-members { display: flex; flex-wrap: wrap; gap: 8px; }
.addr-member {
  display: inline-block;
  padding: 4px 12px;
  background: #f0f5ff;
  border: 1px solid #d6e4ff;
  border-radius: 14px;
  font-size: 13px;
  color: #1677ff;
  text-decoration: none;
}
.addr-member:hover { background: #e6f0ff; border-color: #91caff; }
.sib-bar { background: #722ed1; min-width: 0; }
.panda-chart-note { font-size: 12px; color: #999; margin-bottom: 10px; }
/* 年份-值 8列网格: 列优先纵向填充 */
.year-grid { display: flex; gap: 10px; }
.year-col { flex: 1; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.year-cell { display: flex; justify-content: space-between; padding: 4px 10px;
  background: #fafafa; border-radius: 4px; font-size: 13px; }
.year-cell-y { color: #555; }
.year-cell-v { color: #e53935; font-weight: 600; }
.year-link { text-decoration: none; }
.year-link:hover { text-decoration: underline; color: #1677ff; }

/* 表格滚动: 内容超出最大高度时表格内部滚动, 表头固定; 横向超宽时横向滚动 */
.table-scroll { max-height: 62vh; overflow: auto; border: 1px solid #f0f0f0; border-radius: 6px; }
.table-scroll table { border-collapse: separate; border-spacing: 0; }
.table-scroll thead th { position: sticky; top: 0; background: #fafafa; z-index: 1; }

/* 字段名称锁定: 表头吸顶(thead sticky), 列宽px锁定不随内容跳动, 内容不换行完整显示(超宽横向滚动) */
.fixed-table { table-layout: fixed; width: 100%; min-width: 870px; }
/* 档案列表: 列宽固定不随容器伸缩 (16 列 = 1610px); 所有字段值居中 */
.fixed-table.members-fixed { width: 1610px; min-width: 1610px; }
.fixed-table.members-fixed th,
.fixed-table.members-fixed td { text-align: center; }
.fixed-table th, .fixed-table td {
  white-space: nowrap; overflow: visible;
}

/* 操作日志 */
/* 重名档案标签页 */
.dup-table td, .dup-table th { text-align: center; }
.dup-table td.dup-detail { text-align: left; white-space: normal; padding: 6px 10px; }
.dup-line { padding: 3px 0; border-bottom: 1px dashed #f2f2f2; line-height: 1.9; }
.dup-line:last-child { border-bottom: none; }
.dup-tag { color: #888; font-size: 12px; margin-left: 10px; }
.dup-ref { color: #e53935; font-weight: bold; cursor: help; }
.logs-table { table-layout: fixed; width: 100%; }
.logs-table th:nth-child(1) { width: 5%; }
.logs-table th:nth-child(2) { width: 15%; }
.logs-table th:nth-child(3) { width: 8%; }
.logs-table th:nth-child(4) { width: 9%; }
.logs-table th:nth-child(5) { width: 10%; }
.logs-table td.log-seq { color: #888; font-size: 13px; text-align: center; }
.logs-table td.log-time { color: #888; font-size: 13px; }
.logs-table td.log-username, .logs-table td.log-time,
.logs-table td.log-content { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.logs-table td.log-content { font-size: 13px; color: #444; }
.log-action { display: inline-block; background: #eef4ff; color: #1677ff;
  border-radius: 4px; padding: 2px 8px; font-size: 12px; }
.log-module { display: inline-block; background: #f6ffed; color: #389e0d;
  border-radius: 4px; padding: 2px 8px; font-size: 12px; }
.log-detail-link { color: #1677ff; text-decoration: none; font-size: 12px; margin-left: 4px; }
.log-detail-link:hover { text-decoration: underline; }
.log-detail-table { max-width: none; width: 100%; }
.log-detail-table td { word-break: break-all; }
.log-detail-content { white-space: pre-wrap; }

/* 批量新增 */
.wrap-wide { max-width: 1500px; margin-left: auto; margin-right: auto; }
.wrap-full { max-width: none; }
.batch-new-table th, .batch-new-table td { padding: 6px 4px; }
.batch-new-table input, .batch-new-table select {
  width: 100%; min-width: 64px; margin: 0; padding: 6px 8px; font-size: 13px;
}
.batch-new-table textarea {
  width: 100%; min-width: 120px; margin: 0; padding: 6px 8px; font-size: 13px; resize: vertical;
}
.batch-new-table .col-op { width: 60px; text-align: center; }
.batch-new-table .col-num { width: 40px; text-align: center; color: #888; }
.row-error td { background: #fff1f0 !important; }
.row-error-msg td { border: none; padding: 2px 8px 10px !important; }
.btn-mini { padding: 3px 8px; font-size: 12px; }
.batch-new-actions { margin-top: 16px; display: flex; gap: 8px; }

/* 导入 */
.file-input { padding: 8px; background: #fff; cursor: pointer; }
.import-result { margin: 14px 0; padding: 12px 16px; background: #f6ffed; border-radius: 8px; font-size: 14px; }
.import-result p { margin: 0 0 8px; }
.import-fail-table { width: 100%; border-collapse: collapse; font-size: 13px; margin-top: 8px; }
.import-fail-table th, .import-fail-table td { border: 1px solid #f0f0f0; padding: 6px 10px; text-align: left; }
.import-fail-table .fail-reason { color: #e53935; }
textarea { width: 100%; max-width: 520px; box-sizing: border-box; padding: 10px 12px; margin-bottom: 14px;
           border: 1px solid #d9d9d9; border-radius: 6px; font-size: 14px;
           font-family: Consolas, "Microsoft YaHei", monospace; resize: vertical; }
textarea:focus { outline: none; border-color: #1677ff; }
.import-demo { margin-top: 18px; padding: 12px 14px; background: #fafafa; border-radius: 6px;
               font-size: 13px; color: #666; line-height: 1.8; }
.import-demo code { background: #fff; border: 1px solid #eee; border-radius: 4px; padding: 2px 6px;
                    font-size: 12px; }
.import-sep { border: none; border-top: 1px solid #f0f0f0; margin: 20px 0; }
.pagination { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 6px; margin-top: 18px; font-size: 14px; }
.pagination a, .pagination span { padding: 5px 11px; border: 1px solid #d9d9d9; border-radius: 4px; text-decoration: none; color: #333; background: #fff; }
.pagination a:hover { border-color: #1677ff; color: #1677ff; }
.pagination .current { border-color: #1677ff; background: #1677ff; color: #fff; cursor: default; }
.pagination .disabled { color: #bbb; background: #fafafa; cursor: default; }
.pagination .ellipsis { border: none; background: none; padding: 5px 4px; }
.row-actions { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }

/* 相册 */
.album-thumbs {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 12px;
}

.album-item {
  position: relative;
  width: 100px;
}

.album-thumb {
  width: 100px;
  height: 100px;
  object-fit: cover;
  border-radius: 6px;
  border: 1px solid #f0f0f0;
  cursor: pointer;
}

.album-del {
  margin-top: 4px;
  text-align: center;
}

.btn-sm {
  padding: 2px 8px;
  font-size: 12px;
}

.album-upload {
  margin-top: 12px;
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
}

/* 批量编辑-统一修改 (2026-09-24 排版整理) */
.uniform-box {
  background: #f7f9fc;
  border: 1px solid #e0e6ef;
  border-radius: 8px;
  padding: 14px 18px 16px;
  margin-bottom: 16px;
  font-size: 14px;
}
.uf-title {
  font-size: 15px;
  font-weight: bold;
  color: #222;
  margin-bottom: 4px;
}
.uf-sub {
  font-size: 12px;
  color: #8c8c8c;
  margin-bottom: 12px;
}
#uniform-rows { width: 100%; }
.uniform-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.uniform-row .uniform-field {
  flex: 0 0 160px;
  margin: 0;
  padding: 6px 8px;
  font-size: 13px;
}
.uniform-row .uniform-value {
  flex: 1;
  min-width: 0;
  margin: 0;
  padding: 6px 8px;
  font-size: 13px;
}
.uniform-row .uniform-del { flex-shrink: 0; }
.uf-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 12px;
}

/* 批量行「同上」输入框 (2026-09-24: 单输入框 + 打字「同上」触发) */
.same-inp { width: 100%; }
/* 已由「同上」填充的值: 淡蓝底标记, 让用户知道这不是手输的 */
.same-inp.same-filled {
  background: #f0f7ff;
  border-color: #bcd6ff;
  color: #1677ff;
}
.detail-tags { margin-top: 10px; }
.detail-tag {
  display: inline-block;
  background: #fff7e6;
  border: 1px solid #ffd591;
  color: #d48806;
  font-size: 12px;
  border-radius: 12px;
  padding: 2px 10px;
  margin: 0 6px 6px 0;
}

/* 档案详情: 问题提示条 / 锚点 / 折叠分组 / 空值标灰 / 上下只导航 */
.issue-bar { background: #fffbe6; border: 1px solid #ffe58f; border-radius: 8px; padding: 10px 16px; margin-bottom: 14px; }
.issue-item { font-size: 13px; color: #d48806; padding: 2px 0; }
.detail-anchor { margin-bottom: 14px; display: flex; gap: 8px; flex-wrap: wrap; }
.detail-anchor a {
  font-size: 13px; color: #1677ff; text-decoration: none; background: #f0f7ff;
  border: 1px solid #bcd9ff; border-radius: 14px; padding: 4px 14px;
}
.detail-anchor a:hover { background: #1677ff; color: #fff; }
.rel-details { margin-bottom: 12px; }
.rel-details summary {
  cursor: pointer; font-size: 14px; font-weight: bold; color: #555;
  background: #f7f9fc; border-radius: 6px; padding: 8px 12px; margin-bottom: 8px;
  user-select: none;
}
.rel-details summary:hover { color: #1677ff; }
.empty-val { color: #ccc; }
.prev-next { display: flex; justify-content: space-between; margin-top: 20px; padding-top: 14px; border-top: 1px dashed #eee; }
.prev-next a { font-size: 13px; color: #1677ff; text-decoration: none; }
.prev-next a:hover { text-decoration: underline; }

/* 编辑页: 性格标签胶囊 */
.tag-checkbox { display: flex; flex-wrap: wrap; gap: 10px; padding: 4px 0; }
.tag-opt { cursor: pointer; user-select: none; }
.tag-opt input { display: none; }
.tag-opt span {
  display: inline-block;
  font-size: 13px;
  color: #666;
  background: #f5f5f5;
  border: 1px solid #e0e0e0;
  border-radius: 16px;
  padding: 5px 16px;
  transition: all .15s;
}
.tag-opt span:hover { border-color: #ffd591; color: #d48806; }
.tag-opt input:checked + span {
  background: #fa8c16;
  border-color: #fa8c16;
  color: #fff;
  font-weight: bold;
  box-shadow: 0 2px 6px rgba(250, 140, 22, 0.35);
}
/* 视频预览(档案表单) */
.video-preview { display: block; max-width: 320px; border-radius: 8px; margin-bottom: 8px; background: #000; }
/* 详情页生日集锦视频 */
.detail-video { margin-top: 14px; }
.detail-video video { width: 100%; max-width: 420px; border-radius: 8px; background: #000; }

/* ==================== 寿星(生日) ==================== */
/* 首页右上角入口按钮 */
a.cake-entry {
  display: inline-block; padding: 8px 18px; background: #ff7a45; color: #fff;
  border-radius: 6px; font-size: 14px; text-decoration: none; white-space: nowrap;
  transition: background .15s;
}
a.cake-entry:hover { background: #ff9c6e; }
/* 月份切换 */
.cake-nav { display: flex; align-items: center; gap: 8px; }
a.cake-nav-btn {
  padding: 6px 12px; font-size: 13px; color: #333; background: #f5f5f5;
  border: 1px solid #d9d9d9; border-radius: 4px; text-decoration: none;
}
a.cake-nav-btn:hover { background: #e8e8e8; }
.cake-nav-cur {
  padding: 6px 14px; font-size: 13px; font-weight: bold; color: #d4380d;
  background: #fff; border: 1px solid #ffd8bf; border-radius: 4px;
}
/* 今日寿星大卡 */
.cake-hero {
  display: flex; gap: 16px; align-items: center; padding: 14px 18px; margin-bottom: 6px;
  background: linear-gradient(90deg, #fff2e8, #fff); border: 1px solid #ffd8bf; border-radius: 8px;
}
.cake-photo { width: 96px; height: 96px; border-radius: 8px; object-fit: cover; flex-shrink: 0; }
.cake-photo-empty {
  width: 96px; height: 96px; border-radius: 8px; background: #f5f5f5; color: #bbb;
  font-size: 12px; display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.cake-info { min-width: 0; }
.cake-name { font-size: 20px; font-weight: bold; color: #333; }
.cake-gender { font-size: 13px; font-weight: normal; color: #888; margin-left: 6px; }
.cake-age { font-size: 14px; font-weight: 600; color: #d4380d; margin: 5px 0; }
.cake-meta { font-size: 13px; color: #888; line-height: 1.7; }
.cake-actions { margin-left: auto; text-align: right; flex-shrink: 0; }
/* 行内操作按钮 */
a.cake-act {
  display: inline-block; padding: 5px 12px; background: #1677ff; color: #fff;
  border-radius: 4px; font-size: 13px; text-decoration: none; white-space: nowrap;
}
a.cake-act:hover { background: #4096ff; }
a.cake-act-sm { padding: 3px 10px; font-size: 12px; }
a.cake-act-green { background: #52c41a; margin-top: 6px; }
a.cake-act-green:hover { background: #73d13d; }
/* 今日无寿星 */
.cake-empty {
  padding: 14px 18px; margin-bottom: 6px; font-size: 13px; color: #888;
  background: #fafafa; border: 1px dashed #d9d9d9; border-radius: 8px;
}
.cake-empty b { color: #d4380d; }
/* 分组标题 */
.cake-group {
  font-size: 14px; font-weight: bold; color: #333; margin: 18px 0 8px;
  padding-left: 8px; border-left: 3px solid #ff7a45;
}
.cake-group-gray { border-left-color: #bfbfbf; color: #888; }
/* 表格内小标记 */
.cake-days { color: #d4380d; font-weight: 600; }
.cake-video-dot { font-size: 12px; }
.cake-unknown { font-size: 11px; color: #bfbfbf; margin-left: 6px; }
/* 已故纪念区 */
details.cake-mem {
  margin-top: 18px; padding: 10px 14px; background: #fafafa;
  border: 1px dashed #d9d9d9; border-radius: 8px;
}
details.cake-mem summary { cursor: pointer; font-size: 13px; color: #666; font-weight: 600; }
.cake-dead-row td { color: #aaa; }
.cake-dead-row a.name-link { color: #aaa; }
.cake-note { font-size: 12px; color: #999; margin-top: 16px; line-height: 1.9; }
.cake-note b { color: #666; }

/* ==================== 统计分析: 年龄榜 ==================== */
.age-chart { margin-top: 16px; }
a.panda-bar-year.age-name {
  width: 120px; text-align: left; font-size: 13px; color: #333;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
a.panda-bar-year.age-name:hover { color: #1677ff; }
.age-ped { width: 90px; flex-shrink: 0; font-size: 12px; color: #bbb; }
.age-bar { background: #fa8c16; min-width: 0; }
.age-num { color: #d46b08 !important; min-width: 96px; }
.age-gender { color: #bbb; font-weight: normal; font-size: 12px; margin-left: 3px; }
/* 享年榜(panda 星球): 与年龄榜同构, 灰调以示纪念, 不抢年龄榜的橙色 */
.death-chart { margin-top: 16px; }
.death-bar { background: #8c8c8c; min-width: 0; }
.death-num { color: #595959 !important; min-width: 200px; }

/* ==================== 图片相册(按园区归类) ==================== */
.photo-layout { display: flex; gap: 18px; align-items: flex-start; margin-top: 4px; }
.ph-tools { display: flex; align-items: center; gap: 16px; font-size: 13px; color: #666; }
.ph-toggle { display: flex; align-items: center; gap: 5px; cursor: pointer; user-select: none; }
.ph-toggle input { width: auto; margin: 0; }
.ph-side { width: 232px; flex-shrink: 0; position: sticky; top: 16px;
           max-height: calc(100vh - 90px); overflow-y: auto; padding-right: 4px; }
input.ph-search { width: 100%; max-width: none; margin: 0 0 8px; padding: 7px 10px; font-size: 13px; }
a.ph-addr { display: flex; justify-content: space-between; align-items: baseline; gap: 8px;
            padding: 6px 9px; font-size: 13px; color: #333; border-radius: 4px; text-decoration: none; }
a.ph-addr:hover { background: #f0f7ff; }
a.ph-addr.on { background: #e6f4ff; color: #1677ff; font-weight: bold; }
a.ph-addr.zero { color: #bbb; }
a.ph-addr .nm { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
a.ph-addr .n { color: #999; font-size: 12px; white-space: nowrap; font-weight: normal; }
a.ph-addr .unreg { font-style: normal; font-size: 10px; color: #d46b08; border: 1px solid #ffd591;
                   border-radius: 3px; padding: 0 3px; margin-left: 4px; }

/* 左栏地区树(区域 > 省 > 园区): 每级 "X 图 / Y 只" (2026-09-16 方案2) */
.ph-tree { margin: 2px 0 4px; }
.ph-branch > summary { display: flex; align-items: center; gap: 6px; cursor: pointer; list-style: none;
                       padding: 5px 9px; border-radius: 5px; font-size: 12.5px; color: #595959; }
.ph-branch > summary::-webkit-details-marker { display: none; }
.ph-branch > summary::before { content: '▸'; color: #bfbfbf; font-size: 10px; line-height: 1; }
.ph-branch[open] > summary::before { content: '▾'; }
.ph-branch > summary:hover { background: #f5f5f5; }
.ph-branch > summary .nm { font-weight: 600; color: #434343; overflow: hidden;
                           text-overflow: ellipsis; white-space: nowrap; }
.ph-branch > summary .n { margin-left: auto; color: #8c8c8c; font-size: 11.5px; white-space: nowrap; }
.ph-branch.zero > summary .nm { color: #bfbfbf; font-weight: 400; }
.ph-branch.lv2 > summary { padding-left: 18px; font-size: 12px; }
.ph-branch.lv2 > summary .nm { font-weight: 400; color: #595959; }
a.ph-addr.lv3 { padding: 5px 9px 5px 32px; font-size: 12px; }
a.ph-addr.sp { padding-left: 9px; }
.ph-branch.sp-branch { margin-top: 3px; }
.ph-hint { font-size: 12px; color: #999; line-height: 1.8; padding: 8px 4px; }
.ph-wall { flex: 1; min-width: 0; }
.ph-wall-head { font-size: 13px; color: #666; margin-bottom: 10px; }
.ph-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 14px; }
.ph-cell { margin: 0; background: #fafafa; border: 1px solid #f0f0f0; border-radius: 8px; padding: 8px; }
a.ph-pic { display: block; position: relative; border-radius: 6px; overflow: hidden; line-height: 0;
           background: #eee; aspect-ratio: 1 / 1; }
a.ph-pic img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .18s; }
a.ph-pic:hover img { transform: scale(1.03); }
.ph-zoom { position: absolute; right: 6px; bottom: 6px; background: rgba(0,0,0,.45); color: #fff;
           font-size: 12px; padding: 1px 6px; border-radius: 3px; opacity: 0; transition: opacity .18s; }
a.ph-pic:hover .ph-zoom { opacity: 1; }
.ph-cell figcaption { margin-top: 8px; font-size: 12.5px; line-height: 1.7; }
.ph-line1 { display: flex; align-items: center; gap: 6px; }
.ph-line1 .name-link { max-width: 58%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ph-kind { color: #bbb; font-size: 11px; margin-left: auto; white-space: nowrap; }
.ph-line2 { color: #888; font-size: 12px; }
.ph-line3, .ph-line4 { color: #8c8c8c; font-size: 12px; }
.ph-acts { margin-top: 4px; display: flex; gap: 10px; flex-wrap: wrap; min-height: 34px; }
.ph-acts a { font-size: 12px; color: #1677ff; text-decoration: none; }
.ph-acts a:hover { text-decoration: underline; }

/* 个体格: 张数角标 / 未设封面 */
.ph-count { position: absolute; left: 6px; bottom: 6px; background: rgba(0,0,0,.55); color: #fff;
            font-size: 12px; padding: 1px 7px; border-radius: 3px; }
.ph-nocover { position: absolute; right: 6px; top: 6px; background: #fff7e6; color: #d46b08;
              border: 1px solid #ffd591; font-size: 11px; padding: 1px 6px; border-radius: 3px; }

/* 省级行政区行(方案2): 整行可点看该省级全部 + 右侧箭头控制下属园区显隐 */
.ph-prov { display: flex; align-items: center; }
.ph-prov-row { flex: 1; min-width: 0; display: flex; justify-content: space-between; align-items: baseline;
               gap: 8px; padding: 5px 9px 5px 18px; border-radius: 5px; font-size: 12px; color: #595959;
               text-decoration: none; }
.ph-prov-row:hover { background: #f5f5f5; }
.ph-prov.on .ph-prov-row { background: #e6f4ff; }
.ph-prov.on .ph-prov-row .nm { color: #1677ff; font-weight: 700; }
.ph-prov.on .ph-prov-row .n { color: #1677ff; }
.ph-prov-row .nm { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ph-prov-row .n { color: #8c8c8c; font-size: 11.5px; white-space: nowrap; font-weight: normal; }
.prov-arrow { flex: 0 0 auto; width: 22px; text-align: center; cursor: pointer; color: #bfbfbf;
              font-size: 10px; border-radius: 3px; padding: 2px 0; }
.prov-arrow:hover { color: #595959; background: #eee; }

/* 个体相册弹层 */
.al-mask { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.6); z-index: 9000; }
.al-panel { display: none; position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%);
            width: 92vw; max-width: 1180px; max-height: 90vh; background: #fff; border-radius: 10px;
            flex-direction: column; z-index: 9001; overflow: hidden;
            box-shadow: 0 12px 40px rgba(0,0,0,.3); }
.al-head { display: flex; align-items: center; justify-content: space-between; padding: 12px 18px;
           border-bottom: 1px solid #f0f0f0; }
.al-title { font-size: 15px; font-weight: bold; }
.al-close { cursor: pointer; font-size: 18px; color: #999; padding: 0 4px; }
.al-close:hover { color: #333; }
.al-body { display: flex; gap: 16px; padding: 16px 18px; min-height: 0; overflow: hidden; }
.al-main { flex: 1; min-width: 0; display: flex; align-items: center; justify-content: center;
           background: #111; border-radius: 8px; overflow: hidden; }
.al-main img { max-width: 100%; max-height: 74vh; cursor: zoom-in; }
.al-side { width: 330px; flex-shrink: 0; display: flex; flex-direction: column; min-height: 0; }
.al-meta { font-size: 13px; color: #333; line-height: 1.8; }
.al-meta .al-sub { color: #999; font-size: 12px; }
.al-acts { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 10px 0; }
.btn-sm-like { display: inline-block; padding: 5px 12px; font-size: 13px; border-radius: 4px;
               background: #1677ff; color: #fff; text-decoration: none; cursor: pointer; }
.btn-sm-like:hover { background: #4096ff; }
.btn-sm-like.gray { background: #f5f5f5; color: #333; border: 1px solid #d9d9d9; }
.btn-sm-like.gray:hover { background: #e8e8e8; }
.btn-sm-like.iscover { background: #52c41a; cursor: default; }
.al-idx { font-size: 12px; color: #999; margin-left: auto; }
.al-thumbs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; overflow-y: auto;
             padding-right: 4px; }
.al-thumb { width: 100%; border-radius: 6px; border: 2px solid transparent; cursor: pointer;
            display: block; }
.al-thumb.on { border-color: #1677ff; }
.al-tip { font-size: 12px; color: #999; line-height: 1.8; margin-top: 10px; }

/* ===== 园区管理 · 关联个体弹窗 ===== */
.rlt-mask { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.6); z-index: 9000; }
.rlt-panel { display: none; position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%);
             width: 92vw; max-width: 1000px; max-height: 90vh; background: #fff; border-radius: 10px;
             flex-direction: column; z-index: 9001; overflow: hidden;
             box-shadow: 0 12px 40px rgba(0,0,0,.3); }
.rlt-head { display: flex; align-items: center; justify-content: space-between; padding: 12px 18px;
            border-bottom: 1px solid #f0f0f0; }
.rlt-title { font-size: 15px; font-weight: bold; }
.rlt-close { cursor: pointer; font-size: 18px; color: #999; padding: 0 4px; }
.rlt-close:hover { color: #333; }
.rlt-filter { padding: 10px 18px 12px; border-bottom: 1px solid #f0f0f0; }
.rlt-tabs { display: flex; gap: 8px; margin-bottom: 10px; }
.rlt-tab { padding: 4px 14px; font-size: 13px; border: 1px solid #d9d9d9; background: #fff;
           border-radius: 16px; cursor: pointer; color: #333; }
.rlt-tab:hover { border-color: #1677ff; color: #1677ff; }
.rlt-tab.on { background: #1677ff; border-color: #1677ff; color: #fff; }
.rlt-tab b { font-weight: bold; }
.rlt-search { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.rlt-search input { width: 150px; max-width: none; }
.rlt-search .tool-label { margin-left: 0; }
.rlt-body { flex: 1; min-height: 0; overflow-y: auto; padding: 0 18px; }
.rlt-listbar { display: flex; align-items: center; justify-content: space-between; gap: 10px;
               padding: 8px 0; flex-wrap: wrap; }
.rlt-listbar-r { display: flex; align-items: center; gap: 6px; font-size: 13px; flex-shrink: 0; }
.rlt-listbar-r .tool-label { margin-left: 0; }
.rlt-listbar-r select { width: 92px; height: 30px; padding: 4px 6px; }
.rlt-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.rlt-table th, .rlt-table td { padding: 7px 8px; border-bottom: 1px solid #f0f0f0;
                               text-align: left; white-space: nowrap; }
.rlt-table thead th { position: sticky; top: 0; background: #fafafa; z-index: 1;
                      font-weight: bold; color: #333; }
.rlt-table tbody tr.on { background: #f0f7ff; }
.rlt-none { color: #bbb; }
.rlt-empty { color: #999; padding: 20px; text-align: center; }
.rlt-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px;
            padding: 10px 18px; border-top: 1px solid #f0f0f0; }
.rlt-foot-r { display: flex; align-items: center; gap: 8px; }
.rlt-picked { font-size: 13px; color: #333; }
.rlt-picked b { color: #1677ff; font-size: 14px; }
.rlt-pager { font-size: 13px; white-space: nowrap; flex-shrink: 0; }
.rlt-total { color: #666; margin: 0 2px; }
.rlt-pager a, .rlt-pager span.disabled { display: inline-block; padding: 2px 8px; margin: 0 2px;
    border: 1px solid #d9d9d9; border-radius: 4px; color: #333; text-decoration: none; }
.rlt-pager a:hover { border-color: #1677ff; color: #1677ff; }
.rlt-pager span.disabled { color: #bbb; }
.rlt-pager span.current { display: inline-block; padding: 2px 8px; border-radius: 4px;
    background: #1677ff; color: #fff; margin: 0 2px; }
.rlt-jump { width: 46px; padding: 2px 6px; max-width: none; text-align: center; vertical-align: middle; }

/* ================= 侧边栏菜单改版 (方案C, 2026-10-09) ================= */
/* 一级组单色线性图标: 尺寸随文字颜色 */
.sidebar-nav .nav-icon svg { width: 15px; height: 15px; display: block; margin: 0 auto;
  stroke: currentColor; fill: none; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
/* 父项激活态: 其子页被选中时整行浅蓝高亮 */
.sidebar-nav a.active-parent { background: rgba(22,119,255,.16); color: #fff; }
.sidebar-nav a.active-parent:hover { background: rgba(22,119,255,.24); }
.sidebar-nav a.active-parent .nav-arrow { color: #cfe0ff; }
/* 收缩态: 隐藏展开箭头 */
body.sidebar-collapsed .nav-arrow { display: none; }
/* 收缩态: 允许浮层溢出侧栏 */
body.sidebar-collapsed .sidebar { overflow: visible; }
/* 折叠态 hover 浮层 */
#nav-flyout { position: fixed; display: none; background: #001529; padding: 6px 0;
  border-radius: 0 8px 8px 0; box-shadow: 0 8px 28px rgba(0,0,0,.4); z-index: 2000; min-width: 148px; }
#nav-flyout a { display: flex; align-items: center; height: 38px; padding: 0 18px;
  color: #cfd8e3; text-decoration: none; font-size: 13px; white-space: nowrap; }
#nav-flyout a:hover { background: #0b2a4a; color: #fff; }
#nav-flyout a.active { background: #1677ff; color: #fff; }
/* 顶栏面包屑 */
.topbar .crumb { font-size: 13px; color: #667; margin-left: 14px; white-space: nowrap; }
.topbar .crumb b { color: #223; font-weight: 600; }
.topbar .crumb-sep { color: #b8c0cc; margin: 0 6px; }

/* 备案号页脚（ICP 备案要求，全站可见） */
.footer-beian { flex-shrink: 0; height: 26px; display: flex; align-items: center;
                justify-content: center; font-size: 12px; color: #8c8c8c;
                background: #fafafa; border-top: 1px solid #ececec; }
.footer-beian a { color: #8c8c8c; text-decoration: none; }
.footer-beian a:hover { color: #1677ff; }
/* 未登录页（登录页）固定在视口底部，不占布局高度 */
.footer-beian-fixed { position: fixed; left: 0; right: 0; bottom: 0;
                      background: transparent; border-top: 0; color: rgba(0,0,0,.4); }
.footer-beian-fixed a { color: rgba(0,0,0,.4); }
