/* 中日文排版覆盖。由 functions.php 在 $lang 为 ja / zh-hans 时输出。
 *
 * 2026-08-28 由 east-asian-headings.css 与 japanese.css 合并而来。
 * 合并原因：两个文件各自声明过同一套 H1–H5 font-size，改其中一个时看不见另一个，
 * 已经造成过一次整套重复声明。合成一处后重复是肉眼可见的。
 *
 * 第 1 段 = 中日共享标题层级（CJK 字面比同字号拉丁文密，整体比英文默认层级低一档）。
 * 第 2 段 = 日文专属增量。第 2 段不要再写 font-size，字号一律归第 1 段管，
 *          唯一例外是 h6（日文需要与正文基线齐平，中文沿用 .95rem）。
 */

/* ==========================================================================
   1. 中日文共享标题层级

   统一取英文同级的 0.85 倍（H1–H4）。此前各级比值从 0.857 递减到 0.95，
   越小的标题缩得越少，导致中小标题相对英文偏大——而 CJK 方块字形在小字号下
   视觉重量本就更高，方向正好反了。H5/H6 已接近 16px 正文基线，不再下压，
   否则会跌破规范「正文与可读内容不得小于 16px」的下限。
   ========================================================================== */

body.ja h1,
body.ja .h1,
body.zh-hans h1,
body.zh-hans .h1 {
	font-size: 2.125rem;
}

body.ja h2,
body.ja .h2,
body.zh-hans h2,
body.zh-hans .h2 {
	font-size: 1.7rem;
}

body.ja h3,
body.ja .h3,
body.zh-hans h3,
body.zh-hans .h3 {
	font-size: 1.4875rem;
}

body.ja h4,
body.ja .h4,
body.zh-hans h4,
body.zh-hans .h4 {
	font-size: 1.275rem;
}

body.ja h5,
body.ja .h5,
body.zh-hans h5,
body.zh-hans .h5 {
	font-size: 1.15rem;
}

body.ja h6,
body.ja .h6,
body.zh-hans h6,
body.zh-hans .h6 {
	font-size: .95rem;
}

@media (min-width: 992px) {
	body.ja h1,
	body.ja .h1,
	body.zh-hans h1,
	body.zh-hans .h1 {
		font-size: 2.975rem;
	}

	body.ja h2,
	body.ja .h2,
	body.zh-hans h2,
	body.zh-hans .h2 {
		font-size: 2.3375rem;
	}

	body.ja h3,
	body.ja .h3,
	body.zh-hans h3,
	body.zh-hans .h3 {
		font-size: 1.9125rem;
	}

	body.ja h4,
	body.ja .h4,
	body.zh-hans h4,
	body.zh-hans .h4 {
		font-size: 1.4875rem;
	}
}

/* ==========================================================================
   2. 日文专属
   ========================================================================== */

/* 2.1 字体与正文节奏。SF Pro JP 只在 Apple 设备上存在，不可自托管。 */
body.ja {
	font-family: "SF Pro JP", -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Yu Gothic", Meiryo, sans-serif;
	font-size: 16px;
	line-height: 1.7;
	letter-spacing: .02em;
}

body.ja p,
body.ja li {
	line-height: 1.7;
	letter-spacing: .02em;
}

/* 2.2 断行。auto-phrase 仅 Chromium 支持，Safari 会静默回退到前一行的 normal；
       实测对现有文案未改变断点，保留为渐进增强，不得当作断行方案依赖。 */
body.ja p,
body.ja li,
body.ja h1,
body.ja h2,
body.ja h3,
body.ja h4,
body.ja h5,
body.ja h6,
body.ja .in-site-link-button,
body.ja .btn {
	line-break: strict;
	word-break: normal;
	word-break: auto-phrase;
	overflow-wrap: normal;
}

body.ja h1,
body.ja h2,
body.ja h3,
body.ja h4,
body.ja h5,
body.ja h6 {
	font-family: inherit;
}

/* 2.3 标题字重与行距。字号见第 1 段，这里不重复声明。 */
body.ja h1,
body.ja .h1 {
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: 0;
}

body.ja h2,
body.ja .h2 {
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: .01em;
}

body.ja h3,
body.ja .h3 {
	font-weight: 600;
	line-height: 1.5;
	letter-spacing: .01em;
}

body.ja h4,
body.ja .h4 {
	line-height: 1.5;
	letter-spacing: .02em;
}

body.ja h5,
body.ja .h5 {
	line-height: 1.6;
	letter-spacing: .02em;
}

/* H6 字号沿用第 1 段的 .95rem：日文各级标题都必须小于英文同级，H6 英文为 1rem，
   这里不能再提回 1rem。H6 只承载区块眉标和折叠面板标题一类结构性微型标题，
   不得用来放正文；正文基线仍是 body 的 16px。 */
body.ja h6,
body.ja .h6 {
	line-height: 1.7;
	letter-spacing: .02em;
}

/* 2.4 组件微调。选择器带 #id 是为了压过 about.css 同名 id 规则，不要降级成类选择器。 */
/* Hero 标题不走 h1 token，字号由 about.css 的 `#hero .hero-title` 三档控制（3.5 / 2.5 / 2rem）。
   这里必须保留 #hero 才压得过它，降级成 .hero-title 会因特异性不足而失效。
   日文取英文的 0.85 倍左右，逐档都小于英文；断点与 about.css 对齐，避免出现无人负责的中间档。 */
body.ja .about-wrapper #hero .hero-title {
	max-width: 24em;
	margin-right: auto;
	margin-left: auto;
	font-size: 3rem;
	line-height: 1.4;
}

@media (max-width: 991px) {
	body.ja .about-wrapper #hero .hero-title {
		font-size: 2.125rem;
	}
}

@media (max-width: 576px) {
	body.ja .about-wrapper #hero .hero-title {
		font-size: 1.75rem;
	}
}

body.ja .about-wrapper #who-we-are h2 {
	font-size: 1.5rem;
	line-height: 1.5;
}

body.ja .about-wrapper #who-we-are p.small {
	font-size: 1rem;
}

body.ja .about-wrapper .timeline .timestamp,
body.ja .about-wrapper .timeline .status {
	word-break: normal;
	overflow-wrap: normal;
	line-break: strict;
}

body.ja .enquiry-layout .enquiry-panel-head h2,
body.ja .location-map-side h2 {
	line-height: 1.4;
}

/* 询盘页把这几处标题缩到了正文以下（英文 1rem / 0.78rem）。那些规则与 body.ja h2 特异性相同，
   只是靠加载顺序被本文件顶掉，导致日文一度比英文大近一倍。这里按组件重新收口。 */
body.ja .enquiry-contact-card h2,
body.ja .enquiry-global-note h2 {
	font-size: .95rem;
	line-height: 1.6;
}

/* 英文此处为 0.78rem（12.48px）。日文再往下已低于可读下限，因此与英文取齐而不是更小，
   是「日文标题小于英文」的唯一例外，待确认是否改为提高英文侧字号。 */
body.ja .enquiry-step-heading h3 {
	font-size: .78rem;
	line-height: 1.6;
}

@media (min-width: 992px) {
	body.ja .about-wrapper #who-we-are h2 {
		font-size: 2rem;
	}
}

/* 2.4b 组件类标题。这些类在英文侧自带字号，token 层压不到，必须逐个按同样的选择器收口，
   否则日文会等于甚至大于英文。新增组件时用 tests 里的对位检查脚本复查。 */
body.ja .in-news-module .in-news-module-list .news-item-title {
	font-size: 1.25rem;
}

@media (max-width: 767.98px) {
	body.ja .materials-title {
		font-size: clamp(1.9rem, 7.8vw, 2.6rem);
	}
}

/* 挂在 <div> 上的标题类，不是 h1–h6，按标签名的检查会漏掉。英文侧 1.1rem，日文降一档。 */
body.ja .nav-card-title {
	font-size: 1rem;
}

/* 2.4c Solution 富文本组件标题。
   这些字号写在文章 post_content 自带的 <style> 里（英文与日文各存一份、内容相同），
   所以中英渲染完全一样；改 cn-ja.css 的 body.ja hN 或改模板都无效——前者特异性
   (0,1,1) 压不过富文本的 (0,2,1)，后者根本不含这些样式。
   这里用 body.ja 前缀把特异性提到 (0,3,1) 压过它，一次覆盖全部 solution 页，
   不必逐篇改数据库（逐篇改的话每新建一篇 solution 就会复发）。
   取值为英文原值的 0.85 倍，与第 1 段的标题层级保持同一比例。 */
body.ja .hs-custom-sec .hs-solution-wrapper h2 {
	font-size: clamp(25.5px, 2.89vw, 39.1px);
}

body.ja .hs-custom-sec .hs-solution-wrapper .hs-selection-title {
	font-size: min(2.68vw, 35.7px);
}

body.ja .hs-custom-sec .hs-solution-wrapper .card h3 {
	font-size: 16.15px;
}

body.ja .hs-custom-sec .hs-solution-wrapper .hs-page-capabilities h2 {
	font-size: 21.25px;
}

@media (max-width: 960px) {
	body.ja .hs-custom-sec .hs-solution-wrapper .hs-selection-title {
		font-size: min(3.49vw, 28.9px);
	}
}

@media (max-width: 640px) {
	body.ja .hs-custom-sec .hs-solution-wrapper h2 {
		font-size: 25.5px;
	}

	body.ja .hs-custom-sec .hs-solution-wrapper .hs-selection-title {
		font-size: 25.5px;
	}
}

/* 2.5 词内禁止断行。日方审核要求：词不可从中间断开，复合词只能在构成词边界断开
   （工作簿 IV3-0165 备注，注明适用于所有部分）。把原子词包进 .ja-word，浏览器就只会在
   词与词之间断，任何视口宽度都成立——这比按断点硬插 <br> 可靠，<br> 换个宽度就会失效。 */
body.ja .ja-word {
	white-space: nowrap;
}

/* 2.6 语义换行断点。已被 .ja-word 取代，仅在整段必须固定成几行时才用，见日文规范 4.2。 */
body.ja .ja-break-desktop {
	display: none;
}

@media (min-width: 576px) {
	body.ja .ja-break-mobile {
		display: none;
	}

	body.ja .ja-break-desktop {
		display: initial;
	}
}
