/* ============================================================
   剑客网络 · emlog 模板补充样式
   文章列表 / 文章详情 / 评论 / 侧边栏 / 分页 / 页脚占位
   沿用 site.css 的设计令牌（宣纸、墨色、朱砂）
   ============================================================ */

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}

/* 导航：当前页高亮（窄屏放不下时自动折行，见 site.css「窄屏导航」） */
.nav-links a[aria-current="page"]{color:var(--c-cinnabar);}

/* 首页“最新文章”下方按钮 */
.news-more{margin-top:2rem;display:flex;justify-content:flex-end;}
.post-empty{padding:2rem 0;color:var(--c-muted);font-size:14.5px;}

/* ============================================================
   列表页 / 文章页 顶部
   ============================================================ */
.list-hero h1,
.article-hero h1{
  font-size:clamp(2rem, 4.6vw, 3.6rem);
  line-height:1.2;
  letter-spacing:.04em;
  text-wrap:balance;
}
.article-hero h1{font-size:clamp(1.7rem, 3.4vw, 2.7rem);line-height:1.35;}
.list-hero{border-bottom:1px solid var(--c-line);}
.article-hero{border-bottom:1px solid var(--c-line);}
.article-hero .product-kicker a{color:inherit;}
.wrap--article{max-width:52rem;}

.article-meta{
  margin-top:1.2rem;
  display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;
  font-family:var(--font-mono);
  font-size:12px;
  letter-spacing:.12em;
  color:var(--c-muted);
}
.article-meta a{color:var(--c-ink);border-bottom:1px solid var(--c-line);}
.article-meta a:hover{color:var(--c-cinnabar);border-color:var(--c-cinnabar);}
.jk-edit{color:var(--c-cinnabar)!important;}
.jk-flag{
  display:inline-block;
  margin-right:.6rem;
  padding:.1rem .45rem;
  font-family:var(--font-mono);
  font-size:12px;
  letter-spacing:.12em;
  vertical-align:middle;
  color:#fff;
  background:var(--c-cinnabar);
}
.list-sec,.article-sec{padding-top:clamp(2.4rem,5vw,4rem);}

/* ============================================================
   列表
   ============================================================ */
.blog-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) 17rem;
  gap:clamp(2rem,5vw,4.5rem);
  align-items:start;
}
.entry-list{border-top:1px solid var(--c-line);}
.entry{
  position:relative;
  padding:2rem 0 1.8rem;
  border-bottom:1px solid var(--c-line);
}
.entry-cover{display:block;margin-bottom:1.2rem;overflow:hidden;border-radius:6px;background:var(--c-paper-3);}
.entry-cover img{width:100%;aspect-ratio:16/7;object-fit:cover;transition:transform .8s var(--ease);}
.entry-cover:hover img{transform:scale(1.03);}
.entry-meta{
  display:flex;flex-wrap:wrap;align-items:center;gap:.4rem 1.1rem;
  font-family:var(--font-mono);
  font-size:12px;
  letter-spacing:.14em;
  color:var(--c-faint);
}
.entry-sort a{color:var(--c-cinnabar);}
.entry-title{
  margin-top:.7rem;
  font-size:clamp(1.25rem,2.2vw,1.6rem);
  font-weight:400;
  letter-spacing:.04em;
  line-height:1.45;
  color:var(--c-ink);
}
.entry-title a{background:linear-gradient(var(--c-cinnabar),var(--c-cinnabar)) 0 100%/0 1px no-repeat;transition:background-size .5s var(--ease),color .3s ease;}
.entry-title a:hover{background-size:100% 1px;color:var(--c-ink);}
.entry-excerpt{
  margin-top:.7rem;
  font-size:14.5px;
  line-height:2;
  letter-spacing:.03em;
  color:var(--c-muted);
}
.entry-foot{
  margin-top:1rem;
  display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.2rem;
  font-size:13px;
  color:var(--c-faint);
}
.entry-tags{display:flex;flex-wrap:wrap;gap:.4rem;}
.entry-count{font-family:var(--font-mono);font-size:12px;letter-spacing:.1em;}
.entry-more{margin-left:auto;color:var(--c-cinnabar);letter-spacing:.12em;}
.entry-more:hover{color:var(--c-ink);}

.jk-tag{
  display:inline-block;
  padding:.12rem .55rem;
  font-size:12.5px;
  letter-spacing:.06em;
  color:var(--c-jade);
  background:rgba(43,89,69,.07);
  border-radius:3px;
  transition:background .3s ease,color .3s ease;
}
.jk-tag:hover{background:var(--c-jade);color:#fff;}

/* 分页（emlog pagination() 输出 a / span） */
.pagination{
  margin-top:2.4rem;
  display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;
  font-family:var(--font-mono);
  font-size:13px;
}
.pagination a,
.pagination span{
  min-width:2.4rem;
  padding:.45rem .8rem;
  text-align:center;
  border:1px solid var(--c-line);
  background:#fff;
  color:var(--c-ink);
  transition:background .25s ease,color .25s ease,border-color .25s ease;
}
.pagination a:hover{border-color:var(--c-ink);}
.pagination span{background:var(--c-ink);color:#fff;border-color:var(--c-ink);}
.pagination em{font-style:normal;color:var(--c-faint);padding:0 .2rem;}

/* ============================================================
   侧边栏
   ============================================================ */
.side-bar{display:grid;gap:1.6rem;position:sticky;top:calc(var(--nav-top) + var(--nav-h-solid) + 1rem);}
.widget{border-top:1px solid var(--c-ink);padding-top:1rem;}
.widget-title{
  font-family:var(--font-mono);
  font-size:12px;
  font-weight:400;
  letter-spacing:.3em;
  color:var(--c-cinnabar);
  margin-bottom:.9rem;
}
.widget-list{list-style:none;display:grid;gap:.55rem;}
.widget-list li{display:flex;justify-content:space-between;gap:.8rem;font-size:14px;line-height:1.7;color:var(--c-body);}
.widget-list li a{min-width:0;overflow:hidden;text-overflow:ellipsis;}
.widget-list li a:hover{color:var(--c-cinnabar);}
.widget-list li span{font-family:var(--font-mono);font-size:12px;color:var(--c-faint);}
.widget-empty{color:var(--c-faint)!important;}
.widget-text{font-size:14px;line-height:1.9;color:var(--c-muted);}
.widget-text + .widget-text{margin-top:.5rem;}
.widget-text a{color:var(--c-cinnabar);}
.widget-tags{display:flex;flex-wrap:wrap;gap:.4rem;}
.widget-search{display:flex;border:1px solid var(--c-line-nav);background:#fff;}
.widget-search input{flex:1;min-width:0;border:0;padding:.6rem .75rem;font:inherit;font-size:14px;background:transparent;color:var(--c-ink);}
.widget-search input:focus{outline:2px solid var(--c-jade);outline-offset:-2px;}
.widget-search button{padding:0 .9rem;font-size:13px;letter-spacing:.14em;background:var(--c-ink);color:#fff;}
.widget-search button:hover{background:var(--c-cinnabar);}

/* ============================================================
   文章正文（Markdown / 富文本）
   ============================================================ */
.article-cover{margin:0 0 2rem;border-radius:8px;overflow:hidden;}
.article-cover img{width:100%;height:auto;}
.prose{
  font-size:16.5px;
  line-height:2.05;
  letter-spacing:.03em;
  color:var(--c-body);
  overflow-wrap:anywhere;
}
.prose > * + *{margin-top:1.15em;}
.prose h2,.prose h3,.prose h4{
  font-weight:400;
  color:var(--c-ink);
  letter-spacing:.05em;
  line-height:1.45;
  margin-top:2.2em;
}
.prose h2{font-size:1.6rem;padding-bottom:.5rem;border-bottom:1px solid var(--c-line);}
.prose h3{font-size:1.3rem;}
.prose h4{font-size:1.1rem;}
.prose a{color:var(--c-cinnabar);border-bottom:1px solid rgba(163,58,43,.3);}
.prose a:hover{border-bottom-color:var(--c-cinnabar);}
.prose strong{color:var(--c-ink);}
.prose ul,.prose ol{padding-left:1.4em;}
.prose li + li{margin-top:.35em;}
.prose blockquote{
  padding:.9rem 1.2rem;
  border-left:3px solid var(--c-cinnabar);
  background:var(--c-paper);
  color:var(--c-muted);
  font-family:var(--font-kai);
}
.prose img{max-width:100%;height:auto;border-radius:6px;}
.prose code{font-family:var(--font-mono);font-size:.88em;padding:.1em .35em;background:var(--c-paper-3);border-radius:3px;}
.prose pre{padding:1rem 1.2rem;overflow:auto;background:var(--c-ink);color:var(--c-paper);border-radius:6px;font-size:13.5px;line-height:1.7;}
.prose pre code{background:none;padding:0;color:inherit;}
.prose table{width:100%;border-collapse:collapse;font-size:14.5px;}
.prose th,.prose td{padding:.55rem .7rem;border:1px solid var(--c-line);text-align:left;}
.prose th{background:var(--c-paper);font-weight:400;color:var(--c-ink);}
.prose hr{border:0;border-top:1px solid var(--c-line);margin:2rem 0;}

.article-tags{margin-top:2.2rem;display:flex;flex-wrap:wrap;gap:.45rem;}

/* 上一篇 / 下一篇 */
.neighbor-log{
  margin-top:2.6rem;
  display:grid;grid-template-columns:1fr 1fr;gap:1rem;
}
.neighbor{
  display:block;
  padding:1.1rem 1.2rem;
  background:#fff;
  border:1px solid var(--c-line);
  transition:border-color .3s ease,transform .45s var(--ease);
}
.neighbor:hover{border-color:var(--c-ink);transform:translateY(-2px);}
.neighbor.next{text-align:right;grid-column:2;}
.neighbor-dir{display:block;font-family:var(--font-mono);font-size:12px;letter-spacing:.2em;color:var(--c-cinnabar);}
.neighbor-title{display:block;margin-top:.35rem;font-size:15px;color:var(--c-ink);line-height:1.6;}

/* ============================================================
   评论
   ============================================================ */
.comments{margin-top:3rem;}
.comment-post{padding:1.6rem;background:#fff;border:1px solid var(--c-line);}
.comment-post-title,
.comment-list-title{
  font-size:1.2rem;font-weight:400;letter-spacing:.12em;color:var(--c-ink);
  margin-bottom:1rem;font-family:var(--font-kai);
}
.comment-list-title span{font-family:var(--font-mono);font-size:13px;color:var(--c-cinnabar);margin-left:.4rem;}
.commentform textarea,
.commentform input[type="text"],
.commentform input[type="email"],
.commentform input[type="url"],
.captcha_input{
  width:100%;
  padding:.75rem .9rem;
  font:inherit;
  font-size:14.5px;
  color:var(--c-ink);
  background:var(--c-paper-2);
  border:1px solid var(--c-line-nav);
  border-radius:3px;
  transition:border-color .25s ease,background .25s ease;
}
.commentform textarea{min-height:8rem;resize:vertical;line-height:1.8;}
.commentform textarea:focus,
.commentform input:focus{outline:none;border-color:var(--c-jade);background:#fff;}
.comment-info{margin-top:.8rem;display:grid;grid-template-columns:1fr 1fr;gap:.8rem;}
.captcha-container{display:flex;align-items:center;gap:.6rem;grid-column:1/-1;}
.captcha-container img{height:38px;border:1px solid var(--c-line);}
.captcha_input{width:8rem;}
.comment-actions{margin-top:1rem;display:flex;flex-wrap:wrap;align-items:center;gap:.8rem;font-size:14px;color:var(--c-muted);}
.comment-actions a{color:var(--c-cinnabar);}
.comment-actions [hidden]{display:none;}

.comment-list{margin-top:2.4rem;}
.comment{
  display:grid;
  grid-template-columns:2.6rem minmax(0,1fr);
  gap:.2rem 1rem;
  padding:1.3rem 0;
  border-top:1px solid var(--c-line);
}
.comment > .comment{grid-column:2;border-top:1px dashed var(--c-line);padding-bottom:0;}
.comment-seal{
  width:2.6rem;height:2.6rem;
  display:grid;place-items:center;
  background:var(--c-ink);
  color:var(--c-paper);
  font-family:var(--font-kai);
  font-size:1.1rem;
  line-height:1;
  border-radius:3px;
}
.comment-children .comment-seal{background:var(--c-jade);}
.comment-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem .9rem;}
.comment-poster{font-weight:400;color:var(--c-ink);letter-spacing:.06em;}
.comment-poster a{border-bottom:1px solid var(--c-line);}
.comment-time{font-family:var(--font-mono);font-size:12px;letter-spacing:.1em;color:var(--c-faint);}
.comment-content{margin-top:.35rem;font-size:15px;line-height:1.9;color:var(--c-body);overflow-wrap:anywhere;}
.com-reply{margin-top:.4rem;font-size:13px;letter-spacing:.14em;color:var(--c-cinnabar);}
.com-reply:hover{color:var(--c-ink);}
.comment-body .comment-post{margin-top:1rem;}

/* ============================================================
   页脚补充：占位、ICP、联系方式
   ============================================================ */
.footer-info{font-size:13.5px;line-height:2;color:rgba(247,244,237,.8);letter-spacing:.06em;}
.footer-info a{color:#fff;border-bottom:1px solid rgba(247,244,237,.3);}
.footer-placeholder{
  font-size:13px;
  line-height:1.9;
  letter-spacing:.08em;
  color:#f0c9a0;
  border:1px dashed rgba(240,201,160,.55);
  padding:.35rem .7rem;
  display:inline-block;
}
.footer-bottom .footer-placeholder{font-size:12px;padding:.2rem .6rem;}
.footer-icp{color:rgba(247,244,237,.8);}
a.footer-icp:hover{color:#fff;}

/* ============================================================
   404
   ============================================================ */
.notfound{
  min-height:100vh;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:1.2rem;text-align:center;padding:2rem;
}
.notfound .eyebrow{color:var(--c-cinnabar);}
.notfound h1{font-size:clamp(2.4rem,6vw,4rem);font-weight:400;letter-spacing:.1em;color:var(--c-ink);font-family:var(--font-kai);}
.notfound p{color:var(--c-muted);}

/* ============================================================
   响应式
   ============================================================ */
@media (max-width:1080px){
  .blog-grid{grid-template-columns:1fr;}
  .side-bar{position:static;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));}
}
@media (max-width:680px){
  .hero-left-top .hero-eyebrow{letter-spacing:.16em;}
  .comment-info{grid-template-columns:1fr;}
  .neighbor-log{grid-template-columns:1fr;}
  .neighbor.next{grid-column:auto;}
  .entry-more{margin-left:0;}
  .comment-post{padding:1.1rem;}
  .prose{font-size:16px;}
}

/* ============================================================
   首屏背景包：深色基调（meta.json tone = dark 或 模板设置强制深色）
   ============================================================ */
.hero--tone-dark{background:#0f1114;}
.hero--tone-dark .hero-left-top .hero-eyebrow{color:rgba(247,244,237,.78);}
.hero--tone-dark .hero-left-top .hero-eyebrow::before{background:linear-gradient(90deg, rgba(247,244,237,.5), transparent);}
.hero--tone-dark .hero-left-top .hero-title{color:#f7f4ed;text-shadow:0 2px 30px rgba(0,0,0,.45);}
.hero--tone-dark .hero-left-top .hero-sub{color:rgba(247,244,237,.86);text-shadow:0 1px 12px rgba(0,0,0,.4);}
.hero--tone-dark .hero-left-panel{background:rgba(14,16,20,.42);border-color:rgba(247,244,237,.12);box-shadow:0 10px 40px rgba(0,0,0,.25);}
.hero--tone-dark .hero-left-panel:hover{background:rgba(14,16,20,.55);}
.hero--tone-dark .hero-left-panel .hero-intro{color:rgba(247,244,237,.86);}
.hero--tone-dark .hero-left-panel .hero-intro strong{color:#fff;}
.hero--tone-dark .hero-left-panel .hero-scroll{color:rgba(247,244,237,.72);}
.hero--tone-dark .hero-left-panel .hero-scroll:hover{color:#fff;}
.hero--tone-dark .hero-left-panel .hero-scroll .bar{background:linear-gradient(180deg, rgba(247,244,237,.6), transparent);}

/* ============================================================
   产品 Logo 行：分类分组
   ============================================================ */
.product-row__cat{
  text-align:center;font-family:var(--font-mono);font-size:12px;letter-spacing:.3em;
  color:var(--c-muted);margin:1.6rem 0 .6rem;
}
.product-row__cat:first-of-type{margin-top:.4rem;}
.partner-text{
  display:inline-block;font-family:var(--font-serif);font-size:1.25rem;letter-spacing:.12em;
  color:var(--c-ink);padding:.6rem 1rem;border:1px solid rgba(22,24,29,.12);border-radius:4px;
}

/* ============================================================
   页面关联文章
   ============================================================ */
.related-sec .sec-head-r{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:flex-end;}
.related-sec .post-empty,.post-empty{color:var(--c-muted);font-size:14px;letter-spacing:.06em;padding:1.2rem 0;}

/* 页脚联系方式 */
.footer-contacts{list-style:none;margin:0 0 .6rem;padding:0;}
.footer-contacts li{font-size:13.5px;line-height:2;color:rgba(247,244,237,.82);letter-spacing:.05em;}
.footer-contacts li span{display:inline-block;min-width:2.6em;margin-right:.6em;color:rgba(247,244,237,.6);font-size:12px;letter-spacing:.2em;}
.footer-contacts a{color:#fff;}
