/* GEI 官网 · 共享 CJK 排版回调 (cjk.css)
   三语都 link，但只在 ja / zh 页(由 <html lang> 触发 :lang())生效。
   en 页因不匹配 :lang(ja|zh-Hans) → 零影响、零 CJK 字体请求。
   作用: 把 main.css 的 Latin 专属调音(负字距/紧行高/悬挂引号)在 CJK 下回调到方块字规范。
   依据: architecture.md §2.4 / §5.2 / §6。改一处 → 三语生效。 */

/* —— 正文行高: CJK 方块字需要更大行间呼吸(~1.78);禁负字距;关悬挂引号;开 palt —— */
:lang(ja) body,
:lang(zh-Hans) body {
  line-height: 1.78;
  letter-spacing: 0;
  hanging-punctuation: none;                       /* CJK 不做悬挂引号(标点本身占全角格) */
  font-feature-settings: "kern" 1, "liga" 1, "palt" 1;  /* palt = 比例间距,收紧全角标点 */
  /* 禁則処理: 默认 line-break:auto 会放长音符「ー」和小书假名(ゃゅょっ)到行首
     ——「キーチェーン」被断成「キ / ーチェーン」。strict 收紧到日文排版规范。 */
  line-break: strict;
}

/* —— display 标题: 归零负字距(方块字负字距会粘连),抬高紧行高 —— */
:lang(ja) .display,
:lang(zh-Hans) .display {
  letter-spacing: 0;
}
:lang(ja) .display-xl,
:lang(zh-Hans) .display-xl {
  line-height: 1.3;
  letter-spacing: 0;
}
:lang(ja) .display-l,
:lang(zh-Hans) .display-l {
  line-height: 1.32;
  letter-spacing: 0;
}
:lang(ja) .heading,
:lang(zh-Hans) .heading {
  line-height: 1.3;
  letter-spacing: 0;
}
/* 章扉幕大词 / 能力名 在 CJK 下同样禁负字距、给足行高 */
:lang(ja) .chapter__title,
:lang(zh-Hans) .chapter__title,
:lang(ja) .cap-name,
:lang(zh-Hans) .cap-name {
  letter-spacing: 0;
  line-height: 1.28;
}

/* —— lead / prose 引文正文: 抬行高,去字距 —— */
:lang(ja) .lead,
:lang(zh-Hans) .lead,
:lang(ja) .prose,
:lang(zh-Hans) .prose {
  line-height: 1.85;
  letter-spacing: 0;
}
:lang(ja) .small,
:lang(zh-Hans) .small {
  letter-spacing: 0;
  line-height: 1.7;
}

/* —— 数字 / 进度 / 命令 等拉丁字形走 Newsreader(var(--font-latin)),
   即使嵌在 CJK 段落里也保持编辑观感 —— */
:lang(ja) .cap-progress,
:lang(zh-Hans) .cap-progress,
:lang(ja) .count-stat__num,
:lang(zh-Hans) .count-stat__num,
:lang(ja) .site-footer__signal,
:lang(zh-Hans) .site-footer__signal {
  font-family: var(--font-latin);
}

/* —— 案例①用户原话: CJK 明朝无真斜体(禁伪斜),去 italic;
   去开口引号悬挂 + 负 text-indent(那是 Latin 弯引号的悬挂,会让全角「错位) —— */
:lang(ja) .relay-node__quote,
:lang(zh-Hans) .relay-node__quote {
  font-style: normal;
  line-height: 1.85;
  hanging-punctuation: none;
  text-indent: 0;
}

/* —— 朱印/墨印: 终章「納品 / 已交付」「受けた / 已提需求」在 CJK 下禁负字距,给行高 —— */
:lang(ja) .seal--ship,
:lang(zh-Hans) .seal--ship,
:lang(ja) .relay-node__seal-ink,
:lang(zh-Hans) .relay-node__seal-ink {
  letter-spacing: 0.04em;
}

/* —— 语言切换器在 CJK 页用 CJK 渲染自称(日本語/简体)更和谐;
   en 页不命中本规则 → 这 5 个标签字落系统字(spec 已决策接受) —— */

/* ============ 语言切换器 (三页共享样式 · §3) ============ */
.lang-switch {
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  margin-left: auto;             /* desktop: 推到 nav 行尾右对齐 */
  font-family: var(--font-latin);
  font-size: var(--fs-label);
  letter-spacing: 0.08em;
}
.lang-switch__sep {
  color: var(--ink-usuzumi);     /* nezumi/淡墨 中点,装饰 */
}
.lang-switch a {
  position: relative;
  color: var(--ink-nezumi);
  text-decoration: none;
  padding: 0.2em 0.1em;
  transition: color var(--d-fast) var(--ease-soft);
}
.lang-switch a::before {
  content: "";
  position: absolute; left: 0.1em; right: 0.1em; bottom: 0;
  height: 1px;
  background: var(--ink-sumi);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform var(--d-fast) var(--ease-soft);
}
.lang-switch a:hover, .lang-switch a:focus-visible { color: var(--ink-sumi); }
.lang-switch a:hover::before, .lang-switch a:focus-visible::before { transform: scaleX(1); }
/* 当前语言: sumi 加重 + 常显下划线(复用 .nav .is-current 视觉语言, 不耗朱) */
.lang-switch a.is-current {
  color: var(--ink-sumi);
  font-weight: 500;
}
.lang-switch a.is-current::before { transform: scaleX(1); }

/* —— 移动端: 折叠面板末组,细线分隔,触控 ≥44px —— */
@media (max-width: 720px) {
  .lang-switch {
    margin-left: 0;
    margin-top: var(--sp-2);
    padding-top: var(--sp-2);
    border-top: 1px solid var(--line-whisper);
    width: 100%;
    justify-content: flex-start;
    gap: 0.6em;
    font-size: var(--fs-small);
  }
  .lang-switch a {
    min-height: 44px;
    min-width: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 0.5em;
  }
}

