/* =====================================================================
   五岳官网 · 1004 Swiss 排版层（wy-swiss.css）
   全站字阶 / 行距 / 字距 / 栅格的唯一来源。每页 </body> 前最后一个样式挂载。
   规则：页面里不要再写这些属性的字面量；要改就改这里，全站同步。
   ===================================================================== */

/* ---------- 0. Token ---------- */
:root{
  /* 12 栏栅格：版心 1712（1776 − 32×2），栏距 48 → 栏宽 98.67，步距 146.67
     竖线（1920 下的 x）：104 / 251 / 397 / 544 / 691 / 837 / 984 / 1131 / 1277 / 1424 / 1571 / 1717 */
  --wy-cols:12;
  --wy-col-gap:48px;

  /* 字阶：13 / 15 / 17 / 24 / 32 / 48 / 56(CTA) / 72 —— 去掉 19 / 22 / 28 / 34 / 76 / 100 等中间档 */
  --wy-fs-micro:13px; --wy-fs-small:15px; --wy-fs-body:17px;
  --wy-fs-h4:17px;  --wy-fs-h3:24px; --wy-fs-h2:32px; --wy-fs-h1:48px;
  --wy-fs-display:56px; --wy-fs-mega:72px;

  /* 行距：落在 2px 基线上。正文 17/30 · 15/26 · 13/22；标题统一「字号 + 12px」：72/84 · 56/68 · 48/60 · 32/44 · 24/36 */
  --wy-lh-body:round(nearest, 1.75em, 2px);
  --wy-lh-mid:round(nearest, 1.5em, 2px);
  --wy-lh-label:round(nearest, 1.5em, 2px);
  --wy-lh-head:calc(1em + 12px);

  /* 字距：四个值 */
  --wy-ls-title:.03em;   /* 仅大标题（09.26 规则） */
  --wy-ls-caps:.08em;    /* 全大写英文小标 */
  --wy-ls-num:-.02em;    /* 西文大数字 */

  /* 圆角：大面板 / 大卡统一 24 */
  --wy-r-2xl:24px;

  /* 正文行长上限：中文 ≤ 40 字 / 行 */
  --wy-measure:40em;
}
@media (max-width:1199px){ :root{ --wy-fs-h1:34px; --wy-fs-h2:28px; --wy-fs-h3:22px; --wy-fs-mega:54px; --wy-fs-display:44px; --wy-col-gap:32px } }
@media (max-width:767px){  :root{ --wy-fs-h1:28px; --wy-fs-h2:24px; --wy-fs-h3:20px; --wy-fs-mega:38px; --wy-fs-display:34px; --wy-col-gap:16px } }

/* body 保持无单位行距，避免像素行距被小字继承 */
html body{line-height:1.75;line-break:strict;text-spacing-trim:trim-start;font-synthesis-weight:none}

/* ---------- 1. 标题：字号 + 行距 + 字距 + 断行 ---------- */
/* 展示级（首屏主标题 / 「为什么选择」大标题 / 页面 Banner 标题）统一 72 */
html body :is(.hero .display, .shv1__h, .shx3__h, .pghero__title, h1.display, #why h2.h1, #adv h2.h1, #why .wtitle, #adv .wtitle){
  font-size:var(--wy-fs-mega)!important;line-height:var(--wy-lh-head)!important;letter-spacing:var(--wy-ls-title)!important;font-weight:500!important}
/* 段标题 48 */
html body :is(h2.h1, .h1, .cell__h, .jobpg__t){
  line-height:var(--wy-lh-head)!important;letter-spacing:var(--wy-ls-title)!important;font-weight:500!important}
html body :is(.cell__h, .jobpg__t, .aep h2.h1){font-size:var(--wy-fs-h1)!important}
/* CTA 标题 56（09.26 规则：两行统一 56），只收行距 */
html body :is(#cta, #ctaE, .cta) :is(h2.h1, .cta__title){font-size:var(--wy-fs-display)!important;line-height:var(--wy-lh-head)!important}
/* 组件标题 32 / 24 */
html body :is(.h2, .cf__h, .leader__h){font-size:var(--wy-fs-h2)!important;line-height:var(--wy-lh-head)!important;font-weight:500!important;letter-spacing:0!important}
html body :is(.h3, h3.h3, .cb__h, .job__t, .jobpg h2, #fan h4, .fcard h4, .acc h3){
  font-size:var(--wy-fs-h3)!important;line-height:var(--wy-lh-head)!important;font-weight:500!important;letter-spacing:0!important}
/* 小标题并入正文字号，用字重区分 */
html body :is(.h4, .cell__sub, .faq__q, .voice__h){font-size:var(--wy-fs-body)!important;line-height:var(--wy-lh-body)!important;font-weight:500!important;letter-spacing:0!important}

/* 断行：标题平衡、正文避免孤字 */
html body :is(h1,h2,h3,h4,.display,.h1,.h2,.h3,.cell__h,.cb__h,.cf__h){text-wrap:pretty;text-spacing-trim:trim-both}
html body :is(p,li){text-wrap:pretty}

/* ---------- 2. 正文 / 导语 ---------- */
/* 导语（.lead / 首屏副标）：首屏 24，段内 17 */
html body :is(.hero__sub, .shv1__sub, .shx3__sub){font-size:var(--wy-fs-h3)!important;line-height:var(--wy-lh-head)!important;max-width:var(--wy-measure)}
html body .lead{font-size:var(--wy-fs-body)!important;line-height:var(--wy-lh-body)!important}
html body .voice__q{font-size:var(--wy-fs-h3)!important;line-height:var(--wy-lh-head)!important}
html body .leader__p{font-size:var(--wy-fs-body)!important;line-height:var(--wy-lh-body)!important}
html body :is(.cell__p, .cf__p, p.body, .faq__a p, .svq__a p, .lead, .story__ps p){max-width:min(100%, var(--wy-measure))}

/* 继承 body 1.75 的小字（页脚、数据说明、序号）也落到 2px 基线：15/26 · 13/22 */
html body :is(footer, .footer) :is(h4, p, li, a, figcaption){line-height:var(--wy-lh-body)}
html body :is(.lbl, .stat__label, .svq__n, .svcc__n, .cb__p, .cc__p){line-height:var(--wy-lh-body)!important}

/* 全大写英文小标：.08em，500 */
html body :is(.sec-label, .cell__lbl){letter-spacing:var(--wy-ls-caps)!important;font-weight:500!important;line-height:var(--wy-lh-label)!important}

/* ---------- 3. 数字：等宽 + 西文收字距 + 字阶对齐 ---------- */
html body :is(.num, .stat__num, .ycard__y, .nums-row, .cf__kpis, .cb__kpis, .lc__kpis, .svq__n, .svcc__n, .fcard__num, .kpi b){font-variant-numeric:tabular-nums lining-nums}
html body :is(.stat__num, .cf__kpis .num){font-size:var(--wy-fs-mega)!important;letter-spacing:var(--wy-ls-num)!important;line-height:1!important}
html body :is(.lc__kpis .num, .cb__kpis .num, .cc__kpis .num){font-size:var(--wy-fs-h2)!important;letter-spacing:var(--wy-ls-num)!important;line-height:calc(1em + 4px)!important}
html body .ycard__y{letter-spacing:var(--wy-ls-num)!important}
html body :is(.svq__n, .svcc__n){font-size:var(--wy-fs-micro)!important;font-weight:500!important;letter-spacing:var(--wy-ls-caps)!important}
html body #global .addr b{font-weight:500}

/* ---------- 4. 颜色：标题墨色 + 正文 g700 + 唯一强调紫；标题不再用渐变字 ---------- */
html body :is(#why, #adv) .wtitle .wgrad{background:none!important;-webkit-text-fill-color:var(--wy-primary)!important;color:var(--wy-primary)!important}

/* ---------- 5. 12 栏栅格（≥1200） ---------- */
@media (min-width:1200px){
  /* 左右图文：文字 5 栏 + 空 1 栏 + 图 6 栏（或镜像）。所有右侧文字统一起在第 8 栏线，所有右侧图起在第 7 栏线 */
  html body #arch .archx__grid,
  html body #services .svq,
  html body #cases .cf,
  html body .qa2,
  html body .bento .row#intro,
  html body .band .row#story{
    grid-template-columns:repeat(var(--wy-cols),minmax(0,1fr))!important;column-gap:var(--wy-col-gap)!important;justify-content:normal!important}
  html body #arch .archx__txt{grid-column:1 / 6;grid-row:1}
  html body #arch .archx__fig{grid-column:7 / 13;grid-row:1}
  html body #services .svq__fig{grid-column:1 / 7;grid-row:1}
  html body #services .svq__txt{grid-column:8 / 13;grid-row:1}
  html body #cases .cf .cf__txt{grid-column:1 / 6;grid-row:1}
  html body #cases .cf .cf__fig{grid-column:7 / 13;grid-row:1}
  html body #cases .cf.cf--flip .cf__fig{grid-column:1 / 7}
  html body #cases .cf.cf--flip .cf__txt{grid-column:8 / 13}
  html body .qa2 > .qa2__img{grid-column:1 / 7;grid-row:1}
  html body .qa2 > :not(.qa2__img){grid-column:8 / 13;grid-row:1}
  html body .bento .row#intro > .cell--head{grid-column:1 / 6!important}
  html body .bento .row#intro > .cell--media{grid-column:7 / 13!important}
  html body .band .row#story > .cell--media{grid-column:1 / 7!important;grid-row:1}
  html body .band .row#story > .cell--head{grid-column:8 / 13!important;grid-row:1}
  html body .bento .row#intro, html body .band .row#story{align-items:stretch!important}
  /* 4 栏标题列：标题可以吃进右侧栏距（不越过第 5 栏线），避免 48px 标题在第 10 个字处把词拆开 */
  html body :is(#values, #partners, #global) > .cell--4.cell--head .cell__h{margin-right:calc(-1 * var(--wy-col-gap));text-wrap:wrap}

  /* 标题左栏 4 栏 + 内容右栏 8 栏（起在第 5 栏线）：about 价值观 / 合作伙伴 / 全球布局 */
  html body .band .row#values{grid-template-columns:repeat(var(--wy-cols),minmax(0,1fr))!important;column-gap:var(--wy-col-gap)!important;justify-content:normal!important}
  html body .band .row#values > .cell--head{grid-column:1 / 5!important}
  html body .band .row#values > .cell--fan{grid-column:5 / 13!important}
  html body .band .row#values{--fan-inl:0px;--fan-inr:0px}
  html body :is(#partners, #global){column-gap:var(--wy-col-gap)}

  /* 首页 AI Agents：7 + 5 / 5 + 7 */
  html body #agents .agt__row{grid-template-columns:repeat(var(--wy-cols),minmax(0,1fr))!important;column-gap:var(--wy-col-gap)!important}
  html body #agents .agt__row > .card--big{grid-column:1 / 8;grid-row:1}
  html body #agents .agt__row > .agt__col{grid-column:8 / 13;grid-row:1}
  html body #agents .agt__row.agt__row--flip > .agt__col{grid-column:1 / 6}
  html body #agents .agt__row.agt__row--flip > .card--big{grid-column:6 / 13}

  /* 三栏 / 四栏卡：栏距统一 48 */
  html body :is(#why, #adv, #whyc, #advc, .xwhy) .whys3{column-gap:var(--wy-col-gap)!important}
  html body .cbgrid{column-gap:var(--wy-col-gap)!important}
}

/* ---------- 6. 对齐：多行正文一律左齐；首屏一律左对齐 ---------- */
/* 「为什么选择」三栏：大标题保持居中（09.26 规则），三栏内容左对齐 */
html body :is(#why, #adv, #whyc, #advc, .xwhy) .wc:has(> .wfig){display:flex!important;flex-direction:column;align-items:flex-start;text-align:left!important}
html body :is(#why, #adv, #whyc, #advc, .xwhy) .wc:has(> .wfig) > *{grid-column:auto!important;text-align:left!important;margin-left:0!important;margin-right:0!important}
html body :is(#why, #adv, #whyc, #advc, .xwhy) .wc:has(> .wfig) .wfig{margin:0 0 var(--wy-s5)!important}
html body :is(#why, #adv, #whyc, #advc, .xwhy) .wc:has(> .wfig) .h3{margin:0 0 var(--wy-s3)!important}
html body :is(#why, #adv) :is(#whyc, #advc) .wc,
html body :is(#why, #adv) :is(#whyc, #advc) .wc .h3,
html body :is(#why, #adv) :is(#whyc, #advc) .wc .body{text-align:left!important;align-items:flex-start!important}
html body :is(#why, #adv) :is(#whyc, #advc) .wc .wfig{margin:0 0 var(--wy-s5)!important}
/* 方案类页首屏：居中 → 左对齐到第 1 栏线 */
html body .shv1:not(.shv1--ai) .shv1__in{align-items:flex-start!important;text-align:left!important;width:100%}
html body .shv1__in > *{max-width:100%}
html body .shv1:not(.shv1--ai) .shv1__in > *{margin-left:0!important;margin-right:0!important;text-align:left!important}
/* 方案页数据：居中 → 左齐 */
html body .stats .stat{text-align:left}
html body .stats .stat:first-child{padding-left:0}
html body .stats .stat__label{text-align:left!important;margin-left:0!important}
html body .wystats :is(.sec-head, .h1){text-align:left!important;margin-left:0!important;align-items:flex-start!important}
html body #cases .cd__brand{justify-content:flex-start}

/* ---------- 7. 装饰减法：卡片最多「底色 + 圆角」两层 ---------- */
/* 白底上的案例小卡：投影 → 1px 发丝线 */
html body #cases .cb{box-shadow:none!important;outline:1px solid var(--wy-g100);outline-offset:-1px}
/* 卡片说明区内边距统一 32 */
html body #agents .card__cap{padding-left:32px!important;padding-right:32px!important}
html body #cases .cb__cap{padding-left:24px;padding-right:24px}


/* =====================================================================
   10.04 r2 · 换行规则（配合 assets/wy-linebreak.js）
   「标题按语义与视觉节奏换行，正文按阅读效率自然换行。」
   ===================================================================== */
/* 受控换行：br.bd 只在桌面生效，br.bm 只在手机生效（手机重新判断语义断点，不继承桌面） */
br.bm{display:none}
@media (max-width:767px){ br.bm{display:inline} br.bd{display:none} }
/* 语义单元（词 / 英文专名 / 数字+单位 / 防孤字的末尾词组）整体不断开；比容器还宽时由脚本松开 */
.lb-w,.lb-t{white-space:nowrap}
.lb-w.lb-off,.lb-t.lb-off{white-space:normal}
.lb-cell{min-width:0}
/* 同组卡片标题：脚本判断全部能单行时加 .t-1line */
.t-1line :is(.cb__h,.h3) br{display:none}
.t-1line :is(.cb__h,.h3){white-space:nowrap}

/* Label / Eyebrow / 按钮 / 链接按钮 / 数据：一律单行 */
html body :is(.sec-label,.cell__lbl,.shv1__eyebrow,.btn,a.more,.cc__more,.cb__more,.job__more,.num,.stat__num,.ycard__y,.svq__n,.svcc__n,.fcard__num){white-space:nowrap}

/* 正文不用强制换行：正文段落里手写的 <br> 一律失效，交给 max-width 自然折行（受控的 br.bd / br.bm 除外） */
html body :is(.cb__p,.cf__p,p.body,.archx__list p,.cell__p,.lead,.faq__a p,.svq__a p,.stat__label,.lbl) br:not(.bd):not(.bm){display:none}

/* 正文行长：所有内容区段落 ≤ 40em（中文 ≤ 40 字 / 行）；招聘详情页原来 856px（50 字 / 行）由此收窄 */
html body section :is(p,li):not(:is(.stage,.mock,.ui,.svq__fig,.archx__fig,.cf__fig,.cb__fig,.wfig,.qa2__img,.clients) *){max-width:min(100%,40em)}
html body :is(.jobpg, .job) :is(p,li){max-width:min(100%,40em)}

/* 案例卡片网格在平板 / 手机上原本被一条高优先级规则锁死成 3 列（手机上每张卡只有 87px 宽，标题一行 4 个字）→ 修正为 2 列 / 1 列 */
@media (max-width:1199px){ html body #cases :is(.cbgrid,.cbgrid--3){grid-template-columns:repeat(2,minmax(0,1fr))!important} }
@media (max-width:767px){  html body #cases :is(.cbgrid,.cbgrid--3){grid-template-columns:1fr!important} }

/* 手机上 CTA 标题与段标题同号（28），避免「准备好开 / 启智能化的」四行碎断 */
@media (max-width:767px){ :root{ --wy-fs-display:28px; --wy-fs-mega:36px } }

/* 首页案例轨道里未展开的卡：标题按 HTML 的两行原样保留、不再二次折行（窄卡露出部分被卡片边裁切） */
html body #cases .acc:not(.is-cur) h3{white-space:nowrap}

/* 解决方案切换标签：单个标签不折行；手机上整排放不下时横向滑动，而不是把「企业级全球官网方案」拆成两行 */
html body :is(#solutions,.sol) .dots button{white-space:nowrap!important;flex:0 0 auto!important;width:auto!important}
@media (max-width:767px){ html body :is(#solutions,.sol) .dots{flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;scrollbar-width:none;-webkit-overflow-scrolling:touch} html body :is(#solutions,.sol) .dots::-webkit-scrollbar{display:none} }

/* 手机上 about 的三组数字：三栏挤在 390 宽里说明文字只能 4 字一行 → 改为一行一组（数字 + 说明并排），说明文字单行 */
@media (max-width:767px){
  html body .nums-row{display:grid!important;grid-template-columns:1fr!important;row-gap:var(--wy-s5)!important}
  html body .nums-row .stat{display:flex;align-items:baseline;gap:var(--wy-s4)}
  html body .nums-row .stat__num{min-width:4ch}
  html body .nums-row .stat__label{margin:0!important;white-space:nowrap}
}

/* 案例小卡在窄屏不再被 KPI 一行撑宽：网格项允许收缩，KPI 放不下时整组换到下一行（数字与说明仍是一个整体） */
html body #cases :is(.cb,.cb__cap,.cb__foot){min-width:0}
@media (max-width:767px){ html body #cases .cb__kpis{flex-wrap:wrap;row-gap:var(--wy-s4)} }

/* =====================================================================
   10.04 r3
   ===================================================================== */
/* 1. 首屏 / Hero 不要角标（eyebrow）——DOM 已删，这里兜底隐藏动态生成的同类元素 */
html body :is(.shv1__eyebrow,.shx-pill){display:none!important}
html body #top :is(.sec-label,.tp-hero-note){display:none!important}

/* 数据来源是辅助认证信息，不参与标题层级：固定到数据块右下并统一为灰色。 */
html body .stats--src .stat{display:flex;flex-direction:column}
html body .stats--src .stat__src{align-self:stretch;margin-top:auto;padding-top:var(--wy-s3);text-align:right;color:var(--wy-g400)}

/* 2. 导航 NEW 标签：文字按大写字高（cap height）上下等距裁切，标签内文字绝对居中；
      标签整体再上移 0.18em，让标签中线对齐左侧「AEP」的字高中线 */
html body .nv__tag{display:inline-block!important;height:auto!important;line-height:1!important;padding:4px 6px!important;
  text-box:trim-both cap alphabetic;vertical-align:.18em!important}

/* 3. 「了解更多」全站统一为紫色实心主按钮（.btn 规格：44px / 左内距 20 / 15px / 500），
      保留右侧箭头与 hover 箭头动效（箭头由页面里的 .wy-harr 脚本统一生成，hover 折线右移 + 横线伸出）；
      hover 底色加深一档。卡片里原来的文字链接（.more / .cc__more）同样套用，位置规则不变 */
html body a.btn--more{display:inline-flex!important;align-items:center;justify-content:center;gap:4px!important;
  height:44px!important;padding:0 14px 0 20px!important;border-radius:var(--wy-r-btn)!important;
  background:var(--wy-primary)!important;color:#fff!important;-webkit-text-fill-color:#fff;box-shadow:none!important;border:0!important;
  font-size:var(--wy-fs-small)!important;font-weight:500!important;line-height:1!important;text-decoration:none!important;white-space:nowrap;
  transition:background-color var(--wy-dur) var(--wy-ease)!important;align-self:flex-start}
html body a.btn--more:hover{background:var(--wy-primary-shade)!important;color:#fff!important}
html body a.btn--more :is(.wy-harr-host,.arr,span[aria-hidden]){color:#fff!important;margin-left:4px}
html body a.btn--more::after{content:none!important}

/* 4. 服务列表（Services · .svq）：所有条目标题默认黑色（选中与未选中一致），hover 变品牌紫；序号保持原规则（选中紫、未选中灰） */
html body .svq__q,html body .svq__item .svq__q,html body .svq__item.is-on .svq__q{color:var(--wy-ink)!important}
html body .svq__q .h3{color:var(--wy-ink)!important;transition:color var(--wy-dur) var(--wy-ease)}
html body .svq__q:hover .h3{color:var(--wy-primary)!important}
html body .svq__item:not(.is-on) .svq__n{color:var(--wy-g400)!important}
html body .svq__item.is-on .svq__n{color:var(--wy-primary)!important}
html body :is(a.more,a.cc__more).btn--more{margin-top:var(--wy-s5)!important}
