/* ==========================================================================
   hv-native-compat.css  ——  Elementor 原生控件化的样式承接层
   --------------------------------------------------------------------------
   作用：页面内容由「整块 HTML widget」升级为 Elementor 原生控件后，DOM 中多出了
        .elementor-widget > .elementor-widget-container 两层包装，
        本文件重建那些因此失配的直接子选择器，并接管按钮/链接类。
   加载顺序：必须在 hv-design-system.css 与 hv-redesign-v3.css 之后。
   回滚：把 styles.css 里本文件的 enqueue 注释掉即可回到旧结构。
   ========================================================================== */

/* --------------------------------------------------------------------------
   0b. 外壳类去重伤害
       .hvp-root / .hvp-subpage / .hvp-page 原本是「整页唯一外壳」上的类
       （redesign-draft-source.css 里 .hvp-subpage{min-height:100vh}）。
       控件化后每个顶层区块都继承了这些类，会各自被撑成一屏高、留下大片空白。
       这里只中和 min-height：类名保留，其余依赖这些类的选择器照旧命中。
   -------------------------------------------------------------------------- */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-element.hvp-subpage,
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-element.hvp-root,
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-element.hvp-page {
  min-height: 0 !important;
  height: auto !important;
}

/* --------------------------------------------------------------------------
   0c. ★ 外壳 padding-top 去重（首页特有，曾让首页凭空高 880px）
       首页有 `:is(body.home) .hvp-root { padding-top: 80px !important }`，
       本意是给「position:fixed 的 .hvp-shell-nav」留出 80px。
       控件化后每个顶层区块都带上了 .hvp-root，于是**每个区块头顶都多 80px**，
       首页 11 个区块 = 凭空多出 800~880px（实测 8561 → 9747）。
       只保留真正装着导航的那个区块的 padding，其余归零。
   -------------------------------------------------------------------------- */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-element.hvp-root:not(:has(.hvp-shell-nav)),
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-element.hvp-subpage:not(:has(.hvp-shell-nav)),
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-element.hvp-page:not(:has(.hvp-shell-nav)) {
  padding-top: 0 !important;
}

/* --------------------------------------------------------------------------
   0a. 承载容器（.hvp-nkit-wrap）的内边距必须归零。
       原 CSS 里有像 `.hvp-workshop-item > div{padding:clamp(22px,3vw,46px)}`
       这种指向标签的选择器；我把 <figure> 变成了 <div>，会被它误命中而凭空多出
       43px 内边距、把图片挤小。光加 :not() 到新规则上还不够 —— 原规则并不会
       因为 compat 里多了一条更精确的规则就失效，必须在这里显式压掉。
   -------------------------------------------------------------------------- */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-element.hvp-nkit-wrap {
  padding: 0 !important;
  min-height: 0 !important;
}

/* --------------------------------------------------------------------------
   0d. ★ 拆块后「上溢被外壳裁掉」—— 统计条（proof-row）
       .hvp-subpage 带 overflow-x:hidden（防装饰元素撑出横向滚动条），按规范
       另一轴由 visible 计算成 auto，于是也裁纵向。子页的 .hvp-proof-row 靠
       margin-top:-74px 上移压住 hero 底部，拆块后该区块自成一个外壳，
       向上的 74px 被自己裁掉（实测：外壳 top 645 / 统计条 top 571，被裁 74px，
       卡片顶边与内边距整段消失）。
       hv-design-system.css 里已有同一套修法，但作用域写的是 .elementor-section /
       .elementor-widget-html —— 控件化后区块变成 .e-con 容器，那两条规则不再命中，
       所以在这里用 .elementor-element 复刻一遍：
       把 -74px 上移到外壳自身（margin 在盒子外侧，不受自身 overflow 影响），
       区块内部归零。
   -------------------------------------------------------------------------- */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-element.hvp-root.hvp-root.hvp-subpage:has(.hvp-proof-row):not(:has(.hvp-sub-hero)) {
  margin-top: -74px !important;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-element.hvp-root.hvp-root.hvp-subpage:has(.hvp-proof-row):not(:has(.hvp-sub-hero)) > main > .hvp-proof-row:first-child,
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-element.hvp-root.hvp-root.hvp-subpage:has(.hvp-proof-row):not(:has(.hvp-sub-hero)) > .hvp-proof-row:first-child {
  margin-top: 0 !important;
}

/* --------------------------------------------------------------------------
   0e. ★ 百分比宽度失去参照 —— 首页「全球交付网络」的 three.js 地球

   .hvp-v2-global__visual 是 display:grid + place-items:center。
   插件模式下 <threejs-scene> 是它的「直接 grid 子项」，所以
   `width: min(620px, 100%)` 里的 100% 有确定参照（= 网格区宽度 554px）。

   控件化后中间多插了一层 .elementor-widget-html，真正的 grid 子项变成了
   那层包装：它的宽度由 place-items:center 决定 → fit-content → 不确定，
   于是 <threejs-scene> 的 100% 退化成内容宽度，实测被压到 406px
   （球体连带缩小约 27%，两侧留空）。

   把包装层还原成占满网格区即可，100% 重新有参照。
   注意：这条只对「grid/flex 居中容器 + 内部百分比宽度」成立。
   全站仅 .hvp-v2-global__visual 一处（另外两处 grid+center 是
   .hvp-v2-stats div / .hvp-mobile-menu summary，只影响文字居中，视觉等价）。
   -------------------------------------------------------------------------- */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-element.hvp-v2-global__visual > .elementor-element,
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-element.hvp-v2-global__visual .elementor-widget-container {
  width: 100% !important;
}

/* --------------------------------------------------------------------------
   0f. ★ 同一病因的第二种表现 —— 比例容器里的 `height:100%` 失去参照

   源样式对图片框是这么写的：
     .hvp-workshop-item figure { height: 330px; overflow: hidden }
     .hvp-contact-photo        { height: 240px / 360px; overflow: hidden }
     .hvp-workshop-item img    { width: 100%; height: 100%; object-fit: cover }
   即「外框定高 + 图撑满」——所以照片是被 cover 裁到外框比例里的。

   控件化后中间多插了一层 .elementor-widget-image（高度 auto）。img 的
   `height: 100%` 参照物变成这个不定的父级 → 退化成 auto → 于是：
     · v3 层写的 `aspect-ratio: 16/11 !important` 趁机生效 → 608x418 撑破 330 的外框，
       被 overflow 裁掉 88px（实测取景纵向偏 44px；contact 页更明显：图 279 落进
       360 的外框，底部露 81px 空白）；
     · 没有 aspect-ratio 的图（如 .hvp-contact-photo img）直接缩成自身比例。

   修法：让包装层在布局上「不存在」—— display:contents 后 img 重新成为
   外框的直接子项，`height:100%` 的参照与插件渲染完全一致，四类外框
   （定高 / 仅 min-height / 图+配文混合 / 网格项）一次性全对。
   -------------------------------------------------------------------------- */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-nkit-figure > .elementor-element,
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-nkit-figure > .elementor-element > .elementor-widget-container {
  display: contents !important;
}

/* --------------------------------------------------------------------------
   0. 中和 —— 按钮类挂在承载容器上，不能让原按钮样式把容器本身撑成按钮。
   -------------------------------------------------------------------------- */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds :is(.hvp-v2-btn, .hvp-primary, .hvp-secondary, .hvp-v2-link).elementor-element {
  height: auto !important;
  padding: 0 !important;
  margin: 0 !important;
  background: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  overflow: visible !important;
  display: block !important;
  width: auto !important;
  min-width: 0 !important;
  color: inherit !important;
  font-size: inherit !important;
  font-family: inherit !important;
  letter-spacing: normal !important;
  text-transform: none !important;
  align-items: normal !important;
  justify-content: normal !important;
  transform: none !important;
}

/* --------------------------------------------------------------------------
   1. 按钮 —— 样式重定向到 Elementor button widget 内部的 <a>
   -------------------------------------------------------------------------- */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds :is(.hvp-v2-btn, .hvp-primary, .hvp-secondary) .elementor-button {
  position: relative;
  height: 52px !important;
  padding: 0 28px !important;
  border-radius: 2px !important;
  font-family: var(--hv3-mono) !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 10px;
  overflow: hidden;
  border: 0 !important;
  transition: transform 260ms var(--hv3-ease), background-color 260ms var(--hv3-ease),
    color 260ms var(--hv3-ease), border-color 260ms var(--hv3-ease) !important;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds :is(.hvp-v2-btn, .hvp-primary) .elementor-button {
  background: var(--hv3-orange) !important;
  color: #17130d !important;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds :is(.hvp-v2-btn, .hvp-primary) .elementor-button:hover {
  background: var(--hv3-orange-hi) !important;
  transform: translateY(-2px) !important;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-secondary .elementor-button {
  background: transparent !important;
  color: var(--hv3-ink) !important;
  border: 1px solid rgba(23, 21, 15, 0.26) !important;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-secondary .elementor-button:hover {
  background: rgba(23, 21, 15, 0.05) !important;
  border-color: rgba(23, 21, 15, 0.5) !important;
  color: var(--hv3-text-hi) !important;
  transform: translateY(-2px) !important;
}
/* band 深色 CTA 区块内的主按钮 */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-band .hvp-primary .elementor-button {
  background: #17130d !important;
  color: #fff !important;
  border: 0 !important;
  box-shadow: 0 16px 38px rgba(23, 19, 13, 0.26) !important;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-band .hvp-primary .elementor-button:hover {
  background: #000000 !important;
  color: #fff !important;
}
/* 文字链型次级入口 */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-link .elementor-button {
  min-height: 44px;
  padding: 0 2px !important;
  color: var(--hv3-orange-ink) !important;
  background: none !important;
  border: 0 !important;
  border-bottom: 1px solid currentColor !important;
  border-radius: 0 !important;
  font-family: var(--hv3-mono) !important;
  /* ★字号必须显式给：v3 的 12px 挂在承载容器 .hvp-v2-link 上，
     Elementor button 内部还有 <span class="elementor-button-text">，
     不给的话它会退回站点基础字号 16px（实测 "Watch Production Video" 12px->16px）。 */
  font-size: 12px !important;
  text-transform: uppercase !important;
  letter-spacing: 0.16em !important;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-link .elementor-button:hover {
  color: var(--hv3-orange-ink-hi) !important;
}

/* --------------------------------------------------------------------------
   2. Elementor 默认样式中和
   -------------------------------------------------------------------------- */
body.hvp-ds .elementor-widget figure { margin: 0 !important; }
body.hvp-ds .elementor-widget-container figure { margin: 0 !important; }
body.hvp-ds .elementor-widget-image .elementor-widget-container { overflow: hidden; }
/* heading widget 的 margin 归零，间距交还给原设计层的 CSS。
   ★ 必须用 :where() 把特异性压到 (0,1,0) 并且**不能带 !important**：
     原来写成 `body.hvp-ds .elementor-widget-heading .elementor-heading-title{margin:0!important}`
     特异性 (0,3,1) + !important，把设计层自己的标题边距也一起压掉了 ——
     实测 `.hvp-gallery-panel h2{margin:14px 0 16px}`（(0,1,1)）被吃，
     kicker 与标题之间的 14px 消失，图库文案块矮 13px、整行高 486 变 473。
     现在只有「设计层没有显式 margin」的标题才会落到这条兜底上。 */
:where(body.hvp-ds .elementor-widget-heading) .elementor-heading-title { margin: 0; }

/* ★ Elementor kit 给每个容器的默认子项间距（--gap / --kit-widgets-space = 20px）
   必须归零。原设计的间距完全来自各区块自己的 margin / padding，
   这 20px 会摊在每一对相邻控件之间，实测首页 +488px、每个子页 +540px。
   这里只覆盖自定义属性，不改 gap 属性本身 —— 所以原 CSS 里
   「.hvp-xxx-grid{gap:24px}」那类显式声明（被本文件改写后特异性更高）
   仍然照常生效，不会把刻意设计的两列/三列间距一起抹掉。 */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-element.e-con,
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-element.e-con-full {
  --gap: 0px !important;
  --kit-widgets-space: 0px !important;
  /* Elementor 真正生效的是这两个：计算样式里是 column-gap / row-gap 从它们取值 */
  --row-gap: 0px !important;
  --column-gap: 0px !important;
}

/* --------------------------------------------------------------------------
   2b. ★ FAQ：Elementor toggle 控件 → 还原原 <details> 手风琴的视觉设计
       原设计（hv-redesign-v3.css 的 .hvp-faq-item 一段）是：
         上边框 1px、标题 16px/600、右侧橙色 "+"（展开时旋转 45°）、答案 15px muted。
       Elementor 的 toggle 默认是灰色标题条 + 蓝色三角图标，必须整段盖掉。
       顺带把自带的图标藏起来 —— 它是 SVG，依赖 elementor-frontend 的尺寸规则，
       在资源被裁剪过的站点上会变成一个没有尺寸的巨大方块（曾把 FAQ 撑成 44817px）。
   -------------------------------------------------------------------------- */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-widget-toggle .elementor-toggle-item {
  border: 0 !important;
  border-top: 1px solid var(--hv3-ink-line) !important;
  background: none !important;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-widget-toggle .elementor-tab-title {
  position: relative !important;
  display: block !important;
  padding: 22px 46px 22px 0 !important;
  background: none !important;
  border: 0 !important;
  cursor: pointer;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-widget-toggle .elementor-tab-title .elementor-toggle-title {
  display: block !important;
  color: var(--hv3-ink) !important;
  font-size: 16px !important;
  font-weight: 600 !important;
  letter-spacing: -0.012em !important;
  transition: color 200ms ease-out;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-widget-toggle .elementor-tab-title:hover .elementor-toggle-title {
  color: var(--hv3-orange-ink) !important;
}
/* Elementor 自带图标一律隐藏，改用原设计的 "+" 符号 */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-widget-toggle .elementor-toggle-icon {
  display: none !important;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-widget-toggle .elementor-tab-title::before {
  content: "+" !important;
  position: absolute !important;
  right: 4px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  width: auto !important;
  height: auto !important;
  border: 0 !important;
  background: none !important;
  font-family: var(--hv3-mono) !important;
  font-size: 21px !important;
  font-weight: 400 !important;
  line-height: 1 !important;
  color: var(--hv3-orange-ink) !important;
  transition: transform 300ms var(--hv3-ease) !important;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-widget-toggle .elementor-tab-title.elementor-active::before {
  transform: translateY(-50%) rotate(45deg) !important;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-widget-toggle .elementor-tab-content {
  display: block;
  max-width: 76ch !important;
  padding: 0 !important;
  border: 0 !important;
  background: none !important;
  color: var(--hv3-ink-mid) !important;
  font-size: 15px !important;
}
/* 答案段落：原设计是 `.hvp-faq-item > p { font-size:15px; padding-bottom:24px }`。
   控件化后这个 <p> 落在 Elementor 的 text-editor 里，已不是 item 的直接子元素，
   原规则改写出的 `> .hvp-nkit-text p` 也匹配不到（这里没有承载容器），
   于是段落退化成站点基础 p 的 16px、并且和内容区的 padding-bottom 叠加成 26px。 */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-widget-toggle .elementor-tab-content p {
  max-width: 76ch !important;
  margin: 0 !important;
  padding-bottom: 24px !important;
  font-size: 15px !important;
  color: var(--hv3-ink-mid) !important;
}
/* 原设计里 12 条 FAQ 默认全部展开（<details open>），这里复刻同样的初始状态：
   没有 JS 时全部展开（对爬虫与无障碍也友好）；
   hv3-js 生效后（说明站内脚本已接管）交给 .elementor-active 控制，
   再由 hv-native-compat.js 统一点开一次，等于原先的「默认全开 + 可收起」。 */
html.hv3-js body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .elementor-widget-toggle .elementor-tab-title:not(.elementor-active) + .elementor-tab-content {
  display: none;
}

/* --------------------------------------------------------------------------
   2c. ★ 承载容器「吞掉」了原元素的类名 → 旧层的标签选择器反过来抢色
       原 HTML 里 kicker 是 <span class="hvp-v2-kicker">橙色</span>：
         - v3 规则 `:is(.hvp-v2-kicker, .hvp-kicker){color:橙色}` 直接命中它（0,7,0）
         - 旧层规则 `:is(body.home) .hvp-v2-video-proof span{color:#7c828b}` 是 (0,2,2)
       控件化后类名跑到了承载容器上，span 变成 Elementor 的
       <span class="elementor-heading-title">：v3 规则只作用到容器（颜色靠继承），
       而旧层那条「section 内任意 span」的冷灰规则直接命中真身 → 抢色成功，
       表现是首页 video-proof 的 "Production video" 小标签从橙色变成冷灰。
       同理会发生在 hero 要点（v3 的 `.hvp-v2-points > *` 上色落在容器上）。

       ★ 修法用 `inherit` 而不是写死颜色：承载容器上的颜色是各层竞争后的正确结果
       （浅底 = 橙 #a8500a，橙色带 .hvp-band 上 = 深墨 #191308），
       写死会把橙色带上的深色小标签一起染成橙色（实测 5 个子页各挂 1 处）。
   -------------------------------------------------------------------------- */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds :is(.hvp-v2-kicker, .hvp-kicker) .elementor-heading-title {
  color: inherit !important;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-points > .hvp-nkit-wrap span {
  color: inherit !important;
}
/* 语言下拉菜单项的字重：旧层给切换器容器定的字重是 800
   （.hvp-shell-language{font-weight:800}），但菜单项 <button> 会被一条基础
   button 规则改成 400。实测插件渲染下：首页（英文态）菜单项是 800，
   子页（中文态）本来就是 400 —— 也就是说两边的既有观感不同，
   这里只按首页的既有取值把字重/字距交还容器，避免把子页也一起改掉。
   只作用于下拉项，不影响收起的 toggle 按钮。 */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds:is(.home, .page-id-2348) .hvp-shell-language .hvp-language__menu button {
  font-weight: inherit !important;
  letter-spacing: inherit !important;
}

/* --------------------------------------------------------------------------
   3. 结构失配重建（由 gen-native-compat.py 自动生成，勿手工编辑这一段）
   -------------------------------------------------------------------------- */
:is(body.page-id-2348, body.home) .hvp-page >section:not(.hvp-nkit-wrap):first-of-type h1 {
  font-size: clamp(36px, 4.35vw, 56px) !important;
  line-height: 1.08 !important;
  font-weight: 660 !important;
  letter-spacing: 0 !important;
  text-wrap: balance;
}

:is(body.page-id-2348, body.home) .hvp-page >section:not(.hvp-nkit-wrap):first-of-type h1 span {
  font-weight: 660 !important;
}

:is(body.page-id-2348, body.home) .hvp-global-proof__metrics .hvp-nkit-item {
  min-height: 176px;
  padding: clamp(30px, 2.2vw, 36px);
  border: 1px solid rgba(238, 120, 0, 0.13);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.82);
  box-shadow: 0 18px 50px rgba(15, 23, 42, 0.06);
  overflow: hidden;
}

:is(body.page-id-2348, body.home) .hvp-factory-evidence__media .hvp-nkit-figure,
:is(body.page-id-2348, body.home) .hvp-process-flow__grid .hvp-nkit-item img {
  margin: 0;
  overflow: hidden;
  border-radius: 22px;
  background: #e8ecf1;
}

:is(body.page-id-2348, body.home) .hvp-factory-evidence__media .hvp-nkit-figure.is-large {
  grid-row: span 2;
}

:is(body.page-id-2348, body.home) .hvp-process-flow__grid .hvp-nkit-item img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

:is(body.page-id-2348, body.home) .hvp-service-bento__grid .hvp-nkit-item {
  min-height: 260px;
  padding: clamp(28px, 2vw, 36px);
  border-radius: 22px;
  border: 1px solid rgba(238, 120, 0, 0.14);
  background: rgba(255, 255, 255, 0.88);
  box-shadow: 0 20px 60px rgba(15, 23, 42, 0.06);
  overflow: hidden;
}

:is(body.page-id-2348, body.home) .hvp-service-bento__grid .hvp-nkit-item > .hvp-nkit-text span,
:is(body.page-id-2348, body.home) .hvp-process-flow__grid .hvp-nkit-item span {
  display: inline-flex;
  color: var(--hvp-orange);
  font-size: 13px;
  font-weight: 800;
}

:is(body.page-id-2348, body.home) .hvp-service-bento__main-copy > .hvp-nkit-text span {
  width: fit-content;
  min-height: 32px;
  display: inline-flex;
  align-items: center;
  padding: 0 12px;
  border-radius: 999px;
  background: rgba(238, 120, 0, 0.14);
  color: #ff9a2f !important;
  font-size: 13px;
  font-weight: 800;
}

:is(body.page-id-2348, body.home) .hvp-service-bento__media .hvp-nkit-figcaption {
  position: absolute;
  left: 16px;
  right: 16px;
  bottom: 16px;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(15, 23, 42, 0.72);
  color: rgba(255, 255, 255, 0.9);
  font-size: 13px;
  line-height: 1.35;
  backdrop-filter: blur(12px);
}

:is(body.page-id-2348, body.home) .hvp-process-flow__grid .hvp-nkit-item {
  min-height: 420px;
  display: grid;
  grid-template-rows: 190px 1fr;
  overflow: hidden;
  border-radius: 24px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  background: #f8fafc;
  box-shadow: 0 16px 52px rgba(15, 23, 42, 0.06);
}

:is(body.page-id-2348, body.home) .hvp-process-flow__grid .hvp-nkit-item.is-wide {
  grid-column: span 2;
}

:is(body.page-id-2348, body.home) .hvp-process-flow__grid .hvp-nkit-item >div:not(.hvp-nkit-wrap) {
  padding: clamp(24px, 2vw, 34px);
}

.hvp-shell-logo > .hvp-nkit-text span {
  font-size: 25px;
  font-weight: 900;
  letter-spacing: 0;
}

.hvp-shell-logo > .hvp-nkit-text span > .hvp-nkit-text span {
  color: var(--hvp-orange);
}

.hvp-mobile-menu .hvp-nkit-summary {
  width: 42px;
  height: 42px;
  display: inline-grid;
  place-content: center;
  gap: 5px;
  border: 1px solid rgba(47, 49, 53, .14);
  border-radius: 8px;
  background: rgba(255,255,255,.72);
  cursor: pointer;
  list-style: none;
}

.hvp-mobile-menu .hvp-nkit-summary::-webkit-details-marker {
  display: none;
}

.hvp-mobile-menu .hvp-nkit-summary span {
  width: 18px;
  height: 2px;
  border-radius: 999px;
  background: #303236;
}

body[data-hv-lang]:not([data-hv-lang="zh-CN"]) .hvp-shell-logo > .hvp-nkit-text span {
  font-size: 22px;
}

.hvp-faq-index > .hvp-nkit-text span {
  display: inline-flex;
  color: var(--hvp-orange);
  font-size: 14px;
  font-weight: 900;
}

.hvp-proof-row .hvp-nkit-item,
.hvp-contact-cards .hvp-nkit-item {
  background: var(--hvp-card);
  border: 1px solid rgba(255,255,255,.68);
  box-shadow: 0 22px 70px rgba(15, 23, 42, 0.08);
  backdrop-filter: blur(18px);
}

.hvp-proof-row .hvp-nkit-item {
  min-height: 138px;
  padding: 28px;
  border-radius: 14px;
  display: grid;
  align-content: center;
  gap: 8px;
}

:is(body.page-id-2348, body.home)[data-hv-lang]:not([data-hv-lang="zh-CN"]) .hvp-page >section:not(.hvp-nkit-wrap):first-of-type h1 {
  font-size: clamp(32px, 3.7vw, 50px) !important;
  line-height: 1.12 !important;
  font-weight: 660 !important;
  letter-spacing: 0 !important;
}

.hvp-workshop-list .hvp-workshop-item:nth-child(3n + 2) .hvp-nkit-figure {
  order: 2;
}

.hvp-workshop-item .hvp-nkit-figure {
  margin: 0;
  height: 330px;
  overflow: hidden;
  border-radius: 12px;
  background: #eef1f4;
}

.hvp-workshop-item >div:not(.hvp-nkit-wrap) {
  padding: clamp(22px, 3vw, 46px);
}

.hvp-workshop-item >div:not(.hvp-nkit-wrap) > .hvp-nkit-text span {
  color: var(--hvp-orange);
  font-size: 20px;
  font-weight: 900;
}

.hvp-gallery-panel .hvp-nkit-figure {
  min-height: 360px;
  margin: 0;
  overflow: hidden;
  border-radius: 12px;
  background: #eef1f4;
}

.hvp-gallery-panel .hvp-nkit-figure:first-child {
  min-height: 460px;
}

.hvp-gallery-panel >div:not(.hvp-nkit-wrap) {
  align-self: center;
  padding: clamp(18px, 3vw, 44px);
}

.hvp-faq-item .hvp-nkit-summary {
  cursor: pointer;
  padding: 24px 28px;
  color: #7c828b;
  font-size: 20px;
  font-weight: 900;
}

.hvp-contact-cards .hvp-nkit-item {
  min-height: 150px;
  padding: 24px;
  border-radius: 14px;
}

:is(body.page-id-2348, body.home) .hvp-global-proof__metrics .hvp-nkit-item,
:is(body.page-id-2348, body.home) .hvp-root [data-purpose="certifications"] .grid >div:not(.hvp-nkit-wrap),
.hvp-proof-row .hvp-nkit-item,
.hvp-contact-cards .hvp-nkit-item {
  padding: clamp(28px, 2vw, 36px) !important;
  overflow: hidden;
}

:is(body.page-id-2348, body.home) .hvp-root [data-purpose="certifications"] .grid >div:not(.hvp-nkit-wrap) strong {
  display: block;
  max-width: 100%;
  line-height: 1.06 !important;
  margin-top: 0 !important;
  overflow-wrap: anywhere;
}

:is(body.page-id-2348, body.home) .hvp-root [data-purpose="certifications"] .grid >div:not(.hvp-nkit-wrap) strong {
  margin-bottom: 10px !important;
}

:is(body.page-id-2348, body.home) .hvp-root [data-purpose="certifications"] .grid >div:not(.hvp-nkit-wrap) span {
  display: block;
  line-height: 1.45;
}

.hvp-subpage .hvp-nkit-summary:focus-visible {
  outline: 3px solid rgba(238, 120, 0, .38) !important;
  outline-offset: 3px !important;
}

:is(body.page-id-2348, body.home) .hvp-buyer-proof__bar .hvp-nkit-item {
  min-height: 112px;
  padding: 24px 26px;
  border-right: 1px solid rgba(25, 28, 30, .09);
}

:is(body.page-id-2348, body.home) .hvp-buyer-proof__bar .hvp-nkit-item:last-child {
  border-right: 0;
}

:is(body.page-id-2348, body.home) .hvp-v2-card-row .hvp-nkit-item {
  overflow: hidden;
  background: transparent;
}

:is(body.page-id-2348, body.home) .hvp-v2-process__grid .hvp-nkit-item {
  display: grid;
  grid-template-rows: auto auto auto 1fr;
  min-width: 0;
}

:is(body.page-id-2348, body.home) .hvp-v2-quality__copy > .hvp-nkit-text p {
  max-width: 440px;
  margin-bottom: 36px;
  color: #8b9198;
  font-size: clamp(15px, .98vw, 18px);
  line-height: 1.62;
}

:is(body.page-id-2348, body.home) .hvp-v2-checks .hvp-nkit-item {
  position: relative;
  display: grid;
  gap: 7px;
  padding-left: 36px;
}

:is(body.page-id-2348, body.home) .hvp-v2-checks .hvp-nkit-item::before {
  content: "";
  position: absolute;
  left: 0;
  top: 10px;
  width: 16px;
  height: 2px;
  background: var(--hvp-v2-orange);
}

:is(body.page-id-2348, body.home) .hvp-v2-quality__media >div:not(.hvp-nkit-wrap) {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
}

:is(body.page-id-2348, body.home) .hvp-v2-quality__media >div:not(.hvp-nkit-wrap) img {
  width: 100%;
  aspect-ratio: 1.85;
  object-fit: cover;
  display: block;
  border-top: 4px solid #fff;
  border-right: 4px solid #fff;
}

:is(body.page-id-2348, body.home) .hvp-v2-quality__media >div:not(.hvp-nkit-wrap) img:last-child {
  border-right: 0;
}

:is(body.page-id-2348, body.home) .hvp-v2-card-row .hvp-nkit-item,
:is(body.page-id-2348, body.home) .hvp-v2-process__grid .hvp-nkit-item {
  transition: transform .24s ease, box-shadow .24s ease;
}

body[data-hv-lang]:not([data-hv-lang="zh-CN"]) .hvp-shell-logo > .hvp-nkit-text span {
  font-size: 25px;
}

body .hvp-v2 .hvp-v2-card-row .hvp-nkit-item {
  display: flex;
  flex-direction: column;
  min-height: 100%;
  padding: 8px 8px 22px;
  border: 1px solid rgba(16, 17, 20, .07);
  border-radius: 8px;
  background: rgba(255, 255, 255, .88);
  box-shadow: 0 18px 44px rgba(15, 23, 42, .07);
}

body .hvp-v2 .hvp-v2-global__proof .hvp-nkit-item {
  display: grid;
  gap: 6px;
  padding: 18px 20px;
  border: 1px solid rgba(238, 120, 0, .28);
  border-radius: 7px;
  background: rgba(15, 23, 42, .035);
}

body .hvp-v2 .hvp-v2-quality__media >div:not(.hvp-nkit-wrap) img {
  border-radius: 0 !important;
}

body .hvp-v2 .hvp-v2-quality__copy > .hvp-nkit-text p {
  max-width: 52ch !important;
}

.hvp-subpage .hvp-proof-row .hvp-nkit-item,
.hvp-subpage .hvp-contact-cards .hvp-nkit-item {
  border-radius: 8px !important;
}

.hvp-subpage .hvp-workshop-item .hvp-nkit-figure,
.hvp-subpage .hvp-gallery-panel .hvp-nkit-figure {
  border-radius: var(--hvp-v2-radius) !important;
}

body .hvp-v2 .hvp-v2-global__proof .hvp-nkit-item {
  border-color: rgba(238, 120, 0, .34) !important;
  background: rgba(15, 23, 42, .04) !important;
  box-shadow: inset 3px 0 0 rgba(238, 120, 0, .82);
}

:is(body.page-id-2348, body.home) .hvp-v2-video-proof__copy > .hvp-nkit-text p {
  max-width: 54ch;
  margin: 0 0 34px;
  color: #7c828b !important;
  font-size: clamp(15px, 1vw, 18px);
  font-weight: 500;
  line-height: 1.66;
}

:is(body.page-id-2348, body.home) .hvp-v2-video-proof__points .hvp-nkit-item {
  display: grid;
  gap: 5px;
  padding: 17px 20px;
  border: 1px solid rgba(16, 17, 20, .08);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 14px 38px rgba(15, 23, 42, .05);
}

:is(body.page-id-2348, body.home) .hvp-v2-certifications__copy > .hvp-nkit-text p {
  max-width: 58ch;
  margin: 0 0 34px;
  color: #7c828b !important;
  font-size: clamp(15px, 1vw, 18px);
  font-weight: 500;
  line-height: 1.7;
}

:is(body.page-id-2348, body.home) .hvp-v2-certifications__cards .hvp-nkit-item {
  min-height: 142px;
  padding: 22px;
  border: 1px solid rgba(16, 17, 20, .08);
  border-left: 3px solid #ee7800;
  border-radius: 10px;
  background: rgba(255, 255, 255, .9);
  box-shadow: 0 16px 46px rgba(15, 23, 42, .055);
}

:is(body.page-id-2348, body.home) .hvp-v2-certifications__media .hvp-nkit-figcaption {
  padding: 16px 18px;
  color: #6b7280 !important;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
  border-top: 1px solid rgba(16, 17, 20, .08);
}

body.hvp-ds.hvp-ds.hvp-redesign-home.hvp-redesign-home .hvp-nkit-figcaption,
body.hvp-ds.hvp-ds .hvp-root.hvp-root .hvp-nkit-figcaption {
  font-family: var(--hv-font-body) !important;
  font-size: var(--hv-fs-body) !important;
  line-height: var(--hv-lh-body) !important;
  letter-spacing: var(--hv-ls-body);
  color: var(--hv-body) !important;
}

body.hvp-ds.hvp-ds .hvp-section-head > .hvp-nkit-text span,
body.hvp-ds.hvp-ds .hvp-faq-index > .hvp-nkit-text span {
  font-family: var(--hv-font-display) !important;
  font-size: var(--hv-fs-kicker) !important;
  font-weight: 700 !important;
  letter-spacing: var(--hv-ls-kicker) !important;
  text-transform: uppercase;
  color: var(--hv-accent) !important;
}

body.hvp-ds.hvp-ds .hvp-proof-row .hvp-nkit-item strong,
body.hvp-ds.hvp-ds .hvp-contact-cards .hvp-nkit-item strong {
  font-size: clamp(1.5rem, 2.4vw, 2rem) !important;
  font-weight: 700;
  color: var(--hv-ink) !important;
}

body.hvp-ds.hvp-ds .hvp-proof-row .hvp-nkit-item span,
body.hvp-ds.hvp-ds .hvp-contact-cards .hvp-nkit-item span {
  font-size: var(--hv-fs-small) !important;
  line-height: var(--hv-lh-small) !important;
  color: var(--hv-muted) !important;
}

body.hvp-ds.hvp-ds .hvp-faq-item .hvp-nkit-summary {
  font-family: var(--hv-font-display) !important;
  font-size: var(--hv-fs-h4) !important;
  font-weight: 600;
  color: var(--hv-ink) !important;
}

body.hvp-ds.hvp-ds .hvp-mobile-menu .hvp-nkit-summary {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}

body.hvp-ds.hvp-ds .hvp-mobile-menu .hvp-nkit-summary {
  min-width: 44px;
  justify-content: center;
  cursor: pointer;
}

body.hvp-ds.hvp-ds .elementor-section .hvp-root.hvp-root.hvp-subpage:has(.hvp-proof-row):not(:has(.hvp-sub-hero)) >main:not(.hvp-nkit-wrap) >.hvp-proof-row:first-child,
body.hvp-ds.hvp-ds .elementor-widget-html .hvp-root.hvp-root.hvp-subpage:has(.hvp-proof-row):not(:has(.hvp-sub-hero)) >main:not(.hvp-nkit-wrap) >.hvp-proof-row:first-child {
  margin-top: 0 !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-hero__copy > .hvp-nkit-text p,
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-video-proof__copy > .hvp-nkit-text p,
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-global__copy > .hvp-nkit-text p,
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-quality__copy > .hvp-nkit-text p,
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-certifications__copy > .hvp-nkit-text p,
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-sub-hero__content > .hvp-nkit-text p,
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-section-head > .hvp-nkit-text p {
  font-size: clamp(16.5px, 1.28vw, 20px) !important;
  line-height: 1.72 !important;
  letter-spacing: -0.005em;
  max-width: 58ch;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-hero__copy > .hvp-nkit-text p {
  color: var(--hv3-text-mid) !important;
  margin-top: 22px !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-stats >div:not(.hvp-nkit-wrap) {
  display: block !important;
  padding: clamp(28px, 3.1vw, 46px) clamp(22px, 2.3vw, 38px) !important;
  border-left: 1px solid var(--hv3-line) !important;
  background: transparent !important;
  border-radius: 0 !important;
  transform: none !important;
  box-shadow: none !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-stats >div:not(.hvp-nkit-wrap):first-child {
  border-left: 0 !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-video-proof__points >.hvp-nkit-item {
  display: block !important;
  background: none !important;
  border: 0 !important;
  border-top: 1px solid var(--hv3-line) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 18px 0 !important;
  transform: none !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-video-proof__points >.hvp-nkit-item strong {
  display: block !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  color: var(--hv3-text-hi) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-video-proof__points >.hvp-nkit-item span {
  display: block !important;
  margin-top: 7px !important;
  font-size: 14px !important;
  color: var(--hv3-text-mid) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-card-row >.hvp-nkit-item {
  display: flex !important;
  flex-direction: column !important;
  background: var(--hv3-paper) !important;
  border: 1px solid var(--hv3-ink-line) !important;
  border-radius: 2px !important;
  box-shadow: none !important;
  padding: 0 0 clamp(22px, 2.2vw, 32px) !important;
  overflow: hidden;
  transform: none !important;
  transition: border-color 300ms var(--hv3-ease), transform 420ms var(--hv3-ease);
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-card-row >.hvp-nkit-item:hover {
  border-color: rgba(238, 120, 0, 0.55) !important;
  transform: translateY(-4px) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-card-row >.hvp-nkit-item img {
  display: block !important;
  width: 100% !important;
  aspect-ratio: 4 / 3 !important;
  object-fit: cover !important;
  border-radius: 0 !important;
  margin: 0 0 clamp(18px, 1.8vw, 24px) !important;
  filter: saturate(0.94) contrast(1.04);
  transition: transform 820ms var(--hv3-ease), filter 520ms ease-out;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-card-row >.hvp-nkit-item:hover img {
  transform: scale(1.05) !important;
  filter: none;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-card-row >.hvp-nkit-item :is(h3, p) {
  padding-inline: clamp(20px, 2vw, 30px) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-card-row >.hvp-nkit-item h3 {
  color: var(--hv3-ink) !important;
  margin-bottom: 10px !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-card-row >.hvp-nkit-item p {
  color: var(--hv3-ink-mid) !important;
  font-size: 14.5px !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-global__proof >.hvp-nkit-item {
  display: block !important;
  background: none !important;
  border: 0 !important;
  border-top: 1px solid var(--hv3-ink-line) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 19px 0 !important;
  transform: none !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-global__proof >.hvp-nkit-item strong {
  display: block !important;
  font-size: 17px !important;
  font-weight: 700 !important;
  letter-spacing: -0.014em !important;
  color: var(--hv3-ink) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-global__proof >.hvp-nkit-item span {
  display: block !important;
  margin-top: 7px !important;
  font-size: 14px !important;
  color: var(--hv3-ink-mid) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-process__grid >.hvp-nkit-item {
  background: transparent !important;
  border: 0 !important;
  border-right: 1px solid var(--hv3-line) !important;
  border-bottom: 1px solid var(--hv3-line) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: clamp(26px, 2.7vw, 44px) !important;
  transform: none !important;
  transition: background-color 360ms var(--hv3-ease);
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-process__grid >.hvp-nkit-item:hover {
  background: var(--hv3-surface-2) !important;
  transform: none !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-process__grid >.hvp-nkit-item strong {
  display: block !important;
  font-family: var(--hv3-mono) !important;
  font-size: clamp(26px, 2.8vw, 42px) !important;
  font-weight: 700 !important;
  line-height: 1 !important;
  margin-bottom: clamp(18px, 1.9vw, 28px) !important;
  color: transparent !important;
  -webkit-text-stroke: 1px rgba(238, 120, 0, 0.62);
  text-stroke: 1px rgba(238, 120, 0, 0.62);
  transition: -webkit-text-stroke-color 300ms var(--hv3-ease);
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-process__grid >.hvp-nkit-item:hover strong {
  -webkit-text-stroke-color: var(--hv3-orange);
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-process__grid >.hvp-nkit-item h3 {
  margin-bottom: 10px !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-process__grid >.hvp-nkit-item p {
  font-size: 14.5px !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-process__grid >.hvp-nkit-item img {
  display: block !important;
  width: 100% !important;
  aspect-ratio: 16 / 10 !important;
  object-fit: cover !important;
  border-radius: 2px !important;
  margin-top: clamp(18px, 2vw, 26px) !important;
  filter: saturate(0.95) contrast(1.03);
  transition: filter 500ms ease-out;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-process__grid >.hvp-nkit-item:hover img {
  filter: saturate(1) contrast(1.02);
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-certifications__cards >.hvp-nkit-item {
  display: block !important;
  background: none !important;
  border: 0 !important;
  border-top: 1px solid var(--hv3-ink-line) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 17px 0 !important;
  transform: none !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-certifications__cards >.hvp-nkit-item strong {
  display: block !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  color: var(--hv3-ink) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-certifications__cards >.hvp-nkit-item span {
  display: block !important;
  margin-top: 6px !important;
  font-size: 14px !important;
  color: var(--hv3-ink-mid) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-certifications__media .hvp-nkit-figcaption {
  margin-top: 14px !important;
  font-family: var(--hv3-mono) !important;
  font-size: 11.5px !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: var(--hv3-ink-lo) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-sub-hero__content > .hvp-nkit-text p {
  color: var(--hv3-text-mid) !important;
  margin-top: 20px !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-proof-row .hvp-nkit-item {
  display: block !important;
  background: none !important;
  border: 0 !important;
  border-right: 1px solid var(--hv3-ink-line) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 4px clamp(18px, 2vw, 32px) !important;
  transform: none !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-proof-row .hvp-nkit-item strong {
  display: block !important;
  font-family: var(--hv3-mono) !important;
  font-size: clamp(26px, 3vw, 46px) !important;
  font-weight: 700 !important;
  line-height: 1.05 !important;
  letter-spacing: -0.03em !important;
  color: var(--hv3-ink) !important;
  font-variant-numeric: tabular-nums;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-proof-row .hvp-nkit-item span {
  display: block !important;
  margin-top: 10px !important;
  font-family: var(--hv3-mono) !important;
  font-size: 11.5px !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase !important;
  color: var(--hv3-ink-lo) !important;
  line-height: 1.6 !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-section-head > .hvp-nkit-text span:first-child {
  font-family: var(--hv3-mono) !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  letter-spacing: 0.22em !important;
  text-transform: uppercase !important;
  color: var(--hv3-orange-ink) !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 12px !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-section-head > .hvp-nkit-text span:first-child::before {
  content: "";
  width: 26px;
  height: 1px;
  background: var(--hv3-orange);
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-workshop-item:nth-child(even) >.hvp-nkit-figure {
  order: 2;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-workshop-item >.hvp-nkit-figure {
  margin: 0 !important;
  overflow: hidden;
  border-radius: 2px !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-workshop-item >.hvp-nkit-figure img {
  display: block !important;
  width: 100% !important;
  aspect-ratio: 16 / 11 !important;
  object-fit: cover !important;
  border-radius: 2px !important;
  filter: saturate(0.95) contrast(1.03);
  transition: transform 900ms var(--hv3-ease), filter 520ms ease-out;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-workshop-item:hover >.hvp-nkit-figure img {
  transform: scale(1.03) !important;
  filter: saturate(1) contrast(1.02);
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-workshop-item >div:not(.hvp-nkit-wrap) > .hvp-nkit-text span {
  display: block !important;
  font-family: var(--hv3-mono) !important;
  font-size: clamp(28px, 3.1vw, 50px) !important;
  font-weight: 700 !important;
  line-height: 1 !important;
  margin-bottom: clamp(14px, 1.6vw, 22px) !important;
  color: transparent !important;
  -webkit-text-stroke: 1px rgba(238, 120, 0, 0.6);
  transition: -webkit-text-stroke-color 300ms var(--hv3-ease);
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-workshop-item:hover >div:not(.hvp-nkit-wrap) > .hvp-nkit-text span {
  -webkit-text-stroke-color: var(--hv3-orange);
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-gallery-panel .hvp-nkit-figure {
  margin: 0 !important;
  overflow: hidden;
  border-radius: 2px !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-contact-cards .hvp-nkit-item {
  display: block !important;
  background: none !important;
  border: 0 !important;
  border-top: 1px solid var(--hv3-ink-line) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 18px 0 !important;
  transform: none !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-contact-cards .hvp-nkit-item strong {
  display: block !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  color: var(--hv3-ink) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-contact-cards .hvp-nkit-item span {
  display: block !important;
  margin-top: 6px !important;
  font-size: 14px !important;
  color: var(--hv3-ink-mid) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-faq-index > .hvp-nkit-text span {
  display: block !important;
  margin-bottom: 14px !important;
  font-family: var(--hv3-mono) !important;
  font-size: 11.5px !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: var(--hv3-ink-lo) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-faq-group__title > .hvp-nkit-text span {
  font-family: var(--hv3-mono) !important;
  font-size: 12px !important;
  letter-spacing: 0.16em !important;
  color: var(--hv3-orange-ink) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-faq-item >.hvp-nkit-summary {
  position: relative !important;
  display: block !important;
  padding: 22px 46px 22px 0 !important;
  background: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  color: var(--hv3-ink) !important;
  font-size: 16px !important;
  font-weight: 600 !important;
  letter-spacing: -0.012em !important;
  cursor: pointer;
  list-style: none !important;
  transition: color 200ms ease-out;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-faq-item >.hvp-nkit-summary::-webkit-details-marker {
  display: none !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-faq-item >.hvp-nkit-summary::before {
  content: "+" !important;
  position: absolute !important;
  right: 4px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  width: auto !important;
  height: auto !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: none !important;
  font-family: var(--hv3-mono) !important;
  font-size: 21px !important;
  font-weight: 400 !important;
  line-height: 1 !important;
  color: var(--hv3-orange-ink) !important;
  transition: transform 300ms var(--hv3-ease) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-faq-item:hover >.hvp-nkit-summary {
  color: var(--hv3-orange-ink) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-faq-item[open] >.hvp-nkit-summary::before {
  transform: translateY(-50%) rotate(45deg) !important;
}

body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-faq-item > .hvp-nkit-text p {
  max-width: 76ch !important;
  padding-bottom: 24px !important;
  font-size: 15px !important;
  color: var(--hv3-ink-mid) !important;
}

@media (hover: hover) {

    :is(body.page-id-2348, body.home) .hvp-process-flow__grid .hvp-nkit-item img {
    transition: transform 500ms cubic-bezier(0.16, 1, 0.3, 1);
  }

    :is(body.page-id-2348, body.home) .hvp-factory-evidence__media .hvp-nkit-figure:hover img,
  :is(body.page-id-2348, body.home) .hvp-process-flow__grid .hvp-nkit-item:hover img {
    transform: scale(1.045);
  }

    :is(body.page-id-2348, body.home) .hvp-v2-card-row .hvp-nkit-item:hover,
  :is(body.page-id-2348, body.home) .hvp-v2-process__grid .hvp-nkit-item:hover {
    transform: translateY(-4px);
  }
}

@media (max-width: 767px) {

    :is(body.page-id-2348, body.home) .hvp-process-flow__grid .hvp-nkit-item.is-wide {
    grid-column: auto;
    grid-row: auto;
  }

    :is(body.page-id-2348, body.home) .hvp-service-bento__grid .hvp-nkit-item {
    min-height: auto;
    padding: 26px !important;
  }

    :is(body.page-id-2348, body.home) .hvp-process-flow__grid .hvp-nkit-item {
    min-height: auto;
    grid-template-rows: 180px auto;
  }

    :is(body.page-id-2348, body.home) .hvp-process-flow__grid .hvp-nkit-item >div:not(.hvp-nkit-wrap) {
    padding: 24px !important;
  }

    :is(body.page-id-2348, body.home) .hvp-factory-evidence__media .hvp-nkit-figure {
    min-height: 220px;
  }
}

@media (prefers-reduced-motion: reduce) {

    :is(body.page-id-2348, body.home) .hvp-process-flow__grid .hvp-nkit-item img {
    transition: none !important;
    transform: none !important;
  }

    body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds :is(.hvp-v2-card-row >.hvp-nkit-item, .hvp-workshop-item >.hvp-nkit-figure img):hover {
    transform: none !important;
  }
}

@media (max-width: 980px) {

    .hvp-workshop-list .hvp-workshop-item:nth-child(3n + 2) .hvp-nkit-figure {
    order: 0;
  }
}

@media (max-width: 640px) {

    .hvp-shell-logo > .hvp-nkit-text span {
    font-size: 21px;
  }

    :is(body.page-id-2348, body.home) .hvp-page >section:not(.hvp-nkit-wrap):first-of-type h1 {
    font-size: clamp(32px, 9vw, 40px) !important;
    line-height: 1.12 !important;
  }

    :is(body.page-id-2348, body.home) .hvp-page >section:not(.hvp-nkit-wrap):first-of-type {
    height: 650px !important;
  }

    .hvp-workshop-item .hvp-nkit-figure {
    height: 240px;
  }

    .hvp-gallery-panel .hvp-nkit-figure,
  .hvp-gallery-panel .hvp-nkit-figure:first-child {
    min-height: 250px;
  }

    :is(body.page-id-2348, body.home) .hvp-buyer-proof__bar .hvp-nkit-item,
  :is(body.page-id-2348, body.home) .hvp-buyer-proof__bar .hvp-nkit-item:nth-child(2) {
    border-right: 0;
    border-bottom: 1px solid rgba(25, 28, 30, .09);
  }

    :is(body.page-id-2348, body.home) .hvp-buyer-proof__bar .hvp-nkit-item:last-child {
    border-bottom: 0;
  }

    :is(body.page-id-2348, body.home) .hvp-v2-quality__media >div:not(.hvp-nkit-wrap) {
    grid-template-columns: 1fr;
  }

    :is(body.page-id-2348, body.home) .hvp-v2-quality__media >div:not(.hvp-nkit-wrap) img {
    border-right: 0;
  }
}

@media (max-width: 1023px) {

    :is(body.page-id-2348, body.home) .hvp-buyer-proof__bar .hvp-nkit-item:nth-child(2) {
    border-right: 0;
  }
}

@media (max-width: 1024px) {

    body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-workshop-item:nth-child(even) >.hvp-nkit-figure {
    order: 0;
  }
}

@media (max-width: 860px) {

    body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-stats >div:not(.hvp-nkit-wrap) {
    border-left: 0 !important;
    border-top: 1px solid var(--hv3-line) !important;
  }

    body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-v2-stats >div:not(.hvp-nkit-wrap):first-child {
    border-top: 0 !important;
  }

    body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-proof-row .hvp-nkit-item {
    padding-block: 18px !important;
    border-bottom: 1px solid var(--hv3-ink-line) !important;
  }
}

/* --------------------------------------------------------------------------
   4. 收口：把被「承载容器兜底规则」误伤的图片框 min-height 还原
      （见 gen-native-compat.py 里 4 段的注释；必须留在文件最后，靠加载顺序 + 特异性双保险）
   -------------------------------------------------------------------------- */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-gallery-panel .elementor-element.hvp-nkit-figure {
  min-height: 360px !important;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-gallery-panel .elementor-element.hvp-nkit-figure:first-child {
  min-height: 460px !important;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds:is(.home, .page-id-2348) .hvp-factory-evidence__media .elementor-element.hvp-nkit-figure {
  min-height: 220px !important;
}
@media (max-width: 640px) {
  body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-gallery-panel .elementor-element.hvp-nkit-figure,
  body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-gallery-panel .elementor-element.hvp-nkit-figure:first-child {
    min-height: 250px !important;
  }
}

/* 图库框的高度只由 min-height 提供（height 属性仍为 auto）→ 子图的 `height:100%`
   依然没有确定参照，会退回固有比例（竖图 328x1726/1300 = 247px，框里空出 213px）。
   改成 grid 容器：img 作为网格项按 align-items:stretch 直接拉满框高，
   不再依赖百分比解析。仅作用于图库框（内部只有一个 img）。 */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds .hvp-gallery-panel .elementor-element.hvp-nkit-figure {
  display: grid !important;
  align-items: stretch !important;
}

/* ============================================================================
   5. ★ 同 0a 病灶的第二种表现 —— `X > div` 规则「多命中」了包装层

   0a 只压掉了 padding / min-height。但源 CSS 里指向「裸 div 子元素」的规则
   还会改写**布局属性**，那一类 0a 修不到；而且原规则带 !important 时更不能
   靠「加一条更精确的新规则」解决 —— 原规则并不会失效，必须在 compat 层显式压回。

   病因统一：控件化把语义标签（figure / img / article …）换成
   `<div class="elementor-element … hvp-nkit-*">`，于是源码里所有
   `X > div` / `X > div img` 都会顺带命中这些包装层。

   ★ 判据（用于区分「误命中」和「兼容层有意改写」）：
     包装层里只有「原标签不是 div」的那几类会带
     hvp-nkit-figure(figure) / hvp-nkit-item(article) / hvp-nkit-summary /
     hvp-nkit-figcaption / hvp-nkit-media(img)；
     而 hvp-nkit-stat / hvp-nkit-bandcopy / hvp-nkit-herocopy / hvp-nkit-subblock
     以及 hvp-nkit-text / -heading / -btn 的原元素本来就可能就是 <div>，
     它们被 `> div` 命中是**正常**的，不能一起压。
     所以本节的压回只针对前五类。
   ------------------------------------------------------------------------- */

/* (1) 图库面板：源 CSS `.hvp-gallery-panel > div { align-self: center }`
       本意只针对中间那段文案 div。两端的 <figure> 变成 div 包装层后一并吃到了
       align-self:center → 不再被父网格的 align-items:stretch 拉到行高，
       退化成自己的 min-height：实测第二个框 320x360（设计值 320x460，
       而插件模式下两个框都是 460 —— 460 本来就是被 stretch 拉出来的）。
       把两端的图片框显式拉回 stretch，中间文案 div 不受影响。 */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds
  .hvp-gallery-panel > .elementor-element:is(.hvp-nkit-figure, .hvp-nkit-media, .hvp-nkit-wrap) {
  align-self: stretch !important;
}

/* (2) 首页「质量测试」主图：源 CSS
         :is(body.home) .hvp-v2-quality__media > div { display:grid;
           grid-template-columns: repeat(3, minmax(0,1fr)) }
         :is(body.home) .hvp-v2-quality__media > div img { aspect-ratio:1.85;
           border-top/right:4px solid #fff }
       本意只针对三张缩略图的容器。主图 <img> 的包装层同样是 div → 被判成
       缩略图容器：主图被塞进三列网格的第一列，比例从设计的 2.25 掉成缩略图的
       1.85，实测 589x262 → 196x106（缩小 67%）。
       另外原类名 hvp-v2-quality__main 本来挂在 <img> 上，控件化后搬到了承载
       容器 → `... .hvp-v2-quality__main{width:100%;aspect-ratio:2.25}` 再也
       够不到真正的主图，必须按「容器 img」重新声明一次。 */
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds:is(.home, .page-id-2348)
  .hvp-v2-quality__media > .elementor-element.hvp-nkit-wrap {
  display: block !important;
  grid-template-columns: none !important;
  align-self: auto !important;
}
body.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds.hvp-ds:is(.home, .page-id-2348)
  .hvp-v2-quality__main img {
  width: 100% !important;
  aspect-ratio: 2.25 !important;
  object-fit: cover !important;
  border: 0 !important;
  border-radius: 0 !important;
  display: block !important;
}
