/* =====================================================================
     Cybergeo 官网首页 V3 — Black & White · Video Hero Edition
     ---------------------------------------------------------------------
     首页结构（单页滚动，7 项导航锚点）：
     · Hero（视频背景 + 核心 slogan）
     · Core Products（CyberSpace + Vision AR 双产品主图）
     · Partners（合作伙伴动态滚动）
     · Core Capabilities（数据融合 / 开放硬件生态 / 数据比对 / AR 辅助 / IoT 运营）
     · Deployment & Customization（私有化部署 / 功能定制）
     · Industry Applications（6 大产业应用场景）
     · Customer Stories（经典客户案例）
     · Get a Demo（试用 / demo 引导）
     · Footer
     视觉系统：
     · 主色：黑白单色系（深色区用白色强调，浅色区用黑色强调）
     · 排版：全站统一 Inter（含编号、图注、小标签）；中文 PingFang SC fallback
     · 视频背景：可在 <video> 处替换为本地/自有视频文件
     ===================================================================== */

  /* ---------- 字体：阿里巴巴普惠体 3.0（自托管，对标 xgrids 的排版体系） ----------
     2026-10-26：原先 --font-sans 首选 'Inter' 但全站没有 @font-face，
     实际一直回退到系统字体。这里改为自托管普惠体 5 个字重（共约 3.3MB），
     与 xgrids.com 使用的字体一致；中文缺字时按栈回落 PingFang SC / 雅黑。 */
  @font-face {
    font-family: 'Alibaba PuHuiTi 3.0';
    src: url('fonts/puhuiti-55.regular.woff2') format('woff2');
    font-weight: 400; font-style: normal; font-display: swap;
  }
  @font-face {
    font-family: 'Alibaba PuHuiTi 3.0';
    src: url('fonts/puhuiti-65.medium.woff2') format('woff2');
    font-weight: 500; font-style: normal; font-display: swap;
  }
  @font-face {
    font-family: 'Alibaba PuHuiTi 3.0';
    src: url('fonts/puhuiti-75.semibold.woff2') format('woff2');
    font-weight: 600; font-style: normal; font-display: swap;
  }
  @font-face {
    font-family: 'Alibaba PuHuiTi 3.0';
    src: url('fonts/puhuiti-85.bold.woff2') format('woff2');
    font-weight: 700; font-style: normal; font-display: swap;
  }
  @font-face {
    font-family: 'Alibaba PuHuiTi 3.0';
    src: url('fonts/puhuiti-95.extrabold.woff2') format('woff2');
    font-weight: 800; font-style: normal; font-display: swap;
  }

  :root {
    --ink:        #0A0A0A;
    --ink-2:      #141414;
    --ink-3:      #1F1F1F;
    --paper:      #FFFFFF;
    --paper-2:    #F7F7F7;
    --paper-3:    #EFEFEF;
    --g-100: #F5F5F5;
    --g-200: #E8E8E8;
    --g-300: #BFBFBF;
    --g-400: #8A8A8A;
    --g-500: #5A5A5A;
    --g-600: #3A3A3A;
    --g-700: #2A2A2A;
    --g-800: #1A1A1A;
    --g-900: #000000;
    --hi-dark:  #FFFFFF;
    --hi-light: #0A0A0A;
    --font-sans: 'Alibaba PuHuiTi 3.0', 'AlibabaPuHuiTi', 'PingFang SC', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Microsoft YaHei', 'Helvetica Neue', Arial, sans-serif;
    --font-mono: var(--font-sans); /* 2026-09-29：全站统一正文体，原 JetBrains Mono 停用 */
    --gutter: clamp(20px, 4vw, 56px);
    /* 2026-10-27：全站页面壳（对标 xgrids）——内容区最大 1540，两侧保底留白 64 */
    --shell: 1540px;
    --shell-pad: 64px;
    --shell-inner: calc(var(--shell) - var(--shell-pad) * 2); /* 1412 */
    --shell-inset: max(var(--shell-pad), calc((100% - var(--shell)) / 2 + var(--shell-pad)));
    --section-y: clamp(72px, 10vw, 128px);
    --ease: cubic-bezier(0.22, 1, 0.36, 1);
  }

  *,*::before,*::after { box-sizing: border-box; margin: 0; padding: 0; }
  html { scroll-behavior: smooth; }
  body {
    font-family: var(--font-sans);
    font-size: 16px;
    line-height: 1.6;
    color: var(--ink);
    background: var(--paper);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    overflow-x: hidden;
  }
  img, video, svg { max-width: 100%; display: block; }
  a { color: inherit; text-decoration: none; }
  button { font: inherit; cursor: pointer; border: none; background: none; color: inherit; }
  ul { list-style: none; }
  ::selection { background: var(--ink); color: var(--paper); }

  /* ---------- 顶部导航 ---------- */
  .topbar {
    position: fixed;
    top: 0; left: 0; right: 0;
    z-index: 100;
    padding: 16px var(--shell-inset);
    display: flex;
    align-items: center;
    justify-content: flex-start;
    transition: background var(--d-3) var(--ease), border-color var(--d-3) var(--ease), color var(--d-3) var(--ease), backdrop-filter var(--d-3) var(--ease);
    color: var(--paper);
    /* 顶栏常驻底色（2026-09-28 用户要求：滚到页面最顶部也要保持可见）——
       原先 scrollY<=40 时为全透明，在 products / membership / stories 这类浅色首屏页上
       白字压白底，导航看起来像"消失"了。这里把滚动态的底色提到基础态，
       任何滚动位置都可见；.is-scrolled 仅保留细微加深。 */
    background: rgba(10,10,10,.88);
    backdrop-filter: blur(14px) saturate(140%);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    border-bottom: 1px solid rgba(255,255,255,.08);
  }
  .topbar.is-scrolled {
    background: rgba(10,10,10,.9);
    backdrop-filter: blur(14px) saturate(140%);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    border-bottom-color: rgba(255,255,255,.08);
  }
  .brand {
    display: flex;
    align-items: center;
    gap: 12px;
    font-weight: 700;
    letter-spacing: .04em;
    font-size: 18px;
  }
  .brand-mark {
    width: 30px; height: 30px;
    border: 1.5px solid currentColor;
    position: relative;
    display: grid; place-items: center;
    border-radius: 2px;
    flex-shrink: 0;
  }
  .brand-mark::before,
  .brand-mark::after {
    content: ''; position: absolute;
    background: currentColor;
  }
  .brand-mark::before { width: 14px; height: 1.5px; top: 8px; left: 50%; transform: translateX(-50%); }
  .brand-mark::after  { width: 1.5px; height: 14px; left: 8px; top: 50%; transform: translateY(-50%); }
  .brand-name { white-space: nowrap; }
  .brand-sub { font-size: 10px; font-weight: 400; letter-spacing: .25em; opacity: .7; margin-left: -2px; }
  .brand--img { gap: 0; }
  .brand-logo { height: 28px; width: auto; display: block; }

  .nav { display: flex; align-items: center; gap: 2px; margin-left: 36px; }
  .nav a {
    padding: 10px 12px;
    font-size: 13px;
    letter-spacing: .02em;
    position: relative;
    transition: opacity var(--d-2) var(--ease);
    white-space: nowrap;
  }
  .nav a::after {
    content: '';
    position: absolute;
    left: 12px; right: 12px; bottom: 6px;
    height: 1px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform var(--d-3) var(--ease);
  }
  .nav a:hover { opacity: .8; }
  .nav a:hover::after,
  .nav a.is-active::after { transform: scaleX(1); }

  .top-extra { display: flex; align-items: center; gap: 6px; font-size: 13px; margin-left: auto; }
  .top-extra a { padding: 8px 10px; opacity: .9; }
  .top-extra a:hover { opacity: 1; }
  .top-extra .btn-ghost {
    padding: 8px 14px;
    border: 1px solid rgba(255,255,255,.4);
    border-radius: 999px;
    transition: all var(--d-2) var(--ease);
  }
  .top-extra .btn-ghost:hover { background: var(--paper); color: var(--ink); }

  .burger { display: none; width: 36px; height: 36px; flex-direction: column; justify-content: center; gap: 5px; align-items: flex-end; }
  .burger span { display: block; height: 1.5px; background: currentColor; transition: all var(--d-3) var(--ease); }
  .burger span:nth-child(1) { width: 22px; }
  .burger span:nth-child(2) { width: 16px; }
  .burger span:nth-child(3) { width: 22px; }
  .burger.is-open span:nth-child(1) { transform: translateY(7px) rotate(45deg); width: 22px; }
  .burger.is-open span:nth-child(2) { opacity: 0; }
  .burger.is-open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); width: 22px; }

  /* ---------- Hero ---------- */
  .hero {
    position: relative;
    height: 100vh; min-height: 640px;
    color: var(--paper);
    overflow: hidden;
    display: grid;
    place-items: center;
    text-align: center;
  }
  .hero-fallback {
    position: absolute; inset: 0;
    background:
      radial-gradient(ellipse at 25% 50%, rgba(255,255,255,.06) 0%, transparent 50%),
      radial-gradient(ellipse at 75% 30%, rgba(255,255,255,.04) 0%, transparent 55%),
      linear-gradient(180deg, #0A0A0A 0%, #141414 50%, #0A0A0A 100%);
    z-index: 0;
  }
  .hero-fallback::before {
    content: '';
    position: absolute; inset: 0;
    background-image:
      linear-gradient(rgba(255,255,255,.04) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px);
    background-size: 80px 80px;
    animation: gridShift 24s linear infinite;
  }
  .hero-fallback::after {
    content: '';
    position: absolute; inset: 0;
    background: radial-gradient(ellipse at center, transparent 0%, rgba(0,0,0,.6) 80%);
  }
  @keyframes gridShift {
    0%   { transform: translate(0,0); }
    100% { transform: translate(80px, 80px); }
  }
  .hero-video {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
    z-index: 0;
  }
  .hero-overlay {
    /* 黑色透明度 60% 蒙版（按要求固定值） */
    position: absolute; inset: 0;
    background: rgba(10,10,10,.64);
    z-index: 1;
  }
  .hero-content {
    position: relative;
    z-index: 2;
    padding: 0 var(--gutter);
    max-width: 1100px;
    width: 100%;
    animation: heroFadeIn 1.4s var(--ease) both;
  }
  /* 文字后方局部压暗（2026-10-26 晚）：
     视频里有很亮的实景帧（扫描到的白墙、地面），纯白字直接压上去会糊。
     这里用一层从中心向外完全衰减的椭圆渐变，只在标题周围降低亮度，
     肉眼读不出边界，不会回到"白块/黑块"的观感。 */
  .hero-content::before {
    content: '';
    position: absolute;
    inset: -18% -16%;
    z-index: -1;
    pointer-events: none;
    background: radial-gradient(58% 60% at 50% 50%,
      rgba(4,6,12,.68) 0%,
      rgba(4,6,12,.44) 46%,
      rgba(4,6,12,.14) 66%,
      rgba(4,6,12,0) 80%);
  }
  @keyframes heroFadeIn {
    from { opacity: 0; transform: translateY(24px); }
    to   { opacity: 1; transform: translateY(0); }
  }
  /* 首屏字号完全对标 xgrids 首页 .hsh-title（2026-10-26 晚）：
     clamp(30px,5.2vw,64px) / 700 / line-height 1.12 / letter-spacing -.01em
     / text-shadow 0 4px 10px rgba(0,0,0,.3)。
     行距不再额外加 gap，交给 line-height 1.12 统一控制，
     与我们这边文字更长（两行）的情况也保持一致的行间节奏。 */
  .hero-slogan {
    display: block;
    font-size: clamp(30px, 5.2vw, 64px);
    font-weight: 700;
    letter-spacing: -.01em;
    line-height: 1.12;
    margin-bottom: 12px;
    text-align: center;
    text-wrap: balance;
    text-shadow: 0 4px 10px rgba(0,0,0,.3);
  }
  /* 副标对标 .hsh-sub：clamp(13px,1.4vw,17px)、上间距 12px、82% 白、同一层投影。
     行宽用 max-width 控制（对标他们 padding:0 100px 的收窄效果），窄屏不会挤成竖条。 */
  .hero-sub {
    font-size: clamp(13px, 1.4vw, 17px);
    font-weight: 400;
    letter-spacing: .01em;
    color: rgba(255,255,255,.9);
    max-width: 940px;
    margin: 0 auto;
    line-height: 1.55;
    text-wrap: balance;
    text-shadow: 0 1px 3px rgba(0,0,0,.5), 0 4px 12px rgba(0,0,0,.35);
  }
  .hero-cta {
    margin-top: 40px;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 16px 28px;
    background: var(--paper);
    color: var(--ink);
    font-size: 13px;
    letter-spacing: .15em;
    text-transform: uppercase;
    transition: all var(--d-2) var(--ease);
  }
  .hero-cta:hover { background: transparent; color: var(--paper); box-shadow: inset 0 0 0 1px var(--paper); }
  .scroll-cue {    position: absolute;
    left: 50%; bottom: 80px;
    transform: translateX(-50%);
    z-index: 2;
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: .4em;
    opacity: .75;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;}
  .scroll-cue::after {
    content: '';
    width: 1px; height: 36px;
    background: linear-gradient(180deg, var(--paper), transparent);
    animation: scrollLine 1.8s ease-in-out infinite;
  }
  @keyframes scrollLine {
    0%   { transform: scaleY(0); transform-origin: top; }
    50%  { transform: scaleY(1); transform-origin: top; }
    50.01% { transform-origin: bottom; }
    100% { transform: scaleY(0); transform-origin: bottom; }
  }

  /* ---------- 通用 section ---------- */
  .section {
    padding: var(--section-y) var(--shell-inset);
    position: relative;
  }
  .section--dark { background: var(--ink); color: var(--paper); }
  .section--light { background: var(--paper); color: var(--ink); }
  .section--gray  { background: var(--g-100); color: var(--ink); }

  .kicker {    display: inline-flex;
    align-items: center;
    gap: 12px;
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: .3em;
    margin-bottom: 18px;}
  .kicker::before {
    content: '';
    width: 28px; height: 1px;
    background: currentColor;
  }
  .section-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 40px;
    margin-bottom: 56px;
    flex-wrap: wrap;
  }
  .section-title {
    font-size: clamp(32px, 4.2vw, 56px);
    font-weight: 700;
    letter-spacing: -.02em;
    line-height: 1.1;
    max-width: 720px;
  }
  .section-lede {
    max-width: 460px;
    font-size: 16px;
    line-height: 1.8;
    opacity: .8;
  }
  .container { max-width: var(--shell-inner); margin: 0 auto; }

  /* ---------- 按钮 ---------- */
  .btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 14px 26px;
    background: var(--ink);
    color: var(--paper);
    border: 1px solid var(--ink);
    font-size: 13px;
    letter-spacing: .15em;
    text-transform: uppercase;
    transition: all var(--d-2) var(--ease);
  }
  .btn:hover { background: transparent; color: var(--ink); }
  .btn--ghost { background: transparent; color: inherit; border-color: currentColor; }
  .btn--ghost:hover { background: currentColor; color: var(--paper); }
  .section--dark .btn { background: var(--paper); color: var(--ink); border-color: var(--paper); }
  .section--dark .btn:hover { background: transparent; color: var(--paper); }
  .section--dark .btn--ghost { background: transparent; color: var(--paper); border-color: rgba(255,255,255,.4); }
  .section--dark .btn--ghost:hover { background: var(--paper); color: var(--ink); }
  .btn .arr { transition: transform var(--d-2) var(--ease); }
  .btn:hover .arr { transform: translateX(4px); }

  /* ---------- Core Products ---------- */
  .product-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1px;
    background: rgba(255,255,255,.12);
    border: 1px solid rgba(255,255,255,.12);
  }
  .product-card {
    background: var(--ink);
    padding: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    transition: background var(--d-3) var(--ease);
  }
  .product-card:hover { background: var(--ink-2); }
  .product-card .visual {
    aspect-ratio: 16/9;
    background: var(--ink-3);
    border: none;
    margin-bottom: 0;
    display: block;
    position: relative;
    overflow: hidden;
  }
  .product-card .visual::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image:
      linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
    background-size: 40px 40px;
    z-index: 2;
  }
  .product-card .visual img {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
    z-index: 1;
  }
  .product-card .visual .badge { z-index: 3; }
  .product-card .visual .badge {    position: relative;
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: .2em;
    padding: 8px 16px;
    border: 1px solid rgba(255,255,255,.35);
    background: rgba(0,0,0,.4);}
  .product-card h3 {
    font-size: 28px;
    font-weight: 700;
    letter-spacing: -.01em;
    margin-bottom: 8px;
  }
  .product-card .subtitle {
    font-size: 14px;
    letter-spacing: .1em;
    text-transform: uppercase;
    opacity: .65;
    margin-bottom: 16px;
  }
  .product-card p {
    font-size: 15px;
    line-height: 1.75;
    opacity: .75;
    max-width: 460px;
  }
  .product-card .link {
    margin-top: auto;
    padding-top: 28px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    letter-spacing: .15em;
    text-transform: uppercase;
    opacity: .85;
  }
  .footer-bottom .beian {
    font-size: 12px;
    opacity: .65;
    line-height: 1.7;
  }
  .footer-bottom .beian a {
    color: inherit;
    border-bottom: 1px solid currentColor;
    text-decoration: none;
  }

  .product-card .link::after { content: '→'; transition: transform var(--d-3) var(--ease); }
  .product-card:hover .link::after { transform: translateX(6px); }

  /* ---------- Partners 动态滚动 ---------- */
  .partners-strip {
    overflow: hidden;
    white-space: nowrap;
    position: relative;
    padding: 88px 0;
  }
  .partners-track {
    display: inline-flex;
    animation: marquee 45s linear infinite;   /* 时长与轨道长度成正比（18 个 logo × 280px），保持匀速 */
  }
  .partners-track:hover { animation-play-state: paused; }
  @keyframes marquee {
    0%   { transform: translateX(0); }
    100% { transform: translateX(-50%); }
  }
  .partner-logo {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 280px;
    padding: 0 36px;
    opacity: 1;
    transition: opacity var(--d-2) var(--ease);
  }
  .partner-logo img {
    height: 144px;
    width: auto;
    max-width: 720px;
    object-fit: contain;
    opacity: .55;
    transition: opacity var(--d-2) var(--ease);
  }
  .partner-logo:hover img { opacity: 1; }
  .partners-strip::before,
  .partners-strip::after {
    content: '';
    position: absolute;
    top: 0; bottom: 0;
    width: 80px;
    z-index: 2;
    pointer-events: none;
  }
  .partners-strip::before { left: 0; background: linear-gradient(90deg, var(--paper), transparent); }
  .partners-strip::after  { right: 0; background: linear-gradient(270deg, var(--paper), transparent); }
  .section--dark .partners-strip::before { background: linear-gradient(90deg, var(--ink), transparent); }
  .section--dark .partners-strip::after  { background: linear-gradient(270deg, var(--ink), transparent); }

  /* ---------- Showreel 视频板块 ---------- */
  .showreel {
    position: relative;
    aspect-ratio: 16/9;
    border: 1px solid rgba(255,255,255,.12);
    background: #0A0A0A;
    overflow: hidden;
  }
  .showreel video {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
  }
  .showreel::after {
    content: '';
    position: absolute; inset: 0;
    background: linear-gradient(180deg, transparent 60%, rgba(0,0,0,.35) 100%);
    pointer-events: none;
  }

  /* ---------- Core Capabilities（左右交替大板块） ---------- */
  .cap-rows { display: flex; flex-direction: column; }
  .cap-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(40px, 6vw, 96px);
    align-items: center;
    padding: clamp(56px, 7vw, 100px) 0;
  }
  .cap-row + .cap-row { border-top: 1px solid rgba(255,255,255,.08); }
  .cap-row .cap-visual { order: 1; }
  .cap-row .cap-text  { order: 2; }
  .cap-row:nth-child(even) .cap-visual { order: 2; }
  .cap-row:nth-child(even) .cap-text  { order: 1; }

  .cap-visual {
    position: relative;
    aspect-ratio: 16/11;
    background: var(--ink-3);
    border: 1px solid rgba(255,255,255,.12);
    display: grid; place-items: center;
    overflow: hidden;
    transition: border-color var(--d-3) var(--ease);
  }
  .cap-row:hover .cap-visual { border-color: rgba(255,255,255,.35); }
  .cap-visual::before {
    content: '';
    position: absolute; inset: 0;
    background-image:
      linear-gradient(rgba(255,255,255,.045) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.045) 1px, transparent 1px);
    background-size: 40px 40px;
    pointer-events: none;
  }
  .cap-visual svg { position: relative; width: 88%; height: 88%; }
  .cap-visual img, .cap-visual video {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
    z-index: 1;
  }
  .cap-visual::before { z-index: 2; }
  .cap-visual .cap-badge { z-index: 3; }
  .cap-visual .cap-badge {    position: absolute;
    top: 14px; left: 14px;
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: .2em;
    padding: 6px 12px;
    border: 1px solid rgba(255,255,255,.25);
    background: rgba(0,0,0,.45);}
  .cap-diagram text { font-family: var(--font-mono); }

  .cap-num {
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: .2em;
    opacity: .55;
    margin-bottom: 20px;
  }
  .cap-text h3 {
    font-size: clamp(28px, 3.2vw, 42px);
    font-weight: 700;
    letter-spacing: -.02em;
    line-height: 1.12;
    margin-bottom: 20px;
  }
  .cap-text > p {
    font-size: 16px;
    line-height: 1.8;
    opacity: .75;
    max-width: 520px;
    margin-bottom: 30px;
  }
  /* 2026-10-28：能力行副标（AI-Native Functions in Cyberspace 那一行） */
  .cap-text > .cap-lede {
    font-size: 17px;
    line-height: 1.65;
    font-weight: 500;
    opacity: .92;
    max-width: 560px;
    margin-bottom: 14px;
  }
  .cap-tags { display: flex; flex-direction: column; gap: 12px; }
  .cap-tags li {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    font-size: 14px;
    line-height: 1.6;
    opacity: .85;
  }
  .cap-tags li::before {
    content: '';
    width: 7px; height: 7px;
    background: currentColor;
    margin-top: 8px;
    flex-shrink: 0;
  }

  /* ---------- Deployment & Customization ---------- */
  .tech-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1px;
    background: var(--g-200);
    border: 1px solid var(--g-200);
  }
  .tech-card {
    background: var(--paper);
    padding: 48px 40px;
    min-height: 300px;
    transition: background var(--d-2) var(--ease);
  }
  .tech-card:hover { background: var(--paper-2); }
  .tech-card .ico {
    width: 52px; height: 52px;
    border: 1.5px solid var(--ink);
    border-radius: 50%;
    display: grid; place-items: center;
    font-family: var(--font-mono);
    font-weight: 700;
    font-size: 18px;
    margin-bottom: 26px;
  }
  .tech-card h3 {
    font-size: 24px;
    font-weight: 700;
    margin-bottom: 12px;
  }
  .tech-card p {
    font-size: 15px;
    line-height: 1.75;
    color: var(--g-500);
    max-width: 440px;
  }

  /* ---------- Industry Applications ---------- */
  .app-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: rgba(255,255,255,.12);
    border: 1px solid rgba(255,255,255,.12);
  }
  .app-card {
    background: var(--ink);
    padding: 40px 32px;
    min-height: 340px;
    display: flex;
    flex-direction: column;
    transition: background var(--d-3) var(--ease);
  }
  .app-card:hover { background: var(--ink-2); }
  .app-card .cover {
    aspect-ratio: 16/10;
    background: var(--ink-3);
    border: 1px solid rgba(255,255,255,.08);
    margin-bottom: 24px;
    display: grid; place-items: center;
    position: relative;
  }
  .app-card .cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }
  .app-card h3 {
    font-size: 20px;
    font-weight: 700;
    letter-spacing: -.01em;
    margin-bottom: 8px;
  }
  .app-card p {
    font-size: 14px;
    line-height: 1.7;
    opacity: .7;
  }
  .app-card .value {    margin-top: auto;
    padding-top: 18px;
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: .15em;
    opacity: .65;
    border-top: 1px solid rgba(255,255,255,.12);}

  /* ---------- Customer Stories ---------- */
  .story-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: var(--g-200);
    border: 1px solid var(--g-200);
  }
  .story-card {
    background: var(--paper);
    padding: 40px 32px;
    min-height: 280px;
    display: flex;
    flex-direction: column;
    transition: background var(--d-2) var(--ease);
  }
  .story-card:hover { background: var(--paper-2); }
  .story-tag {    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: .3em;
    color: var(--g-500);
    margin-bottom: 16px;}
  .story-card h3 {
    font-size: 20px;
    font-weight: 700;
    line-height: 1.3;
    margin-bottom: 10px;
  }
  .story-card p {
    font-size: 14px;
    line-height: 1.7;
    color: var(--g-500);
  }
  .story-card .link {
    margin-top: auto;
    padding-top: 20px;
    font-size: 12px;
    letter-spacing: .15em;
    text-transform: uppercase;
    color: var(--g-600);
    display: inline-flex;
    align-items: center;
    gap: 6px;
  }
  .story-card .link::after { content: '→'; transition: transform var(--d-3) var(--ease); }
  .story-card:hover .link::after { transform: translateX(6px); }

  /* ---------- Membership ---------- */
  .pricing-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
    align-items: stretch;
  }
  .plan-card {
    background: var(--paper);
    border: 1px solid var(--g-200);
    display: flex;
    flex-direction: column;
    transition: transform var(--d-3) var(--ease), box-shadow var(--d-3) var(--ease);
  }
  .plan-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 24px 60px rgba(0,0,0,.08);
  }
  .plan-head {
    padding: 28px 24px;
    border-bottom: 1px solid var(--g-200);
    background: linear-gradient(180deg, var(--accent) 0%, var(--paper) 100%);
  }
  .plan-card--dark .plan-head {
    background: var(--accent);
    color: var(--paper);
  }
  .plan-name {
    display: block;
    font-size: 22px;
    font-weight: 800;
    letter-spacing: -.01em;
    margin-bottom: 6px;
  }
  .plan-desc {
    display: block;
    font-size: 12px;
    line-height: 1.5;
    color: var(--g-500);
  }
  .plan-card--dark .plan-desc { color: rgba(255,255,255,.7); }
  .plan-body {
    padding: 28px 24px 32px;
    flex: 1;
    display: flex;
    flex-direction: column;
  }
  .plan-price {
    margin-bottom: 16px;
  }
  .price-label {
    display: block;
    font-size: 26px;
    font-weight: 700;
    letter-spacing: -.02em;
  }
  .price-cycle {
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0;
    color: var(--g-500);
  }
  .plan-cta {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    padding: 14px 20px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    text-decoration: none;
    color: var(--ink);
    border: 1.5px solid var(--ink);
    background: transparent;
    transition: background var(--d-2) var(--ease), color var(--d-2) var(--ease);
    margin-bottom: 22px;
  }
  .plan-cta:hover { background: var(--ink); color: var(--paper); }
  .plan-card--dark .plan-cta {
    color: var(--paper);
    border-color: var(--paper);
  }
  .plan-card--dark .plan-cta:hover { background: var(--paper); color: var(--ink); }
  .plan-quota {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 18px;
    padding-bottom: 18px;
    border-bottom: 1px solid var(--g-200);
  }
  .plan-quota li {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 13px;
  }
  .plan-quota span { color: var(--g-500); }
  .plan-quota strong {
    font-size: 14px;
    font-weight: 700;
    color: var(--ink);
  }
  .plan-quota--dark { border-color: rgba(255,255,255,.12); }
  .plan-quota--dark span { color: rgba(255,255,255,.55); }
  .plan-quota--dark strong { color: var(--paper); }
  .plan-inherit {
    font-size: 11px;
    letter-spacing: .06em;
    text-transform: uppercase;
    padding: 10px 12px;
    background: var(--g-100);
    color: var(--g-600);
    margin-bottom: 18px;
    text-align: center;
  }
  .plan-inherit--dark { background: rgba(255,255,255,.12); color: rgba(255,255,255,.85); }
  .plan-features {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 6px;
  }
  .plan-features li {
    position: relative;
    padding-left: 22px;
    font-size: 13.5px;
    line-height: 1.5;
    color: var(--g-700);
  }
  .plan-features li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 5px;
    width: 14px;
    height: 14px;
    background: var(--ink);
    border-radius: 50%;
  }
  .plan-features li::after {
    content: '';
    position: absolute;
    left: 4px;
    top: 8px;
    width: 6px;
    height: 3px;
    border-left: 1.5px solid var(--paper);
    border-bottom: 1.5px solid var(--paper);
    transform: rotate(-45deg);
  }
  .plan-features--dark li { color: rgba(255,255,255,.8); }
  .plan-features--dark li::before { background: var(--paper); }
  .plan-features--dark li::after { border-color: var(--ink); }
  .plan-card--dark {
    background: var(--ink);
    color: var(--paper);
    border-color: var(--ink-2);
  }

  /* ---------- Get a Demo ---------- */
  .demo-grid {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 80px;
    align-items: start;
  }
  .demo-info h3 {
    font-size: 28px;
    font-weight: 700;
    margin-bottom: 16px;
  }
  .demo-info p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--g-500);
    margin-bottom: 28px;
  }
  .demo-info .row {
    display: flex;
    align-items: baseline;
    gap: 14px;
    margin-bottom: 14px;
    font-size: 14px;
  }
  .demo-info .row .label {    width: 70px;
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: .2em;
    color: var(--g-400);
    padding-top: 3px;}
  form.form {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px;
  }
  .form .full { grid-column: 1 / -1; }
  .form .field { display: flex; flex-direction: column; gap: 6px; }
  .form label {    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: .25em;
    color: var(--g-500);}
  .form input,
  .form textarea,
  .form select {
    font: inherit;
    padding: 14px 0;
    border: none;
    border-bottom: 1px solid var(--g-300);
    background: transparent;
    color: var(--ink);
    outline: none;
    transition: border-color var(--d-2) var(--ease);
  }
  .form input:focus,
  .form textarea:focus,
  .form select:focus { border-bottom-color: var(--ink); }
  .form textarea { resize: vertical; min-height: 100px; line-height: 1.7; }
  .form-actions {
    grid-column: 1 / -1;
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 20px;
    flex-wrap: wrap;
    gap: 12px;
  }
  .form-actions .hint { font-size: 12px; color: var(--g-500); }

  /* ---------- Footer ---------- */
  .footer {
    background: var(--ink);
    color: var(--paper);
    padding: 80px var(--shell-inset) 32px;
  }
  .footer-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 40px;
    max-width: var(--shell-inner);
    margin: 0 auto 60px;
  }
  .footer h5 {    font-family: var(--font-sans);
    font-size: 11px;
    opacity: .55;
    margin-bottom: 18px;}
  .footer ul li { margin-bottom: 10px; font-size: 14px; }
  .footer ul li a { opacity: .8; transition: opacity var(--d-2); }
  .footer ul li a:hover { opacity: 1; }
  .footer-brand .brand { color: var(--paper); margin-bottom: 20px; }
  .footer-brand p {
    font-size: 13px;
    line-height: 1.8;
    opacity: .6;
    max-width: 360px;
  }
  .footer-bottom {    max-width: var(--shell-inner);
    margin: 0 auto;
    padding-top: 28px;
    display: flex; flex-direction: column; gap: 6px;
    border-top: 1px solid rgba(255,255,255,.12);
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
    font-family: var(--font-sans);
    font-size: 11px;
    opacity: .55;}

  /* ---------- 浮动联系按钮 ---------- */
  .float-cta {
    position: fixed;
    right: 20px; bottom: 24px;
    z-index: 50;
    display: flex;
    flex-direction: column;
    gap: 12px;
  }
  .float-btn {
    width: 48px; height: 48px;
    border-radius: 50%;
    background: var(--paper);
    color: var(--ink);
    display: grid; place-items: center;
    box-shadow: 0 8px 24px rgba(0,0,0,.15);
    transition: all var(--d-2) var(--ease);
  }
  .float-btn:hover { transform: translateY(-2px); box-shadow: 0 12px 28px rgba(0,0,0,.22); }
  .float-btn svg { width: 18px; height: 18px; }

  /* ---------- 入场动画 ---------- */
  .js .reveal { opacity: 0; transform: translateY(24px) scale(.985); transition: opacity var(--d-5) var(--ease), transform var(--d-5) var(--ease); }
  .js .reveal.is-in { opacity: 1; transform: translateY(0) scale(1); }
  .reveal[data-d="1"] { transition-delay: .08s; }
  .reveal[data-d="2"] { transition-delay: .16s; }
  .reveal[data-d="3"] { transition-delay: .24s; }
  .reveal[data-d="4"] { transition-delay: .32s; }
  .reveal[data-d="5"] { transition-delay: .40s; }

  /* ---------- 响应式 ---------- */
  @media (max-width: 1080px) {
    .nav a { padding: 10px 8px; font-size: 12px; }
    .top-extra .lg-hide { display: none; }
  }
  @media (max-width: 900px) {
    .nav { display: none; }
    .burger { display: flex; }
    .product-grid, .tech-grid, .demo-grid { grid-template-columns: 1fr; }
    .pricing-grid { grid-template-columns: repeat(2, 1fr); }
    .cap-row { grid-template-columns: 1fr; gap: 32px; }
    .cap-row .cap-visual, .cap-row:nth-child(even) .cap-visual { order: 1; }
    .cap-row .cap-text,  .cap-row:nth-child(even) .cap-text  { order: 2; }
    .app-grid, .story-grid { grid-template-columns: repeat(2, 1fr); }
    .section-head { flex-direction: column; align-items: flex-start; }
  }
  @media (max-width: 560px) {
    .app-grid, .story-grid, .pricing-grid { grid-template-columns: 1fr; }
    .plan-head, .plan-body { padding-left: 20px; padding-right: 20px; }
    .tech-card, .app-card { padding: 36px 24px; }
    form.form { grid-template-columns: 1fr; }
    .demo-grid { gap: 40px; }
    .footer-grid { grid-template-columns: 1fr; }
    .footer-bottom { flex-direction: column; align-items: flex-start; }
  }

  /* 移动端菜单抽屉 */
  .drawer {
    position: fixed;
    inset: 0;
    z-index: 90;
    background: var(--ink);
    color: var(--paper);
    padding: 96px var(--gutter) 32px;
    transform: translateY(-100%);
    transition: transform var(--d-4) var(--ease);
    overflow-y: auto;
  }
  .drawer.is-open,
  .drawer.open { transform: translateY(0); }
  .drawer ul { display: flex; flex-direction: column; gap: 6px; }
  .drawer ul a {
    display: block;
    padding: 14px 0;
    font-size: 24px;
    font-weight: 600;
    border-bottom: 1px solid rgba(255,255,255,.1);
  }
  .drawer .sub {
    margin-top: 28px;
    display: flex;
    gap: 18px;
    font-size: 14px;
    opacity: .7;
  }

  /* ---------- 语言切换 ---------- */
  .lang-switch { position: relative; }
  .lang-btn {
    display: inline-flex; align-items: center; gap: 6px;
    background: none; border: 0; cursor: pointer; padding: 6px 2px;
    font-family: inherit; font-size: 13px; font-weight: 600;
    letter-spacing: .04em; color: inherit; opacity: .78;
    transition: opacity var(--d-2) var(--ease);
  }
  .lang-btn:hover { opacity: 1; }
  .lang-btn svg { width: 16px; height: 16px; }
  .lang-btn .caret { width: 9px; height: 9px; transition: transform var(--d-2) var(--ease); }
  .lang-switch.open .lang-btn .caret { transform: rotate(180deg); }
  .lang-menu {
    position: absolute; top: calc(100% + 12px); right: 0; z-index: 60;
    min-width: 156px; padding: 6px;
    background: var(--paper); border: 1px solid var(--g-200);
    box-shadow: 0 18px 40px rgba(0,0,0,.16);
    opacity: 0; visibility: hidden; transform: translateY(-6px);
    transition: opacity var(--d-2) var(--ease), transform var(--d-2) var(--ease), visibility var(--d-2);
  }
  .lang-switch.open .lang-menu { opacity: 1; visibility: visible; transform: translateY(0); }
  .lang-menu button {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    width: 100%; padding: 9px 10px; text-align: left; cursor: pointer;
    background: none; border: 0; font-family: inherit; font-size: 13px; color: var(--ink);
    transition: background var(--d-2) var(--ease);
  }
  .lang-menu button:hover { background: var(--g-100); }
  .lang-menu button[aria-current="true"] { font-weight: 700; }
  .lang-menu .tick { font-size: 12px; opacity: 0; }
  .lang-menu button[aria-current="true"] .tick { opacity: 1; }

  /* ---------- 栏目入口卡片（首页） ---------- */
  .hub-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: rgba(255,255,255,.12);
    border: 1px solid rgba(255,255,255,.12);
  }
  .hub-card {
    background: var(--ink);
    padding: 40px 32px;
    display: flex;
    flex-direction: column;
    text-decoration: none;
    color: inherit;
    min-height: 210px;
    transition: background var(--d-3) var(--ease);
  }
  .hub-card:hover { background: var(--ink-2); }
  .hub-card .idx {
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: .2em;
    color: var(--g-500);
    margin-bottom: 18px;
  }
  .hub-card h3 { font-size: 21px; font-weight: 700; margin-bottom: 10px; letter-spacing: -.01em; }
  .hub-card p { font-size: 14px; line-height: 1.7; opacity: .7; }
  .hub-card .go {    margin-top: auto;
    padding-top: 20px;
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: .15em;
    opacity: .65;
    display: flex;
    align-items: center;
    gap: 8px;}
  .hub-card:hover .go { opacity: 1; }
  @media (max-width: 900px) { .hub-grid { grid-template-columns: repeat(2, 1fr); } }
  @media (max-width: 640px) { .hub-grid { grid-template-columns: 1fr; } }

  /* ---------- 二级页：当前栏目高亮 ---------- */
  .nav a.is-current { opacity: 1; font-weight: 700; }
  .nav a.is-current::after {
    content: '';
    display: block;
    height: 1.5px;
    background: currentColor;
    margin-top: 3px;
  }

  /* ---------- 导航下拉（Products） ---------- */
  .nav .has-dropdown { position: relative; }
  /* 2026-10-29：一级菜单不再跳转，改为纯展开触发器（<a> 已去掉 href）。
     无 href 的 a 默认是箭头光标，这里补手型，视觉上仍读作可点击。 */
  .nav .has-dropdown > a { display: inline-flex; align-items: center; gap: 5px; cursor: pointer; }
  .nav .has-dropdown .caret { width: 10px; height: 10px; transition: transform var(--d-2) var(--ease); }
  .nav .has-dropdown:hover .caret,
  .nav .has-dropdown.is-open .caret { transform: rotate(180deg); }
  .nav .dropdown {
    position: absolute; top: 100%; left: 0; z-index: 70;
    min-width: 300px; padding: 10px;
    background: var(--paper); border: 1px solid var(--g-200);
    box-shadow: 0 18px 40px rgba(0,0,0,.18);
    opacity: 0; visibility: hidden; transform: translateY(8px);
    transition: opacity var(--d-2) var(--ease), transform var(--d-2) var(--ease), visibility var(--d-2);
  }
  /* 2026-10-29：展开只由 :hover 和 .is-open 两个状态决定。
     原来还挂着 :focus-within —— 点过一级菜单后焦点留在它身上，
     下拉会一直撑着不收，再 hover 别的菜单就叠成两层（用户报的叠层 bug）。 */
  .nav .has-dropdown:hover .dropdown,
  .nav .has-dropdown.is-open .dropdown {
    opacity: 1; visibility: visible; transform: translateY(0);
  }
  .nav .drop-group {
    font-family: var(--font-sans); font-size: 13px; letter-spacing: normal;
    color: var(--g-500);
    padding: 8px 10px 5px; margin-bottom: 4px;
    border-bottom: 1px solid var(--g-100);
  }
  .nav .drop-group + a { padding-top: 7px; }
  .nav .dropdown a {
    display: flex; align-items: baseline; justify-content: space-between; gap: 14px;
    padding: 8px 10px; font-size: 13px; letter-spacing: 0;
    opacity: .85; border-radius: 4px; color: var(--ink); white-space: nowrap;
  }
  .nav .dropdown a::after { display: none; }
  .nav .dropdown a:hover { opacity: 1; background: var(--g-100); }
  .nav .dropdown a .drop-sub {    font-family: var(--font-mono); font-size: 10px; letter-spacing: .05em;
    color: var(--g-500); }

  /* 移动端抽屉子项 */
  .drawer li.drawer-sub a { padding-left: 34px; font-size: 12px; opacity: .65; }

  /* ---------- Hardware Solutions ---------- */
  .hw-apps { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 56px; }
  .hw-apps span {    font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em;
     padding: 8px 14px;
    border: 1px solid var(--g-200); color: var(--g-600);}
  .hw-sol {
    display: grid; grid-template-columns: 1fr 1fr; gap: 56px;
    align-items: center; padding: 40px 0;
  }
  .hw-sol + .hw-sol { border-top: 1px solid var(--g-200); }
  .hw-sol.rev .hw-img { order: 2; }
  .hw-sol.rev .hw-spec { order: 1; }
  .hw-img { position: relative; }
  .hw-img img { width: 100%; height: auto; display: block; border: 1px solid var(--g-200); }
  .hw-img .hw-tag {    position: absolute; left: 14px; bottom: 14px;
    font-family: var(--font-mono); font-size: 11px; letter-spacing: .15em;
     color: #fff;
    background: rgba(10,10,10,.72); padding: 6px 10px;}
  .hw-name { font-size: 20px; font-weight: 800; letter-spacing: -.01em; }
  .hw-sub { font-size: 13px; color: var(--ink); font-weight: 600; margin: 6px 0 18px; }
  .hw-spec table { width: 100%; border-collapse: collapse; }
  .hw-spec td { padding: 9px 0; font-size: 13px; border-bottom: 1px solid var(--g-200); }
  .hw-spec td:first-child { color: var(--g-500); }
  .hw-spec td:last-child { text-align: right; font-weight: 600; }
  .hw-cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: 22px;
    padding: 11px 22px;
    border-radius: 100px;
    border: 1px solid rgba(19,20,25,.16);
    font-size: 13px;
    font-weight: 600;
    color: var(--ink);
    transition: background var(--d-2) var(--ease), border-color var(--d-2) var(--ease),
                color var(--d-2) var(--ease), transform var(--d-2) var(--ease);
  }
  .hw-cta-ar { transition: transform var(--d-2) var(--ease); }
  .hw-cta:hover {
    background: var(--brand);
    border-color: var(--brand);
    color: #fff;
    transform: translateY(-1px);
  }
  .hw-cta:hover .hw-cta-ar { transform: translateX(4px); }
  .hw-aio {
    margin-top: 64px; border: 1px solid var(--g-200); padding: 40px;
    display: grid; grid-template-columns: 1.2fr .8fr; gap: 48px; align-items: center;
  }
  .hw-aio h3 { font-size: 22px; font-weight: 800; margin-bottom: 12px; }
  .hw-aio p { font-size: 14px; line-height: 1.8; color: var(--g-600); margin: 0; }
  .hw-aio ul { list-style: none; margin: 0; padding: 0; }
  .hw-aio li { font-size: 14px; padding: 7px 0; border-bottom: 1px dashed var(--g-200); }
  @media (max-width: 900px) {
    .hw-sol { grid-template-columns: 1fr; gap: 24px; }
    .hw-sol.rev .hw-img { order: 0; }
    .hw-sol.rev .hw-spec { order: 1; }
    .hw-aio { grid-template-columns: 1fr; padding: 28px 24px; }
  }

  /* All-in-One 卡片含设备图时的三列布局 */
  .hw-aio.has-img { grid-template-columns: .9fr 1.15fr .8fr; }
  .aio-img { display: grid; place-items: center; }
  .aio-img img { max-height: 240px; width: auto; max-width: 100%; }
  @media (max-width: 900px) {
    .hw-aio.has-img { grid-template-columns: 1fr; }
    .aio-img img { max-height: 200px; }
  }

  /* ---------- Products 页深色适配（Deployment / Hardware） ---------- */
  #deployment .tech-card { background: var(--ink-2); }
  #deployment .tech-card:hover { background: var(--ink); }
  #deployment .tech-card .ico { border-color: rgba(255,255,255,.8); }
  #deployment .tech-card p { color: rgba(255,255,255,.65); }

  /* Membership：卡片底部定位语 + 板块底部 On-Premises 注释 */
  .plan-note {
    margin-top: auto; padding-top: 14px;
    font-size: 12px; line-height: 1.6; color: var(--g-500);
  }
  .plan-card--dark .plan-note { color: rgba(255,255,255,.6); }
  .membership-note {
    margin-top: 36px; font-size: 12px; line-height: 1.7;
    color: var(--g-500); max-width: 720px;
  }

  /* Products 下拉：分组宽面板（mega） */
  .nav .dropdown-mega {
    min-width: 500px;
    display: grid;
    grid-template-columns: 1fr 1.15fr;
    gap: 0 30px;
    padding: 14px 16px 12px;
  }
  .nav .dropdown-mega .drop-col { display: flex; flex-direction: column; }
  .nav .dropdown-mega .drop-all {
    grid-column: 1 / -1;
    margin-top: 8px; padding: 10px 10px 4px;
    border-top: 1px solid var(--g-100);
    font-family: var(--font-sans); font-size: 13px; letter-spacing: normal;
    color: var(--g-500);
  }
  .nav .dropdown-mega .drop-all:hover { color: var(--ink); background: none; }



  /* ============ 字号层级统一（2026-09-16） ============ */
  /* L2 · 卡片标题（统一 22px） */
  .app-card h3,
  .story-card h3,
  .cap-text h3,
  .hw-name,
  .tech-card h3,
  .plan-name,
  .hw-aio h3,
  .product-card h3 { font-size: 22px; }

  /* L3 · 卡片副标 / 定位语（统一 13px） */
  .plan-desc,
  .hw-sub,
  .product-card .subtitle { font-size: 13px; }

  /* L4 · 正文（统一 15px） */
  .section-lede,
  .app-card p,
  .story-card p,
  .cap-text p,
  .tech-card p { font-size: 15px; }

  /* L5 · 小字 / 列表 / 参数（统一 13px） */
  .plan-features li,
  .plan-note,
  .membership-note,
  .hw-spec td { font-size: 13px; }

  /* 透明底设备图：contain 显示，不裁切 */
  .product-card .visual--contain img { object-fit: contain; padding: 48px; }

  /* CyberSpace 图填满卡片（无缝隙） */
  .product-card .visual,
  .product-card .visual img { display: block; }
  .product-card .visual img { width: 100%; height: 100%; object-fit: cover; }

  /* AR Devices：功能解释段 */
  .hw-spec .hw-desc {
    font-size: 15px; line-height: 1.8; color: var(--g-600);
    margin: 0 0 20px;
  }

  /* AR Devices：图片统一高度，与文字块保持一致 */
  #ar-devices .hw-img {
    display: flex; align-items: center; justify-content: center;
  }
  #ar-devices .hw-img img {
    width: auto; height: 420px; max-width: 100%;
    object-fit: contain;
  }
  @media (max-width: 900px) {
    #ar-devices .hw-img img { width: 100%; height: auto; max-height: 340px; }
  }

  /* ============ 层级统一 v2（2026-09-16） ============ */
  /* L2 · 卡片/块标题 统一 22px */
  .cap-text h3,
  .demo-info h3 { font-size: 22px; }

  /* L4 · 正文 统一 15px */
  .cap-text > p,
  .demo-info p,
  .demo-info .row,
  .hw-aio p { font-size: 15px; }

  /* L5 · 小字/列表 统一 13px */
  .cap-tags li,
  .hw-aio li,
  .footer ul li { font-size: 13px; }

  /* L6 · 微标签（mono 大写）统一 11px */
  .form label,
  .brand-sub,
  .nav .dropdown a .drop-sub,
  .footer-bottom .beian { font-size: 11px; }

  /* ============ 图片统一去边框（2026-09-16） ============ */
  .hw-img img,
  .cap-visual,
  .app-card .cover { border: none; }

  /* All-in-One：图片高度与参数表文字块一致 */
  #all-in-one .hw-img {
    display: flex; align-items: center; justify-content: center;
  }
  #all-in-one .hw-img img {
    width: auto; height: 420px; max-width: 100%;
    object-fit: contain;
  }
  @media (max-width: 900px) {
    #all-in-one .hw-img img { width: 100%; height: auto; max-height: 340px; }
  }

  /* ============ 设备部分：文字间距统一（2026-09-16） ============ */
  .hw-spec .hw-name { margin: 0 0 8px; line-height: 1.25; }
  .hw-spec .hw-sub { margin: 0 0 18px; line-height: 1.4; }
  .hw-spec .hw-desc { margin: 0 0 18px; line-height: 1.7; }
  .hw-spec table { margin: 0; }
  .hw-spec td { line-height: 1.5; }

  /* ============ 行业详情页 ============ */
  .ind-hero { padding-top: calc(var(--section-y) + 40px); }
  .ind-back {    display: inline-block; margin-bottom: 26px;
    font-family: var(--font-mono); font-size: 11px; letter-spacing: .12em;
     opacity: .6; transition: opacity var(--d-2) var(--ease);}
  .ind-back:hover { opacity: 1; }
  .ind-title { font-size: clamp(32px, 4.2vw, 56px); font-weight: 800; letter-spacing: -.02em; line-height: 1.08; margin: 10px 0 18px; }
  .ind-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--g-200); border: 1px solid var(--g-200); }
  .ind-card { background: var(--paper); padding: 36px 32px; }
  .ind-num { font-family: var(--font-mono); font-size: 11px; letter-spacing: .18em; color: var(--g-400); margin-bottom: 16px; }
  .ind-card h3 { font-size: 22px; font-weight: 700; margin-bottom: 12px; line-height: 1.3; }
  .ind-card p { font-size: 15px; line-height: 1.75; color: var(--g-600); margin: 0; }
  .ind-steps { border-top: 1px solid rgba(255,255,255,.14); }
  .ind-step { display: grid; grid-template-columns: 88px 1fr; gap: 24px; padding: 34px 0; border-bottom: 1px solid rgba(255,255,255,.14); }
  .ind-step-no { font-family: var(--font-mono); font-size: 13px; letter-spacing: .16em; opacity: .5; padding-top: 6px; }
  .ind-step h3 { font-size: 22px; font-weight: 700; margin: 0 0 10px; }
  .ind-step p { font-size: 15px; line-height: 1.8; opacity: .72; margin: 0; max-width: 760px; }
  /* 视频占位（2026-10-08）：素材就位后替换为 <video> */
  .media-slot {
    position: relative; width: 100%; max-width: 760px; aspect-ratio: 16/9;
    margin: 24px 0 0; background: var(--ink-3);
    border: 1px solid rgba(255,255,255,.14);
    display: grid; place-items: center; text-align: center; padding: 20px;
  }
  .media-slot span {
    font-size: 12px; letter-spacing: .12em; color: rgba(255,255,255,.42);
  }
  .section--light .media-slot { background: var(--paper-2); border-color: rgba(0,0,0,.12); }
  .section--light .media-slot span { color: var(--g-500); }
  .ind-caps, .ind-grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--g-200); border: 1px solid var(--g-200); }
  .ind-cap, .ind-outcome { background: var(--paper); padding: 34px 32px; }
  .ind-cap h3, .ind-outcome h3 { font-size: 22px; font-weight: 700; margin-bottom: 12px; line-height: 1.3; }
  .ind-cap p, .ind-outcome p { font-size: 15px; line-height: 1.75; color: var(--g-600); margin: 0; }
  .ind-flow { display: grid; grid-template-columns: repeat(6, 1fr); gap: 1px; background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.14); }
  .ind-flow-item { background: var(--ink); padding: 26px 20px; }
  .ind-flow-item span { font-family: var(--font-mono); font-size: 12px; opacity: .5; display: block; margin-bottom: 14px; }
  .ind-flow-item h4 { font-size: 15px; font-weight: 700; margin: 0 0 10px; }
  .ind-flow-item p { font-size: 13px; line-height: 1.65; opacity: .66; margin: 0; }
  .ind-proof { border-left: 2px solid var(--ink); padding: 6px 0 6px 28px; max-width: 820px; }
  .ind-proof p { font-size: 16px; line-height: 1.85; color: var(--g-600); margin: 0; }
  .ind-cta { display: flex; align-items: center; justify-content: space-between; gap: 40px; flex-wrap: wrap; }
  .ind-cta .section-title { margin-bottom: 12px; }
  .ind-cta .section-lede { max-width: 560px; }
  @media (max-width: 1080px) {
    .ind-flow { grid-template-columns: repeat(3, 1fr); }
  }
  @media (max-width: 900px) {
    .ind-grid-3, .ind-caps, .ind-grid-2 { grid-template-columns: 1fr; }
    .ind-flow { grid-template-columns: repeat(2, 1fr); }
    .ind-step { grid-template-columns: 1fr; gap: 8px; }
  }

  /* 行业卡：进入详情页入口 */
  .app-link {    display: inline-flex; align-items: center; gap: 8px;
    margin-top: 16px; font-size: 11px; letter-spacing: .14em;
     font-family: var(--font-mono);
    border-bottom: 1px solid currentColor; padding-bottom: 3px;
    opacity: .7; transition: opacity var(--d-2) var(--ease), gap var(--d-2) var(--ease);}
  .app-link:hover { opacity: 1; gap: 12px; }

  /* 行业详情页：双线轨道（Legacy / New-Built 对照） */
  .ind-tracks {
    display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px;
    background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.14);
  }
  .ind-track { background: var(--ink); padding: 36px 32px 10px; }
  .ind-track-tag {    display: inline-block; font-family: var(--font-mono); font-size: 11px;
    letter-spacing: .16em;  opacity: .85;
    padding-bottom: 4px; border-bottom: 1px solid rgba(255,255,255,.35);
    margin-bottom: 18px;}
  .ind-track-head h3 { font-size: 22px; font-weight: 700; line-height: 1.3; margin: 0 0 12px; }
  .ind-track-head p { font-size: 15px; line-height: 1.75; opacity: .72; margin: 0 0 10px; }
  .ind-track .ind-steps { border-top: 1px solid rgba(255,255,255,.14); }
  .ind-track .ind-step { grid-template-columns: 44px 1fr; gap: 16px; padding: 26px 0; }
  .ind-track .ind-step:last-child { border-bottom: none; }
  .ind-track .ind-step h3 { font-size: 22px; }
  .ind-track .ind-step p { font-size: 15px; }
  @media (max-width: 900px) {
    .ind-tracks { grid-template-columns: 1fr; }
    .ind-track { padding: 30px 24px 8px; }
    .ind-track .ind-step { grid-template-columns: 1fr; gap: 6px; }
  }

  /* ============ 行业详情页：封面配图（2026-09-17） ============ */
  .ind-hero {
    position: relative; overflow: hidden;
    display: flex; align-items: flex-end;
    min-height: 620px;
    padding: calc(var(--section-y) + 40px) var(--shell-inset) var(--section-y);
  }
  .ind-hero-bg { position: absolute; inset: 0; z-index: 0; }
  .ind-hero-bg img { width: 100%; height: 100%; object-fit: cover; display: block; }
  .ind-hero-veil {
    position: absolute; inset: 0; z-index: 1;
    background:
      linear-gradient(100deg, rgba(10,10,10,.95) 0%, rgba(10,10,10,.84) 38%, rgba(10,10,10,.38) 100%),
      linear-gradient(0deg, rgba(10,10,10,.78) 0%, rgba(10,10,10,0) 62%);
  }
  .ind-hero > .container { position: relative; z-index: 2; width: 100%; flex: 1 1 auto; }
  @media (max-width: 900px) {
    .ind-hero { min-height: 460px; }
    .ind-hero-veil {
      background:
        linear-gradient(180deg, rgba(10,10,10,.72) 0%, rgba(10,10,10,.88) 55%, rgba(10,10,10,.95) 100%);
    }
  }

  /* ============ 行业详情页：Proof 配图（2026-09-17） ============ */
  .ind-proof {
    display: grid; grid-template-columns: 1.05fr 1fr;
    gap: clamp(32px, 4vw, 56px); align-items: center;
    border-left: none; padding: 0; max-width: none;
  }
  .ind-proof-media { margin: 0; }
  .ind-proof-media img { width: 100%; height: auto; display: block; aspect-ratio: 3/2; object-fit: cover; }
  .ind-proof-body p { font-size: 15px; line-height: 1.8; color: var(--g-600); margin: 0 0 28px; }
  .ind-proof-stats {
    display: flex; gap: clamp(28px, 4vw, 56px); flex-wrap: wrap;
    border-top: 1px solid var(--g-200); padding-top: 22px;
  }
  .ind-proof-stats .n { display: block; font-size: 32px; font-weight: 700; letter-spacing: -.02em; line-height: 1.1; }
  .ind-proof-stats .l { display: block; font-size: 13px; color: var(--g-500); margin-top: 6px; }
  @media (max-width: 900px) {
    .ind-proof { grid-template-columns: 1fr; gap: 28px; }
  }

  /* ============ 行业详情页：排版层级与主页统一（2026-09-17） ============ */
  /* L1 · 页面大标题 —— 与主页 .section-title 同规格 */
  .ind-title { font-weight: 700; line-height: 1.1; letter-spacing: -.02em; max-width: 720px; }
  /* L2 · 卡片/块标题 22px */
  .ind-card h3, .ind-step h3, .ind-cap h3, .ind-outcome h3, .ind-track-head h3 { font-size: 22px; }
  /* L4 · 正文 15px */
  .ind-card p, .ind-step p, .ind-cap p, .ind-outcome p, .ind-track-head p { font-size: 15px; }
  /* L5 · 小字 13px（流程小卡） */
  .ind-flow-item p { font-size: 13px; }
  /* L6 · 微标签（mono 大写）11px —— 与主页 .kicker 统一 */
  .ind-step-no, .ind-flow-item span, .ind-num { font-size: 11px; letter-spacing: .18em; }
  /* 卡片内边距与主页卡片一致（40px 32px） */
  .ind-card, .ind-cap, .ind-outcome { padding: 40px 32px; }
  .ind-track { padding: 40px 32px 12px; }
  /* 步骤行垂直节奏 */
  .ind-step { padding: 32px 0; }
  .ind-track .ind-step { padding: 28px 0; }

  /* 行业详情页 · 封面微调（2026-09-17） */
  .ind-hero .container .ind-back { display: block; }
  .ind-hero-veil {
    background:
      linear-gradient(100deg, rgba(10,10,10,.95) 0%, rgba(10,10,10,.85) 36%, rgba(10,10,10,.44) 74%, rgba(10,10,10,.28) 100%),
      linear-gradient(0deg, rgba(10,10,10,.80) 0%, rgba(10,10,10,.14) 55%, rgba(10,10,10,0) 100%);
  }
  @media (max-width: 900px) {
    .ind-hero-veil {
      background: linear-gradient(180deg, rgba(10,10,10,.74) 0%, rgba(10,10,10,.90) 55%, rgba(10,10,10,.96) 100%);
    }
  }

  /* Proof 无配图时：单列文字 + 数据 */
  .ind-proof--text { display: block; max-width: 860px; }

  /* ============ 长文页（Customer Story / Blog）2026-09-17 ============ */
  .post-hero { padding-bottom: clamp(40px, 5vw, 64px); }
  .post-dek { font-size: clamp(17px, 1.7vw, 21px); line-height: 1.62; opacity: .82; max-width: 780px; margin: 16px 0 0; }
  .post-meta {    display: flex; gap: 10px 28px; flex-wrap: wrap;
    font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em;
     opacity: .6; margin-top: 26px;}
  .post-cover { max-width: 980px; margin: 0 auto clamp(40px, 5vw, 68px); }
  .post-cover img { width: 100%; height: auto; display: block; aspect-ratio: 16/9; object-fit: cover; }
  .post-body { max-width: 980px; margin: 0 auto; }
  .post-body h2 { font-size: clamp(24px, 2.4vw, 32px); font-weight: 700; letter-spacing: -.02em; line-height: 1.22; margin: 56px 0 18px; }
  .post-body h3 { font-size: 22px; font-weight: 700; line-height: 1.3; margin: 34px 0 12px; }
  .post-body p { font-size: 15px; line-height: 1.85; color: var(--g-600); margin: 0 0 20px; }
  .post-body ul { margin: 0 0 22px; padding-left: 20px; }
  .post-body li { font-size: 15px; line-height: 1.8; color: var(--g-600); margin-bottom: 10px; }
  .post-body strong { color: var(--ink); font-weight: 700; }
  .post-body a { color: var(--ink); border-bottom: 1px solid var(--g-300); }
  .post-body a:hover { border-bottom-color: var(--ink); }
  .post-box { background: var(--paper-2); border-left: 2px solid var(--ink); padding: 26px 30px; margin: 0 0 44px; }
  .post-box h2 { font-family: var(--font-mono); font-size: 12px; font-weight: 600; letter-spacing: .16em;  margin: 0 0 16px; }
  .post-box ul { margin: 0; padding-left: 20px; }
  .post-box li { font-size: 14px; line-height: 1.75; margin-bottom: 10px; }
  .post-video { margin: 36px 0; }
  .post-video video { width: 100%; height: auto; display: block; background: #000; border: 1px solid var(--img-border); }
  .post-video figcaption { font-size: 13px; color: var(--g-500); margin-top: 12px; line-height: 1.6; }
  .post-figure { margin: 36px 0; }
  .post-figure img { width: 100%; height: auto; display: block; }
  .post-figure figcaption { font-size: 13px; color: var(--g-500); margin-top: 12px; line-height: 1.6; }
  .post-table { width: 100%; border-collapse: collapse; margin: 0 0 26px; }
  .post-table td { font-size: 15px; padding: 14px 0; border-bottom: 1px solid var(--g-200); color: var(--g-600); }
  .post-table tr:last-child td { border-bottom: none; }
  .post-table td:last-child { text-align: right; font-weight: 700; color: var(--ink); }

  /* ---- 新闻文章正文（2026-09-30 Gastech 文）---- */
  .post-body blockquote { margin: 28px 0; padding: 4px 0 4px 22px; border-left: 2px solid var(--ink); font-size: 19px; line-height: 1.65; font-weight: 600; color: var(--ink); }
  .post-table--grid th { font-size: 12px; font-weight: 600; text-align: left; color: var(--g-500); padding: 12px 24px 10px 0; border-bottom: 1px solid var(--g-300); }
  .post-table--grid td { vertical-align: top; }
  .post-table--grid td:last-child { text-align: left; font-weight: 400; color: var(--g-600); }
  .post-about { border-top: 1px solid var(--g-200); margin-top: 58px; padding-top: 30px; }
  .post-about p { font-size: 14px; }
  @media (max-width: 900px) {
    .post-cover img { aspect-ratio: 16/9; }
    .post-body h2 { margin-top: 42px; }
    .post-box { padding: 22px 20px; }
  }

  .ind-proof-link { margin: 26px 0 0; }
  .ind-proof-link a {    display: inline-flex; align-items: center; gap: 8px;
    font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em;
     border-bottom: 1px solid currentColor;
    padding-bottom: 3px; opacity: .75; transition: opacity var(--d-2) var(--ease), gap var(--d-2) var(--ease);}
  .ind-proof-link a:hover { opacity: 1; gap: 12px; }

  .post-hero .ind-title { max-width: 980px; }
  .post-hero .post-dek { max-width: 900px; }

  /* ============ 列表页组件（Customer Stories / News）2026-09-20 ============ */
  .entry-list { border-top: 1px solid var(--g-200); }
  .entry {
    position: relative; display: grid; grid-template-columns: 72px 1fr auto;
    gap: 28px; align-items: start; padding: 32px 0; border-bottom: 1px solid var(--g-200);
    transition: background var(--d-2) var(--ease);
  }
  .entry:hover { background: var(--paper-2); }
  .entry-no {
    font-family: var(--font-mono); font-size: 11px; letter-spacing: .16em;
    color: var(--g-400); padding-top: 6px; white-space: nowrap;
  }
  .entry-tag {    display: block; font-family: var(--font-mono); font-size: 11px;
    letter-spacing: .16em;  color: var(--g-500); margin-bottom: 10px;}
  .entry h3 { font-size: 22px; font-weight: 700; line-height: 1.3; margin: 0 0 10px; }
  .entry h3 a { color: inherit; }
  .entry h3 a::after { content: ''; position: absolute; inset: 0; }
  .entry:hover h3 { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }
  .entry p { font-size: 15px; line-height: 1.75; color: var(--g-600); margin: 0; max-width: 780px; }
  .entry-cta {    align-self: center; font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em;
     opacity: .5; white-space: nowrap;
    border-bottom: 1px solid currentColor; padding-bottom: 3px;
    transition: opacity var(--d-2) var(--ease);}
  .entry:hover .entry-cta { opacity: 1; }
  .section--dark .entry-list { border-top-color: rgba(255,255,255,.14); }
  .section--dark .entry { border-bottom-color: rgba(255,255,255,.14); }
  .section--dark .entry:hover { background: var(--ink-2); }
  .section--dark .entry p { color: rgba(255,255,255,.7); }
  .section--dark .entry-no, .section--dark .entry-tag { color: rgba(255,255,255,.5); }
  @media (max-width: 900px) {
    .entry { grid-template-columns: 1fr; gap: 8px; padding: 26px 0; }
    .entry-no { padding-top: 0; }
    .entry-cta { align-self: start; margin-top: 6px; }
  }

  /* Customer Stories：左侧图片版（2026-09-20） */
  .entry--thumb { grid-template-columns: 260px 1fr auto; align-items: center; }
  .entry-thumb { margin: 0; overflow: hidden; background: var(--g-100); line-height: 0; }
  .entry-thumb img {
    width: 100%; height: auto; display: block;
    aspect-ratio: 16 / 9; object-fit: cover;
    transition: transform var(--d-4) var(--ease);
  }
  .entry--thumb:hover .entry-thumb img { transform: scale(1.045); }
  @media (max-width: 900px) {
    .entry--thumb { grid-template-columns: 1fr; gap: 14px; }
    .entry-thumb { max-width: 100%; }
  }

  /* News 列表：图片 + 日期 + 正文（2026-09-20） */
  .entry--news { grid-template-columns: 260px 72px 1fr; align-items: center; }
  @media (max-width: 900px) {
    .entry--news { grid-template-columns: 1fr; gap: 12px; }
    .entry--news .entry-no { padding-top: 0; }
  }

  /* Membership：五档布局（2026-09-20） */
  .pricing-grid--5 { grid-template-columns: repeat(3, 1fr); }
  .plan-quota li strong { text-align: right; }
  .membership-notes { margin-top: 36px; display: flex; flex-direction: column; gap: 8px; }
  .membership-notes .membership-note { margin-top: 0; }
  @media (max-width: 1100px) { .pricing-grid--5 { grid-template-columns: repeat(2, 1fr); } }
  @media (max-width: 700px)  { .pricing-grid--5 { grid-template-columns: 1fr; } }

  /* Membership：分组 + 五档并排 + 共享功能表（2026-09-20 v2） */
  .plan-group { margin-top: 52px; }
  .plan-group + .plan-group { margin-top: 64px; }
  .plan-group-head { margin-bottom: 22px; }
  .plan-group-name { font-size: 22px; font-weight: 700; letter-spacing: -.01em; margin: 0 0 8px; }
  .plan-group-sub { font-size: 15px; line-height: 1.75; color: var(--g-600); margin: 0; max-width: 780px; }
  .pricing-grid--5 { grid-template-columns: repeat(5, 1fr); gap: 18px; }
  .pricing-grid--5 .plan-head { padding: 22px 18px; }
  .pricing-grid--5 .plan-body { padding: 22px 18px 26px; }
  .pricing-grid--5 .plan-name { font-size: 20px; }
  .pricing-grid--5 .plan-inherit { font-size: 10px; letter-spacing: .04em; padding: 9px 10px; }
  .pricing-grid--2 { grid-template-columns: repeat(2, 1fr); gap: 24px; }
  .plan-shared { margin-top: 30px; border-top: 1px solid var(--g-200); padding-top: 24px; }
  .plan-shared-title {    font-family: var(--font-mono); font-size: 11px; letter-spacing: .16em;
     color: var(--g-500);}
  .plan-shared-list { list-style: none; margin: 20px 0 0; columns: 2; column-gap: 56px; }
  .plan-shared-list li { font-size: 13px; line-height: 1.75; margin: 0 0 14px; break-inside: avoid; }
  .plan-shared-list .ps-name { display: block; font-weight: 700; color: var(--ink); }
  .plan-shared-list .ps-desc { color: var(--g-600); }
  @media (max-width: 1000px) { .pricing-grid--5 { grid-template-columns: repeat(2, 1fr); } }
  @media (max-width: 900px) { .plan-shared-list { columns: 1; } }
  @media (max-width: 700px) { .pricing-grid--5, .pricing-grid--2 { grid-template-columns: 1fr; } }

  /* Membership：五档窄列的参数字段改堆叠（标签在上、值在下） */
  .pricing-grid--5 .plan-quota li { flex-direction: column; align-items: flex-start; gap: 3px; }
  .pricing-grid--5 .plan-quota span {    font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; }
  .pricing-grid--5 .plan-quota strong { font-size: 13px; }
  .pricing-grid--5 .plan-quota { gap: 14px; }

  /* Membership：五档窄列的参数字段改堆叠（标签在上、值在下） */
  .pricing-grid--5 .plan-quota li { flex-direction: column; align-items: flex-start; gap: 3px; }
  .pricing-grid--5 .plan-quota span {    font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; }
  .pricing-grid--5 .plan-quota strong { font-size: 13px; }
  .pricing-grid--5 .plan-quota { gap: 14px; }

  /* ============ 可拖拽对比组件（Reality ↔ Model）2026-09-22 ============ */
  .compare { position: relative; touch-action: pan-y; user-select: none; -webkit-user-select: none; }
  .compare-clip {
    position: absolute; inset: 0; z-index: 1;
    clip-path: inset(0 calc(100% - var(--pos, 50%)) 0 0);
  }
  .compare-handle {
    position: absolute; top: 0; bottom: 0; left: var(--pos, 50%);
    width: 52px; transform: translateX(-50%);
    z-index: 4; cursor: ew-resize; touch-action: none;
    display: flex; align-items: center; justify-content: center;
  }
  .compare-handle::before {
    content: ''; position: absolute; top: 0; bottom: 0; width: 2px;
    background: rgba(255,255,255,.92);
    box-shadow: 0 0 0 1px rgba(0,0,0,.28), 0 0 18px rgba(0,0,0,.35);
  }
  .compare-knob {
    position: relative; width: 42px; height: 42px; border-radius: 50%;
    background: #fff; color: #0A0A0A;
    display: grid; place-items: center;
    box-shadow: 0 6px 22px rgba(0,0,0,.38);
    transition: transform var(--d-2) var(--ease);
  }
  .compare-knob svg { width: 20px; height: 20px; position: static; }
  .compare:hover .compare-knob { transform: scale(1.06); }
  .compare.is-dragging .compare-knob { transform: scale(1.1); }
  .compare-handle:focus-visible { outline: none; }
  .compare-handle:focus-visible .compare-knob { box-shadow: 0 0 0 3px rgba(255,255,255,.9), 0 6px 22px rgba(0,0,0,.38); }
  .compare-tag {    position: absolute; bottom: 14px; z-index: 4;
    font-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; 
    color: #fff; background: rgba(10,10,10,.62); padding: 6px 10px;
    backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
    pointer-events: none;}
  .compare-tag--left { left: 14px; }
  .compare-tag--right { right: 14px; }
  @media (max-width: 900px) {
    .compare-knob { width: 36px; height: 36px; }
    .compare-knob svg { width: 17px; height: 17px; }
    .compare-tag { font-size: 9px; padding: 5px 8px; bottom: 10px; }
    .compare-tag--left { left: 10px; } .compare-tag--right { right: 10px; }
  }

  /* ============ AR 拖拽平板（cap-04）2026-09-22 ============ */
  .ar-stage { cursor: default; }
  .cap-visual .ar-overlay { clip-path: inset(0 100% 100% 0); }
  .ar-tablet {
    position: absolute; top: 0; left: 0; width: 46%;
    z-index: 3; cursor: grab; touch-action: none;
    will-change: transform; transform: translate(0, 0);
  }
  .ar-stage.is-dragging .ar-tablet { cursor: grabbing; }
  .ar-tablet img.ar-frame {
    position: relative; inset: auto; display: block;
    width: 100%; height: auto; object-fit: contain; z-index: auto;
    filter: drop-shadow(0 18px 32px rgba(0,0,0,.45));
    pointer-events: none;
  }
  .ar-hint {    position: absolute; left: 0; top: 50%;
    transform: translateY(-50%);
    display: inline-flex; align-items: center; gap: 6px;
    padding: 7px 12px; white-space: nowrap;
    background: #fff; color: var(--ink);
    font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; 
    box-shadow: 0 8px 22px rgba(0,0,0,.28);
    pointer-events: none; z-index: 5;
    animation: arHintNudge 2.2s var(--ease) infinite;
    transition: opacity var(--d-2) var(--ease);}
  .ar-hint svg { width: 16px; height: 16px; position: static; flex: none; }
  .ar-stage.is-dragging .ar-hint { opacity: 0; }
  .ar-hint.is-right svg { transform: scaleX(-1); }
  .ar-hint.is-right { animation-name: arHintNudgeL; }
  @keyframes arHintNudge {
    0%, 62%, 100% { transform: translateY(-50%) translateX(0); }
    78% { transform: translateY(-50%) translateX(5px); }
  }
  @keyframes arHintNudgeL {
    0%, 62%, 100% { transform: translateY(-50%) translateX(0); }
    78% { transform: translateY(-50%) translateX(-5px); }
  }
  @media (prefers-reduced-motion: reduce) { .ar-hint { animation: none; } }
  @media (max-width: 900px) {
    .ar-tablet { width: 54%; }
    .ar-hint { font-size: 10px; padding: 6px 9px; gap: 4px; }
    .ar-hint svg { width: 13px; height: 13px; }
  }

  /* 首页平台架构三列 + 行业页两列网格 + 说明行（2026-09-22） */
  .tech-grid--3 { grid-template-columns: repeat(3, 1fr); }
  .tech-grid--3 .tech-card { padding: 40px 32px; }
  .tech-grid--3 .ico { font-family: var(--font-mono); font-size: 11px; letter-spacing: .18em; }
  .ind-grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--g-200); border: 1px solid var(--g-200); }
  @media (max-width: 900px) {
    .tech-grid--3, .ind-grid-2 { grid-template-columns: 1fr; }
    .tech-grid--3 .tech-card { padding: 30px 22px; }
  }

  /* =====================================================================
     方案线（2026-09-22）：One Platform, two solutions
     · 首页 .solution-grid / .solution-card（两条方案线大图）
     · 行业页 .sol-group（分组标题 + 两列卡片）
     · 导航下拉 .dropdown-mega--sol / 抽屉 .drawer-group
     · 详情页 hero .ind-series（所属方案线）
     ===================================================================== */

  /* ---- 首页：两条方案线 ---- */
  .solution-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 24px;
  }
  .solution-card {
    display: flex; flex-direction: column;
    background: var(--ink-2);
    border: 1px solid rgba(255,255,255,.12);
    transition: background var(--d-3) var(--ease), border-color var(--d-3) var(--ease);
  }
  .solution-card:hover { background: var(--ink-3); border-color: rgba(255,255,255,.26); }
  .solution-cover {
    aspect-ratio: 16/9; overflow: hidden; background: var(--ink-3);
  }
  .solution-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
  .solution-body { padding: 30px 32px 32px; display: flex; flex-direction: column; flex: 1; }
  .solution-card h3 {
    font-size: 22px; font-weight: 800; letter-spacing: -.01em;
    margin: 10px 0 12px; line-height: 1.25;
  }
  .solution-card p { font-size: 14px; line-height: 1.75; opacity: .7; margin: 0; }
  .solution-list {
    list-style: none; margin: 22px 0 0; padding: 0;
    display: flex; flex-wrap: wrap; gap: 8px;
  }
  .solution-list li {
    font-family: var(--font-sans); font-size: 12px; letter-spacing: normal;
    padding: 7px 12px;
    border: 1px solid rgba(255,255,255,.22); opacity: .8;
  }
  .solution-cta {
    margin-top: auto; padding-top: 26px;
    font-size: 13px; font-weight: 600; letter-spacing: .02em;
    display: inline-flex; align-items: center; gap: 8px;
  }
  .solution-card:hover .solution-cta span { transform: translateX(4px); }
  .solution-cta span { transition: transform var(--d-2) var(--ease); }

  /* ---- 行业页：方案线分组 ---- */
  .sol-group { margin-top: 64px; }
  .sol-group + .sol-group { margin-top: 88px; }
  .sol-group-head { max-width: 780px; margin-bottom: 30px; }
  .sol-tag {    font-family: var(--font-mono); font-size: 11px; letter-spacing: .18em;
     opacity: .55;}
  .sol-name {
    font-size: 28px; font-weight: 800; letter-spacing: -.015em;
    margin: 12px 0 10px; line-height: 1.2;
  }
  .sol-sub { font-size: 15px; line-height: 1.8; opacity: .7; margin: 0; }
  .app-grid--2 { grid-template-columns: repeat(2, 1fr); }
  .app-grid--2 .app-card { min-height: 0; }

  /* ---- 导航下拉：方案线分组面板 ---- */
  .nav .dropdown-mega--sol {
    min-width: 660px;
    grid-template-columns: 1.15fr 1fr;
  }
  .nav .dropdown-mega--sol .drop-group { line-height: 1.55; }
  .drawer li.drawer-group { line-height: 1.5; }

  /* ---- 移动端抽屉：方案线分组标题 ---- */
  .drawer li.drawer-group {
    margin-top: 14px; padding: 0 0 8px 34px;
    font-family: var(--font-sans); font-size: 13px; letter-spacing: normal;
    opacity: .5;
    border-bottom: 1px solid rgba(255,255,255,.08);
  }

  /* ---- 详情页 hero：所属方案线 ---- */
  .ind-series {    margin: 24px 0 0;
    font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em;
     color: rgba(255,255,255,.62);}
  .ind-series a { border-bottom: 1px solid currentColor; padding-bottom: 2px; }
  .ind-series a:hover { color: #fff; }

  @media (max-width: 900px) {
    .solution-grid, .app-grid--2 { grid-template-columns: 1fr; }
    .solution-body { padding: 24px 22px 26px; }
    .sol-group { margin-top: 48px; }
    .sol-group + .sol-group { margin-top: 64px; }
    .sol-name { font-size: 24px; }
  }

  /* 新锚点（方案线/会员分组）滚动偏移：避开固定顶栏 */
  #solutions, #architecture, #membership,
  .sol-group, .plan-group, .app-card { scroll-margin-top: 92px; }

  /* =====================================================================
     行业详情页补充组件（2026-09-22，Underground Pipelines 按 PPT 重构）
     · .ind-sub  段落小标题（L2 22px）
     · .ind-p    板块正文段落（L4 15px）
     · .ind-note 板块脚注（浅色/深色两版）
     · .ind-figs 两列配图（含 figcaption）
     · .ind-list 带编号的清单（浅色）
     · .ind-flow--5 五列流程格
     ===================================================================== */
  .ind-sub {
    font-size: 22px; font-weight: 700; letter-spacing: -.01em; line-height: 1.3;
    margin: clamp(48px, 6vw, 76px) 0 18px;
  }
  .ind-p {
    font-size: 15px; line-height: 1.85; color: var(--g-600);
    margin: 0 0 24px; max-width: 860px;
  }
  .ind-note {
    margin: 34px 0 0; font-size: 15px; line-height: 1.8;
    color: var(--g-500); max-width: 860px;
  }
  .ind-note--dark { color: rgba(255,255,255,.68); }

  .ind-figs {
    display: grid; grid-template-columns: repeat(2, 1fr);
    gap: clamp(20px, 3vw, 32px); margin: clamp(28px, 4vw, 44px) 0 0;
  }
  .ind-figs figure { margin: 0; }
  .ind-figs img {
    width: 100%; height: 100%; aspect-ratio: 3/2; object-fit: cover; display: block;
  }
  .ind-figs figcaption {
    font-size: 13px; color: var(--g-500); margin-top: 12px; line-height: 1.6;
  }

  .ind-list { border-top: 1px solid var(--g-200); margin: 0; padding: 0; max-width: 980px; }
  .ind-list li {
    display: grid; grid-template-columns: 56px 1fr; gap: 20px;
    padding: 22px 0; border-bottom: 1px solid var(--g-200);
    font-size: 15px; line-height: 1.75; color: var(--g-600);
  }
  .ind-list li b {
    font-family: var(--font-mono); font-size: 11px; font-weight: 400;
    letter-spacing: .18em; color: var(--g-400); padding-top: 5px;
  }

  .ind-flow--5 { grid-template-columns: repeat(5, 1fr); }

  @media (max-width: 1080px) {
    .ind-flow--5 { grid-template-columns: repeat(3, 1fr); }
  }
  @media (max-width: 900px) {
    .ind-figs { grid-template-columns: 1fr; }
    .ind-list li { grid-template-columns: 44px 1fr; gap: 12px; }
    .ind-sub { font-size: 20px; margin-top: 46px; }
  }

  /* =====================================================================
     行业详情页：图文卡（2026-09-23）—— 每个要点配一张 PPT 原图，避免整屏大图
     · 浅色 section：.ind-media-grid + .ind-media-card
     · 深色 section：复用 .app-grid + .app-card（新增 .app-card--wide 收尾）
     ===================================================================== */
  .ind-media-grid {
    display: grid; grid-template-columns: repeat(3, 1fr);
    gap: 1px; background: var(--g-200); border: 1px solid var(--g-200);
  }
  .ind-media-grid--2 { grid-template-columns: repeat(2, 1fr); }
  .ind-media-card { background: var(--paper); display: flex; flex-direction: column; }
  .ind-media-card .cover {
    aspect-ratio: 16/10; overflow: hidden; background: var(--paper-3);
  }
  .ind-media-card .cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
  .ind-media-card .body { padding: 26px 28px 30px; display: flex; flex-direction: column; flex: 1; }
  .ind-media-card .ind-num { margin-bottom: 12px; }
  .ind-media-card h3 { font-size: 22px; font-weight: 700; margin: 0 0 12px; line-height: 1.3; }
  .ind-media-card p { font-size: 15px; line-height: 1.75; color: var(--g-600); margin: 0; }
  .ind-media-card .app-link { margin-top: auto; padding-top: 22px; align-self: flex-start; }
  .ind-media-grid .ind-media-card--text .body { padding-top: 32px; }

  /* 深色区：两列图文卡；收尾卡横跨整行，图占一半宽度 */
  .app-card--wide {
    grid-column: 1 / -1;
    display: grid; grid-template-columns: 1fr 1fr;
    gap: clamp(28px, 4vw, 56px); align-items: center;
  }
  .app-card--wide .cover { margin-bottom: 0; }

  /* 扁平比例配图（PPT 里的 before/after 对比图） */
  .ind-figs--flat img { aspect-ratio: 490 / 186; }

  @media (max-width: 900px) {
    .ind-media-grid, .ind-media-grid--2 { grid-template-columns: 1fr; }
    .ind-media-card .body { padding: 22px 22px 26px; }
    .app-card--wide { grid-template-columns: 1fr; }
    .app-card--wide .cover { margin-bottom: 24px; }
  }

  /* 单张支持性配图（限制宽度，不做整屏大图） */
  .ind-figure { margin: 0 0 34px; max-width: 880px; }
  .ind-figure img { width: 100%; height: auto; display: block; }
  .ind-figure figcaption { font-size: 13px; color: var(--g-500); margin-top: 12px; line-height: 1.6; }

  /* 浅色区：跨行收尾图文卡（图与文各占一半） */
  .ind-media-card--wide {
    grid-column: 1 / -1;
    display: grid; grid-template-columns: 1fr 1fr;
    gap: clamp(28px, 4vw, 56px); align-items: center;
  }
  .ind-media-card--wide .body { padding: 30px 32px; }
  @media (max-width: 900px) {
    .ind-media-card--wide { grid-template-columns: 1fr; }
    .ind-media-card--wide .body { padding: 22px 22px 26px; }
  }

  /* 三列流程格（室内设计页成果区） */
  .ind-flow--3 { grid-template-columns: repeat(3, 1fr); }
  @media (max-width: 900px) { .ind-flow--3 { grid-template-columns: 1fr; } }

  /* =====================================================================
     行业页：图文分行布局（2026-09-23 用户要求——不再密集排布，一图一行）
     · 浅色区用 .ind-rows；深色区加 .ind-rows--dark
     · 偶数行自动左右镜像
     ===================================================================== */
  .ind-rows { display: flex; flex-direction: column; }
  .ind-row {
    display: grid; grid-template-columns: 1.08fr 1fr;
    gap: clamp(32px, 5vw, 80px); align-items: center;
    padding: clamp(40px, 5vw, 68px) 0;
  }
  .ind-row + .ind-row { border-top: 1px solid var(--g-200); }
  .ind-rows--dark .ind-row + .ind-row { border-top-color: rgba(255,255,255,.12); }
  .ind-row-media { margin: 0; }
  .ind-row-media img {
    width: 100%; height: 100%; aspect-ratio: 16/9; object-fit: cover; display: block;
  }
  .ind-row-text .ind-num {
    font-family: var(--font-mono); font-size: 11px; letter-spacing: .18em;
    color: var(--g-400); margin-bottom: 14px;
  }
  .ind-row-text h3 { font-size: 22px; font-weight: 700; line-height: 1.3; margin: 0 0 14px; }
  .ind-row-text p { font-size: 15px; line-height: 1.85; color: var(--g-600); margin: 0; max-width: 560px; }
  .ind-row-text .app-link { margin-top: 20px; }
  .ind-row:nth-child(even) .ind-row-media { order: 2; }
  .ind-row:nth-child(even) .ind-row-text { order: 1; }
  .ind-rows--dark .ind-row-text h3 { color: #fff; }
  .ind-rows--dark .ind-row-text p { color: rgba(255,255,255,.7); }
  .ind-rows--dark .ind-row-text .ind-num { color: rgba(255,255,255,.45); }
  @media (max-width: 900px) {
    .ind-row { grid-template-columns: 1fr; gap: 20px; padding: 30px 0; }
    .ind-row:nth-child(even) .ind-row-media,
    .ind-row:nth-child(even) .ind-row-text { order: 0; }
    .ind-row-media img { aspect-ratio: 16/10; }
    .ind-row-text p { max-width: none; }
  }

  /* 图文分行 · 上下堆叠版式（2026-10-08 用户要求改版）：
     DOM 顺序「文字 → 图片」，文字横向占满整行，图片居中排在文字下方。
     图宽 1080px（2026-10-09 用户定稿：1296 太贴边，收到 1080），16:9 对应高 607.5px。 */
  .ind-rows--stacked .ind-row { grid-template-columns: 1fr; gap: clamp(24px, 3vw, 40px); }
  .ind-rows--stacked .ind-row-text { width: 100%; }
  .ind-rows--stacked .ind-row-text p { max-width: none; }
  .ind-rows--stacked .ind-row-media { justify-self: center; width: 100%; max-width: 1080px; margin: 0; }
  /* 把既有「左图右文」区块也纳入本版式（2026-10-09 用户要求全站统一）：
     这些区块的 DOM 顺序是「图 → 文」，且偶数行有 order 互换，必须显式压回「文在上、图在下」；
     图片填满 1080 媒体位（覆盖基础的 75% 规则），偶数行不再靠 margin-left 贴右。 */
  .ind-rows--stacked .ind-row-text { order: 1; }
  .ind-rows--stacked .ind-row-media { order: 2; }
  /* ⚠️ 移动端（≤900px）上面的 order 会被基础规则 `.ind-row:nth-child(even) …{order:0}`（特异性 0,3,0）压掉，
     导致「图 → 文」DOM 顺序的老区块在偶数行变成「图在上」。这里用更高特异性压回去，
     保证所有行业页在窄屏也是统一的「文在上、图在下」。 */
  @media (max-width: 900px) {
    .ind-rows--stacked .ind-row:nth-child(even) .ind-row-text { order: 1; }
    .ind-rows--stacked .ind-row:nth-child(even) .ind-row-media { order: 2; }
  }
  .ind-rows--stacked .ind-row-media img,
  .ind-rows--stacked .ind-row:nth-child(even) .ind-row-media img { width: 100%; margin-left: 0; }
  /* 该版式的占位块：撑满图片位，去掉 .media-slot 的 760px 限宽与上边距 */
  .ind-row-media--slot { width: 100%; max-width: none; margin: 0; aspect-ratio: 16/9; }
  /* 图片位放视频时（2026-10-09）：尺寸口径与 .ind-row-media img 完全一致，16:9 框不会被撑高 */
  .ind-row-media video {
    width: 100%; height: auto; display: block;
    aspect-ratio: 16/9; object-fit: cover;
    background: #000; border: 1px solid var(--img-border);
  }
  @media (max-width: 900px) {
    .ind-rows--stacked .ind-row-media { max-width: 100%; }
    .ind-row-media--slot { aspect-ratio: 16/10; }
    .ind-row-media video { aspect-ratio: 16/10; }
  }
  /* 视频按素材自然比例显示（2026-10-09）：
     stacked 行里的「图片」本来就是自然比例（.ind-row-media img 的 aspect-ratio:auto），
     视频改为同一口径。现有 16:9 素材（buildings / rail）渲染结果完全不变；
     非 16:9 素材（如 underground 新建沟槽的 1976×1282 ≈ 1.54）不再被 16:9 框裁掉上下内容。
     本规则特异性(0,2,1)高于上面 @media 里的 .ind-row-media video(0,1,1)，移动端同样生效。 */
  .ind-rows--stacked .ind-row-media video { aspect-ratio: auto; object-fit: contain; }

  /* 图文分行 · 左右各半版式（2026-10-13 用户要求）：
     一行之内「文字在左、媒体在右」，各占横向 1/2。DOM 顺序仍是「图 → 文」，
     故须显式压回「文在左（order:1）、图在右（order:2）」，并覆盖基础偶数行镜像。
     ⚠️ 本类若与基础 `@media(max-width:900px){.ind-row{grid-template-columns:1fr}}`（0,1,0）冲突，
     因本类特异性更高（0,2,0）会压掉窄屏单列 —— 故窄屏必须显式回落单列。 */
  .ind-rows--split .ind-row { grid-template-columns: 1fr 1fr; gap: clamp(28px, 4vw, 64px); }
  .ind-rows--split .ind-row-text { order: 1; width: 100%; }
  .ind-rows--split .ind-row-text p { max-width: none; }
  .ind-rows--split .ind-row-media { order: 2; width: 100%; max-width: none; margin: 0; justify-self: stretch; }
  .ind-rows--split .ind-row-media video { aspect-ratio: auto; object-fit: contain; }
  @media (max-width: 900px) {
    .ind-rows--split .ind-row { grid-template-columns: 1fr; gap: 20px; }
    .ind-rows--split .ind-row:nth-child(even) .ind-row-text { order: 1; }
    .ind-rows--split .ind-row:nth-child(even) .ind-row-media { order: 2; }
  }

  /* 图文分行页：正文/配图与容器左右边距对齐（2026-09-23 用户要求） */
  .ind-p, .ind-note, .ind-figure, .ind-list { max-width: none; }

  /* =====================================================================
     图片统一灰边框（2026-09-23 用户要求）
     灰阶按所在 section 背景取值：白底 #E8E8E8 / 灰底 #DDDDDD / 深底 #333333
     ===================================================================== */
  :root { --img-border: #E8E8E8; }
  .section--gray { --img-border: #DDDDDD; }
  .section--dark { --img-border: #3A3A3A; }

  .ind-row-media img,
  .ind-figure img,
  .ind-figs img,
  .ind-proof-media img,
  .ind-media-card .cover,
  .app-card .cover,
  .post-figure img,
  .post-cover img,
  .entry-thumb img,
  .hw-img img,
  .aio-img img,
  .cap-visual,
  .product-card .visual img { border: 1px solid var(--img-border); }

  /* =====================================================================
     细节标注卡（2026-09-23）：主截图下方的左右侧细节说明，图片保持小尺寸
     ===================================================================== */
  .ind-callouts {
    display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px;
    background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.12);
    margin: 0 0 clamp(40px, 5vw, 68px);
  }
  .ind-callout {
    background: var(--ink-2); padding: 26px 28px 28px;
    display: flex; gap: 22px; align-items: flex-start;
  }
  .ind-callout figure { margin: 0; flex: 0 0 190px; }
  .ind-callout figure img {
    width: 100%; height: auto; display: block; border: 1px solid var(--img-border);
  }
  .ind-callout .tag {    display: block; font-family: var(--font-mono); font-size: 11px;
    letter-spacing: .16em; 
    color: rgba(255,255,255,.5); margin-bottom: 10px;}
  .ind-callout h4 { font-size: 18px; font-weight: 700; margin: 0 0 10px; line-height: 1.35; }
  .ind-callout p { font-size: 14px; line-height: 1.72; color: rgba(255,255,255,.68); margin: 0; }
  @media (max-width: 900px) {
    .ind-callouts { grid-template-columns: 1fr; }
    .ind-callout { padding: 22px 22px 24px; }
    .ind-callout figure { flex: 0 0 150px; }
  }

  /* =====================================================================
     透明底图片与配图比例修正（2026-09-23 用户要求）
     · .ind-figure：配图最多占一半宽度，说明文字排在右侧
     · .ind-row--fit：需要完整展示的图不裁切（等比缩放，可留白）
     · .ind-figs--flat：before/after 用原始比例，不裁切
     ===================================================================== */
  .ind-figure {
    display: grid; grid-template-columns: 1fr 1fr;
    gap: clamp(28px, 4vw, 56px); align-items: center;
    margin: 0 0 clamp(34px, 4vw, 52px);
  }
  .ind-figure img { width: 100%; height: auto; display: block; }
  .ind-figure figcaption { margin-top: 0; }

  .ind-row--fit .ind-row-media img { aspect-ratio: auto; height: auto; object-fit: contain; }
  .ind-figs--flat img { aspect-ratio: auto; height: auto; object-fit: contain; }

  @media (max-width: 900px) {
    .ind-figure { grid-template-columns: 1fr; gap: 16px; }
    .ind-figure figcaption { margin-top: 12px; }
  }

  /* 图文行配图：等比完整展示，不裁切内容（2026-09-23 用户要求） */
  .ind-row-media img { aspect-ratio: auto; height: auto; object-fit: contain; }

  /* =====================================================================
     配图整体缩小到原来的 3/4（2026-09-23 用户要求：图片不要太大）
     · 图文行配图宽度按单元格 75%，贴外侧对齐，保持与容器左右边距一致
     · 拓扑大图 / before-after / Proof 配图同样缩到 75%
     · 移动端不缩，保持满宽
     ===================================================================== */
  .ind-row-media img { width: 75%; height: auto; }
  .ind-row:nth-child(even) .ind-row-media img { margin-left: auto; }

  .ind-figure img { width: 75%; }
  .ind-figs img { width: 75%; height: auto; }
  .ind-proof-media img { width: 75%; height: auto; }
  .ind-callout figure { flex: 0 0 142px; }

  @media (max-width: 900px) {
    .ind-row-media img,
    .ind-row:nth-child(even) .ind-row-media img { width: 100%; margin-left: 0; }
    .ind-figure img, .ind-figs img, .ind-proof-media img { width: 100%; }
    .ind-callout figure { flex: 0 0 130px; }
  }

  /* =====================================================================
     行业页 · 场景总览并排（2026-10-09 用户要求）
     · 仅用于「三个小板块」的概览行（如 underground 的 #scenarios）：
       由「一图一行」的 --stacked 改为横向三列卡片，图在上、文在下。
     · 详细场景仍在下方各自的 section 里，保持 --stacked 一图一行，不受影响。
     · 三张素材原始比例差异大（1.54 / 2.10 / 1.26），统一裁到 16:10；
       为不切掉关键内容，用 object-position 分别保位：
         第 1 张 居中；第 2 张 保左（留住左侧 Pipeline Analysis 面板）；第 3 张 保上（留住标题栏）
     · 2026-10-09 换图后（存量管网 1.64 / pipeline management 1.77，均宽于卡片 1.6）：
       第 2、3 张改为统一左对齐裁切 —— 平台截图的信息面板都在左侧，保左即可，
       且两图都只发生横向裁切，垂直方向不动。
     ===================================================================== */
  .ind-rows--cols3 {
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(22px, 2.6vw, 34px); align-items: stretch;
  }
  .ind-rows--cols3 .ind-row {
    display: flex; flex-direction: column; gap: 16px;
    padding: 0; border-top: 0;
  }
  .ind-rows--cols3 .ind-row + .ind-row { border-top: 0; }
  /* 卡片内一律「图在上、文在下」，覆盖基类偶数行的 order 互换 */
  .ind-rows--cols3 .ind-row-media,
  .ind-rows--cols3 .ind-row:nth-child(even) .ind-row-media {
    order: 1; width: 100%; max-width: none; margin: 0; justify-self: stretch;
  }
  .ind-rows--cols3 .ind-row-text,
  .ind-rows--cols3 .ind-row:nth-child(even) .ind-row-text {
    order: 2; width: 100%; display: flex; flex-direction: column; flex: 1;
  }
  .ind-rows--cols3 .ind-row-text p { max-width: none; }
  /* 描述长短不一，把 CTA 压到卡片底部，三列链接对齐 */
  .ind-rows--cols3 .ind-row-text .app-link { margin-top: auto; padding-top: 18px; }
  .ind-rows--cols3 .ind-row-media img,
  .ind-rows--cols3 .ind-row:nth-child(even) .ind-row-media img {
    width: 100%; height: auto; margin-left: 0;
    aspect-ratio: 16/10; object-fit: cover; display: block;
    border: 1px solid var(--img-border);
  }
  .ind-rows--cols3 .ind-row:nth-child(2) .ind-row-media img,
  .ind-rows--cols3 .ind-row:nth-child(3) .ind-row-media img { object-position: left center; }
  @media (max-width: 900px) {
    .ind-rows--cols3 { grid-template-columns: 1fr; gap: 36px; }
    .ind-rows--cols3 .ind-row-text p { max-width: none; }
  }

  /* =====================================================================
     下拉 / 抽屉条目图标（2026-09-28 用户要求：加粗标题下的每行小字左边配一个对应图标）
     · 图标为内联细线 SVG（24 viewBox / stroke 1.6 / currentColor），随条目文字同色系
     · .nav .dropdown a 原为 space-between + baseline，改为左起排列以容纳图标
     ===================================================================== */
  .nav .dropdown a {
    align-items: center; justify-content: flex-start; gap: 10px;
  }
  .nav .dropdown a .di {
    width: 36px; height: 36px; flex: 0 0 36px; color: var(--g-600);
  }
  .drawer li.drawer-sub a {
    display: flex; align-items: center; gap: 10px;
  }
  .drawer li.drawer-sub a .di {
    width: 40px; height: 40px; flex: 0 0 40px; color: rgba(255,255,255,.62);
  }

  /* 产品项图片图标（2026-09-30：实物线稿 PNG 替换内联 SVG）
     · 源图描边已统一为 --g-600，下拉（浅底）直接显示
     · 抽屉（深底）用 invert 反白 + .62 透明度对齐原 SVG 观感 */
  .nav .dropdown a .di--img {
    object-fit: contain;
  }
  .drawer li.drawer-sub a .di--img {
    object-fit: contain; filter: none; opacity: .78;
  }

  /* ---- 视频通栏黑底带（2026-10-12）----
     用途：解决方案页顶部的宣传片，让视频所在这一横条左右通到屏幕边缘、整条铺黑底。
     · 负的左右外边距抵消 .section 的 --gutter 内边距 → 黑带撑满视口宽；
       带内再套一层 .container，还原站点 60px（窄屏 20px）的版心节奏。
     · 负的 margin-top 抵消 .section 的 --section-y 顶部内边距 → 黑带与上方深色 hero 齐平相接。
       因此本类必须放在 .section 的第一个子元素位置。
     · 视频自带 1px 浅灰边框，在纯黑底上会显成一条白细线，故同色化处理（保留边框以维持盒高不变）。 */
  .video-band {
    position: relative;
    background: #000;
    padding: clamp(36px, 5vw, 72px) var(--shell-inset);
    /* 与紧随其后的版块（如 .section-head 标题）拉开留白；下外边距为透明区，
       露出 .section 的浅色底 → 黑带与标题之间出现一道浅色呼吸带。 */
    margin-bottom: clamp(40px, 5vw, 72px);
    margin-left: calc(-1 * var(--shell-inset));
    margin-right: calc(-1 * var(--shell-inset));
    margin-top: calc(-1 * var(--section-y));
  }
  .video-band .post-video { margin: 0; }
  .video-band .post-video video { border-color: #000; }

/* =====================================================================
     视觉改造层 2026-10-19
     ===================================================================== */

  :root {
    --ease-soft: cubic-bezier(0.45, 0.05, 0.25, 1);
    --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
    --ease-spring-soft: cubic-bezier(0.34, 1.4, 0.5, 1);

    --d-1: .12s;
    --d-2: .2s;
    --d-3: .32s;
    --d-4: .45s;
    --d-5: .62s;
    --d-6: 1.9s;

    --r-xs: 4px;
    --r-sm: 8px;
    --r-md: 16px;
    --r-lg: 20px;
    --r-xl: 24px;
    --r-pill: 100px;
    --r-round: 50%;

    --sh-1: 0 2px 10px rgba(19, 20, 25, .05);
    --sh-2: 0 6px 18px rgba(0, 0, 0, .28);
    --sh-3: 0 12px 32px rgba(0, 0, 0, .30);
    --sh-4: 0 20px 60px rgba(0, 0, 0, .35);

    --lift-y: -6px;
    --lift-s: 1.015;
    --t-x: var(--d-3);
    --t-y: var(--d-5);

    --glass-blur: blur(20px) saturate(140%);
    --glass-l-bg: rgba(255, 255, 255, .72);
    --glass-l-brd: rgba(10, 10, 10, .08);
    --glass-l-hi: inset 0 1px 0 rgba(255, 255, 255, .9);
    --glass-d-bg: rgba(255, 255, 255, .08);
    --glass-d-brd: rgba(255, 255, 255, .14);
    --glass-d-hi: inset 0 1px 0 rgba(255, 255, 255, .18);
    --dark-top: #1A1A20;
    --dark-bot: #0E0E12;
  }

  .post-video,
  .showreel,
  .cap-visual,
  .entry-thumb,
  .post-cover,
  .ind-media-card .cover,
  .app-card .cover,
  .product-card .visual,
  .solution-cover,
  .media-slot,
  .hw-img {
    border-radius: var(--r-md);
    overflow: hidden;
    background-clip: padding-box;
  }

  .ind-row-media img,
  .ind-row-media video,
  .ind-figure img,
  .ind-figs img,
  .post-figure img,
  .post-cover img,
  .post-video video,
  .showreel video,
  .cap-visual img,
  .cap-visual video,
  .entry-thumb img,
  .ind-media-card .cover img,
  .app-card .cover img,
  .product-card .visual img,
  .solution-cover img,
  .ind-callout figure img,
  .ind-proof-media img,
  .aio-img img,
  .hw-img img {
    border-radius: var(--r-md);
    background-clip: padding-box;
  }

  .post-video video,
  .showreel video,
  .entry-thumb img,
  .post-cover img,
  .ind-media-card .cover img,
  .app-card .cover img,
  .product-card .visual img,
  .solution-cover img,
  .hw-img img { border-radius: inherit; }

  .hero-video,
  .hero-fallback,
  .ind-hero-bg,
  .ind-hero-bg img,
  .video-band { border-radius: 0; }

  @media (hover: hover) and (pointer: fine) {
    .section--dark .product-card,
    .section--dark .app-card,
    .section--dark .solution-card,
    .section--dark .ind-flow-item,
    .section--dark .ind-callout,
    .section--dark .ind-track,
    .section--dark .hub-card,
    .section--dark .story-card,
    .section--dark .ind-media-card,
    #deployment .tech-card,
    .solution-card,
    .section--light .ind-card,
    .section--light .ind-outcome,
    .section--light .ind-cap,
    .section--light .ind-media-card,
    .section--light .story-card,
    .section--gray .plan-card,
    .section--light .plan-card {
      will-change: transform;
      transition: transform var(--t-y) var(--ease);
    }

    .section--dark .product-card:hover,
    .section--dark .app-card:hover,
    .section--dark .solution-card:hover,
    .section--dark .ind-flow-item:hover,
    .section--dark .ind-callout:hover,
    .section--dark .ind-track:hover,
    .section--dark .hub-card:hover,
    .section--dark .story-card:hover,
    .section--dark .ind-media-card:hover,
    #deployment .tech-card:hover,
    .solution-card:hover,
    .section--light .ind-card:hover,
    .section--light .ind-outcome:hover,
    .section--light .ind-cap:hover,
    .section--light .ind-media-card:hover,
    .section--light .story-card:hover,
    .section--gray .plan-card:hover,
    .section--light .plan-card:hover {
      transform: translateY(var(--lift-y)) scale(var(--lift-s));
    }

    .section--dark .ind-row-media,
    .section--light .ind-row-media,
    .section--dark .cap-visual,
    .section--light .cap-visual,
    .section--dark .showreel,
    .post-body .post-video,
    .video-band .post-video,
    .post-hero .post-cover,
    .container > .post-cover,
    .post-body .post-figure,
    .ind-media-card .cover,
    .app-card .cover,
    .product-card .visual,
    .solution-cover {
      transition: transform var(--t-y) var(--ease), box-shadow var(--t-y) var(--ease);
    }

    .section--dark .ind-row-media:hover,
    .section--light .ind-row-media:hover,
    .section--dark .cap-visual:hover,
    .section--light .cap-visual:hover,
    .section--dark .showreel:hover,
    .post-body .post-video:hover,
    .video-band .post-video:hover,
    .post-hero .post-cover:hover,
    .container > .post-cover:hover,
    .post-body .post-figure:hover,
    .ind-media-card .cover:hover,
    .app-card .cover:hover,
    .solution-cover:hover {
      transform: translateY(var(--lift-y));
      box-shadow: 0 20px 48px rgba(0,0,0,.20);
    }

    .section--light .entry:hover { background: var(--paper-2); }
    .entry:hover .entry-thumb {
      transform: translateY(var(--lift-y)) scale(1.02);
      box-shadow: 0 16px 36px rgba(10,10,10,.16);
    }
    .entry-thumb { transition: transform var(--t-y) var(--ease), box-shadow var(--t-y) var(--ease); }
  }

  #ar-devices .hw-img,
  #all-in-one .hw-img,
  .hw-img {
    position: relative;
    display: grid;
    place-items: center;
    padding: clamp(28px, 3.2vw, 52px);
    perspective: 1200px;
    background-image:
      radial-gradient(66% 44% at calc(50% + var(--mx, 0) * 8%) 16%, rgba(255,255,255,.96) 0%, rgba(255,255,255,0) 64%),
      radial-gradient(130% 95% at 50% 0%, rgba(10,10,10,.06) 0%, rgba(10,10,10,0) 60%),
      linear-gradient(180deg, #FCFCFC 0%, #ECECEC 100%);
    background-position: 0 0, 0 0, 0 0;
    background-size: 100% 100%, 100% 100%, 100% 100%;
    background-repeat: no-repeat;
    animation: hwFloat 7.5s var(--ease) infinite;
    transition: transform var(--t-y) var(--ease);
  }

  @keyframes hwFloat {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-8px); }
  }

  #ar-devices .hw-img::before,
  #all-in-one .hw-img::before,
  .hw-img::before {
    content: '';
    position: absolute;
    left: 50%;
    top: calc(50% - var(--hw-h, 0px) / 2);
    width: var(--hw-w, 0px);
    height: var(--hw-h, 0px);
    margin-left: calc(var(--hw-w, 0px) / -2);
    background-image: var(--hw-src);
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
    transform: rotateY(calc(var(--mx, 0) * 15deg)) rotateX(calc(var(--my, 0) * -11deg)) scaleY(-1);
    transform-origin: 50% 100%;
    opacity: .15;
    -webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,.42) 52%, #000 100%);
    mask-image: linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,.42) 52%, #000 100%);
    pointer-events: none;
  }

  #ar-devices .hw-img::after,
  #all-in-one .hw-img::after,
  .hw-img::after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: clamp(18px, 2.4vw, 30px);
    width: 54%;
    height: 20px;
    transform: translateX(calc(-50% + var(--mx, 0) * 18px)) scaleX(calc(1 + var(--mx, 0) * .08));
    background: radial-gradient(ellipse at center, rgba(10,10,10,.32) 0%, rgba(10,10,10,0) 70%);
    filter: blur(9px);
    opacity: calc(.8 - var(--my, 0) * .16);
    pointer-events: none;
    transition: opacity var(--t-y) var(--ease);
  }

  #ar-devices .hw-img img,
  #all-in-one .hw-img img,
  .hw-sol .hw-img img {
    max-width: 100%;
    border: none;
    transform: translateZ(16px) rotateY(calc(var(--mx, 0) * 15deg)) rotateX(calc(var(--my, 0) * -11deg));
    transform-origin: 50% 58%;
    filter: drop-shadow(calc(var(--mx, 0) * -10px) calc(14px + var(--my, 0) * 7px) 16px rgba(10,10,10,.22));
    transition: transform var(--d-3) linear, filter var(--d-3) linear;
    will-change: transform;
  }

  .hw-sol {
    grid-template-columns: .88fr 1.12fr;
    gap: clamp(32px, 4.5vw, 68px);
    align-items: center;
    padding: clamp(44px, 5.5vw, 84px) 0;
  }
  .hw-sol.rev { grid-template-columns: 1.12fr .88fr; }

  .hw-sol + .hw-sol { border-top: 1px solid var(--g-200); }

  .hw-sol:hover .hw-img { animation: none; transform: translateY(-4px); }
  .hw-sol:hover .hw-img::after { opacity: .95; }

  .js .hw-sol .hw-spec > * {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity var(--d-4) var(--ease), transform var(--d-5) var(--ease);
  }
  .js .hw-sol.is-in .hw-spec > * {
    opacity: 1;
    transform: translateY(0);
  }
  .no-io .hw-sol .hw-spec > * { opacity: 1; transform: none; }

  .js .hw-sol .hw-spec > *:nth-child(1) { transition-delay: .04s; }
  .js .hw-sol .hw-spec > *:nth-child(2) { transition-delay: .10s; }
  .js .hw-sol .hw-spec > *:nth-child(3) { transition-delay: .16s; }
  .js .hw-sol .hw-spec > *:nth-child(4) { transition-delay: .22s; }
  .js .hw-sol .hw-spec > *:nth-child(5) { transition-delay: .28s; }

  .hw-spec td {
    position: relative;
    transition: transform var(--t-x) var(--ease);
  }
  .hw-spec td:first-child { padding-left: 18px; }
  .hw-spec td:first-child::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    width: 2px;
    height: 20px;
    background: var(--ink);
    transform: translateY(-50%) scaleY(0);
    transform-origin: 50% 50%;
    transition: transform var(--t-x) var(--ease);
  }

  @media (hover: hover) and (pointer: fine) {
    .hw-apps span {
      transition: transform var(--t-x) var(--ease), background-color var(--t-x) var(--ease),
                  color var(--t-x) var(--ease), border-color var(--t-x) var(--ease);
    }
    .hw-apps span:hover {
      transform: translateY(-4px);
      background: var(--ink);
      border-color: var(--ink);
      color: var(--paper);
    }
    .hw-spec tr:hover td:first-child::before { transform: translateY(-50%) scaleY(1); }
    .hw-spec tr:hover td:last-child { transform: translateX(5px); }
  }

  @media (max-width: 900px) {
    .hw-sol,
    .hw-sol.rev { grid-template-columns: 1fr; }
    .hw-sol.rev .hw-img { order: 0; }
    .hw-sol.rev .hw-spec { order: 1; }
    .hw-sol { padding: 34px 0; gap: 24px; }
    #ar-devices .hw-img img,
    #all-in-one .hw-img img { height: 260px; }
  }

  @media (prefers-reduced-motion: reduce) {
    .hero-fallback::before,
    .partners-track,
    .scroll-cue::after,
    .hero-content,
    .hw-img { animation: none !important; }

    .plan-card, .solution-card,
    .section--dark .product-card, .section--dark .app-card, .section--dark .ind-flow-item,
    .section--light .ind-card, .section--light .ind-outcome,
    .section--dark .ind-row-media, .section--light .ind-row-media,
    .section--dark .cap-visual, .section--light .cap-visual, .section--dark .showreel,
    .post-body .post-video, .video-band .post-video, .post-hero .post-cover,
    .container > .post-cover, .post-body .post-figure, .entry-thumb,
    .hw-sol .hw-img img, .hw-spec td, .hw-apps span {
      transition-duration: .001ms !important;
    }

    .section--dark .product-card:hover, .section--dark .app-card:hover,
    .section--dark .ind-flow-item:hover, .section--dark .solution-card:hover,
    .section--light .ind-card:hover, .section--light .ind-outcome:hover,
    .section--gray .plan-card:hover, .section--light .plan-card:hover,
    .section--dark .ind-row-media:hover, .section--light .ind-row-media:hover,
    .section--dark .cap-visual:hover, .section--light .cap-visual:hover,
    .section--dark .showreel:hover,
    .post-body .post-video:hover, .video-band .post-video:hover,
    .post-hero .post-cover:hover, .container > .post-cover:hover,
    .post-body .post-figure:hover,
    .entry:hover .entry-thumb,
    .hw-sol:hover .hw-img,
    .hw-apps span:hover,
    .hw-sol .hw-img img {
      transform: none !important;
    }

    .js .reveal,
    .js .reveal.is-in,
    .js .hw-sol .hw-spec > * {
      opacity: 1 !important;
      transform: none !important;
      transition: none !important;
    }
  }

  .no-io .reveal { opacity: 1; transform: none; }

  /* =====================================================================
     风格迁移 · 目标站 xgrids.cn（2026-10-19）
     迁移的是视觉与运动语法；配色按既定品牌纪律保持纯黑白，
     参考站的青蓝辉光不引入，只借鉴其「辉光出现时机与衰减」的做法。
     ===================================================================== */

  .section--dark,
  .footer { background: linear-gradient(140deg, var(--dark-top) 0%, var(--dark-bot) 70%); }
  .hero-fallback {
    background:
      radial-gradient(ellipse at 25% 50%, rgba(255,255,255,.06) 0%, transparent 50%),
      radial-gradient(ellipse at 75% 30%, rgba(255,255,255,.04) 0%, transparent 55%),
      linear-gradient(140deg, #14141A 0%, #0B0B0F 72%);
  }

  .section--dark .product-card,
  .section--dark .app-card,
  .section--dark .solution-card,
  .section--dark .ind-flow-item,
  .section--dark .ind-callout,
  .section--dark .ind-track,
  .section--dark .story-card,
  .section--dark .ind-media-card,
  #deployment .tech-card {
    background:
      linear-gradient(180deg, rgba(255,255,255,.10) 0%, rgba(255,255,255,.04) 100%),
      rgba(10,10,10,.94);
    border: 1px solid var(--glass-d-brd);
    box-shadow: var(--glass-d-hi), var(--sh-3);
  }

  .plan-card--dark {
    background:
      linear-gradient(180deg, rgba(255,255,255,.10) 0%, rgba(255,255,255,.04) 100%),
      rgba(10,10,10,.94);
    border: 1px solid var(--glass-d-brd);
    box-shadow: var(--glass-d-hi), var(--sh-3);
  }

  .section--light .ind-card,
  .section--light .ind-outcome,
  .section--light .ind-cap,
  .section--light .ind-media-card,
  .section--light .story-card,
  .section--gray .plan-card:not(.plan-card--dark) {
    background: var(--glass-l-bg);
    border: 1px solid var(--glass-l-brd);
    box-shadow: var(--glass-l-hi), var(--sh-2);
  }

  .btn,
  .hero-cta,
  .plan-cta,
  .top-extra .btn-ghost,
  .hw-apps span,
  .product-card .visual .badge { border-radius: var(--r-pill); }
  .tech-card .ico { border-radius: var(--r-round); }
  .float-btn { border-radius: var(--r-round); }
  .plan-inherit,
  .hw-tag,
  .cap-badge,
  .app-card .value { border-radius: var(--r-sm); }

  .nav .dropdown,
  .nav .dropdown-mega,
  .lang-menu {
    transition: opacity var(--d-3) var(--ease), transform var(--d-3) var(--ease), visibility var(--d-3);
  }
  .nav .dropdown a,
  .nav .drop-group,
  .nav .drop-all,
  .lang-menu button {
    opacity: 0;
    transform: translateY(-6px);
    transition: opacity var(--d-3) var(--ease), transform var(--d-3) var(--ease);
  }
  .nav .has-dropdown:hover .dropdown a,
  .nav .has-dropdown:hover .dropdown .drop-group,
  .nav .has-dropdown:hover .dropdown .drop-all,
  .nav .has-dropdown.is-open .dropdown a,
  .nav .has-dropdown.is-open .dropdown .drop-group,
  .nav .has-dropdown.is-open .dropdown .drop-all,
  .lang-switch.open .lang-menu button {
    opacity: 1;
    transform: translateY(0);
  }
  .nav .has-dropdown:hover .dropdown a:nth-child(1),
  .nav .has-dropdown.is-open .dropdown a:nth-child(1) { transition-delay: .04s; }
  .nav .has-dropdown:hover .dropdown a:nth-child(2),
  .nav .has-dropdown.is-open .dropdown a:nth-child(2) { transition-delay: .07s; }
  .nav .has-dropdown:hover .dropdown a:nth-child(3),
  .nav .has-dropdown.is-open .dropdown a:nth-child(3) { transition-delay: .10s; }
  .nav .has-dropdown:hover .dropdown a:nth-child(4),
  .nav .has-dropdown.is-open .dropdown a:nth-child(4) { transition-delay: .13s; }
  .nav .has-dropdown:hover .dropdown a:nth-child(5),
  .nav .has-dropdown.is-open .dropdown a:nth-child(5) { transition-delay: .16s; }
  .nav .has-dropdown:hover .dropdown a:nth-child(6),
  .nav .has-dropdown.is-open .dropdown a:nth-child(6) { transition-delay: .19s; }
  .nav .has-dropdown:hover .dropdown a:nth-child(n+7),
  .nav .has-dropdown.is-open .dropdown a:nth-child(n+7) { transition-delay: .22s; }

  @media (hover: hover) and (pointer: fine) {
    .btn,
    .hero-cta,
    .plan-cta,
    .top-extra .btn-ghost {
      transition: background var(--d-2) var(--ease), color var(--d-2) var(--ease),
                  border-color var(--d-2) var(--ease), box-shadow var(--d-2) var(--ease),
                  transform var(--d-2) var(--ease-spring);
    }
    .btn:hover,
    .hero-cta:hover,
    .plan-cta:hover,
    .top-extra .btn-ghost:hover { transform: translateY(-2px) scale(1.03); }

    .section--gray .plan-card:hover,
    .section--light .plan-card:hover,
    .plan-card--dark:hover,
    .section--light .ind-card:hover,
    .section--light .ind-outcome:hover,
    .section--dark .product-card:hover,
    .section--dark .app-card:hover,
    .section--dark .ind-flow-item:hover,
    #deployment .tech-card:hover,
    .solution-card:hover {
      box-shadow: var(--glass-l-hi), var(--sh-4);
    }
    .plan-card--dark:hover,
    .section--dark .product-card:hover,
    .section--dark .app-card:hover,
    .section--dark .ind-flow-item:hover,
    #deployment .tech-card:hover,
    .solution-card:hover {
      border-color: rgba(255,255,255,.26);
    }
    .section--gray .plan-card:hover,
    .section--light .plan-card:hover,
    .section--light .ind-card:hover,
    .section--light .ind-outcome:hover {
      border-color: rgba(10,10,10,.14);
    }
  }

  @supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    @media (hover: hover) and (pointer: fine) {
      .section--dark .product-card,
      .section--dark .app-card,
      .section--dark .solution-card,
      .section--dark .ind-flow-item,
      .section--dark .ind-callout,
      .section--dark .ind-track,
      #deployment .tech-card,
      .plan-card--dark {
        -webkit-backdrop-filter: var(--glass-blur);
        backdrop-filter: var(--glass-blur);
      }
      .float-btn {
        background: rgba(255,255,255,.82);
        -webkit-backdrop-filter: blur(14px) saturate(150%);
        backdrop-filter: blur(14px) saturate(150%);
      }
      .nav .dropdown,
      .nav .dropdown-mega,
      .lang-menu {
        background: rgba(255,255,255,.82);
        -webkit-backdrop-filter: var(--glass-blur);
        backdrop-filter: var(--glass-blur);
        border-color: rgba(10,10,10,.08);
        box-shadow: var(--sh-4), var(--glass-l-hi);
      }
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .nav .dropdown a,
    .nav .drop-group,
    .nav .drop-all,
    .lang-menu button { opacity: 1; transform: none; transition: none; }
    .btn, .hero-cta, .plan-cta, .top-extra .btn-ghost,
    .plan-card, .section--light .ind-card, .section--light .ind-outcome,
    .section--dark .product-card, .section--dark .app-card, #deployment .tech-card {
      transition-duration: .001ms !important;
    }
    .btn:hover, .hero-cta:hover, .plan-cta:hover, .top-extra .btn-ghost:hover {
      transform: none !important;
    }
  }

  /* =====================================================================
     首页 V4 · 参考 xgrids.com/intl（2026-10-19）
     全部规则以 .home-v4 作用域限定，仅首页生效，不影响其余 15 页。
     ===================================================================== */

  .home-v4 {
    --h-bg:      #F5F5F7;
    --h-surface: #FFFFFF;
    --h-ink:     #131419;
    --h-ink-2:   #545866;
    --h-ink-3:   #8A8D99;
    --h-line:    #E6E7EB;
    --h-ph:      #F0F1F3;
    --h-brand:   #3364FF;
    --h-brand-d: #2952E0;
    --h-ring:    rgba(51,100,255,.35);
    --h-card-a:  linear-gradient(155deg, #1B2340 0%, #0C0D12 72%);
    --h-card-b:  linear-gradient(155deg, #142A3A 0%, #0C0D12 72%);
    --h-prod-a:  linear-gradient(140deg, #1A2340 0%, #0E0F14 70%);
    --h-prod-b:  linear-gradient(140deg, #142A3A 0%, #0E0F14 70%);
    background: var(--h-bg);
    color: var(--h-ink);
  }

  .home-v4 .hv-wrap {
    width: 100%;
    max-width: var(--shell);
    margin: 0 auto;
    padding-inline: var(--shell-pad);
  }
  .home-v4 .hv-section {
    padding-block: clamp(64px, 7.5vw, 112px);
    background: transparent;
  }
  .home-v4 .hv-section--flush { padding-bottom: clamp(52px, 6vw, 84px); }

  .home-v4 .hv-sr {
    position: absolute; width: 1px; height: 1px;
    padding: 0; margin: -1px; overflow: hidden;
    clip: rect(0 0 0 0); white-space: nowrap; border: 0;
  }

  /* ---------- 版块头 ---------- */
  .home-v4 .hv-head {
    max-width: 1000px;
    margin: 0 auto clamp(32px, 3.6vw, 52px);
  }
  .home-v4 .hv-head--center { text-align: center; }
  .home-v4 .hv-head-title {
    font-size: clamp(28px, 2.9vw, 41.6px);
    font-weight: 700;
    line-height: 1.15;
    letter-spacing: -.015em;
    color: var(--h-ink);
    margin: 0 0 14px;
  }
  .home-v4 .hv-head-desc {
    font-size: clamp(15px, 1.25vw, 18px);
    line-height: 1.75;
    color: var(--h-ink-2);
    margin: 0;
  }
  .home-v4 .hv-eyebrow {
    font-size: 13px;
    font-weight: 500;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--h-brand);
    margin-bottom: 12px;
  }
  .home-v4 .hv-kicker {
    display: inline-block;
    font-size: 11.5px;
    font-weight: 500;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: rgba(255,255,255,.62);
    margin-bottom: 10px;
  }

  /* ---------- 药丸按钮 ---------- */
  .home-v4 .hv-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    height: 48px;
    padding: 0 28px;
    border-radius: 100px;
    background: var(--h-brand);
    color: #fff;
    font-size: 15px;
    font-weight: 600;
    letter-spacing: 0;
    white-space: nowrap;
    border: none;
    cursor: pointer;
    transition: transform var(--d-3) var(--ease), background var(--d-3) var(--ease),
                box-shadow var(--d-3) var(--ease), color var(--d-3) var(--ease);
  }
  .home-v4 .hv-pill:hover {
    transform: translateY(-1px);
    background: var(--h-brand-d);
    box-shadow: 0 10px 24px rgba(51,100,255,.28);
  }
  .home-v4 .hv-pill--lg { height: 52px; padding: 0 32px; margin-top: 24px; }
  .home-v4 .hv-pill--ghost {
    background: transparent;
    color: var(--h-ink);
    box-shadow: inset 0 0 0 1px #D8DAE0;
  }
  .home-v4 .hv-pill--ghost:hover {
    background: var(--h-ink);
    color: #fff;
    box-shadow: none;
  }

  /* ---------- 1 · 开屏视频 ---------- */
  .home-v4 .hv-reel {
    max-width: var(--shell);
    margin: 0 auto;
    padding: clamp(16px, 2vw, 28px) var(--shell-pad) 0;
  }
  .home-v4 .hv-reel-frame {
    position: relative;
    margin: 0;
    aspect-ratio: 16/9;
    border-radius: 16px;
    overflow: hidden;
    background: #0C0D12;
  }
  .home-v4 .hv-reel-frame video {
    width: 100%; height: 100%;
    object-fit: cover;
  }

  /* ---------- 2 · 核心能力（五并排） ---------- */
  .home-v4 .hv-cap-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 16px;
  }
  .home-v4 .hv-cap {
    position: relative;
    display: flex;
    flex-direction: column;
    border-radius: 14px;
    overflow: hidden;
    background: var(--h-card-a);
    transform-origin: 50% 45%;
    transition: box-shadow var(--d-3) var(--ease),
                transform var(--d-3) var(--ease),
                opacity var(--d-5) var(--ease);
  }
  .home-v4 .hv-cap:nth-child(even) { background: var(--h-card-b); }
  .home-v4 .hv-cap[data-d="1"] { transition-delay: .08s; }
  .home-v4 .hv-cap[data-d="2"] { transition-delay: .16s; }
  .home-v4 .hv-cap[data-d="3"] { transition-delay: .24s; }
  .home-v4 .hv-cap[data-d="4"] { transition-delay: .32s; }
  .home-v4 .hv-cap[data-d="5"] { transition-delay: .40s; }
  .home-v4 .hv-cap:hover,
  .home-v4 .hv-cap:focus-within {
    z-index: 3;
    /* 克制的悬停反馈：只做 1.2% 放大 + 3px 微抬，不做扇开与让位 */
    transform: translateY(-3px) scale(1.012);
    transition-delay: 0s;
    box-shadow: 0 0 0 1px rgba(51,100,255,.20), 0 14px 30px rgba(19,20,25,.10);
  }
  .home-v4 .hv-cap-media {
    position: relative;
    aspect-ratio: 16/11;
    overflow: hidden;
    background: #0B0C11;
  }
  .home-v4 .hv-cap-media img,
  .home-v4 .hv-cap-media video {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
  }
  .home-v4 .hv-cap-media img {
    transition: transform .72s var(--ease), opacity var(--d-4) var(--ease);
  }
  .home-v4 .hv-cap-media::after {
    content: '';
    position: absolute; inset: 0;
    background: linear-gradient(180deg, rgba(8,10,16,.06) 0%, rgba(8,10,16,.26) 100%);
    pointer-events: none;
  }
  .home-v4 .hv-cap-media video {
    opacity: 0;
    transition: opacity var(--d-4) var(--ease);
  }
  .home-v4 .hv-cap:hover .hv-cap-media img,
  .home-v4 .hv-cap:focus-within .hv-cap-media img { transform: scale(1.03); }
  .home-v4 .hv-cap.is-ready:hover .hv-cap-media video,
  .home-v4 .hv-cap.is-ready:focus-within .hv-cap-media video,
  .home-v4 .hv-cap-media video.is-on { opacity: 1; }
  .home-v4 .hv-cap-body {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: 16px 16px 20px;
  }
  .home-v4 .hv-ico {
    flex: 0 0 auto;
    width: 32px; height: 32px;
    border-radius: 12px;
    background: rgba(255,255,255,.12);
    display: grid; place-items: center;
    color: #fff;
    margin-bottom: 12px;
  }
  .home-v4 .hv-ico svg { width: 18px; height: 18px; }
  .home-v4 .hv-cap-body h3 {
    font-size: 14.5px;
    font-weight: 600;
    line-height: 1.32;
    letter-spacing: -.005em;
    color: #fff;
    margin: 0 0 8px;
  }
  .home-v4 .hv-cap-body p {
    font-size: 12.5px;
    line-height: 1.55;
    color: rgba(255,255,255,.66);
    margin: 0;
  }

  /* ---------- 3 · 产品双卡 ---------- */
  .home-v4 .hv-prod-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
  }
  .home-v4 .hv-prod {
    position: relative;
    display: block;
    overflow: hidden;
    border-radius: 14px;
    aspect-ratio: 700 / 438;
    background: var(--h-prod-a);
    isolation: isolate;
    transition: box-shadow var(--d-3) var(--ease);
  }
  .home-v4 .hv-prod:last-child { background: var(--h-prod-b); }
  .home-v4 .hv-prod:hover,
  .home-v4 .hv-prod:focus-visible {
    box-shadow: 0 0 0 1px var(--h-ring), 0 22px 48px rgba(19,20,25,.2);
  }
  .home-v4 .hv-prod-media { position: absolute; inset: 0; }
  .home-v4 .hv-prod-media img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform var(--d-6) var(--ease);
  }
  .home-v4 .hv-prod:hover .hv-prod-media img { transform: scale(1.045); }
  .home-v4 .hv-prod-shade {
    position: absolute; inset: 0;
    background: linear-gradient(180deg, rgba(10,12,20,0) 32%, rgba(10,12,20,.5) 66%, rgba(10,12,20,.92) 100%);
  }
  .home-v4 .hv-prod-text {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    padding: clamp(20px, 2vw, 32px);
    color: #fff;
  }
  .home-v4 .hv-prod-text h3 {
    font-size: clamp(17px, 1.45vw, 21px);
    font-weight: 600;
    line-height: 1.28;
    letter-spacing: -.01em;
    color: #fff;
    margin: 0 0 10px;
    max-width: 15em;
  }
  .home-v4 .hv-prod-text p {
    font-size: 13.5px;
    line-height: 1.62;
    color: rgba(255,255,255,.74);
    margin: 0;
    max-width: 34em;
  }
  .home-v4 .hv-prod-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 16px;
  }
  .home-v4 .hv-prod-list li {
    font-size: 11.5px;
    line-height: 1;
    padding: 7px 12px;
    border-radius: 100px;
    border: 1px solid rgba(255,255,255,.24);
    color: rgba(255,255,255,.9);
    background: rgba(255,255,255,.05);
  }
  .home-v4 .hv-prod-arrow {
    position: absolute;
    top: clamp(18px, 1.8vw, 26px);
    right: clamp(18px, 1.8vw, 26px);
    width: 44px; height: 44px;
    border-radius: 50%;
    display: grid; place-items: center;
    color: #fff;
    font-size: 16px;
    background: rgba(255,255,255,.12);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    transition: transform var(--d-3) var(--ease), background var(--d-3) var(--ease);
  }
  .home-v4 .hv-prod:hover .hv-prod-arrow {
    transform: translateX(2px);
    background: rgba(255,255,255,.24);
  }

  /* ---------- 3b · 部署与定制 ---------- */
  .home-v4 .hv-deploy { margin-top: clamp(48px, 5.5vw, 80px); }
  .home-v4 .hv-deploy-title {
    font-size: clamp(19px, 1.8vw, 25px);
    font-weight: 700;
    letter-spacing: -.01em;
    color: var(--h-ink);
    margin: 0 0 20px;
  }
  .home-v4 .hv-deploy-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
  }
  .home-v4 .hv-deploy-card {
    background: var(--h-surface);
    border: 1px solid var(--h-line);
    border-radius: 14px;
    padding: clamp(22px, 2.2vw, 34px);
    transition: transform var(--d-3) var(--ease), box-shadow var(--d-3) var(--ease), border-color var(--d-3) var(--ease);
  }
  /* 与行业卡 / 产品卡统一：悬停轻微放大 + 阴影上浮（2026-10-26） */
  .home-v4 .hv-deploy-card:hover {
    transform: scale(1.012);
    border-color: transparent;
    box-shadow: 0 0 0 1px var(--h-ring), 0 18px 40px rgba(19,20,25,.1);
  }
  .home-v4 .hv-deploy-num {
    display: block;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .1em;
    color: var(--h-brand);
    margin-bottom: 12px;
  }
  .home-v4 .hv-deploy-card h4 {
    font-size: 17px;
    font-weight: 600;
    letter-spacing: -.005em;
    margin: 0 0 10px;
  }
  .home-v4 .hv-deploy-card p {
    font-size: 14px;
    line-height: 1.7;
    color: var(--h-ink-2);
    margin: 0;
    max-width: 44em;
  }

  /* ---------- 4 · 空间项目轮播 ---------- */
  .home-v4 .hv-stage {
    --cw: min(820px, 78vw);
    position: relative;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    padding-inline: calc((100% - var(--cw)) / 2);
    padding-block: 6px;
    overscroll-behavior-x: contain;
  }
  .home-v4 .hv-stage::-webkit-scrollbar { display: none; }
  .home-v4 .hv-slides { display: flex; gap: 16px; }
  .home-v4 .hv-slide {
    position: relative;
    flex: 0 0 var(--cw);
    aspect-ratio: 16/9;
    border-radius: 16px;
    overflow: hidden;
    scroll-snap-align: center;
    background: #0C0D12;
    transition: opacity var(--d-4) var(--ease), transform var(--d-4) var(--ease);
  }
  .home-v4 .hv-slide-ph {
    position: absolute; inset: 0;
    display: grid; place-items: center;
    background: linear-gradient(150deg, #22242B 0%, #14151A 100%);
  }
  .home-v4 .hv-slide-ph::after {
    content: '';
    position: absolute;
    inset: 22px;
    border: 1px dashed rgba(255,255,255,.16);
    border-radius: 10px;
  }
  .home-v4 .hv-slide-ph span {
    position: relative;
    font-size: 13px;
    letter-spacing: .04em;
    color: rgba(255,255,255,.34);
  }
  .home-v4 .hv-slide-cap {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    padding: 22px 26px;
    background: linear-gradient(180deg, rgba(8,9,14,0) 0%, rgba(8,9,14,.72) 100%);
  }
  .home-v4 .hv-slide-tag {
    display: inline-block;
    font-size: 10.5px;
    font-weight: 500;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: rgba(255,255,255,.72);
    padding: 5px 11px;
    border-radius: 100px;
    border: 1px solid rgba(255,255,255,.26);
    margin-bottom: 10px;
  }
  .home-v4 .hv-slide-cap h3 {
    font-size: clamp(15px, 1.3vw, 19px);
    font-weight: 600;
    color: #fff;
    margin: 0;
  }
  .home-v4 .hv-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 46px; height: 46px;
    border-radius: 50%;
    display: grid; place-items: center;
    background: rgba(0,0,0,.32);
    color: #fff;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    z-index: 3;
    transition: background var(--d-3) var(--ease), transform var(--d-3) var(--ease);
  }
  .home-v4 .hv-nav svg { width: 20px; height: 20px; }
  .home-v4 .hv-nav:hover { background: rgba(0,0,0,.55); }
  .home-v4 .hv-nav--prev { left: max(10px, calc(50% - var(--cw) / 2 + 14px)); }
  .home-v4 .hv-nav--next { right: max(10px, calc(50% - var(--cw) / 2 + 14px)); }
  .home-v4 .hv-dots {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 8px;
    margin-top: clamp(20px, 2.4vw, 30px);
  }
  .home-v4 .hv-dot {
    width: 7px; height: 7px;
    border-radius: 100px;
    background: #C9CBD3;
    padding: 0;
    transition: width var(--d-3) var(--ease), background var(--d-3) var(--ease);
  }
  .home-v4 .hv-dot.is-active { width: 22px; background: var(--h-ink); }
  .home-v4 .hv-cta-row {
    display: flex;
    justify-content: center;
    margin-top: clamp(26px, 3vw, 40px);
  }

  /* ---------- 5 · 应用场景（一行五个） ---------- */
  .home-v4 .hv-scene-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 16px;
  }
  .home-v4 .hv-scene {
    position: relative;
    display: block;
    overflow: hidden;
    border-radius: 16px;
    aspect-ratio: 4/3;
    background: var(--h-card-b);
    transition: box-shadow var(--d-3) var(--ease);
  }
  .home-v4 .hv-scene:hover,
  .home-v4 .hv-scene:focus-visible {
    box-shadow: 0 0 0 1px var(--h-ring), 0 18px 40px rgba(19,20,25,.18);
  }
  .home-v4 .hv-scene-media { position: absolute; inset: 0; }
  .home-v4 .hv-scene-media img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform var(--d-6) var(--ease);
  }
  .home-v4 .hv-scene:hover .hv-scene-media img { transform: scale(1.06); }
  .home-v4 .hv-scene-shade {
    position: absolute; inset: 0;
    background: linear-gradient(180deg, rgba(10,12,20,.30) 0%, rgba(10,12,20,.68) 55%, rgba(10,12,20,.9) 100%);
  }
  .home-v4 .hv-scene-body {
    position: absolute; inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    padding: 18px;
    text-align: center;
  }
  .home-v4 .hv-scene-ico {
    width: 40px; height: 40px;
    border-radius: 12px;
    background: rgba(255,255,255,.14);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    display: grid; place-items: center;
    color: #fff;
  }
  .home-v4 .hv-scene-ico svg { width: 21px; height: 21px; }
  .home-v4 .hv-scene-body h3 {
    font-size: 14.5px;
    font-weight: 600;
    line-height: 1.32;
    letter-spacing: -.005em;
    color: #fff;
    margin: 0;
    text-shadow: 0 1px 8px rgba(0,0,0,.45);
  }

  /* ---------- 6 · 合作伙伴 ---------- */
  .home-v4 .hv-marquee {
    overflow: hidden;
    margin: clamp(20px, 2.6vw, 34px) 0 clamp(36px, 4.2vw, 60px);
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 7%, #000 93%, transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0, #000 7%, #000 93%, transparent 100%);
  }
  .home-v4 .hv-marquee-track {
    display: flex;
    align-items: center;
    gap: clamp(40px, 4vw, 72px);
    width: max-content;
    animation: hvMarquee 46s linear infinite;
  }
  .home-v4 .hv-marquee:hover .hv-marquee-track { animation-play-state: paused; }
  .home-v4 .hv-logo {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
  }
  .home-v4 .hv-logo img {
    height: 44px;
    width: auto;
    max-width: 190px;
    object-fit: contain;
    filter: grayscale(1);
    opacity: .55;
    transition: opacity var(--d-3) var(--ease), filter var(--d-3) var(--ease);
  }
  .home-v4 .hv-logo:hover img { opacity: .95; }
  @keyframes hvMarquee {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
  }
  .home-v4 .hv-part-split {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: clamp(22px, 2.6vw, 32px);
    max-width: 1000px;
    margin: 0 auto;
  }
  .home-v4 .hv-part-intro { max-width: 860px; }
  .home-v4 .hv-part-intro p {
    font-size: clamp(14.5px, 1.16vw, 15.5px);
    line-height: 1.75;
    color: var(--h-ink-2);
    margin: 0;
  }
  .home-v4 .hv-stats {
    display: grid;
    grid-template-columns: repeat(4, auto);
    gap: clamp(28px, 4vw, 72px);
    align-items: start;
  }
  .home-v4 .hv-stat { text-align: center; }
  .home-v4 .hv-stat-v {
    font-size: clamp(34px, 3.6vw, 51px);
    font-weight: 700;
    line-height: 1.1;
    letter-spacing: -.03em;
    color: var(--h-ink);
  }
  .home-v4 .hv-stat-v .unit {
    font-size: .55em;
    font-weight: 500;
    letter-spacing: 0;
    color: var(--h-brand);
    margin-left: 2px;
  }
  .home-v4 .hv-stat-l {
    font-size: 13.5px;
    line-height: 1.5;
    letter-spacing: .02em;
    color: var(--h-ink-2);
    margin-top: 8px;
  }
  .home-v4 .hv-part-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    justify-content: center;
  }

  /* ---------- 7 · 新闻 ---------- */
  .home-v4 .hv-news-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
  }
  .home-v4 .hv-news-card {
    display: flex;
    flex-direction: column;
    background: var(--h-surface);
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 2px 10px rgba(19,20,25,.05);
    transition: box-shadow var(--d-4) var(--ease);
  }
  .home-v4 .hv-news-card:hover {
    box-shadow: 0 16px 38px rgba(19,20,25,.12);
  }
  .home-v4 .hv-news-img {
    position: relative;
    aspect-ratio: 16/9;
    background: var(--h-ph);
    overflow: hidden;
  }
  .home-v4 .hv-news-img img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform var(--d-5) var(--ease);
  }
  .home-v4 .hv-news-card:hover .hv-news-img img { transform: scale(1.045); }
  .home-v4 .hv-ph-label {
    position: absolute; inset: 0;
    display: grid; place-items: center;
    font-size: 13px;
    letter-spacing: .04em;
    color: #A9ACB6;
  }
  .home-v4 .hv-news-body { padding: 16px 20px 20px; }
  .home-v4 .hv-tag {
    display: inline-flex;
    align-items: center;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.4;
    padding: 3px 10px;
    border-radius: 100px;
    background: rgba(51,100,255,.1);
    color: var(--h-brand);
    margin-bottom: 10px;
  }
  .home-v4 .hv-tag--muted { background: var(--h-ph); color: var(--h-ink-3); }
  .home-v4 .hv-news-card h3 {
    font-size: 16px;
    font-weight: 600;
    line-height: 1.4;
    letter-spacing: -.005em;
    color: var(--h-ink);
    margin: 0 0 8px;
  }
  .home-v4 .hv-news-card p {
    font-size: 14px;
    line-height: 1.6;
    color: var(--h-ink-2);
    margin: 0;
  }
  .home-v4 .hv-news-card.is-ph h3 { color: #B4B7C0; }

  /* ---------- 8 · 联系与社媒 ---------- */
  .home-v4 .hv-contact {
    background: var(--h-surface);
    border-top: 1px solid var(--h-line);
    padding-block: clamp(64px, 7.5vw, 104px);
    text-align: center;
  }
  .home-v4 .hv-contact-copy { max-width: 680px; margin: 0 auto; }
  .home-v4 .hv-contact-title {
    font-size: clamp(30px, 3.2vw, 44px);
    font-weight: 700;
    line-height: 1.12;
    letter-spacing: -.02em;
    margin: 0 0 12px;
  }
  .home-v4 .hv-contact-desc {
    font-size: clamp(15px, 1.2vw, 16px);
    line-height: 1.75;
    color: var(--h-ink-2);
    margin: 0;
  }
  .home-v4 .hv-sub-form {
    display: flex;
    align-items: center;
    gap: 8px;
    width: min(540px, 100%);
    margin: clamp(24px, 2.8vw, 34px) auto 0;
    padding: 5px 5px 5px 24px;
    background: var(--h-surface);
    border: 1px solid #E2E4E9;
    border-radius: 100px;
    transition: border-color var(--d-3) var(--ease), box-shadow var(--d-3) var(--ease);
  }
  .home-v4 .hv-sub-form:focus-within {
    border-color: var(--h-brand);
    box-shadow: 0 0 0 4px rgba(51,100,255,.12);
  }
  .home-v4 .hv-sub-form input {
    flex: 1 1 auto;
    min-width: 0;
    height: 42px;
    border: none;
    background: transparent;
    font-family: inherit;
    font-size: 15px;
    color: var(--h-ink);
    outline: none;
  }
  .home-v4 .hv-sub-form input::placeholder { color: #9EA1AB; }
  .home-v4 .hv-sub-form .hv-pill { height: 42px; padding: 0 22px; font-size: 14px; flex: 0 0 auto; }
  .home-v4 .hv-sub-note {
    font-size: 13px;
    line-height: 1.6;
    color: var(--h-ink-3);
    margin: 12px 0 0;
  }
  .home-v4 .hv-sub-note a { text-decoration: underline; text-underline-offset: 2px; }
  .home-v4 .hv-sub-note a:hover { color: var(--h-brand); }
  .home-v4 .hv-sub-note.is-done { color: var(--h-brand); }
  .home-v4 .hv-socials {
    display: flex;
    justify-content: center;
    gap: clamp(20px, 3vw, 56px);
    margin-top: clamp(30px, 3.6vw, 46px);
  }
  .home-v4 .hv-social {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    font-size: 13px;
    color: var(--h-ink-2);
    transition: color var(--d-3) var(--ease);
  }
  .home-v4 .hv-social-ico {
    width: 86px; height: 86px;
    border-radius: 8px;
    background: var(--h-surface);
    border: 1px solid var(--h-line);
    display: grid; place-items: center;
    color: var(--h-ink);
    transition: border-color var(--d-3) var(--ease), transform var(--d-3) var(--ease),
                box-shadow var(--d-3) var(--ease), color var(--d-3) var(--ease);
  }
  .home-v4 .hv-social-ico svg { width: 26px; height: 26px; }
  .home-v4 .hv-social:hover { color: var(--h-brand); }
  .home-v4 .hv-social:hover .hv-social-ico {
    border-color: rgba(51,100,255,.45);
    color: var(--h-brand);
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(51,100,255,.16);
  }

  /* ---------- 社交图标：悬停翻转出二维码（2026-10-29） ----------
     只有带 .hv-social--qr 的（LinkedIn / YouTube）翻转，Email 不变。
     节奏刻意做慢做稳：0.52s 单向翻面、不缩放、只保留原有的上浮与描边变化。 */
  .home-v4 .hv-social--qr { perspective: 340px; }
  .home-v4 .hv-social--qr .hv-social-ico {
    position: relative;
    transform-style: preserve-3d;
    transition: transform .52s var(--ease), border-color var(--d-3) var(--ease),
                box-shadow var(--d-3) var(--ease), color var(--d-3) var(--ease);
  }
  .home-v4 .hv-social-face {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    border-radius: inherit;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
  }
  .home-v4 .hv-social-face--back {
    transform: rotateY(180deg);
    background: #fff;
    padding: 3px;
    overflow: hidden;
  }
  .home-v4 .hv-social-face--back img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    border-radius: 3px;
  }
  /* 触屏没有 hover，不启用翻面，保持点击跳转 */
  @media (hover: hover) and (prefers-reduced-motion: no-preference) {
    .home-v4 .hv-social--qr:hover .hv-social-ico,
    .home-v4 .hv-social--qr:focus-visible .hv-social-ico {
      transform: rotateY(180deg);
    }
  }
  .home-v4 .hv-contact-lines {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 10px;
    margin-top: clamp(26px, 3vw, 38px);
    font-size: 14px;
    color: var(--h-ink-2);
  }
  .home-v4 .hv-contact-lines a { transition: color var(--d-3) var(--ease); }
  .home-v4 .hv-contact-lines a:hover { color: var(--h-brand); }

  /* ---------- 响应式 ---------- */
  @media (max-width: 1280px) {
    .home-v4 .hv-cap-grid,
    .home-v4 .hv-scene-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .home-v4 .hv-news-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  @media (max-width: 1024px) {
    .home-v4 .hv-cap-grid,
    .home-v4 .hv-scene-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .home-v4 .hv-prod-grid,
    .home-v4 .hv-deploy-grid { grid-template-columns: 1fr; }
    .home-v4 .hv-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 44px; }
  }
  @media (max-width: 760px) {
    .home-v4 .hv-news-grid { grid-template-columns: 1fr; }
    .home-v4 .hv-prod { aspect-ratio: 4/3; }
    .home-v4 .hv-prod-text h3 { max-width: none; }
    .home-v4 .hv-nav { width: 40px; height: 40px; }
    .home-v4 .hv-slide { aspect-ratio: 4/3; }
  }
  @media (max-width: 560px) {
    .home-v4 .hv-cap-grid,
    .home-v4 .hv-scene-grid { grid-template-columns: 1fr; }
    .home-v4 .hv-cap-media { aspect-ratio: 16/9; }
    .home-v4 .hv-scene { aspect-ratio: 16/10; }
    .home-v4 .hv-scene-body { flex-direction: row; gap: 12px; }
    .home-v4 .hv-socials { flex-wrap: wrap; gap: 18px 22px; }
    .home-v4 .hv-social-ico { width: 68px; height: 68px; }
    .home-v4 .hv-social-ico svg { width: 22px; height: 22px; }
    .home-v4 .hv-sub-form { flex-wrap: wrap; padding: 14px; border-radius: 20px; }
    .home-v4 .hv-sub-form input { flex: 1 1 100%; padding-inline: 6px; }
    .home-v4 .hv-sub-form .hv-pill { width: 100%; }
    .home-v4 .hv-logo img { height: 34px; max-width: 130px; }
    .home-v4 .hv-slide-cap { padding: 16px 18px; }
  }

  /* ---------- 动效降级 ---------- */
  @media (prefers-reduced-motion: reduce) {
    .home-v4 .hv-marquee-track { animation: none; }
    .home-v4 .hv-cap-media img,
    .home-v4 .hv-cap-media video,
    .home-v4 .hv-prod-media img,
    .home-v4 .hv-scene-media img,
    .home-v4 .hv-news-img img,
    .home-v4 .hv-social-ico,
    .home-v4 .hv-pill,
    .home-v4 .hv-slide {
      transition: none !important;
    }
    .home-v4 .hv-cap:hover,
    .home-v4 .hv-cap:focus-within { transform: none !important; transition-delay: 0s !important; }
    .home-v4 .hv-cap:hover .hv-cap-media img,
    .home-v4 .hv-prod:hover .hv-prod-media img,
    .home-v4 .hv-scene:hover .hv-scene-media img,
    .home-v4 .hv-news-card:hover .hv-news-img img,
    .home-v4 .hv-social:hover .hv-social-ico,
    .home-v4 .hv-pill:hover { transform: none !important; }
    .home-v4 .hv-slide { opacity: 1; transform: none !important; }
    .home-v4 .hv-stage { scroll-behavior: auto; }
  }

  /* ---------- 5 · 应用场景：单张地下管网大卡 ---------- */
  .home-v4 .hv-scene--solo {
    display: grid;
    grid-template-columns: minmax(0, 1.34fr) minmax(0, 1fr);
    align-items: stretch;
    aspect-ratio: auto;
    border-radius: 20px;
    background: #fff;
    border: 1px solid rgba(19,20,25,.08);
    overflow: hidden;
    transition: box-shadow var(--d-3) var(--ease);
  }
  .home-v4 .hv-scene--solo:hover,
  .home-v4 .hv-scene--solo:focus-visible {
    box-shadow: 0 0 0 1px var(--h-ring), 0 24px 56px rgba(19,20,25,.14);
  }
  .home-v4 .hv-scene--solo .hv-scene-media {
    position: relative;
    inset: auto;
    min-height: 340px;
    background: #EDEEF2;
  }
  .home-v4 .hv-scene--solo .hv-scene-media img {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
  }
  .home-v4 .hv-scene--solo .hv-scene-body {
    position: relative;
    inset: auto;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    text-align: left;
    gap: 0;
    padding: clamp(26px, 3.2vw, 52px);
  }
  .home-v4 .hv-scene--solo .hv-scene-ico {
    width: 44px; height: 44px;
    border-radius: 12px;
    background: rgba(51,100,255,.10);
    color: var(--h-brand);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    margin-bottom: 20px;
  }
  .home-v4 .hv-scene--solo .hv-scene-ico svg { width: 22px; height: 22px; }
  .home-v4 .hv-scene--solo .hv-scene-body h3 {
    color: var(--h-ink);
    font-size: clamp(23px, 2.05vw, 31px);
    font-weight: 700;
    line-height: 1.16;
    letter-spacing: -.015em;
    text-shadow: none;
    margin: 0 0 12px;
  }
  .home-v4 .hv-scene--solo .hv-scene-body p {
    color: var(--h-ink-2);
    font-size: 15.5px;
    line-height: 1.72;
    margin: 0 0 20px;
    max-width: 46ch;
  }
  .home-v4 .hv-scene-meta {
    display: flex; flex-wrap: wrap; gap: 8px;
    list-style: none; padding: 0; margin: 0 0 26px;
  }
  .home-v4 .hv-scene-meta li {
    font-size: 12.5px;
    line-height: 1.4;
    color: var(--h-ink-2);
    border: 1px solid rgba(19,20,25,.14);
    border-radius: 100px;
    padding: 5px 12px;
  }
  .home-v4 .hv-scene-cta {
    margin-top: auto;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--h-brand);
    font-size: 14.5px;
    font-weight: 600;
  }
  .home-v4 .hv-scene-cta span { transition: transform var(--d-3) var(--ease); }
  .home-v4 .hv-scene--solo:hover .hv-scene-cta span { transform: translateX(4px); }

  @media (max-width: 900px) {
    .home-v4 .hv-scene--solo { grid-template-columns: 1fr; }
    .home-v4 .hv-scene--solo .hv-scene-media {
      min-height: 0;
      aspect-ratio: 16/9;
    }
  }
  @media (max-width: 560px) {
    .home-v4 .hv-scene--solo .hv-scene-media { aspect-ratio: 4/3; }
    .home-v4 .hv-scene--solo .hv-scene-body { padding: 24px 20px 28px; }
  }

  /* =====================================================================
     浅色主题（2026-10-19）：去掉黑色主色调
     底 = 白 / 浅灰，文字 = 近黑，品牌蓝 #3364FF 作唯一强调色
     ===================================================================== */
  :root {
    --brand:     #3364FF;
    --brand-2:   #1E4AE0;
    --surface:   #FFFFFF;
    --surface-2: #F4F5F8;
    --surface-3: #E9EBF1;
    --line:      rgba(19,20,25,.10);
    --line-2:    rgba(19,20,25,.06);
    --dark-top:  #F4F5F8;
    --dark-bot:  #F4F5F8;
  }

  /* ---------- 顶栏 ---------- */
  .topbar,
  .topbar.is-scrolled {
    background: rgba(255,255,255,.84);
    color: var(--ink);
    border-bottom-color: var(--line-2);
  }
  /* 2026-10-29：导航空 logo 换成彩色标识（蓝立方 + 黑字），不能再整体反相 ——
     invert 会把蓝色翻成橙色。浅色版直接用黑字版素材，深色版用白字版。 */
  .topbar .brand-logo { filter: none; }
  .topbar .nav a.is-active { color: var(--brand); }
  .top-extra .btn-ghost {
    background: var(--brand);
    border-color: var(--brand);
    color: #fff;
  }
  .top-extra .btn-ghost:hover {
    background: var(--brand-2);
    border-color: var(--brand-2);
    color: #fff;
  }
  .nav .dropdown,
  .nav .dropdown-mega {
    background: #fff;
    border: 1px solid var(--line-2);
    box-shadow: 0 20px 48px rgba(19,20,25,.14);
  }
  .nav .dropdown a:hover { background: var(--surface-2); }

  /* ---------- 移动抽屉 ---------- */
  .drawer { background: #fff; color: var(--ink); }
  .drawer ul a { border-bottom-color: var(--line); }
  .drawer .di { filter: none; opacity: .78; }
  .drawer .brand-logo { filter: none; }

  /* ---------- 页脚 ---------- */
  .footer {
    background: var(--surface-2);
    color: var(--ink);
    border-top: 1px solid var(--line-2);
  }
  .footer .brand-logo { filter: none; }
  .footer h5 { opacity: .5; }
  .footer ul li a { opacity: .74; }
  .footer ul li a:hover { opacity: 1; color: var(--brand); }
  .footer-bottom { border-top-color: var(--line); }

  /* ---------- 深色版块整体转浅 ---------- */
  .section--dark {
    background: var(--surface-2);
    color: var(--ink);
    --img-border: var(--line);
    --glass-d-brd: var(--line-2);
    --glass-d-hi: inset 0 1px 0 rgba(255,255,255,.9);
  }
  .section--dark .product-card,
  .section--dark .app-card,
  .section--dark .solution-card,
  .section--dark .ind-flow-item,
  .section--dark .ind-callout,
  .section--dark .ind-track,
  .section--dark .hub-card,
  .section--dark .story-card,
  .section--dark .ind-media-card,
  #deployment .tech-card {
    background: #fff;
    border: 1px solid var(--line-2);
    box-shadow: 0 1px 2px rgba(19,20,25,.04), 0 10px 28px rgba(19,20,25,.05);
  }
  .plan-card--dark {
    background: #fff;
    color: var(--ink);
    border: 1px solid var(--line-2);
    box-shadow: 0 1px 2px rgba(19,20,25,.04), 0 10px 28px rgba(19,20,25,.05);
  }
  .ind-flow-item,
  .ind-track {
    background: #fff;
    border: 1px solid var(--line-2);
    color: var(--ink);
  }

  /* ---------- 深色版块内的按钮 / 列表 / 分隔 ---------- */
  .section--dark .btn {
    background: var(--brand);
    color: #fff;
    border-color: var(--brand);
  }
  .section--dark .btn:hover {
    background: var(--brand-2);
    color: #fff;
    border-color: var(--brand-2);
  }
  .section--dark .btn--ghost {
    background: transparent;
    color: var(--ink);
    border-color: rgba(19,20,25,.22);
  }
  .section--dark .btn--ghost:hover {
    background: var(--brand);
    color: #fff;
    border-color: var(--brand);
  }
  .section--dark .entry-list { border-top-color: var(--line); }
  .section--dark .entry { border-bottom-color: var(--line); }
  .section--dark .entry:hover { background: #fff; }
  .section--dark .entry p { color: var(--g-500); }
  .section--dark .entry-no,
  .section--dark .entry-tag { color: var(--g-400); }
  .section--dark .partners-strip::before { background: linear-gradient(90deg, var(--surface-2), transparent); }
  .section--dark .partners-strip::after  { background: linear-gradient(270deg, var(--surface-2), transparent); }

  /* ---------- 首页：深色模块转浅 ---------- */
  .home-v4 {
    --h-card-a: #FFFFFF;
    --h-card-b: #FFFFFF;
    --h-prod-a: #EDEEF2;
    --h-prod-b: #EDEEF2;
  }
  .home-v4 .hv-cap {
    background: #fff;
    border: 1px solid var(--line-2);
    box-shadow: 0 1px 2px rgba(19,20,25,.04), 0 8px 22px rgba(19,20,25,.05);
  }
  .home-v4 .hv-cap:hover,
  .home-v4 .hv-cap:focus-within {
    box-shadow: 0 0 0 1px rgba(51,100,255,.20), 0 14px 30px rgba(19,20,25,.08);
  }
  .home-v4 .hv-cap-media { background: #EDEEF2; }
  .home-v4 .hv-cap-media::after { background: none; }
  .home-v4 .hv-ico {
    background: rgba(51,100,255,.10);
    color: var(--h-brand);
  }
  .home-v4 .hv-cap-body h3 { color: var(--h-ink); }
  .home-v4 .hv-cap-body p { color: var(--h-ink-2); }

  .home-v4 .hv-slide { background: #EDEEF2; }
  .home-v4 .hv-slide-ph {
    background: linear-gradient(150deg, #FFFFFF 0%, #E9EBF1 100%);
  }
  .home-v4 .hv-slide-ph::after { border-color: rgba(19,20,25,.16); }
  .home-v4 .hv-slide-ph span { color: rgba(19,20,25,.40); }
  .home-v4 .hv-slide-cap {
    background: linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.94) 68%);
  }
  .home-v4 .hv-slide-cap h3 { color: var(--h-ink); }
  .home-v4 .hv-slide-tag { color: var(--h-ink-2); }
  .home-v4 .hv-reel-frame { background: #EDEEF2; }

  /* ---------- 其余 --dark 修饰类同步转浅 ---------- */
  .ind-rows--dark .ind-row + .ind-row { border-top-color: var(--line); }
  .ind-rows--dark .ind-row-text h3 { color: var(--ink); }
  .ind-rows--dark .ind-row-text p { color: var(--g-500); }
  .ind-rows--dark .ind-row-text .ind-num { color: var(--g-400); }
  .ind-note--dark { color: var(--g-500); }

  .plan-card--dark {
    background: #EEF2FF;
    color: var(--ink);
    border-color: rgba(51,100,255,.28);
  }
  .plan-card--dark .plan-head {
    background: var(--brand);
    color: #fff;
  }
  .plan-card--dark .plan-desc { color: var(--g-500); }
  .plan-card--dark .plan-note { color: var(--g-500); }
  .plan-quota--dark { border-color: rgba(19,20,25,.12); }
  .plan-quota--dark span { color: var(--g-500); }
  .plan-quota--dark strong { color: var(--ink); }
  .plan-inherit--dark { background: rgba(51,100,255,.10); color: var(--brand); }
  .plan-features--dark li { color: var(--g-600); }
  .plan-features--dark li::before { background: var(--brand); }
  .plan-features--dark li::after { border-color: #fff; }
  .plan-card--dark .plan-cta {
    background: var(--brand);
    color: #fff;
    border-color: var(--brand);
  }
  .plan-card--dark .plan-cta:hover {
    background: var(--brand-2);
    color: #fff;
    border-color: var(--brand-2);
  }

  /* ---------- 图片 hero 保持深底白字（背景本身是照片） ---------- */
  .section--dark.ind-hero {
    background: #14171D;
    color: var(--paper);
  }
  .ind-hero-veil {
    background:
      linear-gradient(100deg, rgba(10,12,16,.88) 0%, rgba(10,12,16,.70) 38%, rgba(10,12,16,.26) 76%, rgba(10,12,16,.16) 100%),
      linear-gradient(0deg, rgba(10,12,16,.64) 0%, rgba(10,12,16,.12) 58%, rgba(10,12,16,0) 100%);
  }
  @media (max-width: 900px) {
    .ind-hero-veil {
      background: linear-gradient(180deg, rgba(10,12,16,.70) 0%, rgba(10,12,16,.84) 55%, rgba(10,12,16,.92) 100%);
    }
  }

  /* 会员页强调卡的标题带是品牌蓝，副标必须转白 */
  .plan-card--dark .plan-head .plan-desc { color: rgba(255,255,255,.84); }
  .plan-card--dark .plan-head .plan-name { color: #fff; }

  /* 轮播箭头：浅底描边 + 品牌蓝悬停 */
  .home-v4 .hv-nav {
    background: rgba(255,255,255,.92);
    color: var(--h-ink);
    border: 1px solid rgba(19,20,25,.10);
    box-shadow: 0 6px 18px rgba(19,20,25,.10);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
  }
  .home-v4 .hv-nav:hover {
    background: var(--h-brand);
    color: #fff;
    border-color: var(--h-brand);
    box-shadow: 0 10px 26px rgba(51,100,255,.28);
  }
  .home-v4 .hv-dot.is-active { background: var(--h-brand); }

  /* =====================================================================
     产品详情页（2026-10-19）
     版式参考 xgrids 产品页：粘性子导航 + 产品 hero + 数据条 + 交替特性段 + 规格表
     ===================================================================== */
  .pd-hero {
    padding: calc(var(--section-y) + 42px) 0 clamp(36px, 4.6vw, 68px);
    background: var(--surface);
  }
  .pd-hero-inner {
    max-width: var(--shell-inner);
    margin-inline: auto;
    display: grid;
    grid-template-columns: minmax(0, 1.04fr) minmax(0, .96fr);
    gap: clamp(32px, 4.2vw, 72px);
    align-items: center;
  }
  .pd-crumb {
    display: inline-block;
    font-size: 12.5px;
    color: var(--g-400);
    margin-bottom: 22px;
    transition: color var(--d-2) var(--ease);
  }
  .pd-crumb:hover { color: var(--brand); }
  .pd-eyebrow {
    display: block;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--brand);
    margin-bottom: 12px;
  }
  .pd-title {
    font-size: clamp(32px, 4.4vw, 58px);
    font-weight: 800;
    letter-spacing: -.02em;
    line-height: 1.06;
    margin: 0 0 12px;
  }
  .pd-tagline {
    font-size: clamp(17px, 1.65vw, 21px);
    font-weight: 600;
    line-height: 1.42;
    color: var(--ink);
    margin: 0 0 16px;
  }
  .pd-lead {
    font-size: 15.5px;
    line-height: 1.78;
    color: var(--g-600);
    max-width: 54ch;
    margin: 0;
  }
  .pd-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: clamp(24px, 2.6vw, 34px);
  }
  .pd-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 13px 24px;
    border-radius: 100px;
    font-size: 13.5px;
    font-weight: 600;
    line-height: 1;
    border: 1px solid transparent;
    transition: background var(--d-2) var(--ease), color var(--d-2) var(--ease),
                border-color var(--d-2) var(--ease), transform var(--d-2) var(--ease);
  }
  .pd-btn--solid { background: var(--brand); color: #fff; }
  .pd-btn--solid:hover { background: var(--brand-2); transform: translateY(-1px); }
  .pd-btn--ghost { background: transparent; color: var(--ink); border-color: rgba(19,20,25,.18); }
  .pd-btn--ghost:hover { border-color: var(--brand); color: var(--brand); }

  .pd-hero-media {
    position: relative;
    border-radius: 22px;
    background: linear-gradient(150deg, #F7F8FA 0%, #EDEEF2 100%);
    border: 1px solid var(--line-2);
    padding: clamp(22px, 3vw, 46px);
    display: grid;
    place-items: center;
    min-height: 300px;
  }
  .pd-hero-media img,
  .pd-hero-media .pd-hero-video {
    max-width: 100%;
    max-height: 420px;
    width: auto;
    height: auto;
    object-fit: contain;
    filter: drop-shadow(0 18px 34px rgba(19,20,25,.14));
  }
  .pd-hero-media .pd-hero-video { border-radius: 16px; }

  /* 粘性子导航 */
  #overview,
  #specs { scroll-margin-top: 122px; }
  .pd-subnav {
    padding-inline: var(--shell-inset);
    position: sticky;
    top: 60px;
    z-index: 60;
    background: rgba(255,255,255,.9);
    backdrop-filter: blur(14px) saturate(140%);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    border-top: 1px solid var(--line-2);
    border-bottom: 1px solid var(--line-2);
  }
  .pd-subnav-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    height: 54px;
  }
  .pd-subnav-name {
    font-size: 13.5px;
    font-weight: 600;
    color: var(--ink);
  }
  .pd-subnav-tabs { display: flex; gap: 4px; }
  .pd-subnav-tabs a {
    padding: 7px 16px;
    border-radius: 100px;
    font-size: 13px;
    color: var(--g-500);
    transition: background var(--d-2) var(--ease), color var(--d-2) var(--ease);
  }
  .pd-subnav-tabs a:hover { color: var(--ink); background: var(--surface-2); }
  .pd-subnav-tabs a.is-active { color: #fff; background: var(--brand); }

  /* 数据条 */
  .pd-stats { background: var(--surface-2); padding: clamp(32px, 4vw, 56px) var(--shell-inset); }
  .pd-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
  }
  .pd-stat {
    background: #fff;
    border: 1px solid var(--line-2);
    border-radius: 16px;
    padding: 24px 22px;
    box-shadow: 0 1px 2px rgba(19,20,25,.04);
  }
  .pd-stat b {
    display: block;
    font-size: clamp(22px, 2.3vw, 32px);
    font-weight: 800;
    letter-spacing: -.02em;
    line-height: 1.15;
    color: var(--ink);
    margin-bottom: 8px;
  }
  .pd-stat span {
    display: block;
    font-size: 13px;
    line-height: 1.5;
    color: var(--g-500);
  }

  /* 特性段 */
  .pd-head { max-width: 760px; margin: 0 auto clamp(28px, 3.4vw, 48px); text-align: center; }
  .pd-head h2 {
    font-size: clamp(26px, 3vw, 40px);
    font-weight: 700;
    line-height: 1.16;
    letter-spacing: -.015em;
    margin: 0 0 14px;
  }
  .pd-head p {
    font-size: 15.5px;
    line-height: 1.75;
    color: var(--g-500);
    margin: 0;
  }
  .pd-rows { display: flex; flex-direction: column; gap: clamp(34px, 4.4vw, 68px); }
  .pd-row {
    display: grid;
    grid-template-columns: minmax(0, 1.06fr) minmax(0, 1fr);
    gap: clamp(26px, 3.4vw, 58px);
    align-items: center;
  }
  .pd-row--rev .pd-row-media { order: 2; }
  .pd-row-media {
    border-radius: 18px;
    overflow: hidden;
    background: var(--surface-2);
    border: 1px solid var(--line-2);
  }
  .pd-row-media img,
  .pd-row-media video {
    display: block;
    width: 100%;
    /* 必须显式 auto：img 带 height 属性时，表现性提示会盖掉 aspect-ratio，图片会被拉成长条 */
    height: auto;
    aspect-ratio: 16/10;
    object-fit: cover;
  }
  .pd-row-num {
    display: block;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .16em;
    color: var(--brand);
    margin-bottom: 12px;
  }
  .pd-row-text h3 {
    font-size: clamp(19px, 1.9vw, 25px);
    font-weight: 700;
    line-height: 1.28;
    letter-spacing: -.01em;
    margin: 0 0 12px;
  }
  .pd-row-text p {
    font-size: 15px;
    line-height: 1.78;
    color: var(--g-600);
    margin: 0;
    max-width: 46ch;
  }
  .pd-row-list { margin: 18px 0 0; padding: 0; list-style: none; }
  .pd-row-list li {
    position: relative;
    padding-left: 20px;
    font-size: 14px;
    line-height: 1.7;
    color: var(--g-600);
    margin-bottom: 8px;
  }
  .pd-row-list li::before {
    content: '';
    position: absolute;
    left: 0; top: 9px;
    width: 8px; height: 8px;
    border-radius: 50%;
    background: rgba(51,100,255,.18);
    box-shadow: inset 0 0 0 2px var(--brand);
  }

  /* 规格表 */
  .pd-specs-wrap {
    display: grid;
    grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr);
    gap: clamp(28px, 3.6vw, 64px);
    align-items: start;
  }
  .pd-specs-head h2 {
    font-size: clamp(24px, 2.6vw, 34px);
    font-weight: 700;
    letter-spacing: -.015em;
    line-height: 1.2;
    margin: 0 0 12px;
  }
  .pd-specs-head p {
    font-size: 14.5px;
    line-height: 1.75;
    color: var(--g-500);
    margin: 0;
  }
  .pd-spec-table { width: 100%; border-collapse: collapse; }
  .pd-spec-table tr { border-bottom: 1px solid var(--line-2); }
  .pd-spec-table tr:first-child { border-top: 1px solid var(--line-2); }
  .pd-spec-table th,
  .pd-spec-table td {
    padding: 15px 0;
    text-align: left;
    vertical-align: top;
    font-size: 14.5px;
    line-height: 1.55;
  }
  .pd-spec-table th {
    width: 38%;
    padding-right: 24px;
    font-weight: 400;
    color: var(--g-500);
  }
  .pd-spec-table td { font-weight: 600; color: var(--ink); }

  /* 相关产品 + CTA */
  .pd-related-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    margin-top: clamp(24px, 3vw, 36px);
  }
  .pd-rel {
    display: block;
    padding: 24px 22px;
    border: 1px solid var(--line-2);
    border-radius: 16px;
    background: #fff;
    transition: border-color var(--d-2) var(--ease), transform var(--d-2) var(--ease),
                box-shadow var(--d-2) var(--ease);
  }
  .pd-rel:hover {
    border-color: rgba(51,100,255,.35);
    transform: translateY(-3px);
    box-shadow: 0 14px 32px rgba(19,20,25,.08);
  }
  .pd-rel-cat {
    display: block;
    font-size: 11px;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--g-400);
    margin-bottom: 8px;
  }
  .pd-rel-name {
    display: block;
    font-size: 17px;
    font-weight: 700;
    color: var(--ink);
    margin-bottom: 6px;
  }
  .pd-rel-desc {
    display: block;
    font-size: 13px;
    line-height: 1.6;
    color: var(--g-500);
  }
  .pd-rel--all {
    background: linear-gradient(150deg, #F7F8FA 0%, #EDEEF2 100%);
    border-style: dashed;
    border-color: rgba(19,20,25,.16);
  }
  .pd-rel--all .pd-rel-name { color: var(--brand); }
  .pd-rel--all .pd-rel-name::after { content: " \2192"; }
  .pd-rel--all:hover {
    border-style: solid;
    border-color: rgba(51,100,255,.45);
  }

  .pd-cta {
    background: var(--surface-2);
    border-top: 1px solid var(--line-2);
  }
  .pd-cta-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 28px;
    flex-wrap: wrap;
  }
  .pd-cta-inner h2 {
    font-size: clamp(24px, 2.8vw, 36px);
    font-weight: 700;
    letter-spacing: -.015em;
    line-height: 1.2;
    margin: 0 0 10px;
  }
  .pd-cta-inner p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--g-500);
    margin: 0;
    max-width: 56ch;
  }

  @media (max-width: 1024px) {
    .pd-hero-inner { grid-template-columns: 1fr; }
    .pd-hero-media { order: -1; }
    .pd-hero-media img { max-height: 300px; }
    .pd-hero-media .pd-hero-video { max-height: 300px; }
    .pd-stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .pd-row { grid-template-columns: 1fr; }
    .pd-row--rev .pd-row-media { order: 0; }
    .pd-specs-wrap { grid-template-columns: 1fr; }
    .pd-related-grid { grid-template-columns: 1fr 1fr; }
  }
  @media (max-width: 760px) {
    .pd-subnav { top: 56px; }
    .pd-subnav-inner { height: 48px; }
    .pd-related-grid { grid-template-columns: 1fr; }
    .pd-cta-inner { flex-direction: column; align-items: flex-start; }
  }
  @media (max-width: 560px) {
    .pd-stats-grid { grid-template-columns: 1fr; }
    .pd-actions .pd-btn { width: 100%; justify-content: center; }
  }

  /* ---------- 首页案例轮播：可点击的实景三维入口 ---------- */
  .home-v4 .hv-slide--live {
    display: block;
    text-decoration: none;
    background: #14151A;
  }
  .home-v4 .hv-slide--live .hv-slide-media {
    position: absolute;
    inset: 0;
    overflow: hidden;
  }
  .home-v4 .hv-slide--live .hv-slide-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--d-5) var(--ease);
  }
  .home-v4 .hv-slide--live .hv-slide-cap {
    z-index: 2;
    background: linear-gradient(180deg, rgba(8,9,14,0) 0%, rgba(8,9,14,.80) 100%);
  }
  .home-v4 .hv-slide--live .hv-slide-cap h3 { color: #fff; }
  .home-v4 .hv-slide--live .hv-slide-tag {
    color: rgba(255,255,255,.92);
    border-color: rgba(255,255,255,.34);
    background: rgba(255,255,255,.12);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
  }
  .home-v4 .hv-slide-open {
    position: absolute;
    top: 16px;
    right: 16px;
    z-index: 3;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 9px 14px;
    border-radius: 100px;
    font-size: 11.5px;
    font-weight: 600;
    line-height: 1;
    color: #fff;
    background: rgba(10,12,16,.56);
    border: 1px solid rgba(255,255,255,.30);
    -webkit-backdrop-filter: blur(10px) saturate(140%);
    backdrop-filter: blur(10px) saturate(140%);
    transition: background var(--d-2) var(--ease), border-color var(--d-2) var(--ease);
  }
  .home-v4 .hv-slide-open svg { width: 13px; height: 13px; }
  .home-v4 .hv-slide--live:hover .hv-slide-open {
    background: var(--h-brand);
    border-color: var(--h-brand);
  }
  .home-v4 .hv-slide--live:hover .hv-slide-media img { transform: scale(1.035); }

  /* 项目卡动态内容：硬件展示视频叠在封面上，出帧后淡入 */
  .home-v4 .hv-slide--live .hv-slide-media .hv-slide-video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;
    transition: opacity .7s var(--ease), transform var(--d-5) var(--ease);
  }
  .home-v4 .hv-slide--live .hv-slide-media .hv-slide-video.is-on { opacity: 1; }
  .home-v4 .hv-slide--live:hover .hv-slide-media .hv-slide-video { transform: scale(1.035); }
  .home-v4 .hv-slide--live:focus-visible {
    outline: 2px solid var(--h-brand);
    outline-offset: 3px;
  }

  @media (max-width: 560px) {
    .home-v4 .hv-slide-open { top: 12px; right: 12px; padding: 8px 12px; font-size: 11px; }
  }
  @media (prefers-reduced-motion: reduce) {
    .home-v4 .hv-slide--live .hv-slide-media img { transition: none; transform: none !important; }
    .home-v4 .hv-slide--live .hv-slide-media .hv-slide-video { display: none; }
  }

  /* ---------- 核心能力：悬停轻微放大（原「扇开 / 相邻卡让位」交互已于 2026-10-26 下线） ---------- */
  .home-v4 .hv-cap.is-focus,
  .home-v4 .hv-cap.is-fanned { transform-origin: 50% 50%; }


  /* =====================================================================
     行业详情页 · 纯文字模块（2026-10-19 重做）
     原为「1px 细缝 + 灰底」的表格拼贴，改为独立圆角卡片 + 品牌蓝索引
     ===================================================================== */
  .ind-grid-3,
  .ind-grid-2 {
    gap: 18px;
    background: none;
    border: 0;
    counter-reset: indc;
  }

  .ind-grid-3 .ind-card,
  .ind-grid-2 .ind-outcome {
    position: relative;
    display: flex;
    flex-direction: column;
    padding: 26px 28px 32px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    box-shadow: var(--sh-1);
  }

  /* 问题条：品牌蓝序号（CSS 计数器生成，不写进 DOM） */
  .ind-grid-3 .ind-card::before {
    counter-increment: indc;
    content: counter(indc, decimal-leading-zero);
    display: block;
    margin-bottom: 12px;
    font-size: 11.5px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: .16em;
    color: var(--brand);
  }

  /* 结果条：顶部短品牌蓝细线 */
  .ind-grid-2 .ind-outcome::before {
    content: '';
    display: block;
    width: 26px;
    height: 2px;
    margin-bottom: 16px;
    border-radius: 2px;
    background: var(--brand);
  }

  .ind-grid-3 .ind-card h3,
  .ind-grid-2 .ind-outcome h3 {
    margin: 0 0 9px;
    font-size: 18.5px;
    font-weight: 700;
    line-height: 1.4;
    letter-spacing: -.005em;
    color: var(--ink);
  }

  .ind-grid-3 .ind-card p,
  .ind-grid-2 .ind-outcome p {
    margin: 0;
    font-size: 14.5px;
    line-height: 1.72;
    color: var(--g-600);
  }

  @media (max-width: 900px) {
    .ind-grid-3, .ind-grid-2 { gap: 14px; }
    .ind-grid-3 .ind-card,
    .ind-grid-2 .ind-outcome { padding: 22px 22px 26px; }
    .ind-grid-3 .ind-card h3,
    .ind-grid-2 .ind-outcome h3 { font-size: 17.5px; }
  }

  /* =====================================================================
     会员页 · 定价卡（2026-10-19 重做）
     去掉「直角 + 逐卡变深的灰渐变头带 + 整条蓝头带」，统一为圆角卡片，
     强调卡只保留克制的品牌蓝（3px 顶线 + 浅蓝头带 + 实心蓝按钮）。
     ===================================================================== */
  .pricing-grid { gap: 20px; }

  .section--gray .pricing-grid .plan-card {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    box-shadow: var(--sh-1);
    overflow: hidden;
    transition: transform var(--d-4) var(--ease),
                box-shadow var(--d-4) var(--ease),
                border-color var(--d-4) var(--ease);
  }
  .section--gray .pricing-grid .plan-card:hover {
    transform: translateY(-6px);
    border-color: rgba(19,20,25,.14);
    box-shadow: 0 2px 4px rgba(19,20,25,.04), 0 24px 48px rgba(19,20,25,.10);
  }

  /* 头带 */
  .plan-head,
  .pricing-grid--5 .plan-head {
    padding: 24px 22px 20px;
    background: #fff;
    border-bottom: 1px solid var(--line);
  }
  .plan-card--dark .plan-head {
    background: rgba(51,100,255,.055);
    border-bottom-color: rgba(51,100,255,.16);
  }
  .plan-name,
  .pricing-grid--5 .plan-name {
    margin-bottom: 7px;
    font-size: 20px;
    font-weight: 700;
    letter-spacing: -.015em;
    color: var(--ink);
  }
  .plan-desc {
    font-size: 12.5px;
    line-height: 1.55;
    color: var(--g-500);
  }
  .plan-card--dark .plan-head .plan-name { color: var(--brand); }
  .plan-card--dark .plan-head .plan-desc { color: var(--g-600); }

  /* 卡身 */
  .plan-body { padding: 22px 22px 26px; }
  .pricing-grid--5 .plan-body { padding: 22px 20px 26px; }

  /* 按钮：中性描边药丸，悬停转品牌蓝；强调卡用实心蓝 */
  .plan-cta {
    margin-bottom: 20px;
    padding: 12px 18px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .06em;
    color: var(--ink);
    background: #fff;
    border: 1px solid rgba(19,20,25,.14);
    border-radius: var(--r-pill);
    transition: background var(--d-2) var(--ease), color var(--d-2) var(--ease),
                border-color var(--d-2) var(--ease), box-shadow var(--d-2) var(--ease),
                transform var(--d-2) var(--ease-spring);
  }
  .plan-card:not(.plan-card--dark):hover .plan-cta {
    color: var(--brand);
    background: rgba(51,100,255,.045);
    border-color: rgba(51,100,255,.42);
  }
  .plan-card .plan-cta:hover { transform: translateY(-1px) scale(1.012); }

  .plan-card--dark .plan-cta {
    color: #fff;
    background: var(--brand);
    border-color: var(--brand);
  }
  .plan-card--dark .plan-cta:hover {
    color: #fff;
    background: var(--brand-2);
    border-color: var(--brand-2);
    box-shadow: 0 8px 20px rgba(51,100,255,.30);
  }

  /* 参数行 */
  .plan-quota {
    gap: 8px;
    margin-bottom: 18px;
    padding-bottom: 18px;
    border-bottom: 1px solid var(--line-2);
  }
  .plan-quota span {
    font-size: 11.5px;
    letter-spacing: .02em;
    color: var(--g-500);
  }
  .plan-quota strong { font-size: 13px; font-weight: 600; color: var(--ink); }
  .plan-quota--dark { border-bottom-color: var(--line-2); }
  .plan-quota--dark span { color: var(--g-500); }
  .plan-quota--dark strong { color: var(--ink); }

  /* 功能清单：实心黑点改品牌蓝浅底勾 */
  .plan-features { gap: 9px; }
  .plan-features li {
    padding-left: 23px;
    font-size: 13px;
    line-height: 1.55;
    color: var(--g-700);
  }
  .plan-features li::before {
    top: 3px;
    width: 15px;
    height: 15px;
    background: rgba(51,100,255,.10);
    border-radius: 50%;
  }
  .plan-features li::after {
    left: 4.5px;
    top: 8px;
    width: 6px;
    height: 3px;
    border-left: 1.6px solid var(--brand);
    border-bottom: 1.6px solid var(--brand);
  }
  .plan-features--dark li { color: var(--g-600); }
  .plan-features--dark li::before { background: rgba(51,100,255,.10); }
  .plan-features--dark li::after { border-color: var(--brand); }

  /* 卡底说明 */
  .plan-note {
    margin-top: auto;
    padding-top: 16px;
    border-top: 1px solid var(--line-2);
    font-size: 12px;
    line-height: 1.6;
    color: var(--g-500);
  }
  .plan-card--dark .plan-note { color: var(--g-500); }

  /* 强调卡：Enterprise（.plan-card--dark）*/
  .section--gray .pricing-grid .plan-card--dark {
    background: #fff;
    color: var(--ink);
    border-color: rgba(51,100,255,.45);
    border-top: 3px solid var(--brand);
    box-shadow: 0 2px 6px rgba(51,100,255,.06), 0 18px 40px rgba(51,100,255,.14);
  }
  .section--gray .pricing-grid .plan-card--dark:hover {
    border-color: rgba(51,100,255,.65);
    box-shadow: 0 4px 10px rgba(51,100,255,.08), 0 26px 54px rgba(51,100,255,.20);
  }

  /* 「Included in both versions」改浅灰圆角面板 */
  .plan-shared {
    margin-top: 36px;
    padding: 28px 30px 12px;
    background: var(--surface-2);
    border: 1px solid var(--line-2);
    border-radius: var(--r-md);
  }
  .plan-shared-title {
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0;
    color: var(--ink);
  }
  .plan-shared-list { margin-top: 18px; }
  .plan-shared-list li {
    position: relative;
    margin-bottom: 16px;
    padding-left: 18px;
    font-size: 13px;
    line-height: 1.7;
  }
  .plan-shared-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 8px;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--brand);
  }

  /* 逐张进场 */
  @keyframes planIn {
    from { opacity: 0; transform: translateY(20px) scale(.985); }
    to   { opacity: 1; transform: none; }
  }
  .js .plan-card { opacity: 0; }
  .pricing-grid.is-in .plan-card {
    opacity: 1;
    animation: planIn var(--d-5) var(--ease) backwards;
  }
  .pricing-grid.is-in .plan-card:nth-child(2) { animation-delay: .07s; }
  .pricing-grid.is-in .plan-card:nth-child(3) { animation-delay: .14s; }
  .pricing-grid.is-in .plan-card:nth-child(4) { animation-delay: .21s; }
  .pricing-grid.is-in .plan-card:nth-child(5) { animation-delay: .28s; }
  .no-io .plan-card { opacity: 1; }

  @media (max-width: 900px) {
    .plan-head, .pricing-grid--5 .plan-head { padding: 22px 20px 18px; }
    .plan-body, .pricing-grid--5 .plan-body { padding: 20px 20px 24px; }
    .plan-shared { padding: 24px 22px 8px; }
  }

  @media (prefers-reduced-motion: reduce) {
    .js .plan-card { opacity: 1; }
    .pricing-grid.is-in .plan-card { animation: none; }
    .plan-card, .plan-cta { transition: none; }
    .plan-card:hover { transform: none; }
    .plan-card .plan-cta:hover { transform: none; }
  }

  /* 分组只快速淡入，位移交给卡片，避免两层位移叠加导致错峰看不出来 */
  .js .plan-group.reveal,
  .js .plan-group.reveal.is-in {
    transform: none;
    transition: opacity var(--d-3) var(--ease);
    transition-delay: 0s;
  }

  /* 两列宽卡上按钮收成紧凑药丸，不拉满整行 */
  .pricing-grid--2 .plan-cta { width: -moz-fit-content; width: fit-content; min-width: 216px; }
  @media (max-width: 700px) {
    .pricing-grid--2 .plan-cta { width: 100%; min-width: 0; }
  }

  /* 旗舰档（Ultimate）比其余卡略重一档，但不与 Enterprise 抢视觉 */
  .section--gray .pricing-grid .plan-card--highlight {
    border-color: rgba(19,20,25,.17);
    box-shadow: 0 2px 4px rgba(19,20,25,.05), 0 14px 32px rgba(19,20,25,.08);
  }

  /* =====================================================================
     产品详情页 · 扫描预览框（Handheld Scanners 三页，2026-10-19）
     取代原「01/02/03 图文行」，点整框在浏览器里打开 3D 扫描
     ===================================================================== */
  .pd-preview {
    position: relative;
    display: block;
    height: clamp(300px, 34vw, 560px);
    border-radius: 20px;
    overflow: hidden;
    background: #0B0D10;
    box-shadow: var(--sh-2);
    text-decoration: none;
    isolation: isolate;
    -webkit-tap-highlight-color: transparent;
  }
  .pd-preview:focus-visible {
    outline: 3px solid var(--brand);
    outline-offset: 3px;
  }
  .pd-preview-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1.001);
    transition: transform var(--d-6) var(--ease), filter var(--d-4) var(--ease);
  }
  .pd-preview:hover .pd-preview-img { transform: scale(1.035); }

  .pd-preview-video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1.001);
    opacity: 0;
    transition: opacity .7s var(--ease), transform var(--d-6) var(--ease);
  }
  .pd-preview.is-playing .pd-preview-video,
  .pd-preview-video.is-on { opacity: 1; }
  .pd-preview:hover .pd-preview-video { transform: scale(1.035); }

  .pd-preview-shade {
    position: absolute;
    inset: 0;
    background:
      linear-gradient(180deg, rgba(10,11,14,.55) 0%, rgba(10,11,14,.08) 26%, rgba(10,11,14,.72) 62%, rgba(10,11,14,.94) 100%),
      linear-gradient(100deg, rgba(10,11,14,.55) 0%, rgba(10,11,14,0) 56%);
  }

  .pd-preview-badge {
    position: absolute;
    top: clamp(18px, 2.4vw, 30px);
    left: clamp(18px, 2.4vw, 30px);
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 7px 14px;
    border-radius: var(--r-pill);
    background: rgba(255,255,255,.12);
    border: 1px solid rgba(255,255,255,.26);
    -webkit-backdrop-filter: blur(16px) saturate(140%);
    backdrop-filter: blur(16px) saturate(140%);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: #fff;
  }
  .pd-preview-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #4E7BFF;
    box-shadow: 0 0 0 0 rgba(78,123,255,.75);
    animation: pdPulse 2.4s var(--ease) infinite;
  }
  @keyframes pdPulse {
    0%   { box-shadow: 0 0 0 0 rgba(78,123,255,.7); }
    70%  { box-shadow: 0 0 0 7px rgba(78,123,255,0); }
    100% { box-shadow: 0 0 0 0 rgba(78,123,255,0); }
  }

  .pd-preview-body {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    padding: clamp(22px, 3.2vw, 44px);
  }
  .pd-preview-h3 {
    display: block;
    max-width: 20ch;
    font-size: clamp(24px, 2.6vw, 34px);
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -.02em;
    color: #fff;
    text-shadow: 0 2px 20px rgba(8,10,14,.5);
  }
  .pd-preview-desc {
    display: block;
    max-width: 56ch;
    font-size: 14.5px;
    line-height: 1.7;
    color: rgba(255,255,255,.76);
  }
  .pd-preview-cta {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-top: 6px;
    padding: 12px 20px;
    border-radius: var(--r-pill);
    background: #fff;
    color: #0A0A0A;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .06em;
    text-transform: uppercase;
    transition: background var(--d-2) var(--ease), color var(--d-2) var(--ease),
                box-shadow var(--d-2) var(--ease);
  }
  .pd-preview:hover .pd-preview-cta {
    background: var(--brand);
    color: #fff;
    box-shadow: 0 10px 26px rgba(51,100,255,.35);
  }
  .pd-preview-arrow {
    width: 14px;
    height: 14px;
    transition: transform var(--d-2) var(--ease-spring);
  }
  .pd-preview:hover .pd-preview-arrow { transform: translate(2px, -2px); }

  @media (max-width: 760px) {
    .pd-preview { height: clamp(300px, 58vw, 420px); border-radius: 16px; }
    .pd-preview-h3 { max-width: 14ch; font-size: 22px; }
    .pd-preview-desc { font-size: 13.5px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
    .pd-preview-cta { padding: 11px 17px; font-size: 11.5px; }
  }

  @media (prefers-reduced-motion: reduce) {
    .pd-preview-img,
    .pd-preview-video,
    .pd-preview-cta,
    .pd-preview-arrow { transition: none; }
    .pd-preview:hover .pd-preview-img,
    .pd-preview:hover .pd-preview-video { transform: none; }
    .pd-preview:hover .pd-preview-arrow { transform: none; }
    .pd-preview-dot { animation: none; }
    .pd-preview-video { display: none; }
  }


  /* =====================================================================
     首页案例轮播（2026-10-19 二次）：每张卡自带左右切换
     ===================================================================== */
  .home-v4 .hv-slide-link {
    position: absolute;
    inset: 0;
    display: block;
    border-radius: inherit;
    text-decoration: none;
    z-index: 1;
  }
  .home-v4 .hv-slide-link:focus-visible {
    outline: 2px solid var(--h-brand);
    outline-offset: -2px;
    border-radius: 16px;
  }
  .home-v4 .hv-slide-nav {
    position: absolute;
    top: 50%;
    z-index: 4;
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    padding: 0;
    border-radius: 50%;
    background: rgba(255,255,255,.92);
    color: var(--h-ink);
    border: 1px solid rgba(19,20,25,.10);
    box-shadow: 0 6px 18px rgba(19,20,25,.10);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    opacity: 0;
    transform: translateY(-50%) scale(.92);
    pointer-events: none;
    transition: opacity var(--d-3) var(--ease),
                transform var(--d-3) var(--ease-spring-soft),
                background var(--d-2) var(--ease),
                color var(--d-2) var(--ease),
                border-color var(--d-2) var(--ease),
                box-shadow var(--d-2) var(--ease);
  }
  .home-v4 .hv-slide-nav--prev { left: 14px; }
  .home-v4 .hv-slide-nav--next { right: 14px; }
  .home-v4 .hv-slide-nav svg { width: 19px; height: 19px; }
  .home-v4 .hv-slide.is-active .hv-slide-nav,
  .home-v4 .hv-slide:hover .hv-slide-nav,
  .home-v4 .hv-slide:focus-within .hv-slide-nav {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(-50%) scale(1);
  }
  .home-v4 .hv-slide-nav:hover {
    background: var(--h-brand);
    color: #fff;
    border-color: var(--h-brand);
    box-shadow: 0 10px 26px rgba(51,100,255,.28);
  }

  @media (max-width: 760px) {
    .home-v4 .hv-slide-nav { width: 36px; height: 36px; }
    .home-v4 .hv-slide-nav--prev { left: 10px; }
    .home-v4 .hv-slide-nav--next { right: 10px; }
    .home-v4 .hv-slide-nav svg { width: 16px; height: 16px; }
  }

  @media (prefers-reduced-motion: reduce) {
    .home-v4 .hv-slide-nav { transition: none; }
  }

  /* =====================================================================
     产品总览页（2026-10-19）：hero + 分组卡片，总览不放参数
     ===================================================================== */
  .pr-hero {
    padding: calc(var(--section-y) + 26px) var(--shell-inset) clamp(44px, 5vw, 80px);
    background: var(--surface);
  }
  .pr-hero-inner {
    display: grid;
    grid-template-columns: minmax(0, 1.18fr) minmax(0, .82fr);
    gap: clamp(32px, 4vw, 80px);
    align-items: end;
    max-width: var(--shell-inner);
    margin: 0 auto;
  }
  .pr-hero-aside { padding-bottom: 6px; }
  .pr-eyebrow {
    display: block;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--brand);
    margin-bottom: 16px;
  }
  .pr-title {
    font-size: clamp(34px, 4.6vw, 60px);
    font-weight: 700;
    letter-spacing: -.025em;
    line-height: 1.08;
    max-width: 26ch;
    margin: 0;
    color: var(--ink);
  }
  .pr-lead {
    margin: 0;
    max-width: 58ch;
    font-size: clamp(15px, 1.15vw, 17px);
    line-height: 1.75;
    color: var(--g-500);
  }
  .pr-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 26px; }

  .pr-btn {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    padding: 13px 24px;
    border-radius: var(--r-pill);
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
    transition: background var(--d-2) var(--ease), border-color var(--d-2) var(--ease),
                color var(--d-2) var(--ease), box-shadow var(--d-2) var(--ease),
                transform var(--d-2) var(--ease);
  }
  .pr-btn--solid {
    background: var(--ink);
    border: 1px solid var(--ink);
    color: #fff;
  }
  .pr-btn--solid:hover {
    background: var(--brand);
    border-color: var(--brand);
    box-shadow: 0 12px 26px rgba(51,100,255,.26);
    transform: translateY(-1px);
  }

  .pr-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .pr-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pr-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .pr-grid-item { display: flex; min-width: 0; }

  .pr-card {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 18px;
    overflow: hidden;
    color: inherit;
    text-decoration: none;
    transition: transform .55s var(--ease), box-shadow .55s var(--ease), border-color .55s var(--ease);
  }
  .pr-card:hover {
    transform: translateY(-5px);
    border-color: rgba(19,20,25,.18);
    box-shadow: 0 20px 44px rgba(19,20,25,.10);
  }
  .pr-card:focus-visible { outline: 3px solid var(--brand); outline-offset: 3px; }

  .pr-card-media {
    position: relative;
    aspect-ratio: 16 / 11;
    background: #fff;
    border-bottom: 1px solid var(--line-2);
    overflow: hidden;
  }
  .pr-card-media img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    padding: clamp(18px, 2.4vw, 34px);
    object-fit: contain;
    transition: transform .7s var(--ease);
  }
  .pr-card:hover .pr-card-media img { transform: scale(1.035); }

  .pr-card-media--cover img {
    padding: 0;
    object-fit: cover;
  }
  .pr-card-media--left img { object-position: left center; }

  /* 产品卡：旋转实拍视频（等比完整显示，白底与其他产品渲染一致） */
  .pr-card-media .pr-card-video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    padding: clamp(18px, 2.4vw, 34px);
    object-fit: contain;
    transition: transform .7s var(--ease);
  }
  .pr-card:hover .pr-card-media .pr-card-video { transform: scale(1.035); }

  .pr-card-body {
    display: flex;
    flex-direction: column;
    gap: 9px;
    flex: 1 1 auto;
    padding: clamp(20px, 2.2vw, 28px);
  }
  .pr-card-eyebrow {
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--brand);
  }
  .pr-card-name {
    margin: 0;
    font-size: clamp(18px, 1.5vw, 21px);
    font-weight: 700;
    letter-spacing: -.012em;
    line-height: 1.25;
    color: var(--ink);
  }
  .pr-card-line {
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.5;
    color: var(--ink);
  }
  .pr-card-desc {
    margin: 2px 0 0;
    font-size: 13.5px;
    line-height: 1.72;
    color: var(--g-500);
  }
  .pr-card-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: auto;
    padding-top: 18px;
    font-size: 12.5px;
    font-weight: 600;
    letter-spacing: .01em;
    color: var(--ink);
    transition: color var(--d-2) var(--ease);
  }
  .pr-card-arrow {
    width: 15px;
    height: 15px;
    transition: transform var(--d-2) var(--ease);
  }
  .pr-card:hover .pr-card-link { color: var(--brand); }
  .pr-card:hover .pr-card-arrow { transform: translateX(4px); }

  .pr-card--wide { flex-direction: row; align-items: stretch; }
  .pr-card--wide .pr-card-media {
    flex: 0 0 44%;
    aspect-ratio: auto;
    min-height: 300px;
    border-bottom: 0;
    border-right: 1px solid var(--line-2);
  }
  .pr-card--wide .pr-card-media img { padding: clamp(26px, 3.6vw, 52px); }
  .pr-card--wide .pr-card-body {
    justify-content: center;
    padding: clamp(28px, 3.6vw, 52px);
    gap: 12px;
  }
  .pr-card--wide .pr-card-name { font-size: clamp(22px, 2.2vw, 28px); }
  .pr-card--wide .pr-card-desc { max-width: 52ch; }
  .pr-card--wide .pr-card-link { margin-top: 10px; padding-top: 0; }

  .pr-close {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 22px;
    padding: clamp(36px, 4.4vw, 64px) clamp(24px, 3vw, 56px);
    text-align: center;
    background: var(--surface-2);
    border: 1px solid var(--line-2);
    border-radius: 24px;
  }
  .pr-close-title {
    margin: 0;
    font-size: clamp(22px, 2.4vw, 30px);
    font-weight: 700;
    letter-spacing: -.018em;
    color: var(--ink);
  }
  .pr-tags {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
    max-width: 900px;
  }
  .pr-tags span {
    padding: 7px 13px;
    border-radius: var(--r-pill);
    border: 1px solid var(--line);
    background: #fff;
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: .07em;
    color: var(--g-500);
  }

  @media (max-width: 1080px) {
    .pr-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  @media (max-width: 760px) {
    .pr-hero { padding-top: calc(var(--section-y) + 10px); }
    .pr-hero-inner { grid-template-columns: 1fr; gap: 20px; align-items: start; }
    .pr-title { max-width: none; }
    .pr-grid--2,
    .pr-grid--3 { grid-template-columns: 1fr; }
    .pr-card-media { aspect-ratio: 16 / 10; }
    .pr-card--wide { flex-direction: column; }
    .pr-card--wide .pr-card-media {
      flex: none;
      min-height: 0;
      aspect-ratio: 16 / 10;
      border-right: 0;
      border-bottom: 1px solid var(--line-2);
    }
  }
  @media (prefers-reduced-motion: reduce) {
    .pr-card,
    .pr-card-media img,
    .pr-card-arrow,
    .pr-btn { transition: none; }
    .pr-card:hover { transform: none; }
    .pr-card:hover .pr-card-media img { transform: none; }
    .pr-card:hover .pr-card-arrow { transform: none; }
    .pr-btn--solid:hover { transform: none; }
  }

  /* =====================================================================
     行业方案总览（2026-10-20）：hero + 两条方案线翻页
     ===================================================================== */

  /* ---------- hero ---------- */
  .sd-hero {
    position: relative;
    overflow: hidden;
    padding: calc(var(--section-y) + 26px) var(--shell-inset) clamp(46px, 5vw, 78px);
    background: var(--surface);
  }
  .sd-hero::before {
    content: '';
    position: absolute;
    top: -220px;
    right: -140px;
    width: 660px;
    height: 660px;
    background: radial-gradient(circle, rgba(51, 100, 255, .10), rgba(51, 100, 255, 0) 68%);
    pointer-events: none;
  }
  .sd-hero-inner {
    max-width: var(--shell-inner);
    margin-inline: auto;
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1.16fr) minmax(0, .84fr);
    gap: clamp(30px, 4vw, 76px);
    align-items: end;
  }
  .sd-eyebrow {
    display: block;
    margin-bottom: 16px;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--brand);
  }
  .sd-title {
    margin: 0;
    max-width: 24ch;
    font-size: clamp(34px, 4.6vw, 58px);
    font-weight: 700;
    letter-spacing: -.025em;
    line-height: 1.08;
    color: var(--ink);
  }
  .sd-lead {
    margin: 0;
    max-width: 56ch;
    font-size: clamp(15px, 1.12vw, 17px);
    line-height: 1.75;
    color: var(--g-500);
  }
  .sd-facts {
    display: flex;
    flex-wrap: wrap;
    gap: clamp(22px, 3vw, 46px);
    margin-top: 26px;
    padding-top: 22px;
    border-top: 1px solid var(--line-2);
  }
  .sd-fact { display: flex; flex-direction: column; gap: 3px; }
  .sd-fact-n {
    font-size: 22px;
    font-weight: 700;
    letter-spacing: -.02em;
    line-height: 1.1;
    color: var(--ink);
    font-variant-numeric: tabular-nums;
  }
  .sd-fact-l { font-size: 12px; color: var(--g-500); }

  /* ---------- 册页容器 ---------- */
  .sd-book {
    padding: clamp(40px, 4.6vw, 68px) var(--shell-inset) clamp(64px, 8vw, 108px);
    background: var(--surface-2);
    border-top: 1px solid var(--line-2);
  }

  /* ---------- 章节切换（模块化 tab） ---------- */
  .sd-tabs {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin-bottom: clamp(26px, 3vw, 38px);
  }
  .sd-tab {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    overflow: hidden;
    padding: 17px 22px 17px 21px;
    text-align: left;
    background: rgba(255, 255, 255, .58);
    border: 1px solid var(--line);
    border-radius: 16px;
    transition: background var(--d-3) var(--ease),
                border-color var(--d-3) var(--ease),
                box-shadow var(--d-4) var(--ease),
                transform var(--d-3) var(--ease);
  }
  .sd-tab::after {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--brand);
    transform: scaleY(0);
    transform-origin: 50% 0;
    transition: transform var(--d-5) var(--ease);
  }
  .sd-tab:hover { background: #fff; transform: translateY(-2px); }
  .sd-tab.is-active {
    background: #fff;
    border-color: transparent;
    box-shadow: 0 16px 36px rgba(19, 20, 25, .09);
  }
  .sd-tab.is-active::after { transform: scaleY(1); }
  .sd-tab:focus-visible { outline: 2px solid var(--brand); outline-offset: 3px; }
  .sd-tab-idx {
    padding-top: 4px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .06em;
    color: var(--g-400);
    font-variant-numeric: tabular-nums;
    transition: color var(--d-3) var(--ease);
  }
  .sd-tab.is-active .sd-tab-idx { color: var(--brand); }
  .sd-tab-body { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
  .sd-tab-name {
    font-size: clamp(17px, 1.4vw, 20px);
    font-weight: 700;
    letter-spacing: -.015em;
    line-height: 1.2;
    color: var(--g-600);
    transition: color var(--d-3) var(--ease);
  }
  .sd-tab.is-active .sd-tab-name,
  .sd-tab:hover .sd-tab-name { color: var(--ink); }
  .sd-tab-meta {
    font-size: 12.5px;
    line-height: 1.5;
    color: var(--g-500);
  }

  /* ---------- 翻页舞台 ---------- */
  .sd-stage {
    position: relative;
    perspective: 2000px;
    perspective-origin: 50% 42%;
    /* 未激活页带 rotateY，投影会横向外扩；只裁横向，纵向留给卡片悬停阴影 */
    overflow-x: clip;
    overflow-y: visible;
    transition: height .62s var(--ease);
  }
  .sd-page {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    scroll-margin-top: 96px;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translate3d(calc(var(--dir, 1) * 58px), 0, 0) rotateY(calc(var(--dir, 1) * -10deg)) scale(.985);
    transform-origin: calc(50% - var(--dir, 1) * 50%) 50%;
    transition: opacity .5s var(--ease),
                transform .8s var(--ease-soft),
                visibility 0s linear .8s;
    backface-visibility: hidden;
  }
  .sd-page.is-active {
    position: relative;
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: none;
    transition: opacity .52s var(--ease),
                transform .8s var(--ease-soft),
                visibility 0s;
  }
  .sd-page.is-leaving {
    visibility: visible;
    opacity: 0;
    transform: translate3d(calc(var(--dir, 1) * -46px), 0, 0) rotateY(calc(var(--dir, 1) * 7deg)) scale(.985);
    transition: opacity .46s var(--ease),
                transform .8s var(--ease-soft),
                visibility 0s;
  }

  .sd-page-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: clamp(20px, 3vw, 48px);
    margin-bottom: clamp(22px, 2.6vw, 32px);
  }
  .sd-page-head-copy { max-width: 800px; min-width: 0; }
  .sd-page-count {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    flex: 0 0 auto;
    line-height: 1;
  }
  .sd-page-num {
    font-size: clamp(30px, 3.4vw, 46px);
    font-weight: 700;
    letter-spacing: -.04em;
    color: var(--ink);
    font-variant-numeric: tabular-nums;
  }
  .sd-page-num-lbl {
    margin-top: 4px;
    font-size: 11px;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--g-400);
  }
  .sd-line-name {
    margin: 0 0 9px;
    font-size: clamp(22px, 2.2vw, 30px);
    font-weight: 700;
    letter-spacing: -.022em;
    line-height: 1.24;
    color: var(--ink);
  }
  .sd-line-sub {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--g-500);
  }

  /* ---------- 方案卡 ---------- */
  .sd-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
    align-items: stretch;
  }
  .sd-grid > * { min-width: 0; }

  .sd-card {
    position: relative;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 18px;
    opacity: 0;
    transform: translateY(16px);
    transition: opacity .5s var(--ease) calc(var(--i, 0) * 62ms),
                transform .58s var(--ease) calc(var(--i, 0) * 62ms),
                box-shadow .55s var(--ease),
                border-color .5s var(--ease);
  }
  .sd-page.is-active .sd-card { opacity: 1; transform: none; }
  .sd-page.is-active .sd-card:hover {
    transform: translateY(-6px);
    border-color: rgba(51, 100, 255, .30);
    box-shadow: 0 22px 48px rgba(19, 20, 25, .12);
    transition-delay: 0s;
  }

  .sd-card-idx {
    position: absolute;
    top: 14px;
    left: 14px;
    z-index: 2;
    padding: 5px 10px;
    border-radius: var(--r-pill);
    background: rgba(255, 255, 255, .92);
    color: var(--ink);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .06em;
    font-variant-numeric: tabular-nums;
    backdrop-filter: blur(6px);
    transition: background var(--d-3) var(--ease), color var(--d-3) var(--ease);
  }
  .sd-card:hover .sd-card-idx { background: var(--brand); color: #fff; }

  .sd-card-media {
    position: relative;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    background: var(--surface-2);
    border-bottom: 1px solid var(--line-2);
  }
  .sd-card-media img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .85s var(--ease);
  }
  .sd-card:hover .sd-card-media img { transform: scale(1.05); }

  .sd-card-body {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    gap: 9px;
    padding: 21px clamp(18px, 1.8vw, 26px) 19px;
  }
  .sd-card-name {
    margin: 0;
    font-size: clamp(18px, 1.5vw, 21px);
    font-weight: 700;
    letter-spacing: -.02em;
    line-height: 1.25;
    color: var(--ink);
  }
  .sd-card-desc {
    margin: 0;
    font-size: 14px;
    line-height: 1.68;
    color: var(--g-500);
  }
  .sd-card-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin-top: auto;
    padding-top: 15px;
    border-top: 1px solid var(--line-2);
  }
  .sd-card-value {
    font-size: 12px;
    line-height: 1.5;
    color: var(--g-500);
  }
  .sd-card-go {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex: 0 0 auto;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--brand);
    white-space: nowrap;
    transition: gap var(--d-3) var(--ease);
  }
  .sd-card:hover .sd-card-go { gap: 10px; }
  .sd-card-arrow { width: 15px; height: 15px; }

  /* ---------- 翻页控制条 ---------- */
  .sd-pager {
    display: flex;
    align-items: center;
    gap: 18px;
    margin-top: clamp(26px, 3vw, 36px);
    padding-top: 20px;
    border-top: 1px solid var(--line);
  }
  .sd-pager-count {
    display: flex;
    align-items: baseline;
    gap: 6px;
    font-variant-numeric: tabular-nums;
  }
  .sd-count-n {
    font-size: 15px;
    font-weight: 700;
    letter-spacing: .01em;
    color: var(--ink);
  }
  .sd-count-t { font-size: 12px; color: var(--g-400); }
  .sd-dots { display: flex; gap: 8px; margin-right: auto; }
  .sd-dot {
    width: 26px;
    height: 3px;
    padding: 0;
    border-radius: 2px;
    background: var(--surface-3);
    transition: background var(--d-3) var(--ease), width var(--d-4) var(--ease);
  }
  .sd-dot.is-active { width: 46px; background: var(--brand); }
  .sd-dot:focus-visible { outline: 2px solid var(--brand); outline-offset: 4px; }
  .sd-nav { display: flex; gap: 10px; }
  .sd-arrow {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    border: 1px solid var(--line);
    background: #fff;
    color: var(--ink);
    transition: background var(--d-3) var(--ease),
                border-color var(--d-3) var(--ease),
                color var(--d-3) var(--ease),
                transform var(--d-3) var(--ease);
  }
  .sd-arrow svg { width: 18px; height: 18px; }
  .sd-arrow:hover {
    background: var(--brand);
    border-color: var(--brand);
    color: #fff;
    transform: translateY(-2px);
  }
  .sd-arrow:active { transform: translateY(0) scale(.96); }
  .sd-arrow:focus-visible { outline: 2px solid var(--brand); outline-offset: 3px; }

  /* ---------- 响应式 ---------- */
  @media (max-width: 1080px) {
    .sd-hero-inner { grid-template-columns: minmax(0, 1fr) minmax(0, .9fr); gap: 32px; }
    .sd-tab-meta { font-size: 12px; }
  }
  @media (max-width: 860px) {
    .sd-hero-inner { grid-template-columns: 1fr; gap: 22px; align-items: start; }
    .sd-facts { margin-top: 20px; padding-top: 18px; }
    .sd-card-foot { flex-wrap: wrap; gap: 8px 12px; }
  }
  @media (max-width: 760px) {
    .sd-tabs { grid-template-columns: 1fr; gap: 10px; }
    .sd-grid { grid-template-columns: 1fr; }
    .sd-page-head { flex-direction: column; align-items: flex-start; gap: 14px; margin-bottom: 20px; }
    .sd-page-count { flex-direction: row; align-items: baseline; gap: 8px; }
    .sd-page-num { font-size: 30px; }
    .sd-pager { gap: 14px; }
    .sd-dots { gap: 6px; }
  }
  @media (max-width: 560px) {
    .sd-hero { padding-top: calc(var(--section-y) + 12px); }
    .sd-book { padding-top: 36px; }
    .sd-tab { padding: 15px 16px; gap: 12px; border-radius: 14px; }
    .sd-card-body { padding: 18px 18px 16px; }
    .sd-arrow { width: 40px; height: 40px; }
    .sd-arrow svg { width: 16px; height: 16px; }
  }

  @media (prefers-reduced-motion: reduce) {
    .sd-stage,
    .sd-page,
    .sd-page.is-active,
    .sd-page.is-leaving,
    .sd-card,
    .sd-card-media img,
    .sd-tab,
    .sd-arrow,
    .sd-dot { transition: none; }
    .sd-page,
    .sd-page.is-active,
    .sd-page.is-leaving { transform: none; }
    .sd-page.is-active .sd-card { opacity: 1; transform: none; }
    .sd-page.is-active .sd-card:hover,
    .sd-card:hover .sd-card-media img,
    .sd-tab:hover,
    .sd-arrow:hover { transform: none; }
  }

  /* =====================================================================
     顶栏 mega 菜单（2026-10-20 按首页原型改）
     导航收成 4 项：Products / Industry Solutions / Support & Downloads / About
     Products 面板三列，Industry Solutions 两列
     ===================================================================== */
  .nav .dropdown-mega--prod {
    min-width: 1010px;
    max-width: calc(100vw - 48px);
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0 22px;
  }
  .nav .dropdown-mega--prod .drop-col { min-width: 0; }
  .nav .dropdown-mega--prod .drop-group:not(:first-child) { margin-top: 12px; }
  .nav .dropdown-mega--prod .drop-group:not(:first-child)::before {
    content: ''; display: block; height: 1px; margin: 0 10px 9px;
    background: var(--line-2);
  }
  .nav .dropdown-mega--prod a { white-space: nowrap; }

  @media (max-width: 1180px) {
    .nav .dropdown-mega--prod { min-width: 860px; gap: 0 14px; }
  }

  /* =====================================================================
     首页 3 · 产品类型（2026-10-26 由 2×2 改为并排；2026-10-26 撤下
     Cyberspace Buildings 后由四个改为三个）
     ===================================================================== */
  .home-v4 .hv-plat-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
  }
  .home-v4 .hv-plat {
    position: relative;
    display: block;
    border-radius: 16px;
    overflow: hidden;
    background: #fff;
    border: 1px solid var(--line);
    transform-origin: 50% 50%;
    transition: box-shadow var(--d-3) var(--ease),
                border-color var(--d-3) var(--ease),
                transform var(--d-3) var(--ease);
  }
  .home-v4 .hv-plat-media {
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: #EDEEF2;
  }
  .home-v4 .hv-plat-media img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform .72s var(--ease);
  }
  .home-v4 .hv-plat-body {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 16px 18px 17px;
  }
  .home-v4 .hv-plat-body h3 {
    font-size: clamp(15px, 1.12vw, 17px);
    font-weight: 700;
    letter-spacing: -.015em;
    line-height: 1.2;
    color: var(--h-ink);
  }
  .home-v4 .hv-plat-go {
    flex: none;
    width: 26px; height: 26px;
    display: grid; place-items: center;
    border-radius: 999px;
    background: rgba(51,100,255,.08);
    color: var(--h-brand);
    transition: background var(--d-3) var(--ease), transform var(--d-3) var(--ease);
  }
  .home-v4 .hv-plat-go svg { width: 13px; height: 13px; }
  /* 与能力卡同一套克制的悬停语汇：1.5% 微放大 + 轻阴影 */
  .home-v4 .hv-plat:hover {
    transform: scale(1.015);
    border-color: transparent;
    box-shadow: 0 0 0 1px rgba(51,100,255,.20), 0 16px 34px rgba(19,20,25,.10);
  }
  .home-v4 .hv-plat:hover .hv-plat-media img { transform: scale(1.03); }
  .home-v4 .hv-plat:hover .hv-plat-go { background: var(--h-brand); color: #fff; }

  @media (max-width: 1180px) {
    .home-v4 .hv-plat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  }
  @media (max-width: 900px) {
    .home-v4 .hv-plat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  }
  @media (max-width: 700px) {
    .home-v4 .hv-plat-grid { grid-template-columns: 1fr; gap: 14px; }
    .home-v4 .hv-plat-body { padding: 15px 18px 16px; }
  }

  /* =====================================================================
     首页 4 · 应用行业 4×2（2026-10-20 按原型）
     ===================================================================== */
  .home-v4 .hv-ind-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
  }
  .home-v4 .hv-ind {
    position: relative;
    display: block;
    aspect-ratio: 4 / 3;
    border-radius: 14px;
    overflow: hidden;
    background: #E9EBF1;
    isolation: isolate;
    transition: box-shadow var(--d-3) var(--ease);
  }
  .home-v4 .hv-ind img {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform .72s var(--ease);
  }
  .home-v4 .hv-ind::after {
    content: '';
    position: absolute; inset: 0; z-index: 1;
    background: linear-gradient(180deg, rgba(10,12,20,.06) 0%, rgba(10,12,20,.26) 52%, rgba(10,12,20,.62) 100%);
    transition: opacity var(--d-3) var(--ease);
  }
  .home-v4 .hv-ind-name {
    position: absolute;
    left: 14px; right: 14px; bottom: 15px; z-index: 2;
    text-align: center;
    font-size: 14.5px;
    font-weight: 600;
    letter-spacing: -.005em;
    line-height: 1.3;
    color: #fff;
    text-shadow: 0 1px 14px rgba(6,8,16,.45);
  }
  .home-v4 .hv-ind:hover {
    box-shadow: 0 0 0 1px var(--h-ring), 0 18px 40px rgba(19,20,25,.18);
  }
  .home-v4 .hv-ind:hover img { transform: scale(1.06); }
  .home-v4 .hv-ind:hover::after { opacity: .88; }

  @media (max-width: 1024px) {
    .home-v4 .hv-ind-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  @media (max-width: 560px) {
    .home-v4 .hv-ind-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
    .home-v4 .hv-ind-name { font-size: 12.5px; left: 8px; right: 8px; bottom: 10px; }
  }

  /* 首页：窄屏取消标题里的硬换行，避免出现孤行 */
  @media (max-width: 700px) {
    .home-v4 .hv-head-title br { display: none; }
  }

  /* 应用行业卡：压深底部渐变，保证白色标签在亮照片上可读 */
  .home-v4 .hv-ind::after {
    background: linear-gradient(180deg, rgba(10,12,20,.08) 0%, rgba(10,12,20,.20) 45%, rgba(10,12,20,.74) 100%);
  }

  /* 抽屉条目变多（24 项）后压缩行高，避免一屏只放得下四五条 */
  .drawer li.drawer-sub a { padding: 9px 0; }
  .drawer li.drawer-sub a .di { width: 26px; height: 26px; flex: 0 0 26px; }
  .drawer ul { gap: 2px; }

  /* =====================================================================
     首页 4 · 应用行业改 3×2（2026-10-20 用户更新原型）
     8 张 4 列 → 6 张 3 列；卡片比例 4:3 → 16:10
     ===================================================================== */
  .home-v4 .hv-ind-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
  }
  .home-v4 .hv-ind { aspect-ratio: 16 / 10; }
  .home-v4 .hv-ind-name {
    left: 18px; right: 18px; bottom: 17px;
    font-size: 15.5px;
  }

  @media (max-width: 1024px) {
    .home-v4 .hv-ind-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  }
  @media (max-width: 560px) {
    .home-v4 .hv-ind-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
    .home-v4 .hv-ind { aspect-ratio: 4 / 3; }
    .home-v4 .hv-ind-name { left: 8px; right: 8px; bottom: 10px; font-size: 12.5px; }
  }

  /* 应用行业：底部渐变加深，保证白字压在亮照片上也清楚 */
  .home-v4 .hv-ind::after {
    background: linear-gradient(180deg, rgba(10,12,20,.06) 0%, rgba(10,12,20,.22) 40%, rgba(10,12,20,.84) 100%);
  }
  /* 副标题避免出现「record.」这类单孤词 */
  #applications .hv-head-desc { text-wrap: balance; }


/* =====================================================================
   方案书内嵌档位（2026-10-20）：Membership 拆分进两条方案线
   ===================================================================== */
.pd-plans .sd-plans {
  margin-top: clamp(40px, 4.6vw, 64px);
  padding-top: clamp(30px, 3.4vw, 46px);
  border-top: 1px solid var(--line-2);
}
.pd-plans .sd-plans-head { margin-bottom: 26px; }
.pd-plans .sd-plans-label {
  display: block;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--g-500);
  margin-bottom: 10px;
}
.pd-plans .sd-plans-title {
  margin: 0 0 10px;
  font-size: clamp(22px, 2.3vw, 30px);
  line-height: 1.2;
  font-weight: 700;
  letter-spacing: -.02em;
}
.pd-plans .sd-plans-sub {
  margin: 0;
  max-width: 760px;
  font-size: 15px;
  line-height: 1.75;
  color: var(--g-600);
}
.pd-plans .sd-plans .plan-group { margin-top: 0; }
.pd-plans .sd-plans .membership-notes { margin-top: 26px; }

/* 强调卡（Enterprise）在方案书内保持与会员页一致的浅色处理 */
.pd-plans .sd-plans .pricing-grid .plan-card--dark {
  background: #fff;
  color: var(--ink);
  border-color: rgba(51,100,255,.45);
  border-top: 3px solid var(--brand);
  box-shadow: 0 2px 6px rgba(51,100,255,.06), 0 18px 40px rgba(51,100,255,.14);
}
.pd-plans .sd-plans .pricing-grid .plan-card--dark:hover {
  border-color: rgba(51,100,255,.65);
  box-shadow: 0 4px 10px rgba(51,100,255,.08), 0 26px 54px rgba(51,100,255,.20);
}
.pd-plans .sd-plans .pricing-grid .plan-card--dark .plan-head {
  background: #fff;
  border-bottom-color: rgba(51,100,255,.16);
}


/* =====================================================================
   Plans 索引页（2026-10-20）：Membership 拆分后的落地入口
   ===================================================================== */
.plans-index {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
}
.plans-entry {
  display: flex;
  flex-direction: column;
  padding: clamp(26px, 3vw, 38px);
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 20px;
  text-decoration: none;
  color: var(--ink);
  transition: transform var(--d-3) var(--ease),
              box-shadow var(--d-3) var(--ease),
              border-color var(--d-3) var(--ease);
}
.plans-entry:hover {
  transform: translateY(-4px);
  border-color: transparent;
  box-shadow: 0 0 0 1px rgba(51,100,255,.34), 0 22px 48px rgba(19,20,25,.12);
}
.plans-entry:focus-visible { outline: 3px solid var(--brand); outline-offset: 3px; }
.plans-entry-tag {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--brand);
}
.plans-entry-title {
  margin: 14px 0 10px;
  font-size: clamp(20px, 2vw, 26px);
  font-weight: 700;
  letter-spacing: -.02em;
  line-height: 1.25;
}
.plans-entry-desc {
  margin: 0 0 22px;
  font-size: 14.5px;
  line-height: 1.75;
  color: var(--g-600);
}
.plans-entry-go {
  margin-top: auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ink);
}
.plans-entry:hover .plans-entry-go { color: var(--brand); }
.plans-entry:hover .plans-entry-go svg { transform: translateX(3px); }
.plans-entry-go svg { transition: transform var(--d-2) var(--ease); }

@media (max-width: 820px) {
  .plans-index { grid-template-columns: 1fr; gap: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .plans-entry,
  .plans-entry-go svg { transition: none; }
  .plans-entry:hover { transform: none; }
  .plans-entry:hover .plans-entry-go svg { transform: none; }
}


/* =====================================================================
   Hesai Kosmo 旋转展示（2026-10-21）
   素材是 1:1 棚拍旋转，原片四角有径向暗角；已逐帧归一化背景，
   底板取素材实际渲染值 #F4F4F4，方形边界不可见。
   ===================================================================== */
.pd-hero-media--video {
  background: #F4F4F4;
  padding: clamp(8px, 1.2vw, 16px);
}
.pd-hero-media--video .pd-hero-video {
  max-height: 460px;
  border-radius: 0;
  filter: none;
}
.pr-card-media--video { background: #F4F4F4; }
.pr-card-media--video .pr-card-video { padding: 0; }


/* =====================================================================
   首页第二屏改版（2026-10-21）：三类目标签行 + 四张能力卡
   ===================================================================== */
.home-v4 .hv-cap-cats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px clamp(16px, 2.4vw, 40px);
  margin: 0 0 clamp(22px, 2.6vw, 32px);
}
.home-v4 .hv-cap-cat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  text-align: center;
}
.home-v4 .hv-cap-cat-pill {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 10px 21px 11px 17px;
  border-radius: var(--r-pill);
  background: var(--h-brand);
  color: #fff;
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: .01em;
  white-space: nowrap;
}
.home-v4 .hv-cap-cat-ico {
  flex: none;
  display: block;
  width: 17px;
  height: 17px;
}
.home-v4 .hv-cap-cat-sub {
  margin: 0;
  font-size: 13px;
  line-height: 1.6;
  color: var(--h-ink-2);
}

/* ---------------------------------------------------------------------
   2026-10-27：三类目标签行改为「左竖排清单 + 右平台影片」
   标题与描述仍居中在原位置，只是下面这一条从三等分横排换成 2 栏：
   左栏三行带图标与发丝分隔线的清单，右栏 16:9 影片卡（点封面才播）。

   2026-10-27 二次调整：下方四列能力卡整体移除，原先「影片左边缘对齐
   第三列卡片」的算法失去参照物，于是回到均分两栏 —— 左清单一半、影片
   一半，影片右缘仍贴内容区右边缘。底部间距交给 .hv-section 的 padding。
   --------------------------------------------------------------------- */
.home-v4 .hv-cap-intro {
  --cap-gap: clamp(26px, 3.6vw, 64px);
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: stretch;
  gap: var(--cap-gap);
  margin: clamp(24px, 2.8vw, 38px) 0 0;
}
.home-v4 .hv-cap-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-auto-rows: 1fr;
}
.home-v4 .hv-cap-item {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: clamp(14px, 1.5vw, 20px);
  padding: clamp(14px, 1.4vw, 20px) 0;
  border-top: 1px solid rgba(19, 20, 25, .075);
}
.home-v4 .hv-cap-item:first-child { border-top: 0; padding-top: 0; }
.home-v4 .hv-cap-item:last-child { padding-bottom: 0; }
.home-v4 .hv-cap-item-ico {
  display: grid;
  place-items: center;
  width: clamp(42px, 3.3vw, 48px);
  aspect-ratio: 1;
  border-radius: 14px;
  color: #2C57E0;
  background:
    radial-gradient(130% 130% at 32% 0%, rgba(51, 100, 255, .22) 0%, rgba(51, 100, 255, .09) 62%, rgba(51, 100, 255, .055) 100%);
  box-shadow: inset 0 0 0 1px rgba(51, 100, 255, .18);
  transition: background-color .35s var(--ease), box-shadow .35s var(--ease);
}
.home-v4 .hv-cap-item-ico svg {
  display: block;
  width: 21px;
  height: 21px;
}
.home-v4 .hv-cap-item:hover .hv-cap-item-ico {
  box-shadow: inset 0 0 0 1px rgba(51, 100, 255, .34), 0 10px 20px -14px rgba(51, 100, 255, .6);
}
.home-v4 .hv-cap-item-copy h3 {
  margin: 0;
  font-size: clamp(17px, 1.28vw, 19px);
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -.012em;
  color: var(--h-ink);
}
.home-v4 .hv-cap-item-copy p {
  margin: 6px 0 0;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--h-ink-2);
}

/* 右栏影片卡：16:9，深底，贴合品牌蓝的极淡外发光 */
.home-v4 .hv-cap-film {
  position: relative;
  margin: 0;
  aspect-ratio: 16 / 9;
  border-radius: clamp(14px, 1.3vw, 20px);
  overflow: hidden;
  background: #0A0C11;
  box-shadow:
    0 1px 2px rgba(19, 20, 25, .06),
    0 26px 56px -30px rgba(19, 20, 25, .55),
    0 0 0 1px rgba(19, 20, 25, .05);
  isolation: isolate;
}
.home-v4 .hv-cap-film-video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  background: #0A0C11;
}
.home-v4 .hv-cap-film-play {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 13px;
  width: 100%;
  border: 0;
  padding: 0;
  cursor: pointer;
  color: #fff;
  background: linear-gradient(180deg, rgba(8, 9, 11, .04) 0%, rgba(8, 9, 11, .30) 100%);
  transition: opacity .32s var(--ease), visibility .32s;
}
.home-v4 .hv-cap-film-play-btn {
  display: grid;
  place-items: center;
  width: 62px;
  height: 62px;
  border-radius: 50%;
  color: #12151B;
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 12px 30px -10px rgba(0, 0, 0, .6);
  transition: transform .38s var(--ease), background-color .3s var(--ease);
}
.home-v4 .hv-cap-film-play-btn svg {
  display: block;
  width: 21px;
  height: 21px;
  margin-left: 3px;
}
.home-v4 .hv-cap-film:hover .hv-cap-film-play-btn {
  transform: scale(1.06);
  background: #fff;
}
.home-v4 .hv-cap-film-meta {
  position: absolute;
  left: 13px;
  bottom: 12px;
  padding: 5px 10px;
  border-radius: 7px;
  font-size: 11.5px;
  font-weight: 500;
  letter-spacing: .03em;
  font-variant-numeric: tabular-nums;
  color: rgba(255, 255, 255, .82);
  background: rgba(9, 11, 15, .52);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  pointer-events: none;
  transition: opacity .3s var(--ease);
}
.home-v4 .hv-cap-film-meta em {
  font-style: normal;
  color: rgba(255, 255, 255, .96);
}
/* 状态：播放中收掉封面按钮，一旦开播就把「Platform film」标签让位给控制条 */
.home-v4 .hv-cap-film.is-playing .hv-cap-film-play {
  opacity: 0;
  visibility: hidden;
}
.home-v4 .hv-cap-film.is-started .hv-cap-film-meta {
  opacity: 0;
  visibility: hidden;
}
/* 暂停后封面按钮回来，但压得更轻，别打断画面 */
.home-v4 .hv-cap-film.is-started.is-paused .hv-cap-film-play {
  opacity: 1;
  visibility: visible;
  background: linear-gradient(180deg, rgba(8, 9, 11, .02) 0%, rgba(8, 9, 11, .18) 100%);
}
.home-v4 .hv-cap-film.is-started.is-paused .hv-cap-film-play-btn {
  width: 54px;
  height: 54px;
  background: rgba(255, 255, 255, .9);
}

/* ---------- 自绘控制条：暂停键 + 可拖动进度条 + 时间 ---------- */
.home-v4 .hv-cap-film-ctl {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 4;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 30px 13px 11px;
  background: linear-gradient(180deg, rgba(6, 8, 12, 0) 0%, rgba(6, 8, 12, .5) 48%, rgba(6, 8, 12, .76) 100%);
  opacity: 0;
  visibility: hidden;
  transform: translateY(6px);
  transition: opacity .3s var(--ease), transform .3s var(--ease), visibility .3s;
}
.home-v4 .hv-cap-film.is-started .hv-cap-film-ctl {
  opacity: 1;
  visibility: visible;
  transform: none;
}
.home-v4 .hv-cap-film-toggle {
  flex: none;
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  color: #fff;
  cursor: pointer;
  background: rgba(255, 255, 255, .14);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  transition: background-color .25s var(--ease);
}
.home-v4 .hv-cap-film-toggle:hover { background: rgba(255, 255, 255, .26); }
.home-v4 .hv-cap-film-toggle svg {
  display: block;
  width: 14px;
  height: 14px;
}
.home-v4 .hv-cap-film-toggle .hv-cap-film-i-play { margin-left: 1px; }
.home-v4 .hv-cap-film-toggle .hv-cap-film-i-pause,
.home-v4 .hv-cap-film.is-paused .hv-cap-film-toggle .hv-cap-film-i-play { display: block; }
.home-v4 .hv-cap-film-toggle .hv-cap-film-i-play,
.home-v4 .hv-cap-film.is-paused .hv-cap-film-toggle .hv-cap-film-i-pause { display: none; }

.home-v4 .hv-cap-film-track {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  height: 18px;
  cursor: pointer;
  touch-action: none;
  outline: none;
}
.home-v4 .hv-cap-film-rail {
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  height: 3px;
  border-radius: 3px;
  transform: translateY(-50%);
  background: rgba(255, 255, 255, .26);
  overflow: hidden;
}
.home-v4 .hv-cap-film-fill {
  display: block;
  width: calc(var(--p, 0) * 100%);
  height: 100%;
  border-radius: 3px;
  background: linear-gradient(90deg, #6E92FF 0%, #3B6BFF 100%);
}
.home-v4 .hv-cap-film-knob {
  position: absolute;
  top: 50%;
  left: calc(var(--p, 0) * 100%);
  width: 11px;
  height: 11px;
  margin: -5.5px 0 0 -5.5px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 2px 8px rgba(0, 0, 0, .5);
  transform: scale(.84);
  transition: transform .22s var(--ease);
}
.home-v4 .hv-cap-film-track:hover .hv-cap-film-knob,
.home-v4 .hv-cap-film-track.is-drag .hv-cap-film-knob,
.home-v4 .hv-cap-film-track:focus-visible .hv-cap-film-knob {
  transform: scale(1.14);
}
.home-v4 .hv-cap-film-track:focus-visible .hv-cap-film-rail {
  box-shadow: 0 0 0 2px rgba(110, 146, 255, .55);
}
.home-v4 .hv-cap-film-time {
  flex: none;
  font-size: 11.5px;
  font-weight: 500;
  letter-spacing: .02em;
  font-variant-numeric: tabular-nums;
  color: rgba(255, 255, 255, .62);
  white-space: nowrap;
}
.home-v4 .hv-cap-film-time em {
  font-style: normal;
  color: rgba(255, 255, 255, .94);
}
.home-v4 .hv-cap-film-sep { opacity: .5; }

@media (min-width: 1025px) {
  .home-v4 .hv-cap-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 1024px) {
  .home-v4 .hv-cap-intro {
    grid-template-columns: minmax(0, 1fr);
    gap: clamp(20px, 3vw, 30px);
  }
  /* 窄屏先看片，再读三条能力 */
  .home-v4 .hv-cap-film { order: -1; }
  .home-v4 .hv-cap-film-play-btn { width: 54px; height: 54px; }
}
@media (max-width: 760px) {
  .home-v4 .hv-cap-cats { grid-template-columns: 1fr; gap: 20px; }
  .home-v4 .hv-cap-item { padding: 14px 0; }
  .home-v4 .hv-cap-item-copy p { font-size: 13px; }
  .home-v4 .hv-cap-film-ctl { gap: 8px; padding: 26px 10px 9px; }
  .home-v4 .hv-cap-film-time { font-size: 11px; }
}
@media (prefers-reduced-motion: reduce) {
  .home-v4 .hv-cap-film-play-btn,
  .home-v4 .hv-cap-item-ico { transition: none !important; }
  .home-v4 .hv-cap-film:hover .hv-cap-film-play-btn { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .home-v4 .hv-cap-cat { transition: none !important; transform: none !important; }
}


/* =====================================================================
   Hesai Kosmo：首屏产品大图作底图 + 规格区左侧旋转视频（2026-10-21）
   ===================================================================== */
/* 产品页首屏补横向留白（原 padding-inline 为 0，窄屏文案会顶到屏幕边） */
.pd-hero { padding-inline: var(--shell-inset); }

.pd-hero--bg {
  position: relative;
  overflow: hidden;
  background: #fff;
}
.pd-hero--bg .pd-hero-bg {
  position: absolute;
  inset: 0 0 0 30%;
  z-index: 0;
  pointer-events: none;
}
/* 素材本身在右缘与下缘裁切设备，贴右下角让裁切并到区块边界，避免截口悬在空白中间 */
.pd-hero--bg .pd-hero-bg img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: right bottom;
}
/* 2026-10-29：产品图改为抠底 PNG，白底不再压成一块白板；
   2026-10-29 二轮：用户反馈蓝光太抢，整体压到原来的一半以下 ——
   贴边一圈只留极弱的蓝（10px/.16），外围用 60px/.09 做一层几乎察觉不到的氛围光 */
.pd-hero--bg .pd-hero-bg img.pd-hero-cut {
  filter:
    drop-shadow(0 0 10px rgba(96, 132, 255, .16))
    drop-shadow(0 0 60px rgba(51, 100, 255, .09));
}
.pd-hero--bg .pd-hero-inner {
  max-width: none;
  margin-inline: 0;
  position: relative;
  z-index: 1;
  grid-template-columns: minmax(0, 470px);
  min-height: clamp(450px, 38vw, 590px);
}
.pd-hero--bg .pd-hero-text { max-width: 470px; }

.pd-specs-media {
  position: relative;
  aspect-ratio: 1 / 1;
  border-radius: 20px;
  overflow: hidden;
  background: #F4F4F4;
  border: 1px solid var(--line-2);
}
.pd-specs-media .pd-specs-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.pd-specs-head { margin-bottom: clamp(18px, 2vw, 26px); }

/* 窄屏堆叠：白底照片在白页上没有边界，裁口会显得断开，改加浅灰衬底成一张有框的图 */
@media (max-width: 1140px) {
  .pd-hero--bg .pd-hero-bg {
    position: static;
    width: 100%;
    margin-bottom: clamp(26px, 3.4vw, 40px);
    padding: clamp(10px, 1.6vw, 20px);
    border-radius: 20px;
    background: var(--surface-2);
    border: 1px solid var(--line-2);
  }
  .pd-hero--bg .pd-hero-bg img {
    height: auto;
    aspect-ratio: 16 / 10;
    object-fit: cover;
    object-position: right center;
    border-radius: 12px;
  }
  /* 抠底图：去掉灰底衬板与裁切，让设备直接落在页面上 */
  .pd-hero--bg .pd-hero-bg--cut {
    background: transparent;
    border: 0;
    padding: 0;
    margin-bottom: clamp(10px, 2vw, 18px);
  }
  .pd-hero--bg .pd-hero-bg--cut img {
    aspect-ratio: auto;
    object-fit: contain;
    border-radius: 0;
  }
  .pd-hero--bg .pd-hero-inner {
    grid-template-columns: minmax(0, 1fr);
    min-height: 0;
  }
  .pd-hero--bg .pd-hero-text { max-width: none; }
}
@media (max-width: 760px) {
  .pd-hero--bg .pd-hero-bg img { aspect-ratio: 4 / 3; }
}

/* AR Pad 首屏改局部特写：素材本身比例 949/748，contain 不裁，靠右下对齐延续设备出血的读法 */
.pd-hero--bg-close .pd-hero-bg img {
  object-fit: contain;
  object-position: right bottom;
}
/* 特写后传感器顶到导航栏：整块下移 52px，超出下缘的部分由区块 overflow 裁掉，画面比例与缩放不变 */
.pd-hero--bg-close .pd-hero-bg {
  top: 52px;
  bottom: -52px;
}
@media (max-width: 1140px) {
  .pd-hero--bg-close .pd-hero-bg img {
    aspect-ratio: 949 / 748;
    object-fit: contain;
    object-position: center;
  }
}



/* =====================================================================
   首页悬停播放卡：第四屏建筑卡 + 第三屏 Scanners 卡（2026-10-21）
   ===================================================================== */
.home-v4 .hv-hover-video {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  pointer-events: none;
  transition: opacity .5s var(--ease), transform .72s var(--ease);
}
.home-v4 .hv-hover-video.is-on { opacity: 1; }
.home-v4 .hv-ind:hover .hv-hover-video { transform: scale(1.06); }

.home-v4 .hv-plat-media { position: relative; }
.home-v4 .hv-plat:hover .hv-hover-video { transform: scale(1.03); }

@media (prefers-reduced-motion: reduce) {
  .home-v4 .hv-hover-video { display: none; }
}


/* =====================================================================
   产品页规格区改版：标题居中独占一行，下方左视频右参数（2026-10-21）
   仅 scanners 三页（hesai / navvis / feima）使用，其余产品页仍走 .pd-specs-wrap
   ===================================================================== */
.pd-specs-head--center {
  text-align: center;
  max-width: 680px;
  margin: 0 auto clamp(26px, 3.2vw, 44px);
}

.pd-specs-grid {
  display: grid;
  /* 媒体列 = 原 .8fr/1.2fr 的 4/5：0.4 × 0.8 = 0.32，余下给参数表 */
  grid-template-columns: minmax(0, .32fr) minmax(0, .68fr);
  gap: clamp(28px, 3.6vw, 64px);
  align-items: center;
}

.pd-specs-media .pd-specs-still {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

@media (max-width: 1024px) {
  .pd-specs-grid { grid-template-columns: minmax(0, 1fr); gap: clamp(24px, 3vw, 36px); }
  .pd-specs-grid .pd-specs-media { max-width: 400px; width: 100%; margin: 0 auto; }
}

/* All-in-One：转台素材设备占高 93%，塞进 1:1 会切上下 ⇒ 素材先裁 5:4，面板同步 */
.pd-specs-media.pd-specs-media--54 {
  aspect-ratio: 5 / 4;
  background: #fff;
}

/* AR Pad 转台素材棚拍底为纯白 255，容器跟着取白，poster 加载前不露灰 */
.pd-specs-media.pd-specs-media--white {
  background: #fff;
}

/* =====================================================================
   平台线产品页：Cyberspace Buildings / Cyberspace Pipeline（2026-10-21）
   · 首屏媒体为实拍/截图，不是白底产品抠图 ⇒ 去掉投影与内边距，改整块出血
   · 子导航锚点偏移与其余产品页对齐
   ===================================================================== */
.pd-line-page #overview,
.pd-line-page #film,
.pd-line-page #capabilities,
.pd-line-page #plans,
.pd-line-page #stack { scroll-margin-top: 122px; }

.pd-hero-media--shot {
  display: block;
  position: relative;
  padding: 0;
  overflow: hidden;
  min-height: 0;
  aspect-ratio: 16 / 11;
  background: var(--surface);
  border: 0;
}
.pd-hero-media--shot img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-height: none;
  object-fit: cover;
  filter: none;
  border-radius: 0;
}

@media (max-width: 1024px) {
  .pd-hero-media--shot { aspect-ratio: 16 / 10; }
}

/* 产品子导航：窄屏下标签多了会顶出视口（平台线页有 3–4 个标签）⇒ 改为横向滚动 */
@media (max-width: 760px) {
  .pd-subnav-inner { gap: 12px; }
  .pd-subnav-tabs {
    flex: 1 1 auto;
    min-width: 0;
    overflow-x: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
  }
  .pd-subnav-tabs::-webkit-scrollbar { display: none; }
  .pd-subnav-tabs a { flex: 0 0 auto; white-space: nowrap; padding: 6px 13px; }
}

/* =====================================================================
   主导航重排（2026-10-21）
   · Products 去掉与 Industry Solutions 重复的方案线列，收成两列
   · Support & Downloads / About 由纯链接改为靠右下拉
   ===================================================================== */
.nav .dropdown-mega.dropdown-mega--prod {
  min-width: 1010px;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.nav .has-dropdown .dropdown--right {
  left: auto;
  right: 0;
}

/* =====================================================================
   Tutorials / Q&A 空页（2026-10-21）
   · 页面只承载一个大标题，其余留白；纵向撑高避免页脚下移
   ===================================================================== */
.page-bare {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: clamp(340px, 52vh, 640px);
}
.page-bare > .container { width: 100%; }

.page-bare-title {
  margin: 0;
  font-size: clamp(44px, 6.4vw, 92px);
  font-weight: 800;
  letter-spacing: -.03em;
  line-height: 1.02;
  color: var(--ink);
}

.page-bare-note {
  margin: clamp(14px, 1.6vw, 22px) 0 0;
  font-size: clamp(14px, 1.25vw, 18px);
  font-weight: 500;
  letter-spacing: .01em;
  line-height: 1.4;
  color: var(--g-500);
}

/* =====================================================================
   产品页卡片：旋转视频铺满（2026-10-21）
   · 素材棚拍底实测 251（#FBFBFB），容器跟着取同值，两侧留白不带边
   · padding 归零：方形素材在 16:11 框内居中，宽卡 16:9 恰好铺满
   ===================================================================== */
.pr-card-media--rot { background: #FBFBFB; }
.pr-card-media--rot .pr-card-video { padding: 0; }

/* =====================================================================
   产品总览页卡片（2026-10-22）
   · 平台线卡片接封面视频：与首页产业应用同源，cover 铺满不留白边
   · Hesai 棚拍底实测 244，抬到与 Feima 的 252 同档，同一行不再一深一浅
   ===================================================================== */
.pr-card-media--cover .pr-card-video { padding: 0; object-fit: cover; }
.pr-card-media--video { background: #FBFBFB; }
.pr-card-media--video .pr-card-video { filter: brightness(1.033); }

/* =====================================================================
   Cyberspace Buildings 产品页（2026-10-22）
   · 首屏影片改为 Film 按钮 + 弹窗，不再内联
   · 能力区沿用存档首页的 cap-row 结构，浅底下要撤掉深色网格与白描边
   ===================================================================== */
#capabilities { scroll-margin-top: 122px; }

.pd-btn--film svg { width: 12px; height: 12px; margin-right: 1px; }

.pd-cap .cap-row + .cap-row { border-top-color: var(--line-2); }
.pd-cap .cap-visual { background: var(--surface-2); border-color: var(--line-2); }
.pd-cap .cap-visual::before { display: none; }
.pd-cap .cap-row:hover .cap-visual { border-color: var(--line); }

/* =====================================================================
   影片弹窗（2026-10-22）
   · 空间 AR 产品线的展会影片，只在用户点 Film 时加载
   ===================================================================== */
.film-modal {
  position: fixed;
  inset: 0;
  z-index: 920;
  display: grid;
  place-items: center;
  padding: clamp(14px, 4vw, 48px);
}
.film-modal[hidden] { display: none; }
.film-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(8, 9, 12, .88);
  opacity: 0;
  transition: opacity var(--d-3) var(--ease);
}
.film-modal-panel {
  position: relative;
  width: min(1120px, 100%);
  border-radius: 16px;
  overflow: hidden;
  background: #0A0A0A;
  box-shadow: 0 32px 80px rgba(0, 0, 0, .5);
  opacity: 0;
  transform: translateY(12px) scale(.99);
  transition: opacity var(--d-3) var(--ease), transform var(--d-3) var(--ease);
}
.film-modal.is-open .film-modal-backdrop { opacity: 1; }
.film-modal.is-open .film-modal-panel { opacity: 1; transform: none; }
.film-modal video {
  display: block;
  width: 100%;
  height: auto;
  max-height: calc(100vh - 2 * clamp(14px, 4vw, 48px));
  background: #0A0A0A;
}
.film-modal-close {
  position: absolute;
  top: clamp(12px, 3.2vw, 26px);
  right: clamp(12px, 3.2vw, 26px);
  z-index: 3;
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, .26);
  border-radius: 50%;
  background: rgba(14, 16, 21, .82);
  color: #fff;
  cursor: pointer;
  opacity: 0;
  transition: opacity var(--d-3) var(--ease), background var(--d-2) var(--ease),
              border-color var(--d-2) var(--ease);
}
.film-modal.is-open .film-modal-close { opacity: 1; }
.film-modal-close:hover { background: rgba(46, 50, 60, .96); border-color: rgba(255, 255, 255, .5); }
.film-modal-close svg { width: 15px; height: 15px; }
body.film-lock { overflow: hidden; }
@media (prefers-reduced-motion: reduce) {
  .film-modal-backdrop,
  .film-modal-close,
  .film-modal-panel { transition: none; }
  .film-modal-panel { transform: none; }
}

/* =====================================================================
   Underground Pipelines：总览页 + 三个场景子页（2026-10-22）
   · 首屏影片收到 Watch the Film 按钮后，点开才在弹窗里加载
   · 三张场景卡变成进入子页的入口，整卡可点
   ===================================================================== */
.ind-film-btn {
  display: inline-flex;
  align-items: center;
  gap: 11px;
  margin-top: 30px;
  padding: 11px 26px 11px 15px;
  border: 1px solid rgba(255, 255, 255, .34);
  border-radius: 100px;
  background: rgba(10, 11, 14, .46);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  color: #fff;
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: .01em;
  cursor: pointer;
  transition: background var(--d-2) var(--ease), border-color var(--d-2) var(--ease),
              transform var(--d-2) var(--ease);
}
.ind-film-btn:hover {
  background: rgba(255, 255, 255, .16);
  border-color: rgba(255, 255, 255, .62);
  transform: translateY(-1px);
}.ind-film-btn-dot {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: #fff;
  color: #14171D;
  transition: transform var(--d-2) var(--ease);
}
.ind-film-btn-dot svg { width: 9px; height: 9px; margin-left: 1.5px; }
.ind-film-btn:hover .ind-film-btn-dot { transform: scale(1.06); }

/* 总览页三张场景卡：图片轻微推近，入口链接铺满整卡热区 */
.ind-rows--cols3 .ind-row { position: relative; }
.ind-rows--cols3 .ind-row-media { overflow: hidden; }
.ind-rows--cols3 .ind-row-media img { transition: transform var(--d-3) var(--ease); }
.ind-rows--cols3 .ind-row:hover .ind-row-media img { transform: scale(1.035); }
.ind-rows--cols3 .app-link::after { content: ''; position: absolute; inset: 0; }
.ind-rows--cols3 .app-link { align-self: flex-start; }
.ind-rows--cols3 .ind-row:hover .app-link { opacity: 1; gap: 12px; }

/* 子页 hero：场景序号 */
.ind-scenario {
  display: block;
  margin-top: 4px;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .5);
}

@media (prefers-reduced-motion: reduce) {
  .ind-film-btn,
  .ind-film-btn-dot,
  .ind-rows--cols3 .ind-row-media img { transition: none; }
  .ind-film-btn:hover,
  .ind-film-btn:hover .ind-film-btn-dot,
  .ind-rows--cols3 .ind-row:hover .ind-row-media img { transform: none; }
}

/* =====================================================================
   Industry Solutions 详情页 · 视觉收敛（2026-10-22）
   · 首屏改居中构图，压暗改成均匀+底部渐深，照片整幅可见
     （原来左侧 0.95 的横向渐变压到右侧 0.28，右半页被冲成灰面，像图没铺满）
   · 媒体统一 16px 圆角 + 极轻投影，去掉通栏生图贴白底
   · 卡片从 1px 网格拆成圆角描边卡；段间距收紧，去掉大片空带
   ===================================================================== */

/* ---------- 1. 首屏 ---------- */
.ind-hero {
  min-height: clamp(560px, 66vh, 720px);
  align-items: center;
  padding-top: calc(var(--section-y) + 16px);
  padding-bottom: calc(var(--section-y) - 12px);
}
/* 2026-10-29：整体提亮，视频内容能看清（文字仍有 3:1 以上的对比） */
.ind-hero-veil {
  background:
    linear-gradient(180deg, rgba(8, 9, 12, .54) 0%, rgba(8, 9, 12, .32) 44%, rgba(8, 9, 12, .70) 100%);
}
.ind-hero > .container {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.ind-hero .ind-back {
  align-self: flex-start;
  margin-bottom: clamp(26px, 3.4vw, 44px);
}
.ind-hero .ind-title {
  max-width: 920px;
  margin: 0 auto;
  font-size: clamp(40px, 5.4vw, 74px);
  line-height: 1.04;
  letter-spacing: -.03em;
  text-shadow: 0 2px 28px rgba(0, 0, 0, .34);
}
.ind-hero .section-lede {
  max-width: 640px;
  margin: 22px auto 0;
  font-size: clamp(16px, 1.6vw, 20px);
  line-height: 1.7;
  opacity: 1;
  text-shadow: 0 1px 14px rgba(0, 0, 0, .42);
}
.ind-hero .ind-series { margin: 30px auto 0; text-align: center; color: rgba(255, 255, 255, .74); }
.ind-hero .ind-back { color: rgba(255, 255, 255, .82); }
.ind-hero .ind-scenario { margin: 0 0 16px; }

@media (max-width: 900px) {
  .ind-hero {
    min-height: 0;
    padding-top: 128px;
    padding-bottom: 60px;
  }
  .ind-hero-veil {
    background: linear-gradient(180deg, rgba(8, 9, 12, .64) 0%, rgba(8, 9, 12, .52) 46%, rgba(8, 9, 12, .86) 100%);
  }
  .ind-hero .ind-back { margin-bottom: 24px; }
  .ind-hero .ind-title { font-size: clamp(30px, 8.4vw, 40px); }
  .ind-hero .section-lede { margin-top: 16px; }
  .ind-hero .ind-series { margin-top: 22px; }
}

/* ---------- 2. 媒体统一圆角 ---------- */
.ind-figure,
.ind-proof-media,
.ind-media-card {
  border-radius: 16px;
  overflow: hidden;
}
.ind-proof-media { box-shadow: 0 10px 28px rgba(10, 11, 14, .08); }

/* 统一十六比九的媒体台：素材比例千差万别（竖屏录屏 / 超宽截图 / 表格），
   一律裁切进同一个画框，页面才有节奏；不再各按原比例撑高撑矮。
   取 16:9 而非 16:10，是因为现有视频素材全是 16:9，16:10 会左右各切 5%，
   屏录里的侧边工具栏会被切掉。 */
.ind-row-media {
  aspect-ratio: 16 / 9;
  display: grid;
  place-items: center;
  background: var(--surface-2);
  border: 1px solid var(--line-2);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 10px 28px rgba(10, 11, 14, .07);
}
/* ⚠️ 必须写到 (0,3,0)：.ind-rows--stacked / --split 里已有同名 video 的 contain 规则 */
.ind-rows .ind-row-media img,
.ind-rows .ind-row-media video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  aspect-ratio: auto;
  display: block;
}
/* 竖长素材（表格 / 竖屏录屏）单独放宽画框，避免 cover 把内容切掉 */
.ind-row-media--tall { aspect-ratio: 7 / 6; }
/* 黑底三维渲染（点云 / 长走廊）走深色舞台 */
.ind-row-media--dark { background: #0A0B0F; border-color: transparent; }

/* ---------- 3. 卡片：网格线 → 圆角描边卡 ---------- */
.ind-grid-3 {
  background: none;
  border: 0;
  gap: clamp(14px, 1.6vw, 20px);
}
.ind-card {
  background: var(--paper);
  border: 1px solid var(--line-2);
  border-radius: 16px;
  box-shadow: 0 1px 2px rgba(10, 11, 14, .04);
}
.section--dark .ind-card {
  background: rgba(255, 255, 255, .04);
  border-color: rgba(255, 255, 255, .12);
  box-shadow: none;
}

/* ---------- 4. 正文可读字距 ---------- */
/* stacked 行的 .ind-row-text 是通栏，正文原本被拉满 1320px、15px 字号跑出
   150 字符行长；收回到 780px 并居中，与上方的全幅媒体对齐成一条竖轴。 */
.ind-rows--stacked .ind-row-text > h3,
.ind-rows--stacked .ind-row-text > p {
  max-width: 780px;
  margin-left: auto;
  margin-right: auto;
}
.ind-rows--stacked .ind-row-text > p {
  font-size: clamp(15px, 1.06vw, 16.5px);
  line-height: 1.72;
}

/* ---------- 5. 垂直节奏收紧 ---------- */
.ind-hero + .section { padding-top: clamp(52px, 6vw, 88px); }
.ind-rows--stacked .ind-row { padding: clamp(28px, 3.4vw, 48px) 0; }
@media (prefers-reduced-motion: reduce) {
  .ind-card { transition: none; }
}

/* =====================================================================
   News 配图（2026-10-22）
   · 六张素材原始比例在 1.2–3.0 之间，套 16:9 裁切会把公文抬头、展台
     底板和海报天际线切掉 ⇒ 文章封面按原比例呈现；
   · 列表与首页缩略图一律 cover 填满 16:9 画框，不裁边不留底。
   ===================================================================== */
.post-cover--free img {
  aspect-ratio: auto;
  height: auto;
  object-fit: contain;
}
.entry-thumb--top img,
.home-v4 .hv-news-img--top img {
  object-position: center top;
}

/* =====================================================================
   顶栏胶囊化（2026-10-22 参照 xgrids.cn/industry）
   · 整条顶栏改成悬浮胶囊：左右各留 24px、高 58px、圆角 100px、去底边线；
   · 导航项取消下划线，改圆角胶囊悬停底；项目间距从 2px 放到 4px、内距 12→16；
   · 下位面板圆角 16→18px、内距放大、列间距 26→36、离顶栏留 10px 呼吸（--dd-gap）。
   ⚠️ 面板离栏底的空隙用 ::before 透明桥接，否则鼠标经过时会掉 hover。
   ⚠️ 面板 top 不能用 100%（那是 li 高，li 在栏内垂直居中，会贴到栏底），
      改用「项目中心 50% + 半个栏高 + 间距」＝ 栏底 + 间距，换栏高自动跟随。
   ===================================================================== */
.topbar,
.topbar.is-scrolled {
  --bar-h: 58px;
  --dd-gap: 10px;
  top: 10px;
  left: clamp(12px, 1.6vw, 24px);
  right: clamp(12px, 1.6vw, 24px);
  height: var(--bar-h);
  padding: 0 14px 0 30px;
  border: 0;
  border-radius: 100px;
  box-shadow: 0 1px 2px rgba(19,20,25,.04), 0 8px 28px rgba(19,20,25,.07);
}
.topbar,
.topbar.is-scrolled {
  /* 2026-10-26：胶囊改为半透明毛玻璃 —— 透出一点背景、整体降饱和呈中性灰，
     顶部加一道 1px 高光 + inset 亮边，避免"一块死灰塑料"的廉价感。
     2026-10-27：底色提纯为纯白、去掉降饱和（saturate 65%→108%），底色 alpha 下调一档更透。 */
  background: linear-gradient(180deg, rgba(255,255,255,.70) 0%, rgba(255,255,255,.57) 100%);
  border: 0;
  -webkit-backdrop-filter: blur(18px) saturate(108%);
  backdrop-filter: blur(18px) saturate(108%);
  box-shadow: 0 0 0 1px rgba(19,20,25,.045), 0 1px 2px rgba(19,20,25,.04), 0 12px 36px rgba(19,20,25,.09), inset 0 1px 0 rgba(255,255,255,.95);
}
.topbar.is-scrolled {
  background: linear-gradient(180deg, rgba(255,255,255,.82) 0%, rgba(255,255,255,.71) 100%);
  box-shadow: 0 0 0 1px rgba(19,20,25,.06), 0 2px 6px rgba(19,20,25,.06), 0 16px 44px rgba(19,20,25,.13), inset 0 1px 0 rgba(255,255,255,.85);
}

/* 2026-10-29：用户要求导航整组右移，与 logo 拉开距离（原 44px 时 logo 几乎贴住第一项） */
.nav { gap: 4px; margin-left: 72px; }
.nav a {
  padding: 9px 16px;
  font-size: 13.5px;
  border-radius: 100px;
  transition: background var(--d-2) var(--ease), color var(--d-2) var(--ease), opacity var(--d-2) var(--ease);
}
.nav a::after { display: none; }
.nav a:hover { opacity: 1; background: rgba(19,20,25,.05); }
.nav a.is-current,
.nav a.is-active { background: rgba(19,20,25,.05); }
.nav a.is-current::after { display: none; }
.nav .has-dropdown > a { gap: 6px; }

.top-extra { gap: 10px; }
.top-extra .btn-ghost { padding: 9px 18px; }

.topbar .brand { flex: 0 0 auto; min-width: 0; }
.topbar .brand-logo {
  height: 23px;
  max-height: 23px;
  width: auto;
  max-width: none;
  object-fit: contain;
  object-position: left center;
}
@media (max-width: 1080px) {
  .topbar .brand-logo { height: 21px; max-height: 21px; }
}

.nav .dropdown,
.nav .dropdown-mega,
.lang-menu {
  top: calc(50% + var(--bar-h, 58px) / 2 + var(--dd-gap, 10px));
  border-radius: 18px;
  border: 1px solid var(--line-2);
  padding: 16px 18px;
  box-shadow: 0 2px 8px rgba(19,20,25,.05), 0 18px 50px rgba(19,20,25,.13);
}
.nav .dropdown::before,
.nav .dropdown-mega::before {
  content: '';
  position: absolute;
  left: 0; right: 0;
  top: calc(-1px - var(--dd-gap, 10px));
  height: calc(var(--dd-gap, 10px) + 1px);
}
.nav .dropdown { min-width: 300px; }
.nav .dropdown-mega { gap: 0 36px; }
.nav .dropdown-mega.dropdown-mega--prod { min-width: 1010px; gap: 0 28px; }
.nav .dropdown a { padding: 9px 14px; border-radius: 10px; font-size: 13.5px; }
.nav .drop-group { padding: 11px 14px 6px; }
.nav .dropdown-mega .drop-all { padding: 12px 14px 4px; margin-top: 10px; }

.lang-menu { padding: 8px; min-width: 168px; }
.lang-menu button { padding: 10px 12px; border-radius: 10px; }
.lang-btn { padding: 8px 10px; border-radius: 100px; }
.lang-btn:hover { opacity: 1; background: rgba(19,20,25,.05); }

@media (max-width: 1080px) {
  .topbar,
  .topbar.is-scrolled {
    --bar-h: 54px;
    --dd-gap: 8px;
    height: var(--bar-h);
    padding: 0 10px 0 24px;
  }
  .nav .dropdown-mega.dropdown-mega--prod { min-width: 860px; gap: 0 18px; }
}

/* 方案线面板：分组标题是长词组，660 宽会折成四行，放宽到 800 并禁止折行 */
.nav .dropdown-mega--sol {
  min-width: 800px;
  grid-template-columns: 1fr 1fr;
  gap: 0 40px;
}
.nav .dropdown-mega--sol .drop-group { white-space: nowrap; }
@media (max-width: 1080px) {
  .nav .dropdown-mega--sol { min-width: 660px; gap: 0 22px; }
  .nav .dropdown-mega--sol .drop-group { white-space: normal; }
}

/* 中文大标题断行：不加平衡时会在词中间断（如「项目成／功落地」），
   text-wrap:balance 让两行长度接近、落点落在词边界。仅作用于中文态。 */
html[lang^="zh"] .ind-title { text-wrap: balance; }

/* =====================================================================
   首页新闻区：暂时只展示 3 张卡（2026-10-22）
   · 多余卡片标 .is-off 保留在 DOM 里，恢复时删掉该类即可，不用重写结构；
   · 不能用 [hidden] 属性，.home-v4 .hv-news-card 的 display:flex 会压过 UA 样式。
   ===================================================================== */
.home-v4 .hv-news-grid .hv-news-card.is-off { display: none; }


/* =====================================================================
   行业方案总览卡：悬停播放首页同款短片（2026-10-22）
   · 复用 .hv-card-video / .hv-hover-video 的通用脚本，这里只补媒体层样式；
   · 室内管线 AR 设计卡不加视频，保持静态封面。
   ===================================================================== */
.sd-card-media .hv-hover-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity .45s var(--ease), transform .85s var(--ease);
}
.sd-card-media .hv-hover-video.is-on { opacity: 1; }
.sd-card:hover .sd-card-media .hv-hover-video { transform: scale(1.05); }
@media (prefers-reduced-motion: reduce) {
  .sd-card-media .hv-hover-video { display: none; }
}

/* =====================================================================
   地下管线：三场景改为首页核心功能点式卡片（2026-10-22）
   · 复用 .home-v4 .hv-cap 的排版与扇开交互，外包 .home-v4 提供变量；
   · 卡片本身是链接，扇开倍数按三列卡宽度收敛（见 main.js data-max-scale）。
   ===================================================================== */
.home-v4.ind-sc { background: transparent; display: flow-root; }
.home-v4 .ind-sc-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  margin-top: 60px;
}
.home-v4 .ind-sc-grid .hv-cap { text-decoration: none; color: inherit; }
.home-v4 .ind-sc-grid .hv-cap-body { padding: 20px 22px 22px; }
.home-v4 .ind-sc-grid .hv-cap-body h3 {
  font-size: clamp(17px, 1.35vw, 20px);
  letter-spacing: -.02em;
  margin-bottom: 16px;
}
.home-v4 .ind-sc-num {
  position: absolute;
  top: 14px;
  left: 14px;
  z-index: 2;
  padding: 5px 10px;
  border-radius: var(--r-pill);
  background: rgba(255, 255, 255, .92);
  color: var(--ink);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .06em;
  font-variant-numeric: tabular-nums;
  backdrop-filter: blur(6px);
  transition: background var(--d-3) var(--ease), color var(--d-3) var(--ease);
}
.home-v4 .ind-sc-grid .hv-cap:hover .ind-sc-num,
.home-v4 .ind-sc-grid .hv-cap:focus-within .ind-sc-num {
  background: var(--brand);
  color: #fff;
}
.home-v4 .hv-cap-link {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-top: auto;
  font-size: 13px;
  font-weight: 600;
  color: var(--brand);
}
.home-v4 .hv-cap-link span { transition: transform var(--d-3) var(--ease); }
.home-v4 .ind-sc-grid .hv-cap:hover .hv-cap-link span { transform: translateX(4px); }

@media (max-width: 1024px) {
  .home-v4 .ind-sc-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .home-v4 .ind-sc-grid { grid-template-columns: 1fr; margin-top: 28px; }
}
@media (prefers-reduced-motion: reduce) {
  .home-v4 .ind-sc-num,
  .home-v4 .hv-cap-link span { transition: none; }
  .home-v4 .ind-sc-grid .hv-cap:hover .hv-cap-link span { transform: none; }
  .home-v4 .ind-sc-grid video { display: none; }
}

.ind-hero-bg video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 0;
}
@media (prefers-reduced-motion: reduce) {
  .ind-hero-bg video { display: none; }
}

/* =====================================================================
   Cyberspace Work 首屏预告片（2026-10-23）
   ===================================================================== */
.pd-hero-teaser {
  position: relative;
  overflow: hidden;
  aspect-ratio: 16 / 11;
  border-radius: 22px;
  background: var(--surface-2);
}
.pd-hero-teaser video {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
@media (max-width: 1024px) {
  .pd-hero-teaser { aspect-ratio: 16 / 10; }
}

/* 计划区独立成段后，去掉原本用于「卡片网格 → 档位」的内部间距 */
.pd-plans .sd-plans {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}

/* =====================================================================
   首页页脚按顶部导航重排（2026-10-23，先落首页一版）
   ===================================================================== */
.footer--nav .footer-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 32px;
}
@media (max-width: 1024px) {
  .footer--nav .footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 40px; }
}
@media (max-width: 560px) {
  .footer--nav .footer-grid { grid-template-columns: 1fr; }
}

/* =====================================================================
   首页 · 采集硬件 Kosmo 宽幅卡（2026-10-26）
   ---------------------------------------------------------------------
   位置：核心能力（第 2 屏）之后、产品类型（第 3 屏）之前
   版式：三区横排 —— 左文案 | 中产品图 | 右 01–03 三步流程
         容器内白卡，与 .hv-cap 能力卡共用边框 / 圆角 / 阴影
   注意：区块上下用负 margin 收掉两屏各一半的内边距，改动 .hv-section
         的 padding-block 时这里会自动跟着变，无需手调
   改动要点：替换产品图只需覆盖 assets/hardware/kosmo-hero.png（同尺寸）
   ===================================================================== */
/* =====================================================================
   2026-10-27：图文卡（From site data. To BIM. / AR-Assisted Field Operations）
   与下方 Hesai Kosmo One 卡同一壳：白底 / 1px 边 / 14px 圆角 / 同内边距，
   版式 —— 左视频 / 右文案（文案右对齐）。媒体位见 .hv-clip-media。
   ===================================================================== */
/* 两张宽幅卡同处一个 .hv-wrap，用 grid 撑开 20–32px 的缝 */
.home-v4 .hv-kosmo-sec > .hv-wrap {
  display: grid;
  gap: clamp(20px, 2.2vw, 32px);
}

.home-v4 .hv-aimodel {
  display: grid;
  grid-template-columns: minmax(0, 1.04fr) minmax(0, .96fr);
  /* 行高由左侧视频（16:9）决定，文字列拉满同高，
     于是标题顶齐视频顶、按钮底齐视频底 */
  align-items: stretch;
  gap: clamp(24px, 3.4vw, 60px);
  padding: clamp(24px, 2.6vw, 40px) clamp(24px, 3.2vw, 52px);
  border: 1px solid var(--line-2);
  border-radius: 14px;
  background:
    radial-gradient(88% 120% at 16% 46%, #F4F6FF 0%, rgba(244,246,255,0) 58%),
    #FFFFFF;
  box-shadow: 0 1px 2px rgba(19,20,25,.04), 0 8px 22px rgba(19,20,25,.05);
  overflow: hidden;
}
/* 文字列：纵向撑满视频高度，按钮用 margin-top:auto 压到底部 */
.home-v4 .hv-aimodel-text {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-width: 0;
}
/* 标题顶到视频上沿：行高 1.05 时字面顶比行框顶低约 6px，单独往回收 */
.home-v4 .hv-aimodel .hv-aimodel-title { margin-top: -6px; }
/* 标题保持单行：字号随屏略收，保证 1280 也不折行（38.4px 时 AR 标题会超列宽 25px） */
.home-v4 .hv-aimodel .hv-aimodel-title {
  white-space: nowrap;
  font-size: clamp(26px, 2.7vw, 40px);
}
.home-v4 .hv-aimodel-cta {
  /* 常规间距之上再吃掉剩余空间，使按钮底边与视频底边齐平 */
  margin-top: auto;
  align-self: flex-end;
  padding-top: 0;
}
.home-v4 .hv-aimodel-text > .hv-kosmo-lead { margin-bottom: clamp(18px, 2vw, 26px); }

/* 文字区右对齐（图在左，文在右，贴着卡片右内边距收口） */
.home-v4 .hv-aimodel-text { text-align: right; }
/* lead 自带 max-width:54ch，右对齐时必须把块本身推到右边，
   否则段落的右边缘会缩在容器中间，与标题/按钮的右沿错位 */
.home-v4 .hv-aimodel-text .hv-kosmo-lead { margin-left: auto; }

.home-v4 .hv-aimodel-media {
  display: flex;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  align-self: start;
}

/* 长标题允许折行（AI-Native Functions in Cyberspace 等），短标题仍锁单行 */
.home-v4 .hv-aimodel .hv-aimodel-title--wrap {
  white-space: normal;
  text-wrap: balance;
}

/* 2026-10-28：AR 卡翻面 —— 文字在左、视频在右，文字与按钮左对齐 */
.home-v4 .hv-aimodel--flip {
  grid-template-columns: minmax(0, .96fr) minmax(0, 1.04fr);
  /* 光晕跟着视频挪到右侧 */
  background:
    radial-gradient(88% 120% at 84% 46%, #F4F6FF 0%, rgba(244,246,255,0) 58%),
    #FFFFFF;
}
.home-v4 .hv-aimodel--flip .hv-aimodel-text {
  order: 1;
  text-align: left;
}
.home-v4 .hv-aimodel--flip .hv-aimodel-media { order: 2; }
.home-v4 .hv-aimodel--flip .hv-aimodel-text .hv-kosmo-lead {
  margin-left: 0;
  margin-right: auto;
}
.home-v4 .hv-aimodel--flip .hv-aimodel-cta { align-self: flex-start; }

/* =====================================================================
   2026-10-27：两张图文卡的媒体位统一改成视频（Scan to BIM / AR 现场作业）
   —— 盒子 16:9，视频原尺寸 16:9 直接铺满，不裁切
   —— 悬停整卡自动循环播放，无播放按钮、无进度条（main.js 的全站视频模块）
   ===================================================================== */
.home-v4 .hv-clip-media {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: 12px;
  overflow: hidden;
  background: #0B0D12;
}
.home-v4 .hv-clip-video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

@media (max-width: 1024px) {
  .home-v4 .hv-aimodel {
    grid-template-columns: minmax(0, 1fr);
    gap: clamp(20px, 3vw, 28px);
  }
  /* 单列时仍旧文案在上、视频在下，避免首屏先出现一块画面 */
  .home-v4 .hv-aimodel-text { order: -1; margin-top: 0; }
  .home-v4 .hv-aimodel--flip .hv-aimodel-text { order: -1; }
  .home-v4 .hv-aimodel--flip .hv-aimodel-media { order: 2; }
  /* 窄屏放不下单行标题，允许正常折行（选择器权重需与上方单行规则一致） */
  .home-v4 .hv-aimodel .hv-aimodel-title { white-space: normal; }
}
@media (max-width: 760px) {
  .home-v4 .hv-aimodel { padding: 24px 20px 28px; }
  .home-v4 .hv-aimodel-cta { width: 100%; }
}

.home-v4 .hv-kosmo-sec {
  padding-block: 0;
  /* 上下两屏本身各带 clamp(64px,7.5vw,112px) 内边距，这里反向收 28%：
     保留约 72% 的呼吸感，与上下板块拉开距离，又不会出现两条大空白
     （2026-10-26：由 -45% 调至 -28%，整体上下各多留约 19px） */
  margin-block: calc(clamp(64px, 7.5vw, 112px) * -0.28);
}

.home-v4 .hv-kosmo {
  display: grid;
  grid-template-columns: minmax(0, 470px) auto auto;
  /* 三区均分留白：文案 | 机器 | 流程，避免中间出现一整块空洞 */
  justify-content: space-between;
  align-items: center;
  gap: clamp(20px, 2.4vw, 40px);
  padding: clamp(24px, 2.6vw, 40px) clamp(24px, 3.2vw, 52px);
  border: 1px solid var(--line-2);
  border-radius: 14px;
  background:
    radial-gradient(88% 120% at 82% 46%, #F4F6FF 0%, rgba(244,246,255,0) 58%),
    #FFFFFF;
  box-shadow: 0 1px 2px rgba(19,20,25,.04), 0 8px 22px rgba(19,20,25,.05);
  overflow: hidden;
}

/* ---------- 左侧文案 ---------- */
.home-v4 .hv-kosmo-eyebrow {
  display: block;
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--h-brand);
  margin-bottom: 12px;
}
.home-v4 .hv-kosmo-title {
  font-size: clamp(30px, 3vw, 40px);
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: -.02em;
  color: var(--h-ink);
  margin: 0 0 10px;
}
.home-v4 .hv-kosmo-tagline {
  font-size: clamp(15px, 1.15vw, 17.5px);
  font-weight: 500;
  line-height: 1.5;
  color: var(--h-ink);
  margin: 0 0 16px;
}
.home-v4 .hv-kosmo-lead {
  font-size: 14px;
  line-height: 1.72;
  color: var(--h-ink-2);
  margin: 0;
  max-width: 54ch;
}

/* ---------- 四个指标：2×2 ---------- */
.home-v4 .hv-kosmo-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px 32px;
  margin: 30px 0 28px;
  max-width: 460px;
}
.home-v4 .hv-kosmo-stat b {
  display: block;
  font-size: 26px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -.02em;
  color: var(--h-ink);
}
.home-v4 .hv-kosmo-stat b span {
  font-size: .62em;
  font-weight: 600;
  letter-spacing: 0;
  margin-left: 1px;
}
.home-v4 .hv-kosmo-stat em {
  display: block;
  font-style: normal;
  font-size: 11.5px;
  font-weight: 500;
  letter-spacing: .01em;
  color: var(--h-ink);
  margin-top: 8px;
}
.home-v4 .hv-kosmo-stat i {
  display: block;
  font-style: normal;
  font-size: 11px;
  color: var(--h-ink-2);
  opacity: .72;
  margin-top: 3px;
}

/* ---------- CTA ---------- */
.home-v4 .hv-kosmo-cta {
  height: 42px;
  padding: 0 24px;
  font-size: 13.5px;
}

/* ---------- 中间：产品图 ---------- */
.home-v4 .hv-kosmo-media {
  display: flex;
  align-items: center;
  justify-content: center;
}
  .home-v4 .hv-kosmo-media img {
    display: block;
    width: auto;
    height: auto;
    max-width: 100%;
    max-height: clamp(260px, 30vw, 430px);
    object-fit: contain;
    /* 2026-10-27：产品自带一圈极浅的蓝色背光，贴着设备轮廓（drop-shadow 天然跟随 alpha），
       由主到外三层：贴边亮环 / 中圈 / 外层大气感。hover 时只加深 + 略微外扩，
       模糊半径几乎不动，所以视觉上是「背光拧亮」而不是「光圈散开」。 */
    filter: drop-shadow(0 24px 40px rgba(19,20,25,.16))
            drop-shadow(0 0 2px rgba(51,100,255,.14))
            drop-shadow(0 0 6px rgba(51,100,255,.11))
            drop-shadow(0 0 14px rgba(51,100,255,.06));
    transform: scale(1);
    transform-origin: center center;
    transition: filter .38s var(--ease), transform .46s var(--ease);
  }
  .home-v4 .hv-kosmo-media img.is-hot,
  /* 2026-10-29：改成鼠标进入图片即触发。原来只靠 .is-hot（main.js 按 alpha 命中，
     必须正好压在产品实体像素上），鼠标在图片的透明区域移动时毫无反馈，手感很飘。 */
  .home-v4 .hv-kosmo-media:hover img {
    /* 光晕加深的同时产品轻轻放大一点点（+2.2%），幅度刻意做小，
       只求「被点亮后往前站半步」的感觉，不做夸张的弹跳。 */
    filter: drop-shadow(0 24px 44px rgba(19,20,25,.18))
            drop-shadow(0 0 3px rgba(51,100,255,.26))
            drop-shadow(0 0 7px rgba(51,100,255,.28))
            drop-shadow(0 0 16px rgba(51,100,255,.13));
    transform: scale(1.022);
  }
  @media (prefers-reduced-motion: reduce) {
    .home-v4 .hv-kosmo-media img { transition: none; }
  }

/* ---------- 右侧：三步流程（竖排 + 细轨） ------------------- */
.home-v4 .hv-kosmo-flow {
  position: relative;
  flex: none;
  width: clamp(156px, 15vw, 200px);
  margin: 0;
  padding: 2px 0 2px 22px;
  list-style: none;
  /* 左侧竖轨，串起三个节点 */
  border-left: 1px solid rgba(19,20,25,.12);
}
.home-v4 .hv-kosmo-flow li {
  position: relative;
  padding-bottom: 22px;
}
.home-v4 .hv-kosmo-flow li:last-child { padding-bottom: 0; }
/* 节点圆点，压在竖轨上 */
.home-v4 .hv-kosmo-flow li::before {
  content: '';
  position: absolute;
  left: -25.5px;
  top: 4px;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #fff;
  border: 1px solid rgba(19,20,25,.3);
}
.home-v4 .hv-kosmo-flow li:first-child::before {
  background: var(--h-brand);
  border-color: var(--h-brand);
  box-shadow: 0 0 0 3px rgba(51,100,255,.12);
}
.home-v4 .hv-kosmo-flow-k {
  display: block;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .16em;
  color: var(--h-brand);
  line-height: 1;
  margin-bottom: 8px;
}
.home-v4 .hv-kosmo-flow b {
  display: block;
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--h-ink);
  line-height: 1.2;
  margin-bottom: 6px;
}
.home-v4 .hv-kosmo-flow i {
  display: block;
  font-style: normal;
  font-size: 11.5px;
  line-height: 1.55;
  color: var(--h-ink-2);
}

/* ---------- 响应式 ---------- */
@media (max-width: 1080px) {
  .home-v4 .hv-kosmo {
    grid-template-columns: 1fr;
    justify-content: stretch;
    gap: 26px;
  }
  .home-v4 .hv-kosmo-media { order: -2; }
  .home-v4 .hv-kosmo-text { order: -1; }
  .home-v4 .hv-kosmo-media img { max-height: 300px; }
  .home-v4 .hv-kosmo-flow { width: 100%; max-width: 460px; }
  .home-v4 .hv-kosmo-stats { max-width: none; }
}
@media (max-width: 720px) {
  .home-v4 .hv-kosmo-media img { max-height: 240px; }
}
@media (max-width: 560px) {
  .home-v4 .hv-kosmo { padding: 24px 20px 28px; }
  .home-v4 .hv-kosmo-media img { max-height: 220px; }
  .home-v4 .hv-kosmo-stats { gap: 18px 20px; margin: 24px 0; }
  .home-v4 .hv-kosmo-cta { width: 100%; }
}

/* =====================================================================
   首页第四轮调整（2026-10-26）
   ① 三类目：改 xgrids 式「发丝分隔的单元 + 悬停浮起白卡」
   ② 行业 3×2：整组收窄约 12%，悬停改克制的 1.2% 放大
   ③ 合作伙伴 logo 滚动放慢（46s → 72s）
   ===================================================================== */

/* ① 三类目：无框单元 + 上发丝线 + 竖分隔，悬停才浮成白卡 --------------- */
.home-v4 .hv-cap-cats {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  margin: 0 0 clamp(26px, 3vw, 40px);
  border-top: 1px solid rgba(19, 20, 25, .10);
  align-items: stretch;
}
.home-v4 .hv-cap-cat {
  position: relative;
  gap: 13px;
  padding: clamp(24px, 2.4vw, 34px) clamp(16px, 1.8vw, 26px);
  border-left: 1px solid rgba(19, 20, 25, .09);
  border-radius: 12px;
  transition: background .45s var(--ease), box-shadow .45s var(--ease);
}
.home-v4 .hv-cap-cat:first-child { border-left: 0; }
.home-v4 .hv-cap-cat:hover,
.home-v4 .hv-cap-cat:focus-within {
  background: #fff;
  box-shadow: 0 12px 30px rgba(19, 20, 25, .09);
}

/* ② 行业 3×2：整组收窄 + 克制悬停 ------------------------------------- */
.home-v4 .hv-ind-grid {
  max-width: 1200px;
  margin-inline: auto;
  gap: 16px;
}
.home-v4 .hv-ind {
  transition: transform var(--d-3) var(--ease), box-shadow var(--d-3) var(--ease);
}
.home-v4 .hv-ind:hover {
  transform: scale(1.012);
  box-shadow: 0 10px 24px rgba(19, 20, 25, .10);
}
.home-v4 .hv-ind:hover img { transform: scale(1.04); }
.home-v4 .hv-ind:hover .hv-hover-video { transform: scale(1.04); }
.home-v4 .hv-ind:hover::after { opacity: .94; }

/* ③ logo 跑马灯减速 ---------------------------------------------------- */
.home-v4 .hv-marquee-track { animation-duration: 72s; }

/* 响应式：三类目在窄屏改为纵向分隔，保留同一种克制的悬停读法 --------- */
@media (max-width: 760px) {
  .home-v4 .hv-cap-cats {
    grid-template-columns: 1fr;
    gap: 0;
    border-top: 1px solid rgba(19, 20, 25, .10);
  }
  .home-v4 .hv-cap-cat {
    border-left: 0;
    border-bottom: 1px solid rgba(19, 20, 25, .09);
    padding: 20px 16px;
    border-radius: 10px;
  }
  .home-v4 .hv-ind-grid { gap: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .home-v4 .hv-ind:hover { transform: none; }
  .home-v4 .hv-ind:hover img { transform: none; }
}

/* =====================================================================
   首页第五轮调整（2026-10-26）
   ① 三类目：去掉蓝底药丸，改大图标在上、标题与说明在下
   ② logo 跑马灯再放慢 50%（72s → 108s）
   ③ 蓝色交互对齐 xgrids：悬停压深 + 上浮 1px + 右侧小星标展开
   ===================================================================== */

/* ① 三类目 ------------------------------------------------------------ */
.home-v4 .hv-cap-cat {
  gap: 10px;
  padding: clamp(26px, 2.8vw, 38px) clamp(16px, 1.8vw, 24px);
  align-items: center;
  text-align: center;
}
.home-v4 .hv-cap-cat-ico {
  display: block;
  width: 52px;
  height: 52px;
  margin-bottom: 8px;
  color: var(--h-brand);
  transition: transform .5s var(--ease-soft, var(--ease));
}
.home-v4 .hv-cap-cat-ico svg {
  display: block;
  width: 100%;
  height: 100%;
}
.home-v4 .hv-cap-cat:hover .hv-cap-cat-ico { transform: translateY(-2px); }
.home-v4 .hv-cap-cat-title {
  margin: 0;
  font-size: 17px;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -.012em;
  color: var(--h-ink);
}
.home-v4 .hv-cap-cat-sub {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.6;
  color: var(--h-ink-2);
}

/* ② 合作伙伴 logo：72s → 108s ---------------------------------------- */
.home-v4 .hv-marquee-track { animation-duration: 108s; }

/* ③ 蓝色交互：xgrids 式药丸按钮 --------------------------------------- */
:root {
  /* 尾部指示：细线箭头（自左向右展开），不复用 xgrids 的星标 */
  --cg-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1.6 8h10.6M8.2 3.6 12.6 8 8.2 12.4'/%3E%3C/svg%3E");
}

.home-v4 .hv-pill:not(.hv-pill--ghost),
.pd-btn--solid,
.top-extra .btn-ghost,
.section--dark .btn,
.plan-card--dark .plan-cta {
  transition: background .25s cubic-bezier(.33, 1, .68, 1),
              border-color .25s cubic-bezier(.33, 1, .68, 1),
              color .25s cubic-bezier(.33, 1, .68, 1),
              transform .3s cubic-bezier(.22, 1, .36, 1),
              box-shadow .25s cubic-bezier(.33, 1, .68, 1);
}

/* 悬停时才展开的小星标（遮罩绘制，跟随 currentColor） */
.home-v4 .hv-pill:not(.hv-pill--ghost)::after,
.pd-btn--solid::after,
.top-extra .btn-ghost::after,
.section--dark .btn::after,
.plan-card--dark .plan-cta::after {
  content: "";
  display: inline-block;
  vertical-align: middle;
  flex: none;
  width: 0;
  height: 13px;
  margin-left: 0;
  opacity: 0;
  background-color: currentColor;
  -webkit-mask: var(--cg-arrow) left center / 13px 13px no-repeat;
  mask: var(--cg-arrow) left center / 13px 13px no-repeat;
  transition: width .44s cubic-bezier(.34, 1.8, .5, 1),
              margin-left .44s cubic-bezier(.34, 1.8, .5, 1),
              opacity .28s ease;
}
.home-v4 .hv-pill:not(.hv-pill--ghost):hover::after,
.home-v4 .hv-pill:not(.hv-pill--ghost):focus-visible::after,
.pd-btn--solid:hover::after,
.pd-btn--solid:focus-visible::after,
.top-extra .btn-ghost:hover::after,
.section--dark .btn:hover::after,
.plan-card--dark .plan-cta:hover::after {
  width: 13px;
  margin-left: 8px;
  opacity: 1;
}

/* 统一的压深与 1px 上浮，取代原先各写一套的阴影 */
.home-v4 .hv-pill:not(.hv-pill--ghost):hover,
.pd-btn--solid:hover,
.top-extra .btn-ghost:hover,
.section--dark .btn:hover,
.plan-card--dark .plan-cta:hover {
  background: #2952E0;
  border-color: #2952E0;
  color: #fff;
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(51, 100, 255, .26);
}
.home-v4 .hv-pill:not(.hv-pill--ghost):active,
.pd-btn--solid:active,
.top-extra .btn-ghost:active,
.section--dark .btn:active,
.plan-card--dark .plan-cta:active {
  transform: translateY(0);
  box-shadow: none;
}

@media (prefers-reduced-motion: reduce) {
  .home-v4 .hv-pill:not(.hv-pill--ghost)::after,
  .pd-btn--solid::after,
  .top-extra .btn-ghost::after,
  .section--dark .btn::after,
  .plan-card--dark .plan-cta::after { transition: none; }
  .home-v4 .hv-pill:not(.hv-pill--ghost):hover,
  .pd-btn--solid:hover,
  .top-extra .btn-ghost:hover,
  .section--dark .btn:hover,
  .plan-card--dark .plan-cta:hover { transform: none; }
  .home-v4 .hv-cap-cat:hover .hv-cap-cat-ico { transform: none; }
}

@media (max-width: 760px) {
  .home-v4 .hv-cap-cat-ico { width: 38px; height: 38px; }
  .home-v4 .hv-cap-cat-title { font-size: 16px; }
}

/* =====================================================================
   撤下 Cyberspace Buildings 后的布局收口（2026-10-26）
   留出的空位不靠占位符补，靠把剩余卡片撑满，避免半列空白
   ===================================================================== */

/* 产品页关联区剩两张卡时按两列排，不留在三列网格里空一格 */
.pd-related-grid.pd-related-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 760px) {
  .pd-related-grid.pd-related-grid--2 { grid-template-columns: 1fr; }
}

/* 会员页只剩一条方案线时，单张入口卡占满整行 */
.plans-index.plans-index--single { grid-template-columns: minmax(0, 1fr); }

/* =====================================================================
   2026-10-26 · 收尾统一
   ① Kosmo 板块上下间距放大（见 .hv-kosmo-sec 的 -0.28）
   ② 部署信息双卡加入与行业卡 / 产品卡一致的「悬停轻放大 + 阴影上浮」
   ③ 触屏与减少动态效果环境下取消位移，避免点击后卡住
   ===================================================================== */
@media (hover: none) {
  .home-v4 .hv-deploy-card:hover {
    transform: none;
    border-color: var(--h-line);
    box-shadow: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  .home-v4 .hv-deploy-card { transition: none; }
  .home-v4 .hv-deploy-card:hover { transform: none; }
}

/* =====================================================================
   2026-10-27：页面壳随屏收窄 —— 桌面 64 / 平板 40 / 手机 20
   （对标 xgrids：桌面恒定 64px，超出 1540 后才随视口增长）
   ===================================================================== */
@media (max-width: 1024px) { :root { --shell-pad: 40px; } }
@media (max-width: 768px)  { :root { --shell-pad: 20px; } }

/* =====================================================================
   2026-10-29：列表缩略图去掉 1px 灰框
   · 原来 2235 行那组统一加了 1px 边框，深色版里读起来像给图片套了一层浅色相框
   · 这里只取消边框，圆角与裁切保持原样
   ===================================================================== */
.entry-thumb img { border: 0; }

/* =====================================================================
   2026-10-29 · Kosmo 产品页新增两段：LiDAR 精度对比 / 一体化 3DGS 流程
   · 颜色全部走变量（--paper-2 / --g-200 / --g-400 / --g-600 / --brand），
     深色版由 dark.css 的变量反转自动带出，只补两处蓝色文字
   ===================================================================== */
.kz-lidar {
  display: grid;
  grid-template-columns: minmax(0, .84fr) minmax(0, 1.16fr);
  gap: clamp(18px, 2.8vw, 40px);
  align-items: center;
}
.kz-stats {
  background: var(--paper-2);
  border: 1px solid var(--g-200);
  border-radius: 20px;
  padding: clamp(24px, 3vw, 40px) clamp(22px, 2.6vw, 36px);
}
.kz-stat + .kz-stat { margin-top: clamp(20px, 2.6vw, 34px); }
.kz-stat-head {
  display: flex; align-items: baseline; gap: 8px;
  margin-bottom: 14px;
}
.kz-stat-head b {
  font-size: clamp(30px, 3.4vw, 42px);
  line-height: 1;
  letter-spacing: -.03em;
  font-weight: 700;
  color: var(--brand);
}
.kz-stat-head i {
  font-style: normal;
  font-size: clamp(18px, 1.8vw, 22px);
  color: var(--brand);
}
.kz-stat-head span {
  margin-left: 6px;
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
}
.kz-bar {
  display: flex; align-items: center; gap: 12px;
  margin-top: 9px;
}
.kz-bar-track {
  flex: 1;
  height: 12px;
  border-radius: 6px;
  background: var(--g-200);
  overflow: hidden;
}
.kz-bar-track i {
  display: block; height: 100%;
  border-radius: 6px;
  background: var(--brand);
}
.kz-bar--other .kz-bar-track i { background: var(--g-400); }
.kz-bar em {
  font-style: normal;
  font-size: 13px;
  color: var(--g-600);
  min-width: 108px;
}
.kz-legend {
  display: flex; flex-wrap: wrap; gap: 20px;
  margin-top: clamp(20px, 2.4vw, 30px);
  font-size: 12px;
  color: var(--g-600);
}
.kz-legend span { display: inline-flex; align-items: center; gap: 8px; }
.kz-legend i {
  width: 10px; height: 10px;
  border-radius: 3px;
  background: var(--brand);
}
.kz-legend--other i { background: var(--g-400); }

.kz-clouds { display: grid; gap: 14px; }
.kz-cloud {
  margin: 0;
  padding: clamp(10px, 1.4vw, 16px);
  border-radius: 16px;
  background: var(--paper-2);
  border: 1px solid var(--g-200);
}
.kz-cloud img { display: block; width: 100%; height: auto; }

.kz-flow {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(16px, 2.2vw, 26px);
}
.kz-flow figure { margin: 0; }
.kz-flow-media {
  position: relative;
  aspect-ratio: 540 / 284; /* 与 kosmo-platform.jpg 原始比例一致，cover 不再裁掉界面两侧 */
  border-radius: 18px;
  overflow: hidden;
  background: var(--paper-2);
  border: 1px solid var(--g-200);
  display: flex; align-items: center; justify-content: center;
}
.kz-flow-media img {
  display: block;
  width: 100%; height: 100%;
  object-fit: cover;
}
.kz-flow-media--device img {
  width: auto;
  height: auto;
  max-width: 78%;
  max-height: 84%;
  object-fit: contain;
}
.kz-flow figcaption {
  margin-top: 14px;
  text-align: center;
  font-size: clamp(15px, 1.5vw, 18px);
  font-weight: 600;
  color: var(--ink);
}

.kz-steps {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(14px, 1.8vw, 22px);
  margin: clamp(22px, 3vw, 34px) 0 0;
  padding: 0;
}
.kz-step {
  background: var(--paper-2);
  border: 1px solid var(--g-200);
  border-radius: 20px;
  padding: clamp(22px, 2.6vw, 32px) clamp(18px, 2vw, 26px);
  text-align: center;
}
.kz-step-no {
  display: block;
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: .12em;
  color: var(--brand);
  margin-bottom: 10px;
}
.kz-step h3 {
  margin: 0 0 12px;
  font-size: clamp(16px, 1.6vw, 19px);
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--ink);
}
.kz-step p {
  margin: 0;
  font-size: 14px;
  line-height: 1.75;
  color: var(--g-600);
}

@media (max-width: 900px) {
  .kz-lidar { grid-template-columns: minmax(0, 1fr); }
  .kz-flow { grid-template-columns: minmax(0, 1fr); }
  .kz-steps { grid-template-columns: minmax(0, 1fr); }
  .kz-bar em { min-width: 92px; }
}

/* =====================================================================
   2026-10-29：首页区块垂直间距统一
   问题：section 自带上下 108px 内边距，跨节空白 190–216px；
        而 .hv-kosmo-sec 又用负 margin 把它收成 78px —— 全页有 31 / 78 / 216 三种节奏。
   改法：section 不再自带上下内边距，相邻 section 之间只留一个 --hv-gap，
        取值与 Kosmo / AI / AR 三张卡的卡片间距同源（clamp(20px,2.2vw,32px)）。
   ===================================================================== */
.home-v4 { --hv-gap: clamp(50px, 12.5vw, 180px); }
.home-v4 .hv-section { padding-block: 0; }
.home-v4 .hv-section + .hv-section { margin-top: var(--hv-gap); }
.home-v4 .hv-kosmo-sec { margin-block: 0; }
/* 首屏（.hero）与页尾联系区（.hv-contact）不是 .hv-section，吃不到上面的相邻规则，
   单独补同一个间距；联系区自带的 104px 上内边距同时收掉，否则会多出一段。 */
.home-v4 #capabilities { margin-top: var(--hv-gap); }
/* 2026-10-29：联系区标题原来紧贴区块上沿，补一段顶部内边距把它压下来 */
.home-v4 #contact { margin-top: var(--hv-gap); padding-top: clamp(56px, 6vw, 80px); }
/* 窄屏单独收一档：桌面 288px 的呼吸感放到手机上会变成两三屏空白。
   同一个断点内仍然只有一个值，保持节奏一致。 */
@media (max-width: 1024px) { .home-v4 { --hv-gap: clamp(40px, 5.5vw, 88px); } }
@media (max-width: 760px)  { .home-v4 { --hv-gap: clamp(36px, 8vw, 56px); } }

/* =====================================================================
   2026-11-02：顶栏 Contact Us 被压成两行（Contact / Us）的修复
   原因：按钮文案没有锁单行，而它是 .top-extra 里的 flex item（flex-shrink: 1）。
   窗口较窄或字体回退时可用宽度不够，文字就折行，按钮高度撑出顶栏。
   ===================================================================== */
.topbar .top-extra .btn-ghost {
  white-space: nowrap;
  flex: 0 0 auto;
}

/* =====================================================================
   2026-11-02：空间项目轮播改为「一组按钮 + 无缝循环」
   按钮从每张卡里挪到 .hv-carousel 上，因此不再有 .hv-slide.is-active 的显示条件，
   这里显式常显，并把左右位置对齐到卡片两侧的留白里。
   ===================================================================== */
.home-v4 .hv-carousel { position: relative; }
.home-v4 .hv-carousel > .hv-slide-nav {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(-50%) scale(1);
}
/* 按钮贴着当前卡的内侧边缘：卡片宽度是 --cw（min(820px, 78vw)），
   半宽即 min(410px, 39vw)，再往里让 14px，这样按钮始终落在中间那张卡上，
   不会压到左右相邻的卡片。 */
.home-v4 .hv-carousel > .hv-slide-nav--prev { left: calc(50% - min(410px, 39vw) + 14px); }
.home-v4 .hv-carousel > .hv-slide-nav--next { right: calc(50% - min(410px, 39vw) + 14px); }
.home-v4 .hv-carousel > .hv-slide-nav { opacity: .78; }
.home-v4 .hv-carousel > .hv-slide-nav:hover,
.home-v4 .hv-carousel > .hv-slide-nav:focus-visible { opacity: 1; }

/* =====================================================================
   2026-11-02：产品页规格区的产品照「无框」变体
   —— 照片自带页面同色底（已预处理为 #0A0B0E），不需要描边和卡片底色，
      否则深色主题下 1px 浅描边会被看成一层白框。
   ===================================================================== */
.pd-specs-media.pd-specs-media--bare {
  border: 0;
  background: transparent;
}
