/* ==========================================================================
   portal-r29c.css（第 29c 轮 · 只作追加，不覆盖既有文件）
   引入顺序：必须放在 portal.css / portal-extra.css 之后（同特异性下靠后者生效）。
   作用域：本文件所有规则都带页面级前缀（.case-grid / .jobs-panel），
           即使被 head.html 全局引入，也不会影响首页、/news 等其它页面。
   内容：
     A. /cases 成功案例卡片 hover 动效
     B. /jobs 人才招聘页三个排版问题
   ========================================================================== */

/* ==========================================================================
   A. /cases 成功案例卡片悬停动效
   现状：portal.css:266 的 .case 既没有 transition 也没有 :hover
        （portal.css:200 的 .card:hover 只作用于 .card，而案例卡是 .case，没有 .card 类），
        所以案例卡片目前悬停完全没有反馈。
   做法：上浮 3px + 阴影加深 + 封面图放大 1.04 倍 + 标题转金色，过渡 .25s/.3s。
   ========================================================================== */
.case-grid .case{
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .25s var(--ease);
}
.case-grid .case:hover{
  transform:translateY(-3px);
  box-shadow:var(--shadow-l);
  border-color:#E8DCC4;
}
/* 封面图轻微放大：.case 自身是 overflow:hidden（portal.css:266），
   放大后不会溢出卡片圆角，不需要额外裁剪容器 */
.case-grid .case__top--img img{
  transition:transform .3s var(--ease);
  transform-origin:center center;
}
.case-grid .case:hover .case__top--img img{transform:scale(1.04)}
/* 纯文字封面（.case__top 渐变块，无 img）也做同等轻微放大：
   线上案例的 cover 字段目前基本为空，只有渐变块 + 大号结果文字，
   若只给 img 写放大，用户实际看到的卡片就没有「封面放大」这一层反馈 */
.case-grid .case__top{transition:transform .3s var(--ease);transform-origin:center center}
.case-grid .case:hover .case__top{transform:scale(1.03)}
/* 标题变金色：用 gold-600(#967000) 而不是亮金 #FAC100，白卡上对比度才够 */
.case-grid .case h3{transition:color .25s var(--ease)}
.case-grid .case:hover h3{color:var(--gold-600)}
/* 无封面卡：.case__top--img 规则不命中，靠上面 .case__top 的 1.03 缩放提供同等反馈 */

/* 系统开启「减少动态效果」时：只保留颜色与阴影反馈，取消位移与缩放 */
@media (prefers-reduced-motion:reduce){
  .case-grid .case,
  .case-grid .case__top,
  .case-grid .case__top--img img,
  .case-grid .case h3{transition:none}
  .case-grid .case:hover{transform:none;box-shadow:var(--shadow);border-color:#E8DCC4}
  .case-grid .case:hover .case__top,
  .case-grid .case:hover .case__top--img img{transform:none}
}

/* ==========================================================================
   B. /jobs 人才招聘页
   ========================================================================== */

/* B1. Tab 与内容区之间的巨大留白
   来源（按实际代码，不是猜测）：
     · jobs.html:46 的 .jobs-tabs 自带 margin:8px auto 28px（底部 28px，写在本页 <style> 里）；
     · 紧随其后的 jobs.html:56 <section class="section"> 命中 portal.css:131 的 padding:96px 0。
     两者相加 ≈124px 空白。
   处理：把 positions 面板第一个 section 的上内边距 96→8px，与 tab 自带 28px 合计约 36px；
        不改 .section 基础样式、不动 philosophy 面板，避免波及其它板块与页面。 */
.jobs-panel[data-panel="positions"]>section.section:first-of-type{padding-top:8px}

/* B2. 去掉重复巨幅标题后的说明区
   模板已删除 jobs.html 原来那句 <h2 class="h2">招聘岗位</h2>（与上方 tab 文案重复）。
   剩余「眉标 + 地点说明」：
     · .section__head 在 portal.css:135 限宽 760px、portal.css:136 --center 居中；
     · 说明文字是一整段长地址，居中小栏容易让末行只剩一两个字（孤字折行）。
   处理：左对齐 + 放开父级限宽（说明段自己限 900px，保持单行可读行长）。 */
.jobs-panel[data-panel="positions"] .jobs-intro{max-width:none;text-align:left}
.jobs-panel[data-panel="positions"] .jobs-intro .lead{max-width:900px}
/* 说明区与岗位列表之间原来是 .mt-xl=64px（portal.css:149），压缩到 22px（与栅格 gap 一致），
   模板里已把 .mt-xl 换成 .jobs-grid */
.jobs-panel[data-panel="positions"] .jobs-grid{margin-top:22px}

/* B3. 岗位卡上的地点/属性标签
   .badge 是 inline-flex（portal.css:417），内部文本默认可在任意字符间断行，
   "深圳 / 南山" 这类地名会被拆成「深圳 / 南」+「山」。
   处理：标签内 nowrap 防止孤字；meta 行显式左对齐（万一日后卡片被放到居中容器里也不会带偏）。 */
.job__meta{justify-content:flex-start;text-align:left}
.job__meta .badge{white-space:nowrap}
