/* ============================================================
   中国历代人物资料库 · 视觉风格
   宣纸底 · 朱砂红 · 衬线书卷气
   ============================================================ */
:root{
  --paper:#f6f1e7;
  --paper-2:#fbf8f0;
  --card:#fffdf7;
  --ink:#2c2a26;
  --ink-soft:#5b554b;
  --ink-faint:#8c8475;
  --cinnabar:#a8322a;
  --cinnabar-deep:#7e231d;
  --gold:#b08d57;
  --line:#dacfb6;
  --line-soft:#e7ddc7;
  --shadow:0 6px 24px rgba(60,45,25,.10);
  --shadow-sm:0 2px 8px rgba(60,45,25,.08);
  --serif:"Noto Serif SC","Source Han Serif SC","Songti SC","STSong","SimSun",serif;
  --sans:"PingFang SC","Microsoft YaHei","Hiragino Sans GB","Noto Sans CJK SC",sans-serif;
  --radius:12px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  font-family:var(--sans);
  background:
    radial-gradient(circle at 12% 8%, rgba(176,141,87,.06), transparent 40%),
    radial-gradient(circle at 88% 92%, rgba(168,50,42,.05), transparent 42%),
    var(--paper);
  color:var(--ink);
  line-height:1.7;
  min-height:100vh;
}
/* 顶部细金线装饰 */
body::before{
  content:"";position:fixed;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--cinnabar),var(--gold),var(--cinnabar));
  z-index:60;
}
a{color:var(--cinnabar);text-decoration:none;}
a:hover{text-decoration:underline;}
h1,h2,h3,h4{font-family:var(--serif);font-weight:700;letter-spacing:.02em;}

/* ============ 顶部导航 ============ */
.topbar{
  position:sticky;top:0;z-index:50;
  background:rgba(251,248,240,.92);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
  box-shadow:0 1px 0 rgba(255,255,255,.6) inset;
}
.topbar-inner{
  max-width:1200px;margin:0 auto;padding:10px 96px 10px 18px;
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
}
/* 主题/收藏按钮集群：固定右上角，始终可见，不被移动端横向滚动的导航卷走 */
.topbar-actions{
  position:fixed;top:10px;right:12px;z-index:60;
  display:flex;align-items:center;gap:8px;
}
.brand{display:flex;align-items:center;gap:10px;cursor:pointer;}
/* 印章：左列「时·光」两字、右列「慢」一字拉满两行高度；优先用篆书，无则用衬线优雅降级 */
.brand .seal{
  width:40px;height:48px;border-radius:8px;flex:0 0 auto;
  background:var(--cinnabar);color:#fff;overflow:hidden;
  display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;
  padding:3px;gap:1px;
  font-family:'FZ篆书','汉仪篆书','小篆','篆书',var(--serif);
  font-weight:700;line-height:1;box-shadow:var(--shadow-sm);
}
.brand .seal .sl{
  grid-column:1;grid-row:1 / span 2;
  display:flex;align-items:center;justify-content:center;
  font-size:21px;transform:scaleY(1.18);transform-origin:center;
}
.brand .seal .sr{grid-column:2;display:flex;align-items:center;justify-content:center;font-size:15px;}
.brand .seal .sr:nth-child(2){grid-row:1;}
.brand .seal .sr:nth-child(3){grid-row:2;}
.brand .title{font-family:var(--serif);font-size:19px;font-weight:700;line-height:1.1;white-space:nowrap;}
.brand .title .title-sep{color:var(--cinnabar);margin:0 1px;}
.brand .sub{font-size:11px;color:var(--ink-faint);letter-spacing:.18em;}
@media (max-width:900px){
  .brand .title{white-space:normal;font-size:17px;}
}
.nav{display:flex;gap:4px;flex-wrap:wrap;margin-left:auto;}
.nav button{
  border:none;background:transparent;cursor:pointer;
  font-family:var(--sans);font-size:14px;color:var(--ink-soft);
  padding:8px 13px;border-radius:9px;transition:.18s;position:relative;
}
.nav button:hover{background:var(--line-soft);color:var(--ink);}
.nav button.active{color:var(--cinnabar-deep);background:rgba(168,50,42,.08);font-weight:600;}
.nav button.active::after{
  content:"";position:absolute;left:13px;right:13px;bottom:2px;height:2px;background:var(--cinnabar);border-radius:2px;
}
/* 汉堡菜单开关：桌面隐藏，仅移动端出现（纯 CSS checkbox 技巧，零 JS 依赖） */
.nav-tog{display:none;}
.nav-toggle{display:none;}
/* 移动端：取消汉堡折叠（曾出现点不开且被右上固定按钮遮挡），改为顶栏下方一行横滑条，13 个模块始终全部可见 */
@media (max-width:720px){
  .topbar-inner{ padding:8px 12px; gap:8px; }
  .brand .title{ font-size:15px; }
  .brand .sub{ display:none; }
  /* 固定右上角的主题/收藏按钮会让出右侧空间，避免压住标题 */
  .brand{ margin-right:80px; }
  .topbar-search{ flex:1 1 auto; min-width:0; margin-left:0; }
  /* 不再使用汉堡开关，隐藏之 */
  .nav-toggle{ display:none; }
  /* 导航：占满整行、自动折行，全部 13 个模块平铺可见，无需拖动或点开 */
  .nav{
    display:flex;
    flex:1 1 100%;
    width:100%;
    margin-left:0;
    flex-direction:row;
    flex-wrap:wrap;
    align-items:center;
    gap:6px;
    overflow:visible;
    padding:2px 2px 8px;
    border-bottom:1px solid var(--line);
  }
  .nav button{
    flex:0 0 auto;
    width:auto;
    text-align:center;
    white-space:nowrap;
    padding:7px 11px;
    font-size:13px;
    border-radius:8px;
  }
  /* 移动端活动项用底部朱砂横线标识 */
  .nav button.active::after{ left:9px; right:9px; top:auto; bottom:2px; width:auto; height:2px; }
}

/* ============ 容器 ============ */
.wrap{max-width:1200px;margin:0 auto;padding:26px 18px 80px;}
.section{display:none;}
.section.active{display:block;animation:fade .35s ease;}
@keyframes fade{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
.section-head{margin:4px 0 20px;}
.section-head h2{font-size:25px;margin:0 0 6px;color:var(--ink);}
.section-head h2 .accent{color:var(--cinnabar);}
.section-head p{margin:0;color:var(--ink-soft);font-size:14px;max-width:760px;}

/* ============ 总览仪表盘 ============ */
.hero{
  background:linear-gradient(135deg,#fffdf7,#f3ebd9);
  border:1px solid var(--line);border-radius:18px;padding:30px 30px 26px;
  box-shadow:var(--shadow);position:relative;overflow:hidden;
}
.hero::after{
  content:"史";position:absolute;right:-10px;bottom:-30px;font-family:var(--serif);
  font-size:200px;color:rgba(168,50,42,.05);font-weight:700;line-height:1;
}
.hero h1{font-size:34px;margin:0 0 8px;color:var(--ink);}
.hero .lead{font-size:15px;color:var(--ink-soft);max-width:640px;margin:0 0 22px;}
.stat-row{display:flex;flex-wrap:wrap;gap:14px;}
.stat{
  background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:14px 20px;min-width:120px;box-shadow:var(--shadow-sm);
}
.stat .num{font-family:var(--serif);font-size:30px;font-weight:700;color:var(--cinnabar-deep);line-height:1;}
.stat .lab{font-size:12.5px;color:var(--ink-soft);margin-top:6px;letter-spacing:.05em;}
.intro-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:24px;}
@media(max-width:760px){.intro-cols{grid-template-columns:1fr;}}
.intro-box{background:var(--card);border:1px solid var(--line-soft);border-radius:14px;padding:18px 20px;box-shadow:var(--shadow-sm);}
.intro-box h3{margin:0 0 8px;font-size:16px;color:var(--cinnabar-deep);}
.intro-box p{margin:0;font-size:13.5px;color:var(--ink-soft);}
.intro-box ul{margin:8px 0 0;padding-left:18px;font-size:13.5px;color:var(--ink-soft);}
.intro-box li{margin:4px 0;}

/* ============ 卡片网格 ============ */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:16px;}
.list-group-head{
  grid-column:1/-1;display:flex;align-items:baseline;gap:12px;
  margin:14px 2px 2px;padding:10px 0 7px;border-bottom:2px solid var(--cat,#999);
}
.list-group-head .lgh-name{
  font-family:var(--serif);font-size:20px;font-weight:700;color:var(--cat,#7a2e1e);
  letter-spacing:1px;
}
.list-group-head .lgh-meta{font-size:12.5px;color:var(--ink-faint);}
.glabel{font-family:var(--serif);}
.card{
  background:var(--card);border:1px solid var(--line-soft);border-radius:var(--radius);
  padding:16px 16px 14px;cursor:pointer;transition:.16s;position:relative;overflow:hidden;
  box-shadow:var(--shadow-sm);
}
.card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--cat,#999);}
.card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--line);}
.card .cname{font-family:var(--serif);font-size:19px;font-weight:700;color:var(--ink);margin:0;}
.card .cname .csub{font-family:var(--serif);font-size:13px;font-weight:400;color:var(--ink-faint);margin-left:7px;}
.card .cname .csub::before{content:"· ";}
.card .cmeta{font-size:12px;color:var(--ink-faint);margin:3px 0 8px;}
.card .cbadge{display:inline-block;font-size:11px;color:#fff;background:var(--cat,#999);
  border-radius:5px;padding:1px 8px;margin-right:6px;}
.card .cbio{font-size:13px;color:var(--ink-soft);line-height:1.6;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.card .ctags{margin-top:9px;font-size:11px;color:var(--ink-faint);}

/* ============ 筛选 / 搜索控件 ============ */
.controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:20px;}
.controls input[type=text]{
  flex:1;min-width:200px;border:1px solid var(--line);border-radius:10px;
  padding:10px 14px;font-size:14px;background:var(--card);color:var(--ink);font-family:var(--sans);
}
.controls input[type=text]:focus{outline:none;border-color:var(--cinnabar);box-shadow:0 0 0 3px rgba(168,50,42,.12);}
.chips{display:flex;flex-wrap:wrap;gap:7px;}
.chip{
  border:1px solid var(--line);background:var(--card);border-radius:20px;
  padding:5px 13px;font-size:12.5px;color:var(--ink-soft);cursor:pointer;transition:.15s;
}
.chip:hover{border-color:var(--cinnabar);color:var(--cinnabar-deep);}
.chip.on{background:var(--cinnabar);border-color:var(--cinnabar);color:#fff;font-weight:600;}
.count-tip{font-size:13px;color:var(--ink-faint);margin:0 0 14px;}

/* ============ 人物详情面板 ============ */
.detail-mask{position:fixed;inset:0;background:rgba(40,30,18,.45);z-index:80;display:none;}
.detail-mask.show{display:block;animation:fade .2s ease;}
.detail{
  position:fixed;top:0;right:0;bottom:0;width:min(560px,94vw);z-index:90;
  background:var(--paper-2);box-shadow:-8px 0 40px rgba(0,0,0,.25);
  transform:translateX(100%);transition:transform .28s ease;overflow-y:auto;
}
.detail.show{transform:none;}
.detail .dhead{padding:24px 46px 18px 26px;border-bottom:2px solid var(--line);position:sticky;top:0;background:var(--paper-2);z-index:2;}
.detail .dclose{position:absolute;right:16px;top:16px;border:none;background:var(--card);
  width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:18px;color:var(--ink-soft);box-shadow:var(--shadow-sm);}
.detail .dclose:hover{background:var(--cinnabar);color:#fff;}
.detail .dname{font-family:var(--serif);font-size:28px;font-weight:700;margin:0;color:var(--ink);}
.detail .dzi{font-size:14px;color:var(--ink-faint);margin:2px 0 10px;display:flex;flex-wrap:wrap;gap:4px 16px;}
.detail .dbadges{display:flex;flex-wrap:wrap;gap:6px;}
.detail .dbadges span{font-size:12px;color:#fff;background:var(--cinnabar);border-radius:6px;padding:2px 9px;}
.detail .dbadges span.alt{background:var(--gold);}
.detail .dbody{padding:20px 26px 40px;}
.dblock{margin:0 0 22px;}
.dblock h4{font-size:15px;margin:0 0 10px;color:var(--cinnabar-deep);display:flex;align-items:center;gap:8px;}
.dblock h4::before{content:"";width:5px;height:16px;background:var(--cinnabar);border-radius:2px;}
.dbio{font-size:14.5px;color:var(--ink);line-height:1.85;}
.detail .dalt{font-family:var(--serif);font-size:15px;color:var(--ink-soft);margin-top:3px;}
.dinfo{display:grid;grid-template-columns:auto 1fr;gap:0;margin:6px 26px 18px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card);box-shadow:var(--shadow-sm);}
.dinfo-row{display:contents;}
.dinfo-row span{background:var(--paper-2);color:var(--ink-soft);font-size:13px;padding:9px 14px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);white-space:nowrap;}
.dinfo-row b{font-size:13.5px;color:var(--ink);font-weight:600;padding:9px 14px;border-bottom:1px solid var(--line);}
.dinfo-row b.na{color:#b8ad9c;font-weight:400;}
.dinfo-row:last-child span,.dinfo-row:last-child b{border-bottom:none;}
.muted{color:var(--ink-faint);}
.timeline{position:relative;padding-left:22px;}
.timeline::before{content:"";position:absolute;left:6px;top:2px;bottom:2px;width:2px;background:var(--line);}
.tl-item{position:relative;margin:0 0 14px;}
.tl-item::before{content:"";position:absolute;left:-19px;top:5px;width:11px;height:11px;border-radius:50%;
  background:var(--card);border:3px solid var(--cinnabar);}
.tl-year{font-family:var(--serif);font-size:13px;font-weight:700;color:var(--cinnabar-deep);}
.tl-title{font-size:14px;color:var(--ink);font-weight:600;}
.tl-desc{font-size:13px;color:var(--ink-soft);}
.ach-list{margin:0;padding-left:18px;font-size:14px;color:var(--ink);}
.ach-list li{margin:5px 0;}
.quote{background:var(--card);border-left:4px solid var(--gold);border-radius:8px;padding:12px 14px;margin:0 0 12px;box-shadow:var(--shadow-sm);}
.quote .qt{font-family:var(--serif);font-size:16px;color:var(--ink);line-height:1.7;}
.quote .qn{font-size:12.5px;color:var(--ink-faint);margin-top:6px;}
.anec{background:rgba(176,141,87,.10);border-radius:8px;padding:12px 14px;margin:0 0 12px;}
.anec .at{font-weight:700;font-size:13.5px;color:var(--cinnabar-deep);margin-bottom:4px;}
.anec .ax{font-size:13.5px;color:var(--ink);line-height:1.75;}
.rel-grid{display:flex;flex-direction:column;gap:8px;}
/* 详情面板：分片加载中 */
.dloading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:80px 20px;text-align:center;}
.dl-spin{width:34px;height:34px;border:3px solid var(--line);border-top-color:var(--cinnabar);border-radius:50%;animation:dlspin .8s linear infinite;}
@keyframes dlspin{to{transform:rotate(360deg);}}
.dl-t{font-size:14px;color:var(--ink-soft);}
/* 详情页关系小图 */
.relgraph{width:100%;max-width:460px;height:auto;display:block;margin:2px auto 4px;}
.relgraph .rg-node{cursor:pointer;}
.relgraph .rg-node circle{transition:.15s;}
.relgraph .rg-node:hover circle{filter:drop-shadow(0 2px 5px rgba(168,50,42,.35));}
.relgraph .rg-nm{font:600 11px/1 var(--sans);fill:var(--ink);paint-order:stroke;stroke:var(--paper);stroke-width:3px;}
.relgraph .rg-rel{font:9px/1 var(--sans);paint-order:stroke;stroke:var(--paper);stroke-width:3px;opacity:.9;}
.relgraph .rg-me-nm{font:700 12px/1 var(--serif);fill:#fff;}
.rg-more{font-size:12px;color:var(--ink-faint);text-align:center;margin-top:2px;}
@media print{ .relgraph .rg-node circle{stroke-width:1.5;} }
.rel{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line-soft);
  border-radius:10px;padding:9px 12px;cursor:pointer;transition:.15s;}
.rel:hover{border-color:var(--cinnabar);box-shadow:var(--shadow-sm);}
.rel .rtag{font-size:11px;color:#fff;border-radius:5px;padding:2px 8px;white-space:nowrap;flex:0 0 auto;}
.rel .rname{font-family:var(--serif);font-size:15px;font-weight:600;color:var(--ink);}
.rel .rnote{font-size:12px;color:var(--ink-faint);margin-left:auto;text-align:right;}
.dsource{font-size:12px;color:var(--ink-faint);border-top:1px dashed var(--line);padding-top:12px;margin-top:6px;}
.dsource b{color:var(--ink-soft);}

/* ============ 图谱 / 思维导图容器 ============ */
.viz-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px;}
.viz-toolbar input[type=text]{border:1px solid var(--line);border-radius:9px;padding:8px 12px;font-size:13px;background:var(--card);min-width:180px;}
.viz-toolbar button{border:1px solid var(--line);background:var(--card);border-radius:9px;padding:7px 13px;font-size:13px;cursor:pointer;color:var(--ink-soft);}
.viz-toolbar button:hover{border-color:var(--cinnabar);color:var(--cinnabar-deep);}
.viz-toolbar button.on{background:var(--cinnabar);border-color:var(--cinnabar);color:#fff;}
.mm-status{font-size:12.5px;color:var(--cinnabar-deep);min-width:84px;align-self:center;white-space:nowrap;}
.viz-box{background:var(--paper-2);border:1px solid var(--line);border-radius:14px;overflow:hidden;height:560px;box-shadow:var(--shadow);}
/* 时间轴的轴线只有约 80px，固定 560px 会留下大片空白 → 仅对时间轴取消固定高度 */
#sec-timeline .viz-box{height:auto;min-height:0;overflow:visible;}
.viz-box svg{display:block;}
.viz-box canvas{display:block;width:100%;height:560px;touch-action:none;}
@media(max-width:760px){
  .wrap{padding:18px 14px 40px;}
  .viz-box{height:440px;}
  /* 关系图谱画布高度由 JS 按视口计算（约 340–560px），移动端改为自适应高度，
     避免固定 440px + overflow:hidden 把画布底部约 4–13% 永久裁掉（画布 touch-action:none 无法滚动揭示） */
  #sec-graph .viz-box{height:auto;}
  .viz-box svg{height:auto;}
  .section-head{margin:2px 0 14px;}
  .section-head p{font-size:13px;line-height:1.6;}
  .viz-toolbar{gap:7px;margin-bottom:10px;}
  .viz-toolbar input[type=text]{flex:1 1 140px;min-width:140px;padding:7px 10px;}
  .viz-toolbar button{padding:6px 10px;font-size:12px;}
  .mm-status{font-size:11.5px;min-width:60px;}
  /* 图例改为单行横向滑动，避免在小屏上折成多行、把画布挤下去 */
  .legend-row{flex-wrap:nowrap;overflow-x:auto;gap:14px;padding-bottom:6px;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
  .legend-row::-webkit-scrollbar{display:none;}
}
.legend-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;font-size:12.5px;color:var(--ink-soft);}
.legend-row .lg{display:inline-flex;align-items:center;gap:5px;}
.legend-row .sw{width:14px;height:14px;border-radius:4px;display:inline-block;}
.legend-row .ln{width:22px;height:0;border-top:3px solid #999;display:inline-block;}
.graph-stats{margin:2px 0 12px;padding:9px 13px;border:1px dashed var(--line);border-radius:10px;background:var(--paper-2);font-size:12.5px;color:var(--ink-soft);line-height:1.7;}
.graph-stats b{color:var(--cinnabar-deep);}

/* 思维导图节点 */
.node text{paint-order:stroke;stroke:var(--paper-2);stroke-width:3.5px;stroke-linejoin:round;cursor:pointer;}
.node .nlabel{font-family:var(--serif);font-size:13px;font-weight:700;fill:var(--ink);}
.node .nrel{font-size:10px;fill:var(--ink-faint);}
.node circle{cursor:pointer;transition:.15s;}
.node:hover circle{r:9;}
.node.mm-hit circle{stroke:var(--cinnabar);stroke-width:4;}
.node.mm-hit .nlabel{fill:var(--cinnabar-deep);}
.link{fill:none;}

/* 关系图谱（Canvas 版，旧 SVG 类已弃用） */
#gCanvas{cursor:default;}

/* ============ 时间轴（编年） ============ */
.tl-axis{position:relative;padding:10px 0 4px;}
.tl-track{display:flex;gap:0;overflow-x:auto;padding:14px 4px 20px;}
.tl-era{flex:0 0 auto;min-width:96px;text-align:center;position:relative;padding-top:26px;cursor:pointer;}
.tl-era .dot{width:13px;height:13px;border-radius:50%;background:var(--gold);border:3px solid var(--paper-2);box-shadow:0 0 0 2px var(--gold);margin:0 auto 8px;position:absolute;top:0;left:50%;transform:translateX(-50%);}
.tl-era .y{font-family:var(--serif);font-size:13px;font-weight:700;color:var(--cinnabar-deep);}
.tl-era .n{font-size:12px;color:var(--ink-soft);}
.tl-rail{position:absolute;left:0;right:0;top:6px;height:3px;background:linear-gradient(90deg,var(--gold),var(--cinnabar));border-radius:3px;}
.tl-figs{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-top:8px;}
.tl-fig{background:var(--card);border:1px solid var(--line-soft);border-radius:10px;padding:10px 12px;cursor:pointer;transition:.15s;}
.tl-fig:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm);border-color:var(--line);}
.tl-fig .tfy{font-size:11px;color:var(--gold);font-weight:700;}
.tl-fig .tfn{font-family:var(--serif);font-size:15px;font-weight:700;}
.tl-fig .tfn i{display:block;font-style:normal;font-size:11px;font-weight:400;color:var(--ink-faint);margin-top:1px;}
.tl-fig .tfd{font-size:11.5px;color:var(--ink-faint);}
.tl-era.on .y{color:var(--cinnabar);}
.tl-catbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 10px;}
.tl-catbar-lab{font:12px/1 var(--sans);color:var(--ink-faint);flex:none;}
.tl-catbar .chips{flex-wrap:wrap;}
.tl-catbar .chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:4px 10px;}
.tl-cdot{width:8px;height:8px;border-radius:50%;flex:none;}

/* ============ 专题合集 ============ */
.coll-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;}
.coll-cats{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 6px;}
.coll{background:var(--card);border:1px solid var(--line-soft);border-radius:16px;padding:20px;cursor:pointer;transition:.16s;box-shadow:var(--shadow-sm);position:relative;overflow:hidden;}
.coll:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--line);}
.coll h3{margin:0 0 6px;font-size:19px;color:var(--ink);}
.coll .cdesc{font-size:13px;color:var(--ink-soft);margin:0 0 12px;min-height:38px;}
.coll .cmems{display:flex;flex-wrap:wrap;gap:6px;}
.coll .cmems span{font-size:12px;background:rgba(168,50,42,.08);color:var(--cinnabar-deep);border-radius:6px;padding:3px 9px;}
.coll .cmore{margin-top:14px;font-size:13px;color:var(--cinnabar);font-weight:600;}

/* 总览「全部专题」入口卡 */
.coll-more{background:linear-gradient(160deg,var(--paper-2),var(--card));border:1.5px dashed var(--cinnabar-soft,var(--line));border-radius:16px;padding:20px;cursor:pointer;transition:.16s;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;}
.coll-more:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--cinnabar);}
.coll-more .cm-n{font-family:var(--serif);font-size:38px;font-weight:700;color:var(--cinnabar);line-height:1;}
.coll-more .cm-t{font-size:17px;font-weight:700;color:var(--ink);}
.coll-more .cm-d{font-size:12.5px;color:var(--ink-faint);line-height:1.6;}
.coll-more .cm-go{margin-top:8px;font-size:13px;color:var(--cinnabar);font-weight:600;}

/* 总览 · 朝代纵览 */
.dyn-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;}
.dyn-cell{background:var(--card);border:1px solid var(--line-soft);border-radius:12px;padding:12px 12px 10px;cursor:pointer;transition:.16s;box-shadow:var(--shadow-sm);}
.dyn-cell:hover{transform:translateY(-3px);border-color:var(--cinnabar);box-shadow:var(--shadow);}
.dyn-cell .dc-name{font-family:var(--serif);font-size:17px;font-weight:700;color:var(--ink);}
.dyn-cell .dc-era{font-size:11.5px;color:var(--ink-faint);margin:2px 0 8px;}
.dyn-cell .dc-bar{height:5px;background:var(--line-soft);border-radius:3px;overflow:hidden;}
.dyn-cell .dc-bar span{display:block;height:100%;background:var(--cinnabar);border-radius:3px;}
.dyn-cell .dc-n{font-size:12px;color:var(--cinnabar-deep);margin-top:6px;font-weight:600;}

/* 总览 · 类别分布 */
.cat-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;}
.cat-cell{background:var(--card);border:1px solid var(--line-soft);border-radius:12px;padding:12px 14px;cursor:pointer;transition:.16s;box-shadow:var(--shadow-sm);}
.cat-cell:hover{transform:translateY(-3px);box-shadow:var(--shadow);}
.cat-cell .cc-name{font-family:var(--serif);font-size:16px;font-weight:700;}
.cat-cell .cc-bar{height:5px;background:var(--line-soft);border-radius:3px;overflow:hidden;margin:8px 0 6px;}
.cat-cell .cc-bar span{display:block;height:100%;border-radius:3px;}
.cat-cell .cc-n{font-size:12px;color:var(--ink-faint);}

/* 编纂说明三栏 */
.editorial li b{color:var(--cinnabar-deep);}

/* 专题就地展开详情 */
.coll-detail{margin-top:4px;}
.coll-back{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 16px;font-size:13.5px;color:var(--ink-soft);cursor:pointer;transition:.15s;margin-bottom:18px;}
.coll-back:hover{background:var(--paper-2);color:var(--cinnabar);border-color:var(--cinnabar);}
.coll-d-head{border-bottom:2px solid var(--line);padding-bottom:16px;margin-bottom:20px;}
.coll-d-head h2{margin:0 0 6px;font-size:25px;color:var(--ink);font-family:var(--serif);}
.coll-d-desc{margin:0 0 8px;font-size:14.5px;color:var(--ink-soft);line-height:1.7;}
.coll-d-meta{font-size:13px;color:var(--ink-faint);}
.coll-d-meta b{color:var(--cinnabar-deep);}
.coll-d-hint{display:inline-block;margin-left:6px;color:var(--ink-faint);font-size:12px;}
.coll-article{margin:16px 0 22px;background:linear-gradient(180deg, color-mix(in srgb, var(--cinnabar) 7%, var(--card)), var(--card));border:1px solid var(--line-soft);border-left:4px solid var(--cinnabar);border-radius:12px;padding:14px 16px;}
.coll-article .ca-tag{display:inline-block;font-size:12px;font-weight:700;color:#fff;background:var(--cinnabar);border-radius:6px;padding:2px 9px;margin-bottom:8px;letter-spacing:.05em;}
.coll-article p{margin:0;font-size:14px;line-height:1.85;color:var(--ink-soft);text-align:justify;}
.coll-extra{margin:0 0 22px;display:flex;flex-direction:column;gap:14px;}
.coll-sec{background:var(--card);border:1px solid var(--line-soft);border-radius:14px;padding:18px 20px;box-shadow:var(--shadow-sm);}
.coll-sec h4{margin:0 0 8px;font-family:var(--serif);font-size:16.5px;color:var(--cinnabar-deep);}
.coll-sec h4::before{content:'';display:inline-block;width:4px;height:14px;background:var(--cinnabar);border-radius:2px;margin-right:8px;vertical-align:-1px;}
.coll-sec p{margin:0;font-size:14px;line-height:2;color:var(--ink-soft);text-align:justify;}

/* ============ 名言库 ============ */
.q-filter{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:16px;}
.q-card{background:var(--card);border:1px solid var(--line-soft);border-left:5px solid var(--gold);
  border-radius:12px;padding:16px 18px;margin-bottom:14px;box-shadow:var(--shadow-sm);}
.q-card .qtext{font-family:var(--serif);font-size:18px;line-height:1.8;color:var(--ink);}
.q-card .qmeta{margin-top:8px;font-size:12.5px;color:var(--ink-faint);}
.q-card .qmeta b{color:var(--cinnabar-deep);cursor:pointer;}
.q-card .qdesc{margin-top:6px;font-size:13px;color:var(--ink-soft);}
.empty{text-align:center;color:var(--ink-faint);padding:40px;font-size:14px;}

/* ============ 分页器 ============ */
.pager{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px;margin:24px 0 8px;}
.pg-btn{
  font-family:var(--sans);font-size:13px;line-height:1;padding:7px 12px;border-radius:8px;
  border:1px solid var(--line-soft);background:var(--card);color:var(--ink-soft);cursor:pointer;
  transition:.15s;min-width:38px;
}
.pg-btn:hover:not(:disabled):not(.on){border-color:var(--cinnabar);color:var(--cinnabar-deep);}
.pg-btn.on{background:var(--cinnabar);border-color:var(--cinnabar);color:#fff;font-weight:600;}
.pg-btn:disabled{opacity:.4;cursor:not-allowed;}
.pg-ellipsis{color:var(--ink-faint);padding:0 2px;user-select:none;}
.pg-info{margin-left:10px;font-size:12.5px;color:var(--ink-faint);}
@media(max-width:600px){.pg-info{display:none;}}

/* ============ 页脚 ============ */
.foot{max-width:1200px;margin:0 auto;padding:24px 18px 40px;color:var(--ink-faint);font-size:12.5px;text-align:center;border-top:1px solid var(--line-soft);}
.foot b{color:var(--ink-soft);}
.foot-line{max-width:980px;margin:0 auto 12px;line-height:1.7;}
.foot-beian{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 18px;}
.foot-beian a{color:var(--ink-faint);text-decoration:none;display:inline-flex;align-items:center;gap:5px;transition:color .2s;}
.foot-beian a:hover{color:var(--cinnabar);}
.foot-beian .beian-police svg{display:block;}
.foot-pv{color:var(--ink-faint);}
.foot-run{color:var(--ink-faint);}
.foot-run:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--cinnabar);margin:0 8px 2px 0;vertical-align:middle;}
.foot-pv #busuanzi_value_site_pv{color:var(--cinnabar);font-weight:700;}

/* ============ 新增：印章 / 收藏 / 模式切换 / 世系 ============ */
.seal-svg{vertical-align:middle;flex:0 0 auto;border-radius:6px;}
/* 朱砂姓名印章：按字数自适应排布，显示人物全名 */
.seal-name{
  display:grid;place-items:center;gap:0;flex:0 0 auto;
  background:var(--cinnabar);color:#fff;border-radius:6px;
  border:1.5px solid var(--cinnabar-deep);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.35);
  font-family:var(--serif);font-weight:700;line-height:1;overflow:hidden;
}
.seal-name i{font-style:normal;display:flex;align-items:center;justify-content:center;}
.seal-name.n1{grid-template-columns:1fr;} .seal-name.n1 i{font-size:.62em;}
.seal-name.n2{grid-template-columns:1fr 1fr;} .seal-name.n2 i{font-size:.44em;}
.seal-name.n3{grid-template-columns:1fr 1fr 1fr;} .seal-name.n3 i{font-size:.32em;}
.seal-name.n4{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;} .seal-name.n4 i{font-size:.4em;}
.seal-name.n5{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;} .seal-name.n5 i{font-size:.3em;}
.card-top{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.card-top .cbadge{margin-right:0;}
.card-top .fav-btn{margin-left:auto;font-size:17px;color:var(--ink-faint);cursor:pointer;user-select:none;
  width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:.15s;}
.card-top .fav-btn:hover{background:rgba(168,50,42,.10);color:var(--cinnabar);}
.card-top .fav-btn.on{color:var(--gold);}

.fav-chip{display:inline-flex;align-items:center;gap:4px;}
.fav-chip.on{background:var(--gold);border-color:var(--gold);color:#fff;font-weight:600;}

.mode-switch{display:inline-flex;background:var(--paper-2);border:1px solid var(--line);border-radius:9px;overflow:hidden;}
.mode-switch button{border:none;background:transparent;cursor:pointer;font-family:var(--sans);font-size:13.5px;
  color:var(--ink-soft);padding:8px 14px;transition:.15s;}
.mode-switch button:hover{color:var(--cinnabar-deep);}
.mode-switch button.on{background:var(--cinnabar);color:#fff;font-weight:600;}

.fav-hint{margin-top:14px;font-size:13px;color:var(--ink-faint);}
.fav-hint b{color:var(--cinnabar-deep);}

.detail .dhead-top{display:flex;align-items:center;gap:14px;margin-bottom:10px;}
.detail .dhead-top .seal-svg{box-shadow:var(--shadow-sm);}
.detail .dhead-top .seal-name{box-shadow:var(--shadow-sm);}
.detail .dfav{position:absolute;right:16px;top:54px;border:1px solid var(--line);background:var(--card);
  border-radius:20px;padding:5px 13px;font-size:12.5px;cursor:pointer;color:var(--ink-soft);transition:.15s;}
.detail .dfav:hover{border-color:var(--gold);color:var(--cinnabar-deep);}
.detail .dfav.on{background:var(--gold);border-color:var(--gold);color:#fff;}
.detail .dnav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:10px 26px 0;}
.detail .dnav-btn{font:13px/1 var(--sans);padding:8px 14px;border:1px solid var(--line);border-radius:20px;background:var(--card);color:var(--cinnabar-deep);cursor:pointer;transition:.15s;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.detail .dnav-btn:hover{border-color:var(--cinnabar);background:rgba(168,50,42,.06);}
.detail .dnav-btn.off{color:var(--ink-faint);cursor:default;border-style:dashed;background:transparent;}
.detail .dnav-btn.off:hover{border-color:var(--line);background:transparent;}
.detail .dnav-pos{font-size:12px;color:var(--ink-faint);flex:0 0 auto;}

.lin-row{display:flex;align-items:flex-start;gap:10px;margin:0 0 10px;flex-wrap:wrap;}
.lin-label{flex:0 0 40px;font-size:12.5px;color:var(--ink-faint);padding-top:3px;}
.lnode{font-family:var(--serif);font-size:14px;background:var(--card);border:1px solid var(--line-soft);
  border-radius:8px;padding:3px 11px;color:var(--ink);}
.lnode[onclick]{cursor:pointer;transition:.15s;}
.lnode[onclick]:hover{border-color:var(--cinnabar);color:var(--cinnabar-deep);box-shadow:var(--shadow-sm);}
.lnode.me{background:var(--cinnabar);border-color:var(--cinnabar);color:#fff;font-weight:700;}
.lnode.dim{background:transparent;border-style:dashed;color:var(--ink-faint);}
.lin-temple{font-size:11.5px;color:var(--ink-faint);align-self:center;}

/* ============ 详情：导出/打印 + 深度详传 ============ */
.detail .dexport{position:absolute;right:16px;top:92px;border:1px solid var(--line);background:var(--card);
  border-radius:20px;padding:5px 13px;font-size:12.5px;cursor:pointer;color:var(--ink-soft);transition:.15s;}
.detail .dexport:hover{border-color:var(--cinnabar);color:var(--cinnabar-deep);}
.detail .dexport-copy{right:120px;}
.ex-port{font:13px/1 -apple-system,"Microsoft YaHei",sans-serif;font-weight:600;color:var(--cinnabar-deep);background:rgba(176,141,87,.12);border:1px solid var(--gold);border-radius:18px;padding:7px 14px;cursor:pointer;transition:.15s;}
.ex-port:hover{background:var(--gold);color:#fff;}
.detail .drel{margin-top:6px;}
.detail .drel .rel-grid-cards{margin-top:10px;}
@media (max-width:720px){ .detail .dexport-copy{right:96px;top:auto;bottom:14px;} .detail .dexport{top:auto;bottom:14px;right:14px;} }
.lb-block .lb-body{background:var(--card);border:1px solid var(--line-soft);border-radius:12px;padding:16px 18px;box-shadow:var(--shadow-sm);}
.lb-sec{margin:0 0 14px;}
.lb-sec:last-child{margin-bottom:0;}
.lb-sec h5{font-family:var(--serif);font-size:15px;color:var(--cinnabar-deep);margin:0 0 6px;}
.lb-sec p{font-size:14px;color:var(--ink);line-height:1.9;margin:0;text-align:justify;}
.lb-works{margin-top:12px;font-size:13px;color:var(--ink-soft);border-top:1px dashed var(--line);padding-top:10px;}
.lb-works b{color:var(--cinnabar-deep);}
.lb-works span{display:inline-block;background:rgba(176,141,87,.12);color:var(--cinnabar-deep);border-radius:6px;padding:3px 9px;margin:3px 4px 0 0;font-size:12.5px;}

/* ============ 对比阅读 ============ */
.cmp-picker{background:var(--card);border:1px solid var(--line-soft);border-radius:14px;padding:16px 18px;margin-bottom:20px;box-shadow:var(--shadow-sm);}
.cmp-add{display:flex;flex-wrap:wrap;gap:10px;align-items:center;}
.cmp-add select{border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-size:13.5px;background:var(--paper-2);min-width:240px;color:var(--ink);font-family:var(--sans);max-width:100%;}
.cmp-add button{border:1px solid var(--cinnabar);background:var(--cinnabar);color:#fff;border-radius:10px;padding:9px 16px;font-size:13.5px;cursor:pointer;transition:.15s;}
.cmp-add button:hover{background:var(--cinnabar-deep);}
.cmp-hint{font-size:12.5px;color:var(--ink-faint);}
.cmp-hint b{color:var(--cinnabar-deep);}
.cmp-add .cmp-restore{background:var(--paper-2);color:var(--cinnabar-deep);border:1px solid var(--cinnabar);}
.cmp-add .cmp-restore:hover{background:var(--cinnabar);color:#fff;}
.cmp-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
.cmp-chip{background:var(--card);border-left:4px solid var(--cat,#999);border-radius:8px;padding:6px 10px 6px 12px;font-size:13.5px;color:var(--ink);display:inline-flex;align-items:center;gap:6px;box-shadow:var(--shadow-sm);}
.cmp-chip i{cursor:pointer;color:var(--ink-faint);font-style:normal;font-weight:700;font-size:15px;}
.cmp-chip i:hover{color:var(--cinnabar);}
.cmp-empty{text-align:center;color:var(--ink-faint);padding:36px;font-size:14px;background:var(--card);border:1px dashed var(--line);border-radius:14px;}
.cmp-cols{display:grid;gap:16px;}
.cmp-cols[style*="repeat(4"]{gap:12px;}
.cmp-cols[style*="repeat(4"] .cmp-col{padding:12px;}
@media(max-width:900px){
  .cmp-cols{grid-template-columns:repeat(2,1fr)!important;}
}
@media(max-width:560px){
  .cmp-cols{grid-template-columns:1fr!important;}
}
.cmp-col{background:var(--card);border:1px solid var(--line-soft);border-top:4px solid var(--cat,#999);border-radius:14px;padding:16px;box-shadow:var(--shadow-sm);}
.cmp-col-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;position:relative;}
.cmp-col-head .cmp-name{font-family:var(--serif);font-size:20px;font-weight:700;color:var(--ink);}
.cmp-col-head .cmp-name .cmp-sub{font-size:13px;font-weight:400;color:var(--ink-faint);margin-left:7px;}
.cmp-col-head .cmp-meta{font-size:12px;color:var(--ink-faint);}
.cmp-col-head .cmp-badge{position:absolute;right:0;top:0;font-size:11px;color:#fff;border-radius:6px;padding:2px 9px;}
.cmp-block{margin:0 0 14px;}
.cmp-block h5{font-size:13.5px;color:var(--cinnabar-deep);margin:0 0 6px;border-left:3px solid var(--cat,#999);padding-left:8px;}
.cmp-block p{font-size:13px;color:var(--ink);line-height:1.75;margin:0;}
.cmp-ul{margin:0;padding-left:18px;font-size:13px;color:var(--ink);}
.cmp-ul li{margin:4px 0;}
.cmp-ev .ev-y{font-family:var(--serif);color:var(--cinnabar-deep);font-weight:700;margin-right:4px;}
.cmp-q{font-family:var(--serif);font-size:14px;color:var(--ink);background:rgba(176,141,87,.10);border-radius:8px;padding:8px 10px;margin:0 0 7px;line-height:1.6;}
.cmp-q span{display:block;font-size:11.5px;color:var(--ink-faint);margin-top:3px;font-family:var(--sans);}
.cmp-muted{font-size:12.5px;color:var(--ink-faint);}
.cmp-rel-wrap{display:flex;flex-wrap:wrap;gap:6px;}
.cmp-rel{font-size:12.5px;background:var(--paper-2);border:1px solid var(--line-soft);border-radius:7px;padding:3px 9px;color:var(--ink);cursor:pointer;transition:.15s;display:inline-flex;align-items:center;gap:5px;}
.cmp-rel:hover{border-color:var(--cinnabar);color:var(--cinnabar-deep);}
.cmp-rel i{width:9px;height:9px;border-radius:50%;display:inline-block;}
.cmp-rel em{font-style:normal;font-size:11px;color:var(--ink-faint);}
.cmp-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:14px;}
.cmp-toolbar-tip{font-size:13px;color:var(--ink-faint);}
.cmp-toolbar-tip b{color:var(--cinnabar-deep);}
.cmp-print-btn{border:1px solid var(--cinnabar);background:var(--cinnabar);color:#fff;border-radius:10px;padding:9px 16px;font-size:13.5px;cursor:pointer;transition:.15s;font-family:var(--sans);}
.cmp-print-btn:hover{background:var(--cinnabar-deep);}
.cmp-print-btn:disabled{background:var(--line);border-color:var(--line);color:var(--ink-faint);cursor:not-allowed;}
/* 打印专用容器：屏幕上隐藏，仅 @media print 下显示 */
#cmpPrint{display:none;}
.cmp-print-head{font-family:var(--serif);font-size:22px;font-weight:700;color:#000;margin-bottom:16px;border-bottom:2px solid #000;padding-bottom:10px;}
.cmp-print-cols{display:grid;gap:16px;}
.cmp-print-cols .cmp-col{break-inside:avoid;}

/* ============ 称号检索 ============ */
.title-result{margin-bottom:8px;}
.tt-empty{background:var(--card);border:1px dashed var(--line);border-radius:12px;padding:16px;color:var(--ink-faint);font-size:13.5px;text-align:center;}
.tt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;}
.tt-row{background:var(--card);border:1px solid var(--line-soft);border-radius:12px;padding:13px 15px;box-shadow:var(--shadow-sm);transition:.15s;}
.tt-row.click{cursor:pointer;}
.tt-row.click:hover{border-color:var(--cinnabar);transform:translateY(-2px);box-shadow:var(--shadow);}
.tt-name{font-family:var(--serif);font-size:17px;font-weight:700;color:var(--ink);display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.tt-dyn{font-size:11px;color:#fff;background:var(--cinnabar);border-radius:5px;padding:1px 8px;font-family:var(--sans);}
.tt-kv{font-size:12.5px;color:var(--ink-soft);margin:3px 0;}
.tt-kv b{display:inline-block;min-width:34px;color:var(--cinnabar-deep);}
.tt-go{font-size:12px;color:var(--gold);margin-top:6px;font-weight:600;}
.tt-group{margin-bottom:18px;}
.tt-group h4,.tt-group h5{font-family:var(--serif);color:var(--ink);margin:0 0 10px;padding-bottom:6px;border-bottom:2px solid var(--line);}
.tt-group h4{font-size:16px;}
.tt-group h5{font-size:14.5px;color:var(--cinnabar-deep);}
.tt-browse-h{font-family:var(--serif);font-size:18px;color:var(--ink);margin:22px 0 12px;padding-bottom:6px;border-bottom:3px double var(--gold);}
.tt-kind{font-size:11px;color:#fff;background:var(--gold-deep,#9a6a1f);border-radius:5px;padding:1px 8px;font-family:var(--sans);font-weight:600;}
.tt-persons{display:flex;flex-wrap:wrap;gap:7px;margin-top:2px;}
.tt-person{cursor:pointer;font-family:var(--sans);font-size:13px;color:var(--ink);background:var(--chip-bg,#f4ece1);border:1px solid var(--line-soft);border-radius:18px;padding:4px 11px;transition:.15s;display:inline-flex;align-items:center;gap:5px;}
.tt-person:hover{border-color:var(--cinnabar);color:var(--cinnabar-deep);transform:translateY(-1px);}
.tt-person i{font-style:normal;font-size:10.5px;color:var(--ink-faint);}
/* 称号检索 · 释义面板（庙号 / 年号 / 谥号 / 尊号） */
.tt-explain{background:var(--card);border:1px solid var(--line-soft);border-radius:14px;padding:16px 18px;margin-bottom:10px;box-shadow:var(--shadow-sm);}
.tt-explain-head h4{font-family:var(--serif);font-size:18px;color:var(--ink);margin:0 0 6px;}
.tt-explain-head h4 span{font-size:13px;color:var(--cinnabar);font-family:var(--sans);font-weight:600;margin-left:8px;letter-spacing:.5px;}
.tt-explain-head p{margin:0;color:var(--ink-soft);font-size:13px;line-height:1.65;max-width:820px;}
.tt-def-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:11px;margin:13px 0 2px;}
.tt-def{background:var(--chip-bg,#f4ece1);border:1px solid var(--line-soft);border-radius:11px;padding:11px 13px;}
.tt-def-t{font-family:var(--serif);font-size:15px;font-weight:700;color:var(--cinnabar-deep);margin-bottom:6px;}
.tt-def-t em{font-style:normal;font-size:11px;color:var(--ink-faint);margin-left:7px;font-family:var(--sans);letter-spacing:.3px;}
.tt-def p{margin:0;font-size:12.5px;line-height:1.7;color:var(--ink);}
.tt-def p b{color:var(--cinnabar-deep);}
.tt-def-eg{display:inline-block;margin-top:6px;font-size:11.5px;color:var(--gold-deep,#9a6a1f);font-family:var(--serif);font-weight:600;}
.tt-timeline{margin-top:11px;padding:11px 14px;border-left:3px solid var(--cinnabar);background:#fbf3e8;border-radius:0 11px 11px 0;font-size:12.5px;line-height:1.8;color:var(--ink);}
.tt-timeline b{color:var(--cinnabar-deep);}
@media (max-width:560px){.tt-def-grid{grid-template-columns:1fr;}}

/* ============ 地域分布 ============ */
.geo-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-bottom:16px;}
.geo-toolbar .geo-label{font-size:13px;color:var(--ink-soft);white-space:nowrap;}
.geo-toolbar select{border:1px solid var(--line);border-radius:9px;padding:8px 12px;font-size:13.5px;background:var(--card);color:var(--ink);font-family:var(--sans);flex:0 0 auto;}
.geo-modes{display:inline-flex;gap:8px;flex:0 0 auto;}
.geo-tip{flex:1 1 100%;font-size:12.5px;color:var(--ink-faint);line-height:1.6;margin-top:2px;}
.geo-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:88px;gap:10px;max-width:560px;}
.geo-grid.geo-places{display:block;max-width:none;grid-auto-rows:auto;}
@media(max-width:620px){.geo-grid{grid-auto-rows:72px;gap:7px;max-width:420px;margin:0 auto;} .geo-n{font-size:21px;} .geo-r{font-size:11.5px;}}
.geo-cell{border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;
  background:color-mix(in srgb, var(--bg) calc(var(--op)*100%), #fff);border:1.5px solid var(--bg);transition:.15s;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.35);}
.geo-cell:hover{transform:scale(1.04);box-shadow:var(--shadow);}
.geo-n{font-family:var(--serif);font-size:26px;font-weight:700;line-height:1;}
.geo-r{font-size:13px;margin-top:4px;letter-spacing:.05em;}
.geo-detail{margin-top:20px;background:var(--card);border:1px solid var(--line-soft);border-radius:14px;padding:16px 18px;box-shadow:var(--shadow-sm);}
.geo-detail-head{font-size:15px;color:var(--ink);margin-bottom:10px;}
.geo-detail-head .geo-mods{font-size:12px;color:var(--ink-faint);margin-left:8px;font-weight:400;}
.geo-detail-head .accent{color:var(--cinnabar);}
.geo-persons{display:flex;flex-wrap:wrap;gap:8px;}
.geo-person{background:var(--card);border-left:4px solid var(--cat,#999);border-radius:8px;padding:5px 11px;font-size:13.5px;color:var(--ink);cursor:pointer;transition:.15s;box-shadow:var(--shadow-sm);}
.geo-person em{font-style:normal;font-size:11px;color:var(--ink-faint);margin-left:5px;}
.geo-person:hover{border-color:var(--cinnabar);transform:translateY(-2px);}
.geo-hint{font-size:13px;color:var(--ink-faint);}

/* 古地名分组（大区详情 / 按古地名总览共用） */
.geo-place-groups{display:flex;flex-direction:column;gap:12px;}
.geo-place-group{background:var(--chip-bg,#f4ece1);border:1px solid var(--line-soft);border-radius:12px;padding:10px 13px;}
.geo-place-head{font-family:var(--serif);font-size:15.5px;font-weight:700;color:var(--ink);display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.geo-pc{font-size:11px;color:#fff;background:var(--cinnabar);border-radius:10px;padding:1px 9px;font-family:var(--sans);}
.geo-place-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:13px;}
.geo-place-card{background:var(--card);border:1px solid var(--line-soft);border-radius:12px;padding:11px 13px;box-shadow:var(--shadow-sm);}
.geo-place-card .geo-place-head{color:var(--cinnabar-deep);}
.geo-place-card .geo-persons{gap:6px;}
@media(max-width:560px){.geo-place-list{grid-template-columns:1fr;}}

/* ============ 知识测验 ============ */
.quiz-box{max-width:720px;}
.quiz-prog{font-size:13px;color:var(--ink-soft);margin-bottom:14px;}
.quiz-prog b{color:var(--cinnabar-deep);}
.quiz-q{font-family:var(--serif);font-size:21px;color:var(--ink);line-height:1.7;margin-bottom:18px;background:var(--card);border:1px solid var(--line-soft);border-left:5px solid var(--cinnabar);border-radius:12px;padding:18px 20px;box-shadow:var(--shadow-sm);}
.quiz-opts{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
@media(max-width:560px){.quiz-opts{grid-template-columns:1fr;}}
.quiz-opt{border:1px solid var(--line);background:var(--card);border-radius:12px;padding:15px 16px;font-size:15px;cursor:pointer;color:var(--ink);text-align:left;transition:.15s;font-family:var(--sans);}
.quiz-opt:hover{border-color:var(--cinnabar);color:var(--cinnabar-deep);}
.quiz-opt.done{cursor:default;}
.quiz-opt.right{background:rgba(39,174,96,.16);border-color:#27ae60;color:#1e7e44;font-weight:600;}
.quiz-opt.wrong{background:rgba(214,48,49,.12);border-color:#d63031;color:#a32020;}
.quiz-fb{margin-top:16px;font-size:15px;color:var(--ink);}
.quiz-ex{font-size:13px;color:var(--ink-soft);margin:8px 0 14px;line-height:1.7;}
.quiz-btn{border:none;background:var(--paper-2);border:1px solid var(--line);border-radius:10px;padding:9px 18px;font-size:14px;cursor:pointer;color:var(--ink-soft);}
.quiz-btn.primary{background:var(--cinnabar);border-color:var(--cinnabar);color:#fff;font-weight:600;}
.quiz-btn.primary:hover{background:var(--cinnabar-deep);}
.quiz-end{text-align:center;background:var(--card);border:1px solid var(--line-soft);border-radius:18px;padding:34px;box-shadow:var(--shadow-sm);}
.quiz-end h3{font-size:24px;margin:0 0 8px;color:var(--cinnabar-deep);}
.quiz-end .quiz-rate{font-size:15px;color:var(--ink-soft);margin:8px 0 18px;}
.quiz-end-btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}
.quiz-wrong{text-align:left;max-width:720px;margin:0 auto 20px;background:var(--paper);border:1px solid var(--line-soft);border-radius:14px;padding:14px 16px;}
.quiz-wrong-head{font-family:var(--serif);font-weight:700;font-size:15px;color:var(--cinnabar-deep);margin-bottom:8px;}
.quiz-wrong.none{text-align:center;font-size:14px;color:#2e7d6b;}
.quiz-wrong-list{display:flex;flex-direction:column;gap:10px;max-height:340px;overflow:auto;padding-right:4px;}
.quiz-wrong-item{border:1px solid var(--line-soft);border-radius:10px;padding:10px 12px;background:var(--card);}
.quiz-wrong-item .qw-q{font-size:14px;font-weight:600;color:var(--ink);line-height:1.6;}
.quiz-wrong-item .qw-row{font-size:13px;color:var(--ink-soft);margin-top:5px;display:flex;align-items:center;gap:8px;}
.quiz-wrong-item .qw-ex{font-size:12.5px;color:var(--ink-faint);margin-top:6px;line-height:1.6;}
.qw-tag{font-size:11px;color:#fff;border-radius:5px;padding:1px 7px;flex:none;}
.qw-tag.wrong-tag{background:#b03a2e;}
.qw-tag.right-tag{background:#2e7d6b;}
.quiz-wrong-cleared{font-size:12px;color:#2e7d6b;margin-left:8px;}

/* ============ 打印（导出/打印详情） ============ */
@media print{
  body::before{display:none;}
  .topbar,.wrap,.foot,.detail-mask{display:none !important;}
  .detail{position:static;width:100%;transform:none;box-shadow:none;background:#fff;}
  .detail .dclose,.detail .dfav,.detail .dexport{display:none !important;}
  .detail .dhead{position:static;background:#fff;border-bottom:2px solid #000;padding:0 0 12px;margin-bottom:14px;}
  .lb-sec p,.dbio,.quote .qt{color:#000;}
  .dblock h4{color:#000;}
  /* 对比导出：仅打印 #cmpPrint，隐藏站点其他一切 */
  body.cmp-printing *{visibility:hidden !important;}
  body.cmp-printing #cmpPrint,
  body.cmp-printing #cmpPrint *{visibility:visible !important;}
  body.cmp-printing #cmpPrint{display:block !important;position:absolute;left:0;top:0;width:100%;background:#fff;color:#000;padding:12px;}
}

/* ============ 中华典籍目录（古典文献书目） ============ */
.gj-wrap{ max-width:1200px; margin:18px auto 0; padding:0 14px; display:grid; grid-template-columns:220px 1fr; gap:18px; }
.gj-side{ background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:10px; align-self:start; position:sticky; top:78px; max-height:calc(100vh - 100px); overflow:auto; }
.gj-all{ padding:9px 12px; font-size:15px; cursor:pointer; border-radius:6px; font-weight:bold; color:var(--cinnabar); }
.gj-zi{ display:flex; justify-content:space-between; padding:8px 12px; font-size:15px; cursor:pointer; border-radius:6px; color:var(--ink); }
.gj-zi:hover{ background:var(--paper-2); }
.gj-zi.on{ background:var(--cinnabar); color:#fff; }
.gj-zi .gj-c{ font-size:12px; color:var(--ink-faint); }
.gj-zi.on .gj-c{ color:#f3d9d4; }
.gj-body{ background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:16px 18px; }
.gj-sub{ margin-bottom:16px; }
.gj-sub h3{ font-family:var(--serif); font-size:17px; color:var(--cinnabar-deep); border-bottom:1px solid var(--line-soft); padding-bottom:6px; margin-bottom:6px; }
.gj-sub h3 small{ color:var(--ink-faint); font-size:12px; font-family:var(--sans); font-weight:normal; margin-left:6px; }
.gj-bk{ display:flex; align-items:center; gap:10px; padding:7px 8px; border-radius:6px; font-size:15px; cursor:pointer; }
.gj-bk:hover{ background:var(--paper-2); }
.gj-bk .gj-t{ flex:1; }
.gj-bk:hover .gj-t{ color:var(--cinnabar); }
.gj-bk .gj-m{ font-size:12px; color:var(--ink-faint); font-family:var(--sans); white-space:nowrap; }
.gj-bk .gj-arrow{ font-size:11px; color:var(--ink-faint); flex:none; transition:transform .15s; }
.gj-bk:hover .gj-arrow{ color:var(--cinnabar); }
.gj-bk.open .gj-arrow{ color:var(--cinnabar); transform:rotate(180deg); }
.gj-bk.open{ background:var(--paper-2); }
/* 书籍详情卡（点击书名下方内联显示） */
.gj-detail{ margin:-2px 0 10px; padding:12px 14px; background:var(--paper-2); border:1px solid var(--line-soft); border-left:3px solid var(--cinnabar); border-radius:8px; }
.gj-d-title{ font-family:var(--serif); font-size:16px; color:var(--cinnabar-deep); margin-bottom:6px; }
.gj-d-row{ font-size:14px; color:var(--ink); margin:3px 0; display:flex; gap:10px; }
.gj-d-k{ color:var(--ink-faint); flex:none; width:40px; }
.gj-d-tip{ font-size:13px; color:var(--ink-soft); line-height:1.8; margin-top:8px; background:var(--card); padding:8px 10px; border-radius:6px; }
.gj-d-tip b{ color:var(--cinnabar); }
/* 书籍简介（curated GUJI_INTRO 或书目信息兜底） */
.gj-d-intro{ font-size:13px; color:var(--ink); line-height:1.85; margin-top:8px; padding:8px 11px; background:var(--paper); border:1px solid var(--line-soft); border-radius:6px; }
.gj-d-ik{ display:inline-block; margin-right:7px; color:#fff; background:var(--cinnabar); border-radius:4px; padding:0 7px; font-size:11px; line-height:18px; font-family:var(--sans); font-weight:600; }
/* 分页菜单 */
.gj-pager{ display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:6px; margin:18px 0 8px; }
.gj-pg{ min-width:34px; padding:6px 10px; border:1px solid var(--line); background:var(--card); border-radius:6px; cursor:pointer; font-family:var(--sans); font-size:13px; color:var(--ink); }
.gj-pg:hover:not(.dis):not(.cur){ border-color:var(--cinnabar); color:var(--cinnabar); }
.gj-pg.cur{ background:var(--cinnabar); color:#fff; border-color:var(--cinnabar); }
.gj-pg.dis{ opacity:.4; cursor:not-allowed; }
.gj-ell{ color:var(--ink-faint); padding:0 2px; }
.gj-pginfo{ margin-left:8px; font-size:12px; color:var(--ink-faint); font-family:var(--sans); }
.gj-empty{ padding:30px 10px; text-align:center; color:var(--ink-faint); font-size:14px; }
.gj-cta{ max-width:1200px; margin:22px auto 10px; padding:0 14px; }
.gj-cta-in{ background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:18px 20px; display:flex; gap:20px; align-items:center; }
.gj-cta-in h4{ font-family:var(--serif); font-size:18px; color:var(--cinnabar-deep); }
.gj-cta-in p{ margin-top:6px; font-size:13px; color:var(--ink-soft); line-height:1.9; }
.gj-cta-in b{ color:var(--cinnabar); }
.gj-qr{ width:110px; height:110px; border:1px solid var(--line); border-radius:8px; display:flex; align-items:center; justify-content:center; color:var(--ink-faint); font-size:11px; flex:none; text-align:center; padding:6px; background:var(--paper-2); overflow:hidden; }
.gj-qr img{ width:100%; height:100%; object-fit:contain; }
.gj-qr .gj-qrph{ white-space:pre-line; padding:8px; line-height:1.5; }
/* 古文观止·卷次下拉（与典故名言共用） */
.q-sel{ padding:6px 10px; border:1px solid var(--line); border-radius:6px; background:var(--card); color:var(--ink); font-family:var(--sans); font-size:13px; }
.q-sel:focus{ outline:none; border-color:var(--cinnabar); }
/* 领取弹窗 */
.gj-modal{ display:none; position:fixed; inset:0; background:rgba(40,30,18,.55); z-index:200; align-items:center; justify-content:center; padding:16px; }
.gj-modal.show{ display:flex; }
.gj-mbox{ background:#fff; border-radius:14px; max-width:380px; width:100%; padding:24px 22px; text-align:center; position:relative; box-shadow:var(--shadow); }
.gj-x{ position:absolute; top:10px; right:14px; border:none; background:none; font-size:20px; color:var(--ink-faint); cursor:pointer; }
.gj-mtitle{ font-size:19px; font-weight:700; color:var(--ink); margin-bottom:8px; word-break:break-all; }
.gj-tip{ font-size:13px; color:var(--ink-soft); line-height:1.9; }
.gj-tip b{ color:var(--cinnabar); }
.gj-modal .gj-qr{ margin:14px auto 4px; width:160px; height:160px; }
.gj-note{ margin-top:10px; font-size:11px; color:var(--ink-faint); }
@media (max-width:900px){
  .gj-wrap{ grid-template-columns:1fr; }
  .gj-side{ position:static; max-height:none; display:flex; flex-wrap:wrap; gap:4px; }
  .gj-side .gj-zi{ border:1px solid var(--line); border-radius:6px; padding:6px 10px; }
  .gj-side .gj-all{ border:1px solid var(--line); border-radius:6px; padding:6px 10px; }
  .gj-cta-in{ flex-direction:column; text-align:center; }
}

/* ---------- 资料覆盖进度面板 ---------- */
.coverage-card{ margin:22px 0 8px; background:var(--card); border:1px solid var(--line); border-radius:14px; padding:18px 20px; box-shadow:var(--shadow,0 2px 10px rgba(0,0,0,.05)); }
.coverage-card .cov-head{ display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:6px; margin-bottom:12px; }
.coverage-card .cov-head h3{ margin:0; font-size:17px; color:var(--ink); }
.coverage-card .cov-full{ font-size:13px; color:var(--ink-soft); }
.coverage-card .cov-full i{ font-style:normal; opacity:.6; }
.coverage-card .cov-bars{ display:flex; flex-direction:column; gap:9px; }
.coverage-card .cov-row{ display:flex; align-items:center; gap:10px; font-size:13px; }
.coverage-card .cov-lab{ width:84px; flex:none; color:var(--ink-soft); text-align:right; }
.coverage-card .cov-track{ flex:1; height:10px; border-radius:6px; background:var(--bg,#f1f1f1); overflow:hidden; border:1px solid var(--line); }
.coverage-card .cov-fill{ display:block; height:100%; border-radius:6px; transition:width .6s ease; }
.coverage-card .cov-num{ width:118px; flex:none; text-align:left; color:var(--ink); font-variant-numeric:tabular-nums; }
.coverage-card .cov-num i{ font-style:normal; opacity:.55; }
.coverage-card .cov-dyntip{ margin:14px 0 6px; font-size:12px; color:var(--ink-soft); }
.coverage-card .cov-dyns{ display:flex; flex-wrap:wrap; gap:8px; }
.coverage-card .cov-dyn{ background:var(--bg,#f5f5f3); border:1px solid var(--line); border-radius:8px; padding:6px 10px; font-size:12px; display:flex; flex-direction:column; gap:2px; min-width:96px; }
.coverage-card .cov-dyn b{ font-size:13px; color:var(--ink); }
.coverage-card .cov-dyn span{ color:var(--ink-soft); }
.coverage-card .cov-mini{ font-size:11px; color:var(--ink-faint,#999); }
.coverage-card .cov-foot{ margin-top:12px; font-size:11px; color:var(--ink-faint,#aaa); text-align:right; }

/* ===================== 锻炼数据模块 ===================== */
.ex-card{ background:var(--paper-2); border:1px solid var(--line); border-radius:14px; padding:18px 20px; box-shadow:0 2px 10px rgba(120,90,40,.06); }
.ex-sync{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; padding:10px 12px; margin-bottom:16px; background:var(--paper); border:1px dashed var(--cinnabar); border-radius:10px; }
.ex-sync-on{ font-family:var(--serif); font-weight:700; color:var(--cinnabar); }
.ex-sync-off{ font-family:var(--serif); color:var(--ink-soft); }
.ex-sync-input{ font:14px/1.4 var(--sans); padding:7px 10px; border:1px solid var(--line); border-radius:8px; background:#fff; color:var(--ink); min-width:220px; }
.ex-sync-input:focus{ outline:none; border-color:var(--cinnabar); box-shadow:0 0 0 2px rgba(168,50,42,.12); }
.ex-sync-btn{ font:13px/1 var(--sans); padding:8px 13px; border:1px solid var(--cinnabar); border-radius:8px; background:#fff; color:var(--cinnabar); cursor:pointer; transition:.15s; }
.ex-sync-btn:hover{ background:var(--cinnabar); color:#fff; }
.ex-sync-btn.ghost{ border-color:var(--line); color:var(--ink-soft); }
.ex-sync-btn.ghost:hover{ background:var(--ink-faint); color:#fff; border-color:var(--ink-faint); }
.ex-sync-hint{ font-size:12px; color:var(--ink-faint); flex-basis:100%; margin-top:-2px; }
.ex-form{ display:flex; flex-wrap:wrap; gap:12px 16px; align-items:flex-end; }
.ex-field{ display:flex; flex-direction:column; gap:5px; }
.ex-field.ex-grow{ flex:1 1 150px; }
.ex-field label{ font-size:12px; color:var(--ink-soft); font-family:var(--serif); }
.ex-field input[type=date], .ex-field input[type=text], .ex-field input[type=number], .ex-field input[list]{
  font:14px/1.4 var(--sans); padding:8px 10px; border:1px solid var(--line); border-radius:8px; background:#fff; color:var(--ink); min-width:120px;
}
.ex-field input:focus{ outline:none; border-color:var(--cinnabar); box-shadow:0 0 0 2px rgba(168,50,42,.12); }
.ex-add{ font:14px/1 var(--sans); font-weight:600; color:#fff; background:var(--cinnabar); border:none; border-radius:8px; padding:11px 18px; cursor:pointer; transition:.15s; }
.ex-add:hover{ background:var(--cinnabar-deep); }
.ex-hint{ font-size:11.5px; color:var(--ink-faint); margin-top:1px; line-height:1.3; }
/* 添加/保存成功浮层提示（居中淡入，明确「已记录」） */
.ex-toast{ position:fixed; left:50%; top:16%; transform:translate(-50%,-8px); background:var(--paper-2); color:var(--ink); border:1px solid var(--line); box-shadow:0 10px 30px rgba(0,0,0,.2); padding:11px 20px; border-radius:11px; font-size:15px; font-weight:600; z-index:80; opacity:0; pointer-events:none; transition:opacity .18s ease, transform .18s ease; }
.ex-toast.show{ opacity:1; transform:translate(-50%,0); }
.ex-toast::before{ content:"✓ "; color:#2e9e7e; font-weight:800; }
.ex-backfill{ margin-left:8px; }
.ex-actions{ display:flex; align-items:center; gap:10px; margin:16px 0 6px; flex-wrap:wrap; }
.ex-actions button{ font:13px/1 var(--sans); padding:8px 13px; border:1px solid var(--line); border-radius:8px; background:#fff; color:var(--ink-soft); cursor:pointer; transition:.15s; }
.ex-actions button:hover{ border-color:var(--cinnabar); color:var(--cinnabar); }
.ex-actions .ex-primary{ background:var(--cinnabar); color:#fff; border-color:var(--cinnabar); }
.ex-actions .ex-primary:hover{ background:var(--cinnabar-deep); color:#fff; }
.ex-month{ font-family:var(--serif); font-weight:700; font-size:16px; color:var(--ink); min-width:88px; text-align:center; }
.ex-spacer{ flex:1 1 auto; }
.ex-msg{ font-size:12px; color:var(--ink-faint); min-width:70px; }
.ex-msg.ok{ color:#2e7d32; }
.ex-msg.warn{ color:var(--cinnabar); }

.ex-summary{ display:flex; flex-wrap:wrap; gap:12px; margin:14px 0 4px; }
.ex-stat{ flex:1 1 90px; background:var(--paper); border:1px solid var(--line); border-radius:10px; padding:12px 14px; text-align:center; }
.ex-stat-v{ font-family:var(--serif); font-size:26px; font-weight:700; color:var(--cinnabar); line-height:1.1; }
.ex-stat-k{ font-size:12px; color:var(--ink-soft); margin-top:4px; }
/* 锻炼数据：本月目标进度 + 今日打卡状态 */
.ex-weekheat{ display:flex; align-items:center; gap:10px; margin:6px 0 2px; flex-wrap:wrap; }
.ex-wh-label{ font-family:var(--serif); font-size:13px; color:var(--ink-soft); font-weight:600; }
.ex-streak{ font-family:var(--serif); font-size:14px; color:var(--ink); margin:8px 0 2px; padding:7px 12px; background:var(--paper-2); border:1px solid var(--line); border-left:3px solid var(--cinnabar); border-radius:8px; }
.ex-streak b{ color:var(--cinnabar); font-size:16px; }
.ex-streak.empty{ border-left-color:var(--ink-faint); color:var(--ink-soft); }
.ex-streak.broken{ border-left-color:#c0392b; background:rgba(192,57,43,.07); }
.ex-streak-warn{ color:#c0392b; font-weight:600; }
.ex-wh-cell{ width:30px; height:30px; border-radius:8px; display:inline-flex; align-items:center; justify-content:center; font-size:12.5px; color:var(--ink-faint); background:var(--paper-2); border:1px solid var(--line-soft); cursor:default; }
.ex-wh-cell.lvl1{ color:var(--cinnabar); background:rgba(168,50,42,.16); border-color:rgba(168,50,42,.3); font-weight:600; }
.ex-wh-cell.lvl2{ color:#fff; background:var(--cinnabar); border-color:var(--cinnabar-deep); font-weight:700; }
.ex-wh-cell.lvl3{ color:#fff; background:var(--cinnabar-deep); border-color:#5e1f18; font-weight:700; }
.ex-wh-cell.today{ box-shadow:0 0 0 2px rgba(46,125,107,.55); }

/* 整月日历视图 */
.ex-monthcal{ margin:8px 0 2px; }
.ex-cal-head{ display:flex; align-items:center; justify-content:center; gap:14px; margin-bottom:8px; }
.ex-cal-nav{ width:28px; height:28px; border-radius:50%; border:1px solid var(--line-soft); background:var(--paper-2); color:var(--ink-soft); font-size:17px; line-height:1; cursor:pointer; transition:all .15s; }
.ex-cal-nav:hover{ color:var(--cinnabar); border-color:var(--cinnabar); }
.ex-cal-title{ font-size:14px; font-weight:600; color:var(--ink); min-width:118px; text-align:center; }
.ex-cal-dowrow{ display:grid; grid-template-columns:repeat(7,1fr); gap:5px; margin-bottom:5px; }
.ex-cal-dow{ text-align:center; font-size:11.5px; color:var(--ink-faint); }
.ex-cal-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:5px; }
.ex-cal-cell{ min-height:62px; border-radius:7px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; font-size:13px; color:var(--ink-faint); background:var(--paper-2); border:1px solid var(--line-soft); cursor:default; overflow:hidden; padding:3px 2px; box-sizing:border-box; }
.ex-cal-day{ font-size:13px; line-height:1; font-weight:600; }
/* 月历：每个项目一行彩色色条，长度=该项目运动量相对当天最长项目（最长 100%），条内小字标注项目名 */
.ex-cal-rows{ width:92%; display:flex; flex-direction:column; gap:2px; }
.ex-cal-rrow{ display:block; width:100%; }
.ex-cal-rbar{ display:block; height:9px; border-radius:3px; font-size:8px; line-height:9px; color:#fff; padding:0 3px; box-sizing:border-box; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; box-shadow:0 0 0 1px rgba(0,0,0,.06); text-shadow:0 0 2px rgba(0,0,0,.55); }
.ex-cal-cell.empty{ background:transparent; border-color:transparent; }
/* 强度背景改用中性墨色灰阶（深浅=当天打卡条数），避免与项目彩色色块冲突（周热力点保持朱砂不变） */
.ex-cal-cell.lvl1{ color:var(--ink); background:rgba(196,30,58,.14); border-color:rgba(196,30,58,.26); }
.ex-cal-cell.lvl2{ color:var(--ink); background:rgba(196,30,58,.30); border-color:rgba(196,30,58,.42); }
.ex-cal-cell.lvl3{ color:var(--ink); background:rgba(196,30,58,.48); border-color:rgba(196,30,58,.60); }
.ex-cal-cell.today{ box-shadow:0 0 0 2px rgba(46,125,107,.6); }
/* 项目色块图例（颜色 → 项目名 对照） */
.ex-cal-legend{ display:flex; flex-wrap:wrap; gap:6px 14px; margin-top:9px; padding-top:8px; border-top:1px dashed var(--line-soft); font-size:12px; color:var(--ink-soft); }
.ex-cal-leg{ display:inline-flex; align-items:center; gap:5px; }
.ex-cal-leg i{ width:10px; height:10px; border-radius:50%; display:inline-block; flex:none; box-shadow:0 0 0 1px rgba(0,0,0,.08); }
/* 月历：可点击某天查看明细；鼠标悬停轻微抬升+金线提示 */
.ex-cal-cell[data-date]{ cursor:pointer; }
.ex-cal-cell:hover{ transform:translateY(-1px); box-shadow:0 0 0 2px var(--gold); }
/* 月历点击某天 → 当日明细浮层（书卷风、朱砂描边、移动端居中卡片） */
.ex-cal-pop-mask{ position:fixed; inset:0; background:rgba(20,18,15,.42); display:flex; align-items:center; justify-content:center; z-index:1200; padding:18px; }
.ex-cal-pop{ position:relative; background:var(--paper); color:var(--ink); border:1px solid var(--gold); border-radius:12px; box-shadow:0 14px 44px rgba(0,0,0,.30); max-width:440px; width:100%; max-height:84vh; overflow:auto; padding:18px 20px 20px; }
.ex-cal-pop-close{ position:absolute; top:8px; right:10px; width:28px; height:28px; border:none; background:none; color:var(--ink-soft); font-size:22px; line-height:1; cursor:pointer; border-radius:50%; }
.ex-cal-pop-close:hover{ color:var(--cinnabar); background:var(--paper-2); }
.ex-cal-pop-head{ font-size:14px; font-weight:600; color:var(--ink); margin:2px 30px 10px 0; }
.ex-cal-pop-empty{ color:var(--ink-faint); font-size:13px; padding:4px 0 6px; }
.ex-day-pop{ margin:0; }
.ex-day-pop td, .ex-day-pop th{ font-size:13px; }
.ex-cal-pop .ex-backfill{ margin-top:12px; }
@media (max-width:560px){ .ex-cal-cell{ font-size:11.5px; border-radius:5px; min-height:56px; padding:3px 1px; } .ex-cal-dow{ font-size:10.5px; } .ex-cal-day{ font-size:11.5px; } .ex-cal-rbar{ height:8px; font-size:7px; line-height:8px; } }
/* 总览页锻炼数据预览卡片 */
.ex-preview-card{ margin:22px 0 8px; background:var(--card); border:1px solid var(--line); border-radius:14px; padding:16px 20px; box-shadow:var(--shadow,0 2px 10px rgba(0,0,0,.05)); }
.ex-prev-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; }
.ex-prev-title{ font-family:var(--serif); font-size:17px; font-weight:700; color:var(--ink); }
.ex-prev-go{ font:13px/1 var(--sans); color:var(--cinnabar); background:transparent; border:1px solid var(--line); border-radius:999px; padding:6px 13px; cursor:pointer; transition:.15s; }
.ex-prev-go:hover{ background:var(--paper-2,#f3efe7); border-color:var(--cinnabar); }
.ex-prev-empty{ font-size:13.5px; color:var(--ink-soft); line-height:1.7; }
.ex-prev-row{ display:flex; flex-wrap:wrap; gap:10px; }
.ex-prev-stat{ flex:1 1 72px; min-width:72px; background:var(--paper,#f7f4ee); border:1px solid var(--line-soft,#eee); border-radius:10px; padding:10px 8px; text-align:center; }
.ex-prev-stat b{ display:block; font-size:21px; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; line-height:1.1; }
.ex-prev-stat span{ font-size:12px; color:var(--ink-soft); }
.ex-prev-foot{ margin-top:10px; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px; font-size:12.5px; }
.ex-prev-today{ color:var(--ink-faint,#999); }
.ex-prev-today.done{ color:#2e7d6b; font-weight:600; }
.ex-prev-last{ color:var(--ink-soft); }
/* 总览页锻炼预览：近 7 天迷你热力点 */
.ex-prev-week{ display:flex; gap:5px; margin-top:10px; }
.ex-prev-wd{ flex:1 1 0; min-width:0; height:24px; border-radius:6px; display:inline-flex; align-items:center; justify-content:center; font-size:11.5px; color:var(--ink-faint); background:var(--paper-2,#f0ece3); border:1px solid var(--line-soft,#eee); cursor:default; }
.ex-prev-wd.lvl1{ color:var(--cinnabar,#a8322a); background:rgba(168,50,42,.16); border-color:rgba(168,50,42,.3); font-weight:600; }
.ex-prev-wd.lvl2{ color:#fff; background:var(--cinnabar,#a8322a); border-color:var(--cinnabar-deep,#7a2a22); font-weight:700; }
.ex-prev-wd.lvl3{ color:#fff; background:var(--cinnabar-deep,#7a2a22); border-color:#5e1f18; font-weight:700; }
.ex-prev-wd.today{ box-shadow:0 0 0 2px rgba(46,125,107,.55); }
@media (max-width:560px){
  .ex-prev-title{ font-size:16px; }
  .ex-prev-stat{ flex-basis:calc(50% - 5px); }
}
/* 总览页测验数据预览卡片（与锻炼预览同版式，朱砂红点缀） */
.quiz-preview-card{ margin:22px 0 8px; background:var(--card); border:1px solid var(--line); border-radius:14px; padding:16px 20px; box-shadow:var(--shadow,0 2px 10px rgba(0,0,0,.05)); }
.qp-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; }
.qp-title{ font-family:var(--serif); font-size:17px; font-weight:700; color:var(--ink); }
.qp-go{ font:13px/1 var(--sans); color:var(--cinnabar); background:transparent; border:1px solid var(--line); border-radius:999px; padding:6px 13px; cursor:pointer; transition:.15s; }
.qp-go:hover{ background:var(--paper-2,#f3efe7); border-color:var(--cinnabar); }
.qp-empty{ font-size:13.5px; color:var(--ink-soft); line-height:1.7; }
.qp-row{ display:flex; flex-wrap:wrap; gap:10px; }
.qp-stat{ flex:1 1 72px; min-width:72px; background:var(--paper,#f7f4ee); border:1px solid var(--line-soft,#eee); border-radius:10px; padding:10px 8px; text-align:center; }
.qp-stat b{ display:block; font-size:21px; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; line-height:1.1; }
.qp-stat span{ font-size:12px; color:var(--ink-soft); }
.qp-foot{ margin-top:10px; font-size:12.5px; color:var(--ink-soft); }

/* 总览「今日人物」发现卡片 */
.daily-card{ margin:22px 0 8px; background:linear-gradient(180deg,var(--paper-2,#f3efe7),var(--card)); border:1px solid var(--line); border-radius:14px; padding:16px 20px 18px; box-shadow:var(--shadow,0 2px 10px rgba(0,0,0,.05)); }
.df-head{ display:flex; align-items:center; gap:10px; margin-bottom:12px; }
.df-title{ font-family:var(--serif); font-size:17px; font-weight:700; color:var(--ink); }
.df-date{ font:13px/1 var(--sans); color:var(--ink-soft); background:var(--paper,#f7f4ee); border:1px solid var(--line-soft,#eee); border-radius:999px; padding:4px 11px; }
.df-shuffle{ margin-left:auto; font:13px/1 var(--sans); color:var(--cinnabar); background:transparent; border:1px solid var(--line); border-radius:999px; padding:6px 13px; cursor:pointer; transition:.15s; }
.df-shuffle:hover{ background:var(--paper,#f7f4ee); border-color:var(--cinnabar); }
/* 让卡片在发现区更醒目：内嵌 card 去掉自带外边距与边框，由外层容器统一承托 */
.daily-card .card{ margin:0; border:1px solid var(--line-soft,#eee); box-shadow:none; }
.df-foot{ margin-top:12px; text-align:right; }
.df-all{ font:13px/1 var(--sans); color:var(--cinnabar); background:transparent; border:none; cursor:pointer; padding:4px 2px; }
.df-all:hover{ text-decoration:underline; }
@media (max-width:560px){
  .qp-title{ font-size:16px; }
  .qp-stat{ flex-basis:calc(50% - 5px); }
}
.ex-month-label{ font-size:12.5px; color:var(--ink-soft); font-family:var(--serif); margin:6px 0 2px; letter-spacing:.3px; }

.ex-bars-title{ font-size:12px; color:var(--ink-soft); margin:16px 0 6px; }
.ex-bars-wrap{ overflow-x:auto; padding-bottom:6px; }
.ex-bars{ display:flex; align-items:flex-end; gap:3px; height:110px; min-width:max-content; }
.ex-bar{ display:flex; flex-direction:column; align-items:center; justify-content:flex-end; width:18px; height:100%; position:relative; cursor:default; }
.ex-bar i{ display:block; width:14px; background:linear-gradient(180deg,var(--gold),var(--cinnabar)); border-radius:3px 3px 0 0; transition:.2s; }
.ex-bar:hover i{ filter:brightness(1.08); }
.ex-bar-v{ font-size:9px; color:var(--ink-soft); height:12px; line-height:12px; }
.ex-bar-d{ font-size:9px; color:var(--ink-faint); margin-top:2px; }
.ex-bar:hover::after{ content:attr(title); position:absolute; bottom:100%; left:50%; transform:translateX(-50%); white-space:nowrap; background:var(--ink); color:#fff; font-size:11px; padding:3px 7px; border-radius:5px; margin-bottom:4px; }

.ex-table-wrap{ margin-top:16px; overflow-x:auto; }
.ex-table{ width:100%; border-collapse:collapse; font-size:13px; }
.ex-table th, .ex-table td{ padding:8px 10px; border-bottom:1px solid var(--line); text-align:left; white-space:nowrap; }
.ex-table th{ font-family:var(--serif); color:var(--ink); background:var(--paper); position:sticky; top:0; }
.ex-table tbody tr:hover{ background:rgba(168,50,42,.05); }
.ex-empty{ text-align:center; color:var(--ink-faint); padding:22px 0 !important; }
.ex-del{ font:12px/1 var(--sans); color:var(--cinnabar); background:none; border:1px solid var(--line); border-radius:6px; padding:5px 9px; cursor:pointer; }
.ex-del:hover{ background:var(--cinnabar); color:#fff; border-color:var(--cinnabar); }
.ex-edit{ font:600 12px/1 var(--sans); color:var(--ink); background:var(--paper); border:1px solid var(--gold); border-radius:6px; padding:5px 10px; cursor:pointer; transition:.15s; }
.ex-edit:hover{ background:var(--cinnabar); color:#fff; border-color:var(--cinnabar); }
@media(max-width:760px){
  .ex-field input[type=date], .ex-field input[type=text], .ex-field input[type=number], .ex-field input[list]{ min-width:90px; }
  .ex-stat-v{ font-size:21px; }
}
/* ---- 锻炼数据：紧凑布局 / 项目筛选 / 统计网格 ---- */
.ex-toolbar{ display:flex; align-items:center; flex-wrap:wrap; gap:10px; margin-bottom:14px; }
.ex-chips{ display:flex; flex-wrap:wrap; gap:7px; }
.ex-chip{ font:13px/1 var(--sans); padding:7px 13px; border:1px solid var(--line); border-radius:999px; background:var(--paper); color:var(--ink-soft); cursor:pointer; transition:.15s; user-select:none; }
.ex-chip:hover{ border-color:var(--cinnabar); color:var(--cinnabar); }
.ex-chip.on{ font-weight:600; background:rgba(168,50,42,.08); }
.ex-spacer{ flex:1 1 auto; }
.ex-mini{ font:600 13px/1 var(--sans); padding:8px 14px; border:1px solid var(--gold); border-radius:8px; background:var(--paper); color:var(--ink); cursor:pointer; transition:.15s; box-shadow:0 1px 2px rgba(60,45,25,.06); }
.ex-mini:hover{ border-color:var(--cinnabar); color:var(--cinnabar); background:var(--paper-2); }
.ex-mini.ex-primary{ background:var(--cinnabar); color:#fff; border-color:var(--cinnabar); }
.ex-mini.ex-primary:hover{ background:var(--cinnabar-deep); color:#fff; }
.ex-grid-title{ font-size:13px; color:var(--ink-soft); font-family:var(--serif); margin:4px 0 8px; }
.ex-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(132px,1fr)); gap:10px; }
.ex-gi{ background:var(--paper); border:1px solid var(--line); border-radius:11px; padding:11px 12px; cursor:pointer; transition:.15s; }
.ex-gi:hover{ box-shadow:0 3px 10px rgba(120,90,40,.10); }
.ex-gi.on{ background:rgba(168,50,42,.07); }
.ex-gi-name{ font-family:var(--serif); font-weight:700; font-size:15px; }
.ex-gi-n{ font-size:11px; color:var(--ink-faint); margin-top:2px; }
.ex-gi-metrics{ margin-top:5px; display:flex; flex-direction:column; gap:2px; }
.ex-gi-metrics b{ font-family:var(--serif); color:var(--cinnabar); font-size:15px; }
.ex-gi-metrics span{ font-size:12px; color:var(--ink-soft); }
.ex-grid-empty{ color:var(--ink-faint); font-size:12px; }
.ex-table-title{ font-size:13px; color:var(--ink-soft); font-family:var(--serif); margin:18px 0 6px; }
.ex-select{ font:14px/1.4 var(--sans); padding:7px 10px; border:1px solid var(--line); border-radius:8px; background:#fff; color:var(--ink); }
.ex-select:focus{ outline:none; border-color:var(--cinnabar); box-shadow:0 0 0 2px rgba(168,50,42,.12); }
.ex-table-wrap{ max-height:340px; overflow:auto; border:1px solid var(--line); border-radius:10px; }

/* ---- 锻炼数据：口令写入门禁 + 清晰统计 ---- */
.ex-unlock-row{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:-4px 0 14px; padding:10px 14px; border:1px dashed var(--line); border-radius:10px; background:var(--paper); }
.ex-unlock-row input{ font:14px/1.4 var(--sans); padding:8px 12px; border:1px solid var(--line); border-radius:8px; background:#fff; color:var(--ink); min-width:210px; }
.ex-unlock-row input:focus{ outline:none; border-color:var(--cinnabar); box-shadow:0 0 0 2px rgba(168,50,42,.12); }
.ex-unlock-row button{ font:14px/1 var(--sans); font-weight:600; color:#fff; background:var(--cinnabar); border:none; border-radius:8px; padding:9px 18px; cursor:pointer; transition:.15s; }
.ex-unlock-row button:hover{ background:var(--cinnabar-deep); }
.ex-lock-err{ font-size:12px; color:var(--cinnabar); min-height:16px; }
.ex-status{ font-size:12px; color:var(--ink-faint); }
.ex-status.ok{ color:#2e7d6b; }
.ex-status.warn{ color:var(--cinnabar); }
/* ---- 锻炼数据：明细按月折叠 ---- */
.ex-table-wrap.ex-fold{ max-height:none; overflow:visible; border:none; background:none; border-radius:0; }
.ex-month{ border:1px solid var(--line); border-radius:10px; margin-bottom:10px; background:var(--paper-2); overflow:hidden; }
.ex-month > summary{ display:flex; align-items:center; gap:10px 14px; flex-wrap:wrap; padding:10px 14px; cursor:pointer; list-style:none; background:var(--paper); user-select:none; }
.ex-month > summary::-webkit-details-marker{ display:none; }
.ex-month > summary::before{ content:'▸'; color:var(--ink-faint); font-size:12px; transition:transform .15s; flex:none; }
.ex-month[open] > summary::before{ transform:rotate(90deg); }
.ex-month > summary:hover{ background:rgba(168,50,42,.05); }
.ex-mk{ font-family:var(--serif); font-weight:700; font-size:14px; color:var(--ink); }
.ex-mstat{ font-size:12px; color:var(--ink-soft); }
.ex-mtable{ padding:0 12px 6px; }
.ex-mtable .ex-table th{ position:static; }
/* —— 明细折叠：标题行 + 按月/按年 切换 + 按年顶层 —— */
.ex-detail-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:12px; flex-wrap:wrap; margin:20px 0 10px; }
.ex-detail-head .ex-sec-title{ margin:0; }
.ex-fold-tabs{ display:flex; gap:8px; }
.ex-ftab{ font:13px/1 var(--sans); padding:7px 16px; border:1px solid var(--line); border-radius:999px; background:var(--paper); color:var(--ink-soft); cursor:pointer; transition:.15s; user-select:none; }
.ex-ftab:hover{ border-color:var(--cinnabar); color:var(--cinnabar); }
.ex-ftab.on{ font-weight:600; color:var(--cinnabar); border-color:var(--cinnabar); background:rgba(168,50,42,.08); }
.ex-year{ border:1px solid var(--cinnabar); border-radius:12px; margin-bottom:12px; background:var(--paper-2); overflow:hidden; }
.ex-year > summary{ display:flex; align-items:center; gap:10px 14px; flex-wrap:wrap; padding:12px 16px; cursor:pointer; list-style:none; background:rgba(168,50,42,.06); user-select:none; }
.ex-year > summary::-webkit-details-marker{ display:none; }
.ex-year > summary::before{ content:'▸'; color:var(--cinnabar); font-size:13px; transition:transform .15s; flex:none; }
.ex-year[open] > summary::before{ transform:rotate(90deg); }
.ex-year > summary:hover{ background:rgba(168,50,42,.1); }
.ex-ytable{ padding:8px 12px 6px; }
.ex-month-sub{ margin:8px 0; }
.ex-month-sub > summary{ padding:8px 12px; font-size:13px; }
/* ---- 锻炼数据：周期统计（月/季/年） ---- */
.ex-period-tabs{ display:flex; gap:8px; margin:0 0 10px; }
.ex-ptab{ font:13px/1 var(--sans); padding:7px 16px; border:1px solid var(--line); border-radius:999px; background:var(--paper); color:var(--ink-soft); cursor:pointer; transition:.15s; user-select:none; }
.ex-ptab:hover{ border-color:var(--cinnabar); color:var(--cinnabar); }
.ex-ptab.on{ font-weight:600; color:var(--cinnabar); border-color:var(--cinnabar); background:rgba(168,50,42,.08); }
.ex-period-wrap{ overflow-x:auto; }
.ex-period tbody tr.on{ background:rgba(168,50,42,.08); }
.ex-period td:first-child{ font-family:var(--serif); font-weight:600; color:var(--ink); white-space:nowrap; }
.ex-main{ display:block; }
.ex-relock{ color:var(--ink-faint); }
.ex-relock:hover{ border-color:var(--cinnabar); color:var(--cinnabar); }
.ex-sec-title{ font-size:14px; color:var(--ink); font-family:var(--serif); font-weight:700; margin:20px 0 8px; }
.ex-sec-sub{ font-size:12px; color:var(--ink-faint); font-weight:400; margin-left:4px; }
.ex-proj-wrap{ overflow-x:auto; border:1px solid var(--line); border-radius:10px; }
.ex-proj{ font-size:13px; }
.ex-proj th, .ex-proj td{ white-space:nowrap; }
.ex-proj tbody tr{ cursor:pointer; }
.ex-proj tbody tr.on{ background:rgba(168,50,42,.08); }
.ex-dot{ display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:7px; vertical-align:middle; }
/* ---- 锻炼数据：按天查询 ---- */
.ex-query-row{ display:flex; align-items:center; flex-wrap:wrap; gap:10px; margin:0 0 12px; padding:10px 14px; background:var(--paper-2); border:1px solid var(--line); border-radius:10px; }
.ex-q-label{ font:13px/1 var(--sans); font-weight:600; color:var(--ink); }
.ex-query-row input[type=date]{ font:13px/1 var(--sans); padding:6px 8px; border:1px solid var(--line); border-radius:8px; background:var(--paper); color:var(--ink); }
.ex-q-btn{ font:13px/1 var(--sans); padding:7px 16px; border:1px solid var(--cinnabar); border-radius:999px; background:rgba(168,50,42,.08); color:var(--cinnabar); cursor:pointer; transition:.15s; }
.ex-q-btn:hover{ background:var(--cinnabar); color:#fff; }
.ex-q-clear{ font:13px/1 var(--sans); padding:6px 12px; border:1px solid var(--line); border-radius:999px; background:var(--paper); color:var(--ink-soft); cursor:pointer; }
.ex-q-clear:hover{ border-color:var(--cinnabar); color:var(--cinnabar); }
.ex-q-tip{ font-size:12px; color:var(--ink-faint); }
.ex-day-result{ margin:0 0 6px; }
.ex-day-head{ font:14px/1 var(--serif); font-weight:700; color:var(--ink); margin:6px 0 8px; }
.ex-day{ font-size:13px; }
.ex-day tbody tr:hover{ background:rgba(168,50,42,.05); }
.ex-day-empty{ font-size:13px; color:var(--ink-faint); padding:8px 2px; }

/* ===================== 主题切换按钮 ===================== */
.theme-toggle{
  border:1px solid var(--line); background:var(--card); color:var(--ink);
  border-radius:50%; width:34px; height:34px; flex:0 0 auto; cursor:pointer;
  font-size:16px; line-height:1; display:flex; align-items:center; justify-content:center;
  transition:.15s;
}
.theme-toggle:hover{ border-color:var(--cinnabar); transform:translateY(-1px); }
@media (max-width:720px){ .theme-toggle{ width:32px; height:32px; font-size:15px; } }

/* ===================== 详情页目录（长传记快速跳转） ===================== */
.detail .dtoc{
  position:sticky; top:0; z-index:3;
  display:flex; gap:7px; overflow-x:auto; padding:9px 0 9px;
  margin:-4px 0 14px; border-bottom:1px solid var(--line);
  background:var(--paper-2); scrollbar-width:none; -webkit-overflow-scrolling:touch;
}
.detail .dtoc::-webkit-scrollbar{ display:none; }
@media (max-width:720px){
  /* 详情目录在手机端折行平铺，全部小节可见（避免横滑「不知要拖」）；取消 sticky 防遮挡正文 */
  .detail .dtoc{ position:static; flex-wrap:wrap; overflow:visible; gap:6px; padding:8px 0 10px; }
  .detail .dtoc-btn{ flex:0 0 auto; }
  /* 详情信息表/正文在窄屏放宽左右内边距，避免被多层 26px 外边距挤窄（信息表改用更紧凑的横向留白） */
  .detail .dbody{ padding:16px 14px 34px; }
  .detail .dhead{ padding:18px 44px 14px 16px; }
  .detail .dinfo{ margin:6px 10px 16px; }
}
.detail .dtoc-btn{
  flex:0 0 auto; white-space:nowrap; border:1px solid var(--line); background:var(--card);
  border-radius:999px; padding:5px 12px; font:12.5px/1 var(--sans); color:var(--ink-soft);
  cursor:pointer; transition:.15s;
}
.detail .dtoc-btn:hover{ border-color:var(--cinnabar); color:var(--cinnabar-deep); }
.detail .dblock{ scroll-margin-top:64px; }

/* ===================== 移动端：列表更紧凑，减少长滚动 ===================== */
@media (max-width:720px){
  .grid{ grid-template-columns:repeat(2,1fr); gap:10px; }
  .card{ padding:11px 11px 10px; }
  .card .cname{ font-size:16px; }
  .card .cname .csub{ font-size:11px; }
  .card .cbio{ -webkit-line-clamp:2; }
  .card .cmeta{ font-size:11px; }
  /* 时间轴人物卡：两列更省空间 */
  .tl-figs{ grid-template-columns:repeat(2,1fr); gap:9px; }
}

/* ===================== 夜间模式 ===================== */
/* 详情页「本机浏览次数」 */
.dviews{ margin-top:8px; font-size:12.5px; color:var(--ink-faint); }
/* 总览「最近浏览」 */
.recent-wrap{ margin:18px 0 4px; }
.recent-title{ font-family:var(--serif); font-size:16px; color:var(--ink); margin-bottom:10px; }
.recent-chips{ display:flex; flex-wrap:wrap; gap:9px; }
.recent-chip{ display:inline-flex; align-items:center; gap:6px; padding:6px 12px; border-radius:999px; background:var(--chip-bg,#f4ece1); border:1px solid var(--line-soft); color:var(--ink); font-size:13.5px; cursor:pointer; transition:.15s; }
.recent-chip:hover{ border-color:var(--cat,var(--cinnabar)); }
.recent-chip em{ font-style:normal; font-size:11.5px; color:var(--ink-faint); }

html[data-theme="dark"]{
  --paper:#1b1916;
  --paper-2:#232019;
  --card:#2a2620;
  --ink:#ece5d8;
  --ink-soft:#bdb4a4;
  --ink-faint:#8c8475;
  --cinnabar:#d2544a;
  --cinnabar-deep:#e6867e;
  --gold:#cba676;
  --line:#3a352d;
  --line-soft:#322e27;
  --shadow:0 6px 24px rgba(0,0,0,.5);
  --shadow-sm:0 2px 8px rgba(0,0,0,.45);
  --bg:#322e27;
  --chip-bg:#2a2620;
}
html[data-theme="dark"] body{
  background:
    radial-gradient(circle at 12% 8%, rgba(203,166,118,.07), transparent 40%),
    radial-gradient(circle at 88% 92%, rgba(210,84,74,.06), transparent 42%),
    var(--paper);
}
html[data-theme="dark"] .topbar{ background:rgba(35,32,25,.92); }
html[data-theme="dark"] .hero{ background:linear-gradient(135deg,#2a2620,#1f1b15); }
html[data-theme="dark"] .hero::after{ color:rgba(210,84,74,.07); }
html[data-theme="dark"] .ex-field input[type=date],
html[data-theme="dark"] .ex-field input[type=text],
html[data-theme="dark"] .ex-field input[type=number],
html[data-theme="dark"] .ex-field input[list],
html[data-theme="dark"] .ex-sync-input,
html[data-theme="dark"] .ex-unlock-row input,
html[data-theme="dark"] .ex-select{ background:#2f2a23; color:var(--ink); border-color:var(--line); }
html[data-theme="dark"] .ex-table th{ background:var(--paper); }
html[data-theme="dark"] .relgraph .rg-nm{ stroke:var(--paper); }
html[data-theme="dark"] .node text{ stroke:var(--paper-2); }
html[data-theme="dark"] .geo-cell{ text-shadow:0 1px 3px rgba(0,0,0,.5); }
/* 月历强度背景在暗色下用朱砂色系（加深），日期数字转亮；项目色块保持原色更跳 */
html[data-theme="dark"] .ex-cal-cell{ color:var(--paper); }
html[data-theme="dark"] .ex-cal-cell.lvl1{ background:rgba(196,30,58,.28); border-color:rgba(196,30,58,.42); color:var(--paper); }
html[data-theme="dark"] .ex-cal-cell.lvl2{ background:rgba(196,30,58,.44); border-color:rgba(196,30,58,.58); color:var(--paper); }
html[data-theme="dark"] .ex-cal-cell.lvl3{ background:rgba(196,30,58,.62); border-color:rgba(196,30,58,.76); color:var(--paper); }
html[data-theme="dark"] .ex-cal-leg i{ box-shadow:0 0 0 1px rgba(0,0,0,.35); }
html[data-theme="dark"] .ex-cal-cell:hover{ box-shadow:0 0 0 2px var(--gold); }
html[data-theme="dark"] .ex-cal-pop-mask{ background:rgba(0,0,0,.55); }
html[data-theme="dark"] .ex-cal-pop{ border-color:var(--gold); }

/* 列表排序下拉 */
.sort-label{ font-size:13px; color:var(--ink-soft); margin-left:4px; white-space:nowrap; }
.list-sort{ height:34px; padding:0 8px; border:1px solid var(--line); border-radius:8px; background:var(--paper-2); color:var(--ink); font:13px/1 -apple-system,"Microsoft YaHei",sans-serif; cursor:pointer; }
html[data-theme="dark"] .list-sort{ background:#2f2a23; border-color:var(--line); }
/* 锻炼模块：补白底按钮/输入框的暗色覆盖（此前在暗色下为刺眼白底） */
html[data-theme="dark"] .ex-sync-btn{ background:#2f2a23; color:var(--cinnabar); border-color:var(--cinnabar); }
html[data-theme="dark"] .ex-sync-btn.ghost{ background:#2f2a23; color:var(--ink-soft); border-color:var(--line); }
html[data-theme="dark"] .ex-actions button{ background:#2f2a23; color:var(--ink); border-color:var(--line); }
html[data-theme="dark"] .ex-actions button:hover{ border-color:var(--cinnabar); color:var(--cinnabar); }
@media (max-width:720px){
  .sort-label{ display:none; }
  .list-sort{ height:32px; flex:0 0 auto; }
}

/* 顶部阅读进度条（覆盖于 sticky 顶栏上沿，3px） */
#scrollProgress{
  position:fixed; top:0; left:0; height:3px; width:0;
  background:linear-gradient(90deg,var(--cinnabar),var(--cinnabar-deep));
  z-index:99990; pointer-events:none; transition:width .12s ease-out;
}
/* 返回顶部悬浮按钮 */
#backTop{
  position:fixed; right:18px; bottom:22px; width:44px; height:44px;
  border:none; border-radius:50%; cursor:pointer; z-index:99990;
  background:var(--cinnabar); color:#fff; font-size:22px; line-height:1;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 4px 14px rgba(0,0,0,.25);
  opacity:0; transform:translateY(12px); pointer-events:none;
  transition:opacity .25s ease, transform .25s ease, background .2s ease;
}
#backTop.show{ opacity:1; transform:translateY(0); pointer-events:auto; }
#backTop:hover{ background:var(--cinnabar-deep); }
#backTop:active{ transform:translateY(0) scale(.94); }
@media (max-width:720px){
  #backTop{ right:12px; bottom:16px; width:40px; height:40px; font-size:20px; }
}
html[data-theme="dark"] #backTop{ box-shadow:0 4px 14px rgba(0,0,0,.45); }

/* ===================== 全站人物快搜（导航栏全局搜索框） ===================== */
.topbar-search{ position:relative; margin-left:14px; flex:0 1 250px; }
.topbar-search input{ width:100%; border:1px solid var(--line); border-radius:999px; padding:7px 14px 7px 30px; font:13px/1 var(--sans); background:var(--card); color:var(--ink); }
.topbar-search input:focus{ outline:none; border-color:var(--cinnabar); box-shadow:0 0 0 3px rgba(168,50,42,.12); }
.global-suggest{ position:absolute; top:100%; left:0; right:0; margin-top:7px; background:var(--card); border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow); z-index:200; max-height:380px; overflow-y:auto; display:none; }
.global-suggest.show{ display:block; }
.global-sug{ display:flex; align-items:center; gap:9px; padding:9px 13px; cursor:pointer; border-bottom:1px solid var(--line-soft); }
.global-sug:last-child{ border-bottom:none; }
.global-sug:hover{ background:var(--paper-2); }
.global-sug .gs-sg{ width:9px; height:9px; border-radius:50%; flex:none; }
.global-sug .gs-name{ font-family:var(--serif); font-size:15px; color:var(--ink); }
.global-sug .gs-zi{ font-size:12px; color:var(--ink-faint); }
.global-sug .gs-meta{ font-size:12px; color:var(--ink-faint); margin-left:auto; white-space:nowrap; }

/* 收藏夹全局抽屉按钮 */
.fav-drawer-btn{ border:1px solid var(--line); background:var(--card); color:var(--gold-deep,#9a6a1f); border-radius:999px; padding:5px 12px; font-size:13px; cursor:pointer; flex:0 0 auto; transition:.15s; white-space:nowrap; }
.fav-drawer-btn:hover{ border-color:var(--cinnabar); color:var(--cinnabar); }
.fav-drawer-btn #favCount{ font-weight:700; }

/* 收藏夹抽屉 */
.fav-mask{ position:fixed; inset:0; background:rgba(40,30,18,.45); z-index:85; display:none; }
.fav-mask.show{ display:block; animation:fade .2s ease; }
.fav-drawer{ position:fixed; top:0; left:0; bottom:0; width:min(560px,94vw); z-index:90; background:var(--paper-2); box-shadow:8px 0 40px rgba(0,0,0,.25); transform:translateX(-100%); transition:transform .28s ease; overflow-y:auto; }
.fav-drawer.show{ transform:none; }
.fav-drawer-head{ position:sticky; top:0; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:16px 20px; background:var(--paper-2); border-bottom:2px solid var(--line); z-index:2; }
.fav-drawer-head h3{ margin:0; font-family:var(--serif); font-size:20px; color:var(--ink); }
.fav-drawer-head h3 span{ color:var(--cinnabar); }
.fav-drawer-acts{ display:flex; align-items:center; gap:8px; }
.fav-drawer-close{ border:none; background:var(--card); width:34px; height:34px; border-radius:50%; cursor:pointer; font-size:18px; color:var(--ink-soft); box-shadow:var(--shadow-sm); }
.fav-drawer-close:hover{ background:var(--cinnabar); color:#fff; }
.fav-drawer-body{ padding:16px 20px 40px; }
.fav-drawer-body .grid{ grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); }
.fav-drawer-empty{ text-align:center; color:var(--ink-faint); padding:40px 10px; font-size:14px; }

/* 对比阅读：搜索选人 */
.cmp-search{ position:relative; flex:1 1 260px; }
.cmp-search input{ width:100%; border:1px solid var(--line); border-radius:10px; padding:9px 12px; font-size:13.5px; background:var(--paper-2); color:var(--ink); font-family:var(--sans); min-width:200px; }
.cmp-search input:focus{ outline:none; border-color:var(--cinnabar); box-shadow:0 0 0 3px rgba(168,50,42,.12); }
.cmp-search select.cmp-dyn{ width:100%; margin-top:8px; border:1px solid var(--line); border-radius:10px; padding:9px 12px; font-size:13.5px; background:var(--paper-2); color:var(--ink); font-family:var(--sans); }
.cmp-suggest{ position:absolute; top:100%; left:0; right:0; margin-top:6px; background:var(--card); border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow); z-index:30; max-height:320px; overflow-y:auto; display:none; }
.cmp-suggest.show{ display:block; }
.cmp-sug{ display:flex; align-items:center; gap:9px; padding:8px 12px; cursor:pointer; border-bottom:1px solid var(--line-soft); font-size:14px; color:var(--ink); }
.cmp-sug:last-child{ border-bottom:none; }
.cmp-sug:hover{ background:var(--paper-2); }
.cmp-sug.on{ color:var(--ink-faint); cursor:default; background:var(--paper-2); }
.cmp-sug i{ font-style:normal; font-size:12px; color:var(--ink-faint); }
.cmp-sug em{ font-style:normal; font-size:11.5px; color:var(--ink-faint); margin-left:auto; white-space:nowrap; }

/* 地域分布：返回按钮 + 大区占比条形 */
.geo-back{ border:1px solid var(--line); background:var(--card); border-radius:8px; padding:4px 12px; font-size:12.5px; cursor:pointer; color:var(--ink-soft); transition:.15s; margin-right:10px; }
.geo-back:hover{ border-color:var(--cinnabar); color:var(--cinnabar); }
.geo-bars{ background:var(--chip-bg,#f4ece1); border:1px solid var(--line-soft); border-radius:12px; padding:12px 14px; margin-bottom:6px; }
.geo-bars-h{ font-family:var(--serif); font-size:14px; color:var(--cinnabar-deep); margin-bottom:10px; }
.geo-bar-row{ display:flex; align-items:center; gap:10px; padding:5px 4px; cursor:pointer; border-radius:8px; }
.geo-bar-row:hover{ background:var(--paper-2); }
.gb-name{ width:48px; flex:none; font-size:13px; color:var(--ink); }
.gb-track{ flex:1; height:12px; background:var(--line-soft); border-radius:7px; overflow:hidden; }
.gb-fill{ display:block; height:100%; border-radius:7px; transition:width .5s ease; }
.gb-n{ width:54px; flex:none; text-align:right; font-size:12.5px; color:var(--ink-soft); }

/* 知识测验：题量切换 + 进度条 + 题型标签 */
.quiz-top{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:16px; }
.quiz-top-lab{ font-size:13px; color:var(--ink-soft); margin-right:2px; }
.quiz-size{ border:1px solid var(--line); background:var(--card); border-radius:999px; padding:6px 14px; font:13px/1 var(--sans); color:var(--ink-soft); cursor:pointer; transition:.15s; }
.quiz-size:hover{ border-color:var(--cinnabar); color:var(--cinnabar); }
.quiz-size.on{ background:var(--cinnabar); border-color:var(--cinnabar); color:#fff; font-weight:600; }
.quiz-restart{ margin-left:auto; }
.quiz-filters{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:16px; background:var(--paper); border:1px solid var(--line-soft); border-radius:12px; padding:10px 12px; }
.quiz-flab{ font-size:13px; color:var(--ink-soft); font-weight:600; }
.quiz-sel{ border:1px solid var(--line); background:var(--card); border-radius:8px; padding:7px 10px; font:13px/1.2 var(--sans); color:var(--ink); cursor:pointer; max-width:150px; }
.quiz-sel:hover{ border-color:var(--cinnabar); }
@media(max-width:560px){ .quiz-filters{ gap:6px; } .quiz-sel{ max-width:104px; padding:6px 8px; font-size:12px; } }
.quiz-bar{ height:8px; background:var(--line-soft); border-radius:5px; overflow:hidden; margin-bottom:14px; }
.quiz-bar span{ display:block; height:100%; background:linear-gradient(90deg,var(--gold),var(--cinnabar)); border-radius:5px; transition:width .3s ease; }
.quiz-qrow{ display:flex; align-items:flex-start; gap:12px; }
.quiz-tag{ flex:0 0 auto; align-self:flex-start; margin-top:3px; font-size:11.5px; color:#fff; background:var(--gold-deep,#9a6a1f); border-radius:6px; padding:3px 9px; font-family:var(--sans); font-weight:600; white-space:nowrap; }
.quiz-qrow .quiz-q{ flex:1; background:var(--card); border:1px solid var(--line-soft); border-left:5px solid var(--cinnabar); border-radius:12px; padding:18px 20px; box-shadow:var(--shadow-sm); font-family:var(--serif); font-size:21px; color:var(--ink); line-height:1.7; }

/* 称号检索：浏览区即时过滤 */
.tt-filter{ margin:10px 0 6px; }
.tt-filter input{ width:100%; border:1px solid var(--line); border-radius:10px; padding:9px 13px; font-size:13.5px; background:var(--card); color:var(--ink); font-family:var(--sans); }
.tt-filter input:focus{ outline:none; border-color:var(--cinnabar); box-shadow:0 0 0 3px rgba(168,50,42,.12); }

/* 暗色模式适配（新增组件） */
html[data-theme="dark"] .topbar-search input,
html[data-theme="dark"] .cmp-search input,
html[data-theme="dark"] .tt-filter input{ background:#2f2a23; color:var(--ink); border-color:var(--line); }
html[data-theme="dark"] .global-suggest,
html[data-theme="dark"] .cmp-suggest,
html[data-theme="dark"] .fav-drawer,
html[data-theme="dark"] .fav-drawer-head{ background:var(--paper-2); }
html[data-theme="dark"] .global-sug:hover,
html[data-theme="dark"] .cmp-sug:hover,
html[data-theme="dark"] .geo-bar-row:hover{ background:var(--line-soft); }
html[data-theme="dark"] .geo-bars{ background:var(--card); }
html[data-theme="dark"] .fav-drawer-close{ background:var(--line-soft); color:var(--ink); }

/* 移动端适配（新增组件） */
@media (max-width:720px){
  .topbar-search{ order:6; flex:1 1 100%; margin-left:0; margin-top:6px; }
  .global-suggest{ max-height:300px; }
  .fav-drawer{ width:100vw; }
  .quiz-qrow{ flex-direction:column; gap:8px; }
  .quiz-qrow .quiz-q{ font-size:18px; padding:15px 16px; }
  .cmp-search{ flex:1 1 100%; }
}

/* 首屏资料加载态提示（富化分片异步就绪期间显示） */
.data-loading{ position:fixed; left:50%; top:14px; transform:translateX(-50%) translateY(-20px); z-index:300; display:inline-flex; align-items:center; gap:9px; padding:8px 16px; border-radius:999px; background:var(--cinnabar); color:#fff; font:13px/1 var(--sans); box-shadow:var(--shadow); opacity:0; pointer-events:none; transition:opacity .25s ease, transform .25s ease; }
.data-loading.show{ opacity:.96; transform:translateX(-50%) translateY(0); }
.data-loading .dl-dot{ width:9px; height:9px; border-radius:50%; background:#fff; animation:pulse 1s infinite ease-in-out; }
@keyframes pulse{ 0%,100%{ opacity:.35; transform:scale(.7);} 50%{ opacity:1; transform:scale(1);} }

/* 总览页内锚点导航 */
.ov-anchors{ display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }
.ov-anchors button{ border:1px solid var(--line); background:var(--card); color:var(--ink-soft); border-radius:999px; padding:6px 15px; font:13px/1 var(--sans); cursor:pointer; transition:.15s; }
.ov-anchors button:hover{ border-color:var(--cinnabar); color:var(--cinnabar); }
.ov-anchors button:active{ background:var(--cinnabar); color:#fff; border-color:var(--cinnabar); }

/* 全局快搜：键盘高亮项 */
.global-sug.gs-active{ background:var(--cinnabar); }
.global-sug.gs-active .gs-name,
.global-sug.gs-active .gs-zi,
.global-sug.gs-active .gs-meta{ color:#fff; }
.global-sug.gs-active .gs-sg{ box-shadow:0 0 0 2px #fff; }

/* 关系图谱：图例可点击聚焦某类别 */
.lg-cat{ cursor:pointer; padding:2px 6px; border-radius:8px; transition:.15s; user-select:none; }
.lg-cat:hover{ background:var(--line-soft); }
.lg-cat.on{ background:var(--cinnabar); color:#fff; }
.lg-cat.on .sw{ box-shadow:0 0 0 2px #fff; }

/* 关键词命中高亮（时间轴 / 列表卡片 / 全局快搜 共用观感） */
.tl-fig mark,
.card .cname mark,
.global-sug mark{ background:rgba(168,50,42,.18); color:var(--cinnabar-deep); border-radius:3px; padding:0 1px; }
/* 卡片标题内的高亮不继承加粗导致错位，保持与字号一致 */
.card .cname .csub mark{ font-weight:400; }

/* 暗色模式：新增组件 */
html[data-theme="dark"] .data-loading{ background:var(--cinnabar-deep); }
html[data-theme="dark"] .ov-anchors button{ background:var(--card); color:var(--ink-soft); border-color:var(--line); }
html[data-theme="dark"] .ov-anchors button:hover{ color:#fff; }
html[data-theme="dark"] .global-sug.gs-active{ background:var(--cinnabar-deep); }
html[data-theme="dark"] .lg-cat:hover{ background:var(--line-soft); }
html[data-theme="dark"] .tl-fig mark,
html[data-theme="dark"] .card .cname mark,
html[data-theme="dark"] .global-sug mark{ background:rgba(232,160,150,.28); color:#f0c9a0; }
/* 称号检索释义块：深色模式下列解表/源流底纹改为深色，避免浅底浅字看不清 */
html[data-theme="dark"] .tt-timeline{ background:#322c24; color:var(--ink); }
html[data-theme="dark"] .tt-timeline b{ color:var(--cinnabar); }
html[data-theme="dark"] .dviews{ color:var(--ink-faint); }
html[data-theme="dark"] .recent-chip{ background:var(--chip-bg); }

/* 移动端：总览页快捷锚点折行平铺，品牌标题收窄 */
@media (max-width:720px){
  /* 总览页快捷锚点改为折行平铺：全部小节入口一眼可见，避免横滑「不知要拖」（与主菜单同理） */
  .ov-anchors{ flex-wrap:wrap; }
  .ov-anchors button{ flex:0 0 auto; }
}

/* ===== 典故名言 · 模式切换 / 主题标签 / 详情弹层 ===== */
.q-tabs{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px; }
.q-tabs button{ border:1px solid var(--line); background:var(--card); color:var(--ink-soft);
  padding:7px 16px; border-radius:20px; cursor:pointer; font-size:14px; font-family:var(--sans); transition:.15s; }
.q-tabs button:hover{ border-color:var(--cinnabar); color:var(--cinnabar-deep); }
.q-tabs button.on{ background:var(--cinnabar); border-color:var(--cinnabar); color:#fff; font-weight:600; }
.q-chiprow{ display:flex; flex-wrap:wrap; align-items:center; gap:7px; margin-bottom:8px; }
.q-lab{ color:var(--ink-faint); font-size:13px; flex:none; margin-right:2px; }
.q-card{ cursor:pointer; transition:.15s; }
.q-card:hover{ box-shadow:0 4px 16px rgba(120,30,20,.12); transform:translateY(-1px); }
.q-card .qtext{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.q-tag{ flex:none; font-size:12px; padding:1px 8px; border-radius:10px; color:#fff; }
.qk-名言{ background:var(--cinnabar); }
.qk-典故{ background:#2e7d6b; }
.qk-gw{ background:#9a6b1f; }
.q-theme{ flex:none; font-size:12px; padding:1px 8px; border-radius:10px; background:var(--paper-2);
  color:var(--cinnabar-deep); border:1px solid var(--line-soft); }
.gw-card .qtext{ font-family:var(--serif); font-size:17px; }
/* 详情弹层 */
.q-modal-mask{ position:fixed; inset:0; background:rgba(40,30,18,.5); z-index:120; display:none;
  align-items:center; justify-content:center; padding:18px; }
.q-modal-mask.show{ display:flex; animation:fade .18s ease; }
.q-modal{ position:relative; background:var(--card); width:min(640px,94%); max-height:84vh; overflow:auto;
  border:1px solid var(--line); border-radius:var(--radius); padding:22px 24px;
  box-shadow:0 18px 60px rgba(0,0,0,.32); }
.q-modal-close{ position:absolute; top:10px; right:12px; width:30px; height:30px; border:none;
  background:transparent; font-size:22px; line-height:1; color:var(--ink-faint); cursor:pointer; border-radius:50%; }
.q-modal-close:hover{ background:var(--paper-2); color:var(--cinnabar); }
.qd-title{ font-family:var(--serif); font-size:21px; color:var(--cinnabar-deep); line-height:1.5; margin-bottom:4px; }
.qd-sub{ color:var(--ink-faint); font-size:13px; margin-bottom:12px; }
.qd-meta{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-bottom:12px; font-size:13px; }
.qd-author{ color:var(--cinnabar-deep); cursor:pointer; text-decoration:underline; }
.qd-author:hover{ color:var(--cinnabar); }
.qd-text{ font-family:var(--serif); font-size:17px; line-height:1.95; color:var(--ink);
  background:var(--paper-2); border-left:3px solid var(--gold); padding:12px 14px; border-radius:8px; white-space:pre-wrap; }
.qd-excerpt{ font-family:var(--serif); font-size:15px; color:var(--ink-soft); margin:8px 0 12px; padding:8px 12px;
  background:var(--paper-2); border-radius:8px; }
/* 典故名言：复制按钮（卡片底部 + 弹层顶部） */
.q-card-foot{ display:flex; justify-content:flex-end; margin-top:8px; }
.q-copy{ font:12px/1 -apple-system,"Microsoft YaHei",sans-serif; color:var(--ink-faint); background:var(--paper-2);
  border:1px solid var(--line-soft); border-radius:14px; padding:4px 11px; cursor:pointer; transition:.15s; }
.q-copy:hover{ color:var(--cinnabar); border-color:var(--cinnabar); }
.q-copy:active{ transform:scale(.96); }
.qd-actions{ display:flex; justify-content:flex-end; margin-bottom:10px; }
.q-copy-btn{ font:13px/1 -apple-system,"Microsoft YaHei",sans-serif; color:var(--cinnabar-deep); background:var(--paper-2);
  border:1px solid var(--gold); border-radius:14px; padding:6px 15px; cursor:pointer; transition:.15s; }
.q-copy-btn:hover{ background:var(--gold); color:#fff; }
.q-copy-btn:active{ transform:scale(.97); }
.qd-block{ margin-top:12px; font-size:14.5px; line-height:1.85; color:var(--ink); }
.qd-block b{ color:var(--cinnabar-deep); margin-right:4px; }
/* 详情信息行内链 */
.dinfo-link{ cursor:pointer; color:var(--cinnabar-deep); }
.dinfo-link:hover{ text-decoration:underline; }
.dinfo-arrow{ color:var(--ink-faint); font-size:12px; margin-left:2px; }
/* 测验历史最佳 */
.quiz-best{ font-size:13px; color:var(--ink-faint); margin-top:4px; }
.quiz-best b{ color:var(--cinnabar); }

/* 测验：我的正确率分布面板 */
#quizBreakdown{ margin:4px 0 18px; background:var(--paper); border:1px solid var(--line-soft); border-radius:14px; padding:12px 16px; }
.qb-head{ font-family:var(--serif); font-weight:700; font-size:15px; color:var(--cinnabar-deep); margin-bottom:10px; display:flex; align-items:baseline; gap:10px; }
.qb-head small{ font-weight:400; font-size:12px; color:var(--ink-faint); }
.qb-list{ display:flex; flex-direction:column; gap:7px; }
.qb-row{ display:flex; align-items:center; gap:10px; }
.qb-row.clickable{ cursor:pointer; }
.qb-row.clickable:hover .qb-label{ color:var(--cinnabar-deep); }
.qb-label{ flex:0 0 96px; font-size:13px; color:var(--ink-soft); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.qb-track{ flex:1; height:12px; background:var(--paper-2); border-radius:7px; overflow:hidden; }
.qb-fill{ display:block; height:100%; border-radius:7px; min-width:2px; transition:width .35s ease; }
.qb-fill.good{ background:linear-gradient(90deg,#2e9e7e,#3bbf95); }
.qb-fill.mid{ background:linear-gradient(90deg,#d98a2b,#e0a648); }
.qb-fill.low{ background:linear-gradient(90deg,#c0392b,#d4564a); }
.qb-rate{ flex:0 0 44px; text-align:right; font-size:13px; font-weight:700; }
.qb-rate.good{ color:#2e9e7e; }
.qb-rate.mid{ color:#c6862a; }
.qb-rate.low{ color:var(--cinnabar); }
@media(max-width:560px){ .qb-label{ flex-basis:80px; font-size:12px; } .qb-rate{ flex-basis:38px; font-size:12px; } }

