/* ==========================================================================
   portal-r34a.css —— bug261021（3）前台模板/样式修复（第 34 轮）
   · 只作追加，不覆盖 portal.css / portal-extra.css / 已有 portal-r2*r3* 文件
   · 引入位置：partials/head.html 最后一行（排在 portal.css … portal-r33a.css 之后）
   对应问题 + 本文件选择器清单：
     #11 资讯详情页头部与正文左右边界对齐
         .container.pagehead__in.nd-pagehead__in
     #3  资讯列表翻页后停在「分类筛选那一排」
         #news-list-start
     #4  成功案例分类筛选后停在筛选栏
         #case-filter-start
     #10 资讯中心：分类筛条下移到列表头部后的容器留白 / 置顶轮播块
         .section.news-top
         .news-top .top-slide
         .section.news-list-section
   ========================================================================== */

/* ---------- #11 资讯详情页：面包屑 / 标题 / 元信息 / 正文左右边界对齐 ---------- */
/* 根因（不是「差一点 padding」这种玄学）：
     portal.css:47   *{box-sizing:border-box}
     portal.css:61   .container{max-width:var(--container);padding:0 24px}
     portal-r29b.css:19-22  .container.nd-pagehead__in{max-width:840px}
     portal-r29b.css:24-27  .nd-head__in{max-width:840px}     ← 不含 padding，是纯内容宽 840
     portal-r29b.css:49-52  .nd-article{max-width:840px}      ← 同上
   页头那个 .container 是 border-box，840px 里已经吃掉了「0 24px」左右内边距，
   所以面包屑/标题实际只有 792px 宽；元信息行（.nd-head__in）和正文（.nd-article）
   是 840px。三个盒子都 margin:0 auto 居中 → 页头内容左边比正文右边 24px，
   右侧同理短 24px（截图里看到的「差十几像素」就是它，加了 dpr 后约 14~24px）。
   改法：页头容器改成 840 + 2×24 = 888px，扣掉内边距后正好是同一个 840px 内容列，
   三个盒子左边缘、右边缘都落在同一条竖线上；不用负 margin 硬怼。
   注意 max-width 只在视口 > 888px 时才生效；以下（含 portal.css:475 把内边距
   收成 16px 的 ≤480px）容器宽度小于 888，页头与正文都退化成同一个「100% 宽」容器，
   依然对齐，不需要额外媒体查询。 */
.container.pagehead__in.nd-pagehead__in {
  max-width: calc(840px + 48px);
}

/* ---------- #3 / #4 翻页、分类筛选后的滚动落点 ---------- */
/* 两个页面都是服务端整页跳转（/news?page=N、/cases?cat=xxx），浏览器跳完默认回页首。
   落点靠 href 里的 fragment + 目标元素的 scroll-margin-top，浏览器原生完成定位，
   不依赖脚本（脚本只做兜底，见 news.html / cases.html 底部）。
   scroll-margin-top 避让吸顶导航：≥1181px 收起后是 70px（portal-r29a.css:74），
   留到 110px 与站点既有 .aside-layout section[id] 的 110px 一致；
   ≤1180px 导航是两行、更高，跟本站 :target 的 128px（portal.css:85）对齐。
   说明：portal.css:85 的 :target{scroll-margin-top:128px} 特异性 (0,1,0) 低于下面
   的 id 选择器 (1,0,0)，所以桌面端这两处落点用 110px 生效。 */
#news-list-start,
#case-filter-start {
  scroll-margin-top: 110px;
}

@media (max-width: 1180px) {
  #news-list-start,
  #case-filter-start {
    scroll-margin-top: 128px;
  }
}

/* ---------- #10 资讯中心：分类筛条下移到列表头部后的容器留白 ---------- */
/* 置顶轮播那块（section.section--tight.news-top）只在后台勾了置顶文章时才渲染，
   它的下一块就是列表 section.section--soft（已挂 .news-list-section）。
   两块原本各带 72px / 96px 上下内边距，直接相邻会空出 72+96=168px 的白色断层；
   这里只压两段之间的间距，不动它们各自与页头 / 页尾 CTA 的间距。 */
.section.news-top {
  padding-bottom: 0;
}

/* 置顶卡原来挂 .mt-l（40px）是为了和上方「筛条 → 卡片」拉开，现在上面没有筛条了，
   第一张卡（以及轮播里其余被 display:none 隐藏的卡）的上边距归零，间距交给 section。 */
.news-top .top-slide {
  margin-top: 0;
}

/* 列表 section 的上内边距统一压到 56px：
   · 无置顶时，列表头（分类筛条那一排）紧跟页头，页头自带 58px 下内边距 + 56px，
     与原「白面板 → 列表」的视觉间距接近，不会贴在一起；
   · 有置顶时，轮播块的上内边距仍在（.section--tight 的 72px），下内边距被上面归零，
     这 56px 就是轮播卡与列表头的间距。
   特异性 (0,2,0) 高于 portal.css:132/135 的 .section（0,1,0）。 */
.section.news-list-section {
  padding-top: 56px;
}
