/* young-serif-latin-400-normal */
@font-face {
  font-family: 'Young Serif';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/_astro/young-serif-latin-400-normal.DIMmNPI9.woff2) format('woff2'), url(/_astro/young-serif-latin-400-normal.D1tz0Z9s.woff) format('woff');
}@font-face {
  font-family: 'Figtree';
  font-style: normal;
  font-display: swap;
  font-weight: 300 900;
  src: url('/_astro/figtree-latin-wght-normal.D_ZTVpCC.woff2') format('woff2-variations');
}

@font-face {
  font-family: 'Figtree';
  font-style: italic;
  font-display: swap;
  font-weight: 300 900;
  src: url('/_astro/figtree-latin-wght-italic.BEAWuiTz.woff2') format('woff2-variations');
}
bp-if { display: contents; }
  bp-if[hidden] { display: none; }

  html:not([data-lang="zh"]) [data-lang-only="zh"],
  html[data-lang="zh"] [data-lang-only="en"] { display: none !important; }
  /* 标题的 Young Serif 没有中文字形，中文会落到系统宋体；中文一律用 MiSans（取不到时退回系统黑体），夹在中文里的英文仍用 Figtree */
  [lang="zh-CN"] { font-family: 'Figtree', 'MiSans', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Noto Sans SC', sans-serif; }
  /* 标题和展示大字的中文统一用苹方 Medium：Semibold 太像 App 界面文字，Regular 撑不起大标题 */
  :is(h1, h2, h3, .gg, .st-gg, .wys-n) [lang="zh-CN"] { font-weight: 500; }
  /* 区块标题：40px 是给英文 Young Serif 定的，中文压不住区块，放大 1.2 倍（宽屏约 48px）。
     keep-all 让中文只在空格、标点和 <wbr> 处折行，不从词中间断开；词组太长放不下时 overflow-wrap 兜底，不会撑出屏幕 */
  html[data-lang="zh"] h2 { text-wrap: balance; }
  h2 [lang="zh-CN"] { font-size: 1.2em; line-height: 1.15; word-break: keep-all; overflow-wrap: anywhere; }
  /* 手机上 1.2 倍时十个字就占满一行，长词组会被兜底规则硬拆、把逗号挤到行首，收到 1.1 倍 */
  @media (max-width: 767px) { h2 [lang="zh-CN"] { font-size: 1.1em; } }
  /* 首屏大标题和内页小标题同理：中文字数少，原字号下只占英文一半宽，h1 放大 1.25 倍、内页小标题（.cp-h3）1.15 倍。
     首页 h1 在 home.css 单独定了字号；关于我们、定价的 h1 中文本来就和英文一样宽，在各自页面 css 里退回 1em */
  /* 中文段落避免末行只剩一两个字（「……经 / 验」），标题另有 balance 规则不受影响 */
  html[data-lang="zh"] :is(p, li, h3, h4, dd, blockquote) { text-wrap: pretty; }
  h1 [lang="zh-CN"] { font-size: 1.25em; }
  .cp-h3 [lang="zh-CN"] { font-size: 1.15em; }
  @media (max-width: 767px) { h1 [lang="zh-CN"] { font-size: 1.15em; } .cp-h3 [lang="zh-CN"] { font-size: 1.1em; } }

  /* 按钮和导航链接的悬停底色统一用连续曲率圆角矩形（G3 / squircle），不用胶囊。各页 css 里按钮的 9999px 是设计稿原样导出的，这里统一盖掉；
     圆角约为高度的 38%，squircle 曲线比普通圆角收得更紧，所以数值比同观感的普通圆角略大。不认 corner-shape 的浏览器退回普通圆角矩形 */
  html body :is(.pill, .bd-submit, .jb-chip, .pr-tg) { border-radius: 18px !important; corner-shape: squircle; }
  html body :is(.pill.sm, .pr-tb, .pr-thumb, .nvl, .gdd summary) { border-radius: 14px !important; corner-shape: squircle; }
  html body .bd-submit { border-radius: 20px !important; }
  html body .jb-chip { border-radius: 15px !important; }

  /* cross-document page transition: the browser cross-fades old → new page instead of flashing white (unsupported browsers ignore it) */
  @view-transition { navigation: auto; }

  /* hero entrance, same curve / timing / stagger the old JS intro used, but applied from the first paint so nothing flashes */
  @keyframes bp-hero-in { 0% { opacity: 0; transform: translateY(28px); } 75% { opacity: 1; } 100% { opacity: 1; transform: none; } }
  @keyframes bp-hero-in-lg { 0% { opacity: 0; transform: translateY(56px); } 75% { opacity: 1; } 100% { opacity: 1; transform: none; } }
  #product h1 { animation: bp-hero-in 1.2s cubic-bezier(.2,.7,.2,1) .05s backwards; }
  #product .hsub { animation: bp-hero-in 1.2s cubic-bezier(.2,.7,.2,1) .17s backwards; }
  #product .hcta { animation: bp-hero-in 1.2s cubic-bezier(.2,.7,.2,1) .29s backwards; }
  #product .hfr { animation: bp-hero-in-lg 1.2s cubic-bezier(.2,.7,.2,1) .41s backwards; }
  @media (prefers-reduced-motion: reduce) {
    #product h1, #product .hsub, #product .hcta, #product .hfr { animation: none; }
    @view-transition { navigation: none; }
  }.lsw[data-astro-cid-dcaqgu7c] {
  display: inline-flex;
  align-items: center;
  height: 36px;
  padding: 0 12px;
  border: 0;
  background: none;
  font: inherit;
  font-size: 15px;
  color: #333;
  white-space: nowrap;
  cursor: pointer;
}
/* 901–1180 every page CSS squeezes the links to gap:0 (16px between labels, then a jump to ~37px at 1181) although
     the bar has 85px+ free on each side; grow the gap with the viewport so it lands next to the wide-screen spacing */
  @media (min-width: 901px) and (max-width: 1180px) {
    html body header .nv { gap: clamp(8px, calc(3.6vw - 24px), 20px) !important; }
  }