/* ============================================================
   携丰达科技官网 · 原型样式表
   依据《携丰达科技官网开发规格书 V1.0》第 7 章视觉与前端规范
   主色 #1E4D8C ｜ 板块点缀：电子 #1E4D8C / 软件 #0E7C86 / 生物 #2E8B57
   ============================================================ */

/* ---------- 1. 设计令牌（定稿值） ---------- */
:root {
  --brand-900: #0F2B52;
  --brand-700: #1E4D8C;
  --brand-500: #2F6DB5;
  --brand-50: #EAF1FA;
  --accent-electronics: #1E4D8C;
  --accent-software: #0E7C86;
  --accent-biotech: #2E8B57;
  --text-primary: #1A1D24;
  --text-secondary: #4A5260;
  --text-tertiary: #78818F;
  --border: #D8DEE7;
  --bg: #FFFFFF;
  --bg-alt: #F4F7FB;
  --success: #1B7F4B;
  --warning: #B26A00;
  --danger: #C0392B;

  --font-cn: "Source Han Sans SC", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
  --font-en: "Inter", -apple-system, "Segoe UI", Arial, sans-serif;
  --font: var(--font-cn);

  --radius: 8px;
  --radius-lg: 12px;
  --shadow-sm: 0 1px 2px rgba(15, 43, 82, .06), 0 2px 8px rgba(15, 43, 82, .05);
  --shadow-md: 0 4px 12px rgba(15, 43, 82, .08), 0 12px 32px rgba(15, 43, 82, .08);
  --shadow-lg: 0 12px 32px rgba(15, 43, 82, .14);

  --sec-y: 96px;
  --sec-y-sm: 56px;
  --container: 1200px;
  --gutter: 24px;
  --ease: cubic-bezier(.22, .61, .36, 1);
}

/* ---------- 2. 基础重置 ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--font);
  font-size: 16px;
  line-height: 1.75;
  color: var(--text-primary);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
}
img, svg { max-width: 100%; display: block; }
a { color: var(--brand-700); text-decoration: none; }
a:hover { color: var(--brand-500); }
h1, h2, h3, h4 { margin: 0; font-weight: 700; line-height: 1.3; color: var(--text-primary); }
p { margin: 0 0 16px; }
ul { margin: 0; padding: 0; list-style: none; }
button { font-family: inherit; }
:focus-visible { outline: 3px solid var(--brand-500); outline-offset: 2px; border-radius: 3px; }

/* ---------- 3. 布局 ---------- */
.container { width: 100%; max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter); }
.container--wide { max-width: 1280px; }
.sec { padding: var(--sec-y) 0; }
.sec--alt { background: var(--bg-alt); }
.sec--tight { padding: 64px 0; }
.sec--dark { background: var(--brand-900); color: #fff; }
.sec--dark h1, .sec--dark h2, .sec--dark h3 { color: #fff; }
.sec--dark .sec-sub { color: rgba(255, 255, 255, .72); }
.grid { display: grid; gap: 24px; }
.g2 { grid-template-columns: repeat(2, 1fr); }
.g3 { grid-template-columns: repeat(3, 1fr); }
.g4 { grid-template-columns: repeat(4, 1fr); }

/* ---------- 4. 排版 ---------- */
.h1 { font-size: clamp(28px, 3.4vw, 40px); line-height: 1.3; letter-spacing: -.01em; }
.h2 { font-size: clamp(22px, 2.4vw, 30px); line-height: 1.4; letter-spacing: -.005em; }
.h3 { font-size: 20px; line-height: 1.5; font-weight: 600; }
.lead { font-size: 17px; line-height: 1.8; color: var(--text-secondary); }
.small { font-size: 14px; line-height: 1.6; color: var(--text-tertiary); }
.sec-sub { color: var(--text-secondary); margin: 12px 0 0; max-width: 76ch; }
.sec-head { max-width: 860px; margin-bottom: 48px; }
.sec-head--center { margin-left: auto; margin-right: auto; text-align: center; }
.eyebrow {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;
  color: var(--brand-700); margin-bottom: 14px;
}
.eyebrow::before { content: ""; width: 22px; height: 2px; background: currentColor; border-radius: 2px; }
.eyebrow--sw { color: var(--accent-software); }
.eyebrow--bio { color: var(--accent-biotech); }
.eyebrow--light { color: #9CC0E8; }
.acc { color: var(--brand-700); }
.mono-num { font-family: var(--font-en); font-weight: 700; font-variant-numeric: tabular-nums; }

/* ---------- 6. 按钮 ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 44px; padding: 0 22px;
  font-size: 15px; font-weight: 600; line-height: 1;
  border: 1px solid transparent; border-radius: var(--radius);
  cursor: pointer; transition: all .22s var(--ease); white-space: nowrap;
}
.btn--primary { background: var(--brand-700); color: #fff; box-shadow: 0 2px 10px rgba(30, 77, 140, .22); }
.btn--primary:hover { background: var(--brand-900); color: #fff; box-shadow: 0 6px 18px rgba(30, 77, 140, .28); transform: translateY(-1px); }
.btn--ghost { background: transparent; color: var(--brand-700); border-color: var(--border); }
.btn--ghost:hover { border-color: var(--brand-700); background: var(--brand-50); color: var(--brand-900); }
.btn--light { background: #fff; color: var(--brand-900); }
.btn--light:hover { background: var(--brand-50); color: var(--brand-900); }
.btn--outline-light { background: transparent; color: #fff; border-color: rgba(255, 255, 255, .5); }
.btn--outline-light:hover { background: rgba(255, 255, 255, .12); color: #fff; border-color: #fff; }
.btn--sm { min-height: 38px; padding: 0 16px; font-size: 14px; }
.btn--block { width: 100%; }
.btn[disabled] { opacity: .5; cursor: not-allowed; }
.btn-row { display: flex; gap: 14px; flex-wrap: wrap; }

/* ---------- 7. 页头 ---------- */
.hdr {
  position: sticky; top: 0; z-index: 60;
  background: rgba(255, 255, 255, .96); backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid var(--border); transition: box-shadow .25s var(--ease);
}
.hdr.is-stuck { box-shadow: 0 4px 20px rgba(15, 43, 82, .10); }
.hdr__in { display: flex; align-items: center; gap: 28px; height: 72px; }
/* 品牌标：V1.3 横版矢量（三菱形 + XF + 中文 + 红色分隔线 + 英文），
   取代原「圆角方块占位 mark + HTML 文字」的组合。文字已转曲，无字体依赖。 */
.logo { display: flex; align-items: center; flex: 0 0 auto; }
.logo__img { display: block; height: 34px; width: auto; }
.ftr .logo { padding: 0; }
.ftr .logo__img { height: 44px; }
.nav { display: flex; align-items: center; gap: 4px; margin-left: auto; }
.nav a {
  display: block; padding: 9px 13px; border-radius: 6px;
  font-size: 15px; font-weight: 500; color: var(--text-secondary);
  transition: all .2s var(--ease); position: relative; white-space: nowrap;
}
.nav a:hover { color: var(--brand-700); background: var(--brand-50); }
.nav a.is-active { color: var(--brand-700); font-weight: 600; }
.nav a.is-active::after {
  content: ""; position: absolute; left: 13px; right: 13px; bottom: 2px;
  height: 2px; background: var(--brand-700); border-radius: 2px;
}
/* 导航下拉：首页 › 关于我们（2026-09-19 版块调整后引入） */
.nav__item { position: relative; }
.nav__item > a { display: flex; align-items: center; gap: 5px; }
.nav__caret {
  width: 6px; height: 6px; flex: 0 0 6px; margin-top: -3px;
  border-right: 1.6px solid currentColor; border-bottom: 1.6px solid currentColor;
  transform: rotate(45deg); opacity: .5;
}
.nav__sub {
  position: absolute; top: calc(100% + 4px); left: 4px; min-width: 152px;
  background: #fff; border: 1px solid var(--border); border-radius: 8px;
  box-shadow: 0 14px 34px rgba(15, 43, 82, .13); padding: 6px;
  opacity: 0; visibility: hidden; transform: translateY(6px);
  transition: opacity .18s var(--ease), transform .18s var(--ease), visibility .18s var(--ease);
}
.nav__item:hover .nav__sub,
.nav__item:focus-within .nav__sub { opacity: 1; visibility: visible; transform: translateY(0); }
.nav__sub a {
  display: block; padding: 9px 12px; border-radius: 6px;
  font-size: 14px; font-weight: 500; color: var(--text-secondary); white-space: nowrap;
}
.nav__sub a:hover { color: var(--brand-700); background: var(--brand-50); }
.nav__sub a.is-active { color: var(--brand-700); font-weight: 600; }
.nav__sub a.is-active::after { display: none; }
.nav__item.is-current > a { color: var(--brand-700); font-weight: 600; }
.nav__item.is-current .nav__caret { opacity: .8; }
.hdr__side { display: flex; align-items: center; gap: 10px; flex: 0 0 auto; }
.lang { display: flex; align-items: center; border: 1px solid var(--border); border-radius: 6px; overflow: hidden; }
.lang button {
  border: 0; background: transparent; padding: 6px 10px; font-size: 12.5px; font-weight: 600;
  color: var(--text-tertiary); cursor: pointer; letter-spacing: .04em;
}
.lang button.is-on { background: var(--brand-50); color: var(--brand-700); }
.burger {
  display: none; width: 44px; height: 44px; border: 1px solid var(--border); border-radius: 6px;
  background: #fff; cursor: pointer; align-items: center; justify-content: center;
}
.burger span { display: block; width: 18px; height: 2px; background: var(--text-primary); position: relative; }
.burger span::before, .burger span::after { content: ""; position: absolute; left: 0; width: 18px; height: 2px; background: var(--text-primary); }
.burger span::before { top: -6px; } .burger span::after { top: 6px; }

/* ---------- 8. Hero ---------- */
.hero { position: relative; background: var(--brand-900); color: #fff; overflow: hidden; }
/* hero 背景两层：内页先铺自己的实拍配图（40% + 右向渐隐），再把真实驱动板
   实拍（tools/gen_hero_board.py 生成，自带透明底与底部渐隐）叠在配图之上、
   旋转电机之下；两层 z-index 均为 0，靠 DOM 顺序决定上下 —— 电机(z1)始终
   压在最前面。首页只有板图层。
   🚨 实际可见度约是 opacity 的一成：上面还有 .hero::after 的深蓝渐变（alpha
   ≈.85~.95）再压一层，想调「若隐若现」的程度要按叠加后的效果反推。 */
.hero__bg {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover;
  z-index: 0;                 /* 两层背景都在 .hero__deco(z1) 旋转电机之下 */
}
/* 板图：整体沉到**旋转电机的下方** —— 用 bottom: 0 锚底（而非 top:50%），
   板底正好贴住 hero 底边、不溢出，自带的底部渐隐与下面叠的 CSS 渐隐
   全部落在可见区内；板子从电机下缘以下探出来，像电机搁在板卡上。
   right 与 .hero__deco 用同一套对齐量，横向跟着电机走；
   translateX 轻微右移，避免与电机完全同心显得是「垫片」。
   🚨 别改回 top:50% —— 那样板子会比电机小一圈、整块被电机盖死看不见 */
.hero__bg--board {
  inset: auto;
  bottom: 0;
  right: max(24px, calc((100% - 1200px) / 2));
  width: clamp(472px, 45vw, 642px);
  height: auto;
  object-fit: contain;
  transform: translateX(2%);
  opacity: .72;
  /* 资产自带的底部渐隐只有 14%，overflow 裁切时会被切出硬边；
     再叠一道 CSS 渐隐到 hero 底边，保证板子「沉」进去而不是被切断 */
  -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 86%, transparent 100%);
          mask-image: linear-gradient(to bottom, #000 0%, #000 86%, transparent 100%);
}
/* 内页 hero 矮、电机也小，板子同比收小；bottom 仍贴底，露出的比例反而更高 */
.hero--sm .hero__bg--board {
  right: max(20px, calc((100% - 1200px) / 2));
  width: clamp(308px, 30vw, 470px);
  transform: translateX(3%);
  opacity: .66;
}
/* 内页实拍配图：保持原口径 —— 40% 透明 + 右向渐隐，保证文案压得住 */
.hero__bg--photo {
  opacity: .40;
  -webkit-mask-image: linear-gradient(90deg, #000 0%, #000 30%, rgba(0,0,0,.34) 50%, transparent 70%);
          mask-image: linear-gradient(90deg, #000 0%, #000 30%, rgba(0,0,0,.34) 50%, transparent 70%);
}
.hero::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(102deg, rgba(11, 33, 63, .95) 0%, rgba(15, 43, 82, .84) 42%, rgba(15, 43, 82, .42) 100%);
}
.hero__in { position: relative; z-index: 2; padding: 108px 0 96px; max-width: 760px; }
.hero--sm .hero__in { padding: 84px 0 72px; }
.hero h1 { color: #fff; }
.hero .lead { color: rgba(255, 255, 255, .82); max-width: 62ch; margin-top: 18px; }
.hero .btn-row { margin-top: 34px; }
.hero__crumb { font-size: 13px; color: rgba(255, 255, 255, .62); margin-bottom: 18px; }
.hero__crumb a { color: rgba(255, 255, 255, .78); }
.hero__crumb a:hover { color: #fff; }
.hero__tags { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 30px; }
.chip {
  display: inline-flex; align-items: center; gap: 7px;
  font-size: 13px; font-weight: 500; padding: 5px 12px; border-radius: 100px;
  background: rgba(255, 255, 255, .12); border: 1px solid rgba(255, 255, 255, .22); color: #fff;
}
.chip--on-light { background: var(--brand-50); border-color: #CFE0F2; color: var(--brand-900); }
.chip--sw { background: #E4F4F5; border-color: #BFE2E5; color: #0B5F67; }
.chip--bio { background: #E8F5EE; border-color: #C3E4D3; color: #1F6B41; }
.chip--topic { background: #fff; border-color: #9CBFE4; color: var(--brand-700); }

/* ---------- 9. 卡片 ---------- */
.card {
  background: #fff; border: 1px solid var(--border); border-radius: var(--radius-lg);
  padding: 28px; transition: all .26s var(--ease); position: relative; overflow: hidden;
}
.card--hover:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); border-color: #C6D6EA; }
.card__ico {
  width: 44px; height: 44px; border-radius: 10px; display: flex; align-items: center; justify-content: center;
  background: var(--brand-50); color: var(--brand-700); margin-bottom: 18px;
}
.card__ico--sw { background: #E4F4F5; color: var(--accent-software); }
.card__ico--bio { background: #E8F5EE; color: var(--accent-biotech); }
.card h3 { margin-bottom: 10px; }
.card p { color: var(--text-secondary); font-size: 15px; margin: 0; }

/* 板块入口卡（等权重） */
.seg-card { display: block; background: #fff; border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; transition: all .28s var(--ease); }
.seg-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-lg); }
.seg-card__media { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: var(--bg-alt); }
.seg-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease); }
.seg-card:hover .seg-card__media img { transform: scale(1.05); }
.seg-card__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(15, 43, 82, .35), transparent 55%); }
.seg-card__body { padding: 24px 26px 28px; border-top: 3px solid var(--accent-electronics); }
.seg-card--sw .seg-card__body { border-top-color: var(--accent-software); }
.seg-card--bio .seg-card__body { border-top-color: var(--accent-biotech); }
.seg-card--plain .seg-card__body { border-top-width: 3px; }
.seg-card--plain { display: flex; flex-direction: column; }
.seg-card--plain .seg-card__body { flex: 1; }
.seg-card__body h3 { font-size: 20px; margin-bottom: 8px; color: var(--text-primary); }
.seg-card__body p { font-size: 14.5px; line-height: 1.75; color: var(--text-secondary); margin: 0 0 16px; min-height: 76px; }
.seg-card__more { font-size: 14px; font-weight: 600; color: var(--brand-700); display: inline-flex; align-items: center; gap: 6px; }
.seg-card--sw .seg-card__more { color: var(--accent-software); }
.seg-card--bio .seg-card__more { color: var(--accent-biotech); }
.seg-card a { color: inherit; }
.seg-card__more::after { content: "→"; transition: transform .22s var(--ease); }
.seg-card:hover .seg-card__more::after { transform: translateX(4px); }

/* ---------- 10. 信任条 / 数据条 ---------- */
.trustbar { background: var(--brand-900); color: #fff; padding: 26px 0; }
.trustbar__in { display: grid; grid-template-columns: repeat(5, 1fr); gap: 18px; }
.trust { display: flex; align-items: center; gap: 12px; }
.trust svg { flex: 0 0 26px; color: #7FB0E4; }
.trust b { display: block; font-size: 15px; font-weight: 600; letter-spacing: .01em; }
.trust span { font-size: 12.5px; color: rgba(255, 255, 255, .62); }
.datastrip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.data__n { font-family: var(--font-en); font-size: clamp(28px, 3vw, 36px); font-weight: 700; color: var(--brand-700); line-height: 1.1; font-variant-numeric: tabular-nums; }
.data__n small { font-size: 15px; font-weight: 600; margin-left: 4px; color: var(--text-secondary); }
.data__l { font-size: 14px; color: var(--text-secondary); margin-top: 6px; }

/* ---------- 11. 图片位 ---------- */
.figure { position: relative; border-radius: var(--radius-lg); overflow: hidden; background: var(--bg-alt); }
.figure img { width: 100%; height: 100%; object-fit: cover; }
.figure__tag { position: absolute; right: 10px; bottom: 10px; }
.ratio-16x10 { aspect-ratio: 16 / 10; }
.ratio-4x3 { aspect-ratio: 4 / 3; }
.ratio-1x1 { aspect-ratio: 1 / 1; }

/* ---------- 12. 列表 ---------- */
.ul-check li { position: relative; padding-left: 26px; margin-bottom: 12px; color: var(--text-secondary); font-size: 15.5px; }
.ul-check li::before {
  content: ""; position: absolute; left: 0; top: 9px; width: 14px; height: 8px;
  border-left: 2px solid var(--success); border-bottom: 2px solid var(--success);
  transform: rotate(-45deg);
}
.ul-check--light li { color: rgba(255, 255, 255, .78); }
.ul-num { counter-reset: n; }
.ul-num li { position: relative; padding-left: 44px; margin-bottom: 18px; counter-increment: n; }
.ul-num li::before {
  content: counter(n, decimal-leading-zero);
  position: absolute; left: 0; top: 2px;
  font-family: var(--font-en); font-size: 15px; font-weight: 700; color: var(--brand-500);
}

/* ---------- 13. 步骤 / 流程 ---------- */
.flow { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; position: relative; }
.flow__item { position: relative; background: #fff; border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 22px 20px; }
.flow__i { width: 30px; height: 30px; border-radius: 50%; background: var(--brand-700); color: #fff; font-family: var(--font-en); font-size: 13px; font-weight: 700; display: flex; align-items: center; justify-content: center; margin-bottom: 14px; }
.flow__item h4 { font-size: 15.5px; margin-bottom: 6px; }
.flow__item p { font-size: 13.5px; color: var(--text-secondary); margin: 0; line-height: 1.7; }
.flow__item::after {
  content: ""; position: absolute; right: -12px; top: 34px;
  width: 8px; height: 8px; border-top: 2px solid var(--border); border-right: 2px solid var(--border);
  transform: rotate(45deg);
}
.flow__item:last-child::after { display: none; }

/* ---------- 14. 品牌墙 ---------- */
.wall { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.brand {
  display: flex; flex-direction: column; justify-content: center; gap: 5px;
  min-height: 96px; padding: 16px; border: 1px solid var(--border); border-radius: var(--radius);
  background: #fff; transition: all .24s var(--ease);
}
.brand:hover { border-color: #B9CDE6; box-shadow: var(--shadow-sm); transform: translateY(-2px); }
.brand__n { font-size: 16px; font-weight: 700; color: #57606E; letter-spacing: .02em; transition: color .24s var(--ease); }
.brand:hover .brand__n { color: var(--brand-900); }
.brand__m { font-size: 12px; color: var(--text-tertiary); }
.brand__c { font-family: var(--font-en); font-size: 11.5px; font-weight: 600; color: var(--brand-500); letter-spacing: .04em; }
.wall__group { grid-column: 1 / -1; display: flex; align-items: center; gap: 12px; margin: 14px 0 2px; }
.wall__group span { font-size: 13px; font-weight: 600; color: var(--text-tertiary); letter-spacing: .04em; }
.wall__group::after { content: ""; flex: 1; height: 1px; background: var(--border); }

/* 客户 logo 占位 */
.clientwall { display: grid; grid-template-columns: repeat(6, 1fr); gap: 12px; }
.clientph {
  display: flex; align-items: center; justify-content: center; min-height: 74px;
  border: 1px dashed #C7D2E0; border-radius: var(--radius); background: #FAFCFE;
  font-size: 12.5px; color: #9AA6B5; text-align: center; padding: 8px;
}

/* ---------- 15. 表格 ---------- */
.tbl-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: var(--radius-lg); background: #fff; }
table.tbl { width: 100%; border-collapse: collapse; font-size: 15px; min-width: 640px; }
table.tbl th, table.tbl td { padding: 15px 18px; text-align: left; border-bottom: 1px solid var(--border); vertical-align: top; }
table.tbl thead th { background: var(--bg-alt); font-size: 13.5px; font-weight: 600; color: var(--text-secondary); letter-spacing: .02em; white-space: nowrap; }
table.tbl tbody tr:last-child td { border-bottom: 0; }
table.tbl tbody tr:hover { background: #FBFCFE; }
table.tbl td b { color: var(--text-primary); }

/* ---------- 16. 价格卡 ---------- */
.price-card { background: #fff; border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 30px 32px; display: flex; align-items: center; gap: 32px; flex-wrap: wrap; }
.price-card__n { font-family: var(--font-en); font-size: 46px; font-weight: 700; color: var(--accent-software); line-height: 1; letter-spacing: -.02em; }
.price-card__n small { font-size: 16px; font-weight: 600; color: var(--text-secondary); margin-left: 6px; }
.price-card__body { flex: 1 1 320px; }
.price-card__body strong { display: block; font-size: 18px; margin-bottom: 6px; }

/* ---------- 17. 时间轴 ---------- */
.timeline { position: relative; padding-left: 30px; }
.timeline::before { content: ""; position: absolute; left: 7px; top: 6px; bottom: 6px; width: 2px; background: linear-gradient(var(--brand-500), #D8E3F1); border-radius: 2px; }
.tl { position: relative; padding-bottom: 30px; }
.tl:last-child { padding-bottom: 0; }
.tl::before { content: ""; position: absolute; left: -30px; top: 7px; width: 16px; height: 16px; border-radius: 50%; background: #fff; border: 3px solid var(--brand-700); }
.tl__y { font-family: var(--font-en); font-size: 14px; font-weight: 700; color: var(--brand-700); letter-spacing: .04em; }
.tl h4 { font-size: 16.5px; margin: 4px 0 6px; }
.tl p { font-size: 14.5px; color: var(--text-secondary); margin: 0; }

/* ---------- 18. 定义列表 ---------- */
.deflist { display: grid; gap: 0; border-top: 1px solid var(--border); }
.deflist > div { display: grid; grid-template-columns: 160px 1fr; gap: 20px; padding: 15px 0; border-bottom: 1px solid var(--border); }
.deflist dt { font-size: 14px; font-weight: 600; color: var(--text-tertiary); }
.deflist dd { margin: 0; font-size: 15px; color: var(--text-primary); }

/* ---------- 19. CTA 区块 ---------- */
.cta { position: relative; overflow: hidden; background: var(--brand-900); color: #fff; padding: 72px 0; }
.cta__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .18; }
.cta__in { position: relative; z-index: 2; display: flex; align-items: center; justify-content: space-between; gap: 40px; flex-wrap: wrap; }
.cta h2 { color: #fff; margin-bottom: 10px; }
.cta p { color: rgba(255, 255, 255, .72); margin: 0; font-size: 15.5px; }
.cta__acts { display: flex; gap: 14px; flex-wrap: wrap; }
.cta__contacts { display: flex; gap: 26px; flex-wrap: wrap; margin-top: 22px; }
.cta__contacts a { color: #fff; font-size: 15px; display: inline-flex; align-items: center; gap: 8px; }
.cta__contacts a:hover { color: #9CC0E8; }

/* ---------- 20. 表单 ---------- */
.form { display: grid; gap: 18px; }
.form__row { display: grid; gap: 18px; }
.form__row--2 { grid-template-columns: 1fr 1fr; }
.field label { display: block; font-size: 14px; font-weight: 600; margin-bottom: 7px; color: var(--text-primary); }
.field label em { color: var(--danger); font-style: normal; margin-left: 3px; }
.field input, .field select, .field textarea {
  width: 100%; padding: 11px 14px; font-size: 15px; font-family: inherit; color: var(--text-primary);
  background: #fff; border: 1px solid var(--border); border-radius: var(--radius); transition: all .2s var(--ease);
}
.field textarea { min-height: 116px; resize: vertical; line-height: 1.7; }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--brand-500); box-shadow: 0 0 0 3px rgba(47, 109, 181, .14); }
.field .hint { font-size: 13px; color: var(--text-tertiary); margin-top: 6px; }
.field .err { font-size: 13px; color: var(--danger); margin-top: 6px; display: none; }
.field.is-invalid input, .field.is-invalid select, .field.is-invalid textarea { border-color: var(--danger); }
.field.is-invalid .err { display: block; }
.form-ok {
  display: none; gap: 12px; align-items: flex-start;
  background: #EAF7F0; border: 1px solid #BFE3D0; color: #14572F;
  border-radius: var(--radius); padding: 16px 18px; font-size: 14.5px; line-height: 1.7;
}
.form-ok.is-on { display: flex; }

/* ---------- 21. 页脚 ---------- */
.ftr { background: #0B1F3B; color: rgba(255, 255, 255, .68); padding: 60px 0 0; font-size: 14px; }
.ftr__grid { display: grid; grid-template-columns: 1.5fr 1fr 1fr 1.3fr; gap: 36px; padding-bottom: 44px; }
.ftr h4 { color: #fff; font-size: 14.5px; font-weight: 600; margin-bottom: 16px; letter-spacing: .02em; }
.ftr a { color: rgba(255, 255, 255, .68); display: block; padding: 5px 0; font-size: 14px; }
.ftr a:hover { color: #fff; }
.ftr__about p { line-height: 1.8; margin: 14px 0 0; font-size: 13.5px; }
.ftr__lic { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; }
.ftr__lic span { font-size: 11.5px; padding: 3px 9px; border: 1px solid rgba(255, 255, 255, .22); border-radius: 100px; color: rgba(255, 255, 255, .72); }
.ftr__bar {
  border-top: 1px solid rgba(255, 255, 255, .12); padding: 18px 0;
  display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; font-size: 12.5px; color: rgba(255, 255, 255, .5);
}
.ftr__addr { line-height: 1.8; font-size: 13.5px; margin: 0 0 12px; }
.ftr__addr b { color: rgba(255, 255, 255, .88); font-weight: 600; display: block; margin-bottom: 2px; font-size: 13px; }

/* ---------- 22. 侧边咨询 ---------- */
.side-cta {
  position: fixed; right: 20px; bottom: 26px; z-index: 55;
  display: flex; flex-direction: column; gap: 10px;
}
.side-cta a {
  width: 52px; height: 52px; border-radius: 50%; background: #fff; border: 1px solid var(--border);
  display: flex; align-items: center; justify-content: center; color: var(--brand-700);
  box-shadow: var(--shadow-md); transition: all .22s var(--ease);
}
.side-cta a:hover { background: var(--brand-700); color: #fff; border-color: var(--brand-700); transform: translateY(-2px); }
.side-cta .top { opacity: 0; pointer-events: none; }
.side-cta .top.is-on { opacity: 1; pointer-events: auto; }

/* ---------- 23. 排版辅助 ---------- */
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
.split--rev .split__media { order: 2; }
.split__media { border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-md); }
.mb0 { margin-bottom: 0; }
.mt24 { margin-top: 24px; } .mt32 { margin-top: 32px; } .mt48 { margin-top: 48px; }
.mb24 { margin-bottom: 24px; } .mb32 { margin-bottom: 32px; } .mb48 { margin-bottom: 48px; }
.center { text-align: center; }
.nowrap { white-space: nowrap; }
.tagline {
  border-left: 3px solid var(--brand-700); padding: 4px 0 4px 18px; margin: 26px 0;
  font-size: 16px; color: var(--text-secondary); line-height: 1.8;
}
.tagline--sw { border-left-color: var(--accent-software); }
.tagline--bio { border-left-color: var(--accent-biotech); }

/* ---------- 23b. 模块列表（PMS 七模块） ---------- */
.modlist { display: grid; gap: 2px; }
.mod { display: flex; gap: 14px; align-items: flex-start; padding: 13px 0; border-bottom: 1px dashed var(--border); }
.mod:last-child { border-bottom: 0; }
.mod__i {
  flex: 0 0 26px; width: 26px; height: 26px; border-radius: 50%;
  background: #E4F4F5; color: var(--accent-software);
  font-family: var(--font-en); font-size: 12.5px; font-weight: 700;
  display: flex; align-items: center; justify-content: center; margin-top: 3px;
}
.mod b { display: block; font-size: 16px; color: var(--text-primary); margin-bottom: 2px; }
.mod p { margin: 0; font-size: 14.5px; color: var(--text-secondary); line-height: 1.7; }

/* ---------- 23c. MES 拓扑图 ---------- */
.mesh {
  position: relative; display: grid; place-items: center;
  grid-template-columns: 1fr auto 1fr; gap: 24px;
  padding: 40px 24px; background: #fff;
  border: 1px solid var(--border); border-radius: var(--radius-lg);
}
.mesh__core {
  grid-column: 2; display: flex; flex-direction: column; align-items: center; gap: 2px;
  width: 148px; padding: 22px 12px; border-radius: var(--radius-lg);
  background: var(--accent-software); color: #fff; text-align: center;
  box-shadow: 0 8px 26px rgba(14, 124, 134, .28);
}
.mesh__core b { font-size: 24px; letter-spacing: .04em; line-height: 1.2; }
.mesh__core span { font-size: 12.5px; color: rgba(255, 255, 255, .78); }
.mesh__lb { font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; color: rgba(255, 255, 255, .6); }
.mesh__ring { display: contents; }
.mesh__node {
  display: flex; flex-direction: column; gap: 2px;
  padding: 15px 18px; border: 1px solid #BFE2E5; border-radius: var(--radius);
  background: #F2FAFB; min-width: 150px;
}
.mesh__node b { font-size: 15.5px; color: #0B5F67; }
.mesh__node span { font-size: 12.5px; color: var(--text-tertiary); }
.mesh__ring .mesh__node:nth-child(1) { grid-column: 1; grid-row: 1; }
.mesh__ring .mesh__node:nth-child(2) { grid-column: 3; grid-row: 1; }
.mesh__ring .mesh__node:nth-child(3) { grid-column: 1; grid-row: 2; }
.mesh__ring .mesh__node:nth-child(4) { grid-column: 3; grid-row: 2; }

/* ---------- 23d. 软件专有卡片 ---------- */
.mockui { border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; background: #fff; box-shadow: var(--shadow-md); }
.mockui__bar {
  display: flex; align-items: center; gap: 6px; padding: 10px 14px;
  background: #F4F7FB; border-bottom: 1px solid var(--border);
}
.mockui__dot { width: 9px; height: 9px; border-radius: 50%; background: #D8DEE7; }
.mockui__t { margin-left: auto; font-size: 12px; color: var(--text-tertiary); font-weight: 600; }
.mockui__body { display: grid; grid-template-columns: 132px 1fr; min-height: 236px; }
.mockui__side { background: #F8FAFD; border-right: 1px solid var(--border); padding: 14px 0; }
.mockui__side span { display: block; padding: 8px 16px; font-size: 13px; color: var(--text-secondary); }
.mockui__side span.on { background: #E4F4F5; color: #0B5F67; font-weight: 600; border-left: 2px solid var(--accent-software); padding-left: 14px; }
.mockui__main { padding: 18px; display: flex; flex-direction: column; gap: 16px; }
.mockui__kpis { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.mockui__kpis > div { background: #F8FAFD; border: 1px solid var(--border); border-radius: 6px; padding: 10px 12px; }
.mockui__kpis b { display: block; font-family: var(--font-en); font-size: 20px; color: var(--accent-software); line-height: 1.2; }
.mockui__kpis span { font-size: 11.5px; color: var(--text-tertiary); }
.mockui__bar-chart { display: flex; align-items: flex-end; gap: 8px; height: 92px; padding: 0 2px; }
.mockui__bar-chart i { flex: 1; background: linear-gradient(180deg, #4FB3BC, #0E7C86); border-radius: 3px 3px 0 0; opacity: .85; }
.mockui__rows { display: grid; gap: 8px; }
.mockui__rows span { height: 10px; border-radius: 5px; background: #EDF1F6; }
.mockui__rows span:nth-child(1) { width: 100%; }
.mockui__rows span:nth-child(2) { width: 78%; }
.mockui__rows span:nth-child(3) { width: 58%; }
.mockui__cap { padding: 10px 14px; font-size: 11.5px; color: var(--text-tertiary); background: #FBFCFE; border-top: 1px solid var(--border); }

.pcard {
  position: relative; background: #fff; border: 1px solid var(--border);
  border-radius: var(--radius-lg); padding: 28px; transition: all .26s var(--ease);
}
.pcard:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.pcard--hi { border-color: #8FCFD5; box-shadow: 0 0 0 3px rgba(14, 124, 134, .08); }
.pcard__flag {
  position: absolute; top: -11px; right: 22px;
  font-size: 11.5px; font-weight: 600; letter-spacing: .04em;
  padding: 3px 10px; border-radius: 100px; background: var(--accent-software); color: #fff;
}
.pcard__n { font-family: var(--font-en); font-size: 38px; font-weight: 700; color: var(--accent-software); line-height: 1.1; margin-top: 14px; letter-spacing: -.02em; }
.pcard__n small { font-size: 15px; font-weight: 600; color: var(--text-secondary); margin-left: 5px; }
.pcard .ul-check li { font-size: 14.5px; margin-bottom: 9px; }
.pcard .ul-check li::before { top: 8px; }

/* ---------- 23e. 组织架构图 ---------- */
.orgchart { display: grid; justify-items: center; }
.org {
  width: 100%; max-width: 560px; text-align: center;
  padding: 22px 24px; border: 1px solid var(--border); border-radius: var(--radius-lg);
  background: #fff; box-shadow: var(--shadow-sm);
}
.org--core { border-top: 3px solid var(--brand-700); max-width: 620px; }
.org__role { display: block; font-size: 12px; font-weight: 600; letter-spacing: .06em; color: var(--brand-700); margin-bottom: 8px; }
.org b { display: block; font-size: 18px; color: var(--text-primary); }
.org__meta { display: block; font-size: 13px; color: var(--text-tertiary); margin-top: 6px; }
.org__tags { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; margin-top: 14px; }
.org__tags i {
  font-style: normal; font-size: 12px; padding: 3px 10px; border-radius: 100px;
  background: var(--brand-50); color: var(--brand-700); border: 1px solid #CFE0F2;
}
.org__link { width: 2px; height: 32px; background: var(--border); }
.org__row { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; width: 100%; }
.org__row .org { max-width: none; }

/* ---------- 23f. 地址卡 ---------- */
.loc { border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; background: #fff; transition: all .26s var(--ease); }
.loc:hover { box-shadow: var(--shadow-md); }
.loc__map {
  position: relative; aspect-ratio: 16 / 7; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 8px; padding: 0 24px; text-align: center;
  background: linear-gradient(135deg, #1E4D8C 0%, #16233A 100%);
  border-bottom: 1px solid var(--border);
}
.loc__map svg { opacity: .92; }
.loc__map span { font-size: 15px; font-weight: 600; color: #fff; letter-spacing: .02em; line-height: 1.6; }
.loc__nav {
  font-size: 12.5px; color: #C9D8EA; display: inline-flex; align-items: center; gap: 5px;
  transition: color .2s var(--ease);
}
.loc__nav:hover { color: #fff; }
.loc__body { padding: 26px 28px 30px; }
.loc__body p { color: var(--text-secondary); font-size: 15px; margin: 12px 0 0; line-height: 1.75; }
.loc__meta { display: grid; gap: 10px; margin-top: 22px; padding-top: 20px; border-top: 1px solid var(--border); }
.loc__meta span { font-size: 14px; color: var(--text-secondary); display: flex; gap: 10px; }
.loc__meta b { flex: 0 0 44px; font-size: 12.5px; color: var(--text-tertiary); font-weight: 600; padding-top: 1px; }

/* ---------- 24. 入场动效 ---------- */
.rv { opacity: 0; transform: translateY(20px); transition: opacity .6s var(--ease), transform .6s var(--ease); }
.rv.is-in { opacity: 1; transform: none; }

/* ---------- 25. 响应式 ---------- */

/* ---------- 企业 Slogan / 企业理念（2026-09-18 定稿） ---------- */
.slogan { text-align: center; padding: 6px 0 48px; }
.slogan__label {
  font-size: 12px; letter-spacing: .3em; text-indent: .3em;
  color: var(--text-tertiary); margin-bottom: 14px;
}
.slogan__txt {
  margin: 0; font-size: clamp(21px, 3vw, 30px); font-weight: 700;
  letter-spacing: .18em; text-indent: .18em; color: var(--brand-900);
}
.slogan__rule {
  display: block; width: 44px; height: 2px; margin: 20px auto 0;
  background: var(--brand-500); border-radius: 2px;
}
.cta .cta__slogan {
  margin: 0 0 10px; font-size: 13.5px; letter-spacing: .24em;
  color: #9CC0E8; font-weight: 600;
}
.ftr__about p.ftr__slogan {
  margin: 12px 0 0; font-size: 13px; letter-spacing: .2em;
  color: rgba(255, 255, 255, .85); font-weight: 600;
}

/* ---------- 动态资讯页（/news/，2026-09-18 新增） ---------- */
.news-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.news-date {
  font-family: var(--font-en); font-size: 13.5px; font-weight: 700;
  color: var(--brand-700); letter-spacing: .04em; font-variant-numeric: tabular-nums;
}
.news-list { border-top: 1px solid var(--border); }
.news-item {
  display: grid; grid-template-columns: 152px 1fr auto; gap: 26px;
  padding: 24px 0; border-bottom: 1px solid var(--border); align-items: start;
}
.news-item__date {
  font-family: var(--font-en); font-size: 14px; font-weight: 700;
  color: var(--brand-700); letter-spacing: .04em; line-height: 1.5;
  font-variant-numeric: tabular-nums; padding-top: 2px;
}
.news-item__date small {
  display: block; margin-top: 3px; font-size: 11.5px; font-weight: 600;
  letter-spacing: .05em; color: var(--text-tertiary);
}
.news-item h3 { font-size: 17.5px; line-height: 1.55; margin-bottom: 8px; }
.news-item p { margin: 0; font-size: 14.5px; line-height: 1.78; color: var(--text-secondary); }
.news-item__tags { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 12px; }
.news-item__tags .chip { font-size: 12px; padding: 3px 10px; }
.news-item__go {
  align-self: center; white-space: nowrap; font-size: 13.5px; font-weight: 600;
  color: var(--brand-700); display: inline-flex; align-items: center; gap: 5px;
}
.news-item__go::after { content: "→"; transition: transform .22s var(--ease); }
.news-item:hover .news-item__go::after { transform: translateX(4px); }

/* 带顶部图片的卡片（动态资讯页「产品与服务」用） */
.card--media { padding-top: 0; }
.card__media {
  position: relative; margin: 0 -28px 20px; aspect-ratio: 16 / 10;
  overflow: hidden; background: var(--bg-alt);
}
.card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease); }
.card--media:hover .card__media img { transform: scale(1.04); }

/* 子板块吸顶二级导航（/news/，2026-09-18 新增）
   页头 72px 恒定 → top:72px；z-index 低于页头(60) */
.subnav {
  position: sticky; top: 72px; z-index: 50;
  background: rgba(255, 255, 255, .95);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}
.subnav__in { display: flex; align-items: center; gap: 18px; height: 54px; }
.subnav__label {
  flex: 0 0 auto; font-size: 12px; font-weight: 700; letter-spacing: .14em;
  color: var(--text-tertiary); text-transform: uppercase;
}
.subnav__tabs {
  flex: 1 1 auto; display: flex; align-items: center; gap: 4px;
  overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none;
}
.subnav__tabs::-webkit-scrollbar { display: none; }
.subnav__tabs a {
  flex: 0 0 auto; white-space: nowrap; padding: 8px 15px; border-radius: 999px;
  font-size: 14.5px; font-weight: 600; color: var(--text-secondary);
  transition: background .2s var(--ease), color .2s var(--ease);
}
.subnav__tabs a:hover { background: var(--brand-50); color: var(--brand-700); }
.subnav__tabs a.is-active { background: var(--brand-700); color: #fff; }
.subnav__sub {
  flex: 0 0 auto; font-size: 13.5px; font-weight: 600; color: var(--brand-700);
  display: inline-flex; align-items: center; gap: 5px; white-space: nowrap;
}
.subnav__sub::after { content: "→"; transition: transform .22s var(--ease); }
.subnav__sub:hover::after { transform: translateX(3px); }

/* 二级导航锚点偏移：页头 72 + 导航条 54，留 14px 呼吸位 */
#industry, #company, #products, #tech { scroll-margin-top: 140px; }

/* ---------- 行业资讯 · 信源自动同步（/news/，2026-09-18 新增） ---------- */
/* 信源说明条（静态可读，不依赖脚本） */
.feed-src {
  border: 1px solid var(--border); border-radius: var(--radius-lg);
  background: #fff; padding: 16px 22px; margin-bottom: 18px;
}
.feed-src__row { display: flex; gap: 16px; align-items: baseline; padding: 6px 0; }
.feed-src__row + .feed-src__row { border-top: 1px dashed var(--border); }
.feed-src__k {
  flex: 0 0 96px; font-size: 12.5px; font-weight: 700; letter-spacing: .08em;
  color: var(--text-tertiary);
}
.feed-src__v {
  flex: 1 1 auto; display: flex; flex-wrap: wrap; gap: 6px 20px;
  font-size: 14px; line-height: 1.7; color: var(--text-secondary);
}
.feed-src__v a { color: var(--brand-700); font-weight: 600; }
.feed-src__v a::after { content: " ↗"; font-size: 11px; opacity: .65; }

/* 三类主题的定向同步口径（静态说明卡，与数据层 rules 一致） */
.feed-topics {
  border: 1px solid #CFE0F2; border-radius: var(--radius-lg);
  background: var(--brand-50); padding: 18px 22px; margin-bottom: 20px;
}
.feed-topics__hd {
  font-size: 12.5px; font-weight: 700; letter-spacing: .08em;
  color: var(--brand-900); margin-bottom: 14px;
}
.feed-topics__list {
  display: grid; gap: 16px 22px; grid-template-columns: repeat(3, 1fr);
  list-style: none; margin: 0; padding: 0;
}
.feed-topics__list li { border-top: 2px solid var(--brand-500); padding-top: 11px; }
.feed-topics__k {
  display: block; font-size: 14px; font-weight: 700; color: var(--brand-900); margin-bottom: 7px;
}
.feed-topics__list p { margin: 0; font-size: 13px; line-height: 1.85; color: var(--text-secondary); }
.feed-topics__ft {
  margin: 15px 0 0; padding-top: 13px; border-top: 1px dashed #CFE0F2;
  font-size: 12.5px; line-height: 1.8; color: var(--text-tertiary);
}

/* 筛选工具条（脚本加载成功后由脚本取消 hidden；两行：来源 / 主题） */
.feed-tools {
  display: flex; flex-direction: column; gap: 10px;
  margin-bottom: 26px;
}
.feed-tools[hidden] { display: none; }
.feed-tools__row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; }
.feed-tools__row[hidden] { display: none; }
.feed-tools__row + .feed-tools__row { border-top: 1px dashed var(--border); padding-top: 10px; }
.feed-tools__row--tail { justify-content: space-between; }
.feed-tools__lab {
  flex: 0 0 96px; font-size: 12.5px; font-weight: 700; letter-spacing: .08em;
  color: var(--text-tertiary);
}
.feed-tools__grp { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.feed-chip {
  font: inherit; font-size: 13.5px; font-weight: 600; line-height: 1;
  padding: 9px 15px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--border); background: #fff; color: var(--text-secondary);
  transition: background .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease);
}
.feed-chip:hover { border-color: var(--brand-500); color: var(--brand-700); }
.feed-chip.is-on { background: var(--brand-700); border-color: var(--brand-700); color: #fff; }
.feed-chip--key { border-style: dashed; }
.feed-chip--key.is-on { border-style: solid; }
.feed-count {
  font-family: var(--font-en); font-size: 13px; font-weight: 700;
  color: var(--text-tertiary); font-variant-numeric: tabular-nums; white-space: nowrap;
}

/* 条目来源行（来源机构 · 日期 · 原文链接） */
.news-item__src {
  margin-top: 11px; font-size: 12.5px; line-height: 1.7; color: var(--text-tertiary);
  display: flex; flex-wrap: wrap; align-items: center; gap: 4px 7px;
}
.news-item__src b { font-weight: 700; color: var(--text-secondary); }
.news-item__src a { color: var(--brand-700); font-weight: 600; }
.news-item__src a::after { content: " ↗"; font-size: 10.5px; opacity: .65; }
.news-flag {
  display: inline-block; font-size: 11px; font-weight: 700; letter-spacing: .05em;
  padding: 2px 7px; border-radius: 4px;
  background: rgba(178, 106, 0, .1); color: var(--warning);
}

/* 查看全部条目 */
.feed-more { display: flex; justify-content: center; margin-top: 26px; }
.feed-more[hidden] { display: none; }
.feed-more__btn {
  font: inherit; font-size: 14px; font-weight: 600; cursor: pointer;
  padding: 11px 26px; border-radius: 999px;
  border: 1px solid var(--border); background: #fff; color: var(--brand-700);
  transition: border-color .2s var(--ease), background .2s var(--ease);
}
.feed-more__btn:hover { border-color: var(--brand-700); background: var(--brand-50); }
/* 「更多内容」折叠：列表默认只显示最近三条，超出部分加 hidden（十八次调整）；
   .news-item 为 display:grid，须显式覆盖 [hidden] 的 UA 样式 */
.news-list > li[hidden] { display: none; }

/* 纠错与侵权投诉 */
.feed-revoke { margin: 22px 0 0; font-size: 12.5px; line-height: 1.85; color: var(--text-tertiary); }
.feed-revoke a { color: var(--brand-700); font-weight: 600; }

/* 行业资讯条目内的标题与外链（外链统一带 ↗ 提示） */
.news-item h3 a { color: inherit; }
.news-item h3 a:hover { color: var(--brand-700); }
a.news-item__go { text-decoration: none; }

/* 导航增至 7 项后的横向空间适配（1024–1199px 区间收紧，避免换行） */
@media (min-width: 1024px) and (max-width: 1199px) {
  .hdr__in { gap: 12px; }
  .nav { gap: 0; }
  .nav a { padding: 8px 7px; font-size: 13.5px; }
  .nav a.is-active::after { left: 7px; right: 7px; }
}
@media (max-width: 1023px) {
  .news-item { grid-template-columns: 118px 1fr; gap: 20px; }
  .news-item__go { grid-column: 2; justify-self: start; align-self: start; }
  .subnav__sub { display: none; }
  .subnav__label { display: none; }
  #industry, #company, #products, #tech { scroll-margin-top: 132px; }
  .feed-topics__list { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 767px) {
  .news-item { grid-template-columns: 1fr; gap: 10px; padding: 20px 0; }
  .news-item__go { grid-column: 1; }
  .news-meta { gap: 8px; }
  .card__media { margin: 0 -22px 18px; }
  .subnav__in { height: 50px; gap: 0; }
  .subnav__tabs { gap: 2px; }
  .subnav__tabs a { padding: 7px 12px; font-size: 13.5px; }
  #industry, #company, #products, #tech { scroll-margin-top: 126px; }
  .feed-src { padding: 14px 18px; }
  .feed-src__row { flex-direction: column; gap: 3px; padding: 8px 0; }
  .feed-src__k { flex: 0 0 auto; }
  .feed-topics { padding: 16px 18px; }
  .feed-topics__list { grid-template-columns: 1fr; gap: 14px; }
  .feed-tools { gap: 10px; }
  .feed-tools__lab { flex: 0 0 100%; }
  .feed-tools__row--tail { justify-content: flex-start; }
  .feed-count { display: none; }
  .news-item__src { margin-top: 9px; }
}
@media (max-width: 720px) {
  .slogan { padding: 4px 0 34px; }
  .slogan__txt { letter-spacing: .14em; text-indent: .14em; }
}


@media (max-width: 1023px) {
  :root { --sec-y: 72px; --container: 720px; --gutter: 20px; }
  .nav { display: none; }
  .nav.is-open {
    display: flex; position: fixed; inset: 72px 0 0; z-index: 70;
    flex-direction: column; align-items: stretch; gap: 0; margin: 0;
    background: rgba(255, 255, 255, .99); padding: 20px var(--gutter); overflow-y: auto;
  }
  .nav.is-open a { padding: 15px 12px; font-size: 17px; border-bottom: 1px solid var(--border); border-radius: 0; }
  .nav.is-open a.is-active::after { display: none; }
  .nav.is-open .nav__item > a { justify-content: flex-start; }
  .nav.is-open .nav__sub {
    position: static; opacity: 1; visibility: visible; transform: none;
    box-shadow: none; border: 0; background: transparent; padding: 0 0 0 14px; min-width: 0;
  }
  .nav.is-open .nav__sub a { padding: 12px 12px; font-size: 15.5px; border-bottom: 0; color: var(--text-tertiary); }
  .nav.is-open .nav__sub a.is-active { color: var(--brand-700); }
  .burger { display: flex; margin-left: auto; }
  .hdr__side .lang { display: none; }
  .trustbar__in { grid-template-columns: repeat(2, 1fr); gap: 16px; }
  .trust:last-child { grid-column: 1 / -1; }
  .g3, .g4 { grid-template-columns: repeat(2, 1fr); }
  .datastrip { grid-template-columns: repeat(2, 1fr); }
  .wall { grid-template-columns: repeat(3, 1fr); }
  .clientwall { grid-template-columns: repeat(3, 1fr); }
  .flow { grid-template-columns: repeat(2, 1fr); }
  .flow__item::after { display: none; }
  .split { grid-template-columns: 1fr !important; gap: 32px; }
  .split > * { grid-column: auto !important; }
  .split--rev .split__media { order: 0; }
  .org__row { grid-template-columns: 1fr; }
  .mesh { grid-template-columns: 1fr 1fr; }
  .mesh__core { grid-column: 1 / -1; justify-self: center; }
  .mesh__ring .mesh__node:nth-child(1) { grid-column: 1; grid-row: auto; }
  .mesh__ring .mesh__node:nth-child(2) { grid-column: 2; grid-row: auto; }
  .mesh__ring .mesh__node:nth-child(3) { grid-column: 1; grid-row: auto; }
  .mesh__ring .mesh__node:nth-child(4) { grid-column: 2; grid-row: auto; }
  .ftr__grid { grid-template-columns: repeat(2, 1fr); gap: 30px; }
  .hero__in { padding: 76px 0 68px; }
}
@media (max-width: 767px) {
  :root { --sec-y: var(--sec-y-sm); --container: 100%; --gutter: 16px; }
  body { font-size: 15.5px; }
  .g2, .g3, .g4 { grid-template-columns: 1fr; }
  .trustbar__in { grid-template-columns: 1fr; }
  .trust:last-child { grid-column: auto; }
  .datastrip { grid-template-columns: 1fr 1fr; gap: 20px 16px; }
  .wall, .clientwall { grid-template-columns: repeat(2, 1fr); }
  .flow { grid-template-columns: 1fr; }
  .form__row--2 { grid-template-columns: 1fr; }
  .ftr__grid { grid-template-columns: 1fr; }
  .deflist > div { grid-template-columns: 1fr; gap: 4px; }
  .hero__in { padding: 58px 0 54px; }
  .card { padding: 22px; }
  .seg-card__body p { min-height: 0; }
  .price-card { padding: 24px; gap: 18px; }
  .price-card__n { font-size: 38px; }
  .sec-head { margin-bottom: 32px; }
  .side-cta { right: 14px; bottom: 16px; }
  .side-cta a { width: 46px; height: 46px; }
  .cta { padding: 52px 0; }
  .mesh { grid-template-columns: 1fr; padding: 26px 18px; }
  .mesh__ring .mesh__node:nth-child(n) { grid-column: 1; }
  .mesh__core { width: 100%; max-width: 220px; }
  .mockui__body { grid-template-columns: 1fr; min-height: 0; }
  .mockui__side { display: flex; overflow-x: auto; border-right: 0; border-bottom: 1px solid var(--border); padding: 0 8px; }
  .mockui__side span { white-space: nowrap; padding: 10px 12px; }
  .mockui__side span.on { border-left: 0; border-bottom: 2px solid var(--accent-software); padding-left: 12px; }
  .mockui__kpis { grid-template-columns: repeat(3, 1fr); gap: 8px; }
  .mockui__kpis b { font-size: 17px; }
  .org { padding: 18px 16px; }
  .org b { font-size: 16px; }
  .org__tags { margin-top: 12px; }
  .loc__body { padding: 22px 20px 26px; }
  .pcard { padding: 24px; }
  .pcard__n { font-size: 32px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
  .rv { opacity: 1; transform: none; }
}
@media print {
  .hdr, .side-cta, .cta__bg { display: none; }
}

/* ============================================================
   外链（第三方平台）· 2026-09-24 十九次调整
   首例外链 ＝ 阿里巴巴国际站店铺（电子元器件现货交易的海外客户入口，见 supply.html #spot）
   带 ↗ 后缀提示「点击后离开本站」；外链一律新窗口打开，故恒配 rel="noopener noreferrer"
   ============================================================ */
.link-ext {
  color: var(--brand-700);
  font-weight: 600;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}
.link-ext::after { content: "\2197"; display: inline-block; margin-left: 4px; font-size: .9em; }
.link-ext:hover { color: var(--brand-900); }
.link-ext:focus-visible { outline: 2px solid var(--brand-500); outline-offset: 2px; border-radius: 3px; }

/* ============================================================
   实拍素材接入 · 2026-10-19 预览版
   来源：三折页（20261017）直抽原图 + 公司简介/宣传册 PPT 媒体
   ============================================================ */
.figcap {
  margin-top: 10px; font-size: 13px; line-height: 1.55;
  color: var(--text-tertiary);
}
.figure__cap {
  position: absolute; left: 12px; bottom: 12px; z-index: 2;
  padding: 4px 10px; border-radius: 999px;
  background: rgba(11, 33, 63, .58);
  color: #fff; font-size: 12px; font-weight: 500; letter-spacing: .02em;
}
.figure__cap--plain { background: rgba(11, 33, 63, .72); }

/* 品牌墙 logo（预览用 480px 位图，正式版换官方矢量） */
.brand { min-height: 118px; }
.brand__logo {
  display: block; width: 148px; height: 34px;
  object-fit: contain; object-position: left center;
  margin-bottom: 6px; opacity: .92;
}
/* 无 logo 品牌卡（预留）：缺官方矢量文件时以品牌名作字标，不得自绘商标。
   2026-10-25 国民技术已补官方标识（logo-nationz.png），不再使用本样式。 */
.brand--text { background: linear-gradient(180deg, #fff 0%, #F6F9FD 100%); justify-content: flex-start; padding-top: 24px; }
.brand--text .brand__n { font-size: 24px; line-height: 34px; letter-spacing: .12em; color: var(--brand-900); margin-bottom: 6px; }

/* 空状态（公司动态整理中等） */
.empty-state {
  border: 1px dashed var(--border); border-radius: var(--radius-lg);
  background: linear-gradient(180deg, #fff 0%, #F8FAFD 100%);
  padding: 56px 32px; text-align: center; color: var(--text-secondary);
}
.empty-state__ico { display: inline-flex; color: var(--brand-500); margin-bottom: 14px; }
.empty-state h3 { color: var(--text-primary); }
.empty-state p { max-width: 560px; margin: 0 auto; font-size: 14.5px; line-height: 1.8; }
.empty-state__acts { display: flex; gap: 12px; justify-content: center; margin-top: 24px; }

/* 应用行业图文卡 */
.ind-card { padding: 0; overflow: hidden; display: flex; flex-direction: column; }
.ind-card__media { aspect-ratio: 16 / 10; overflow: hidden; background: var(--bg-alt); }
.ind-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease); }
.ind-card:hover .ind-card__media img { transform: scale(1.04); }
.ind-card__body { padding: 18px 20px 20px; }
.ind-card__body h3 { margin-bottom: 6px; }
.ind-card__body p { margin: 0; }
.ind-card__media--blank {
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #1E4D8C 0%, #0F2B52 100%);
  color: rgba(255, 255, 255, .78);
  font-size: 13px; letter-spacing: .06em;
}

/* ============================================================
   Hero 矢量动态图 · 2026-10-19（2026-10-24 黑色定子 + 黄铜转子 + 国标三相）
   纯 SVG + CSS 关键帧；无脚本、无额外请求、不阻塞渲染
   首页 full   ：外刻度环 / 三相环 / 12 槽定子(绕组扫描) / 8 极转子 / 气隙磁场弧
   内页 compact：外刻度环 / 三相环 / 定子内壁黑环 / 8 极转子
   配色三族：① 定子铁芯＝黑色金属（url(#vizIron) 全幅共用渐变 + 内外缘细高光，
   靠明暗差与边缘光做出质感，不是一块死黑）；② 转子磁钢＝黄铜（N 极亮
   #F7DFAE→#DCA954、S 极古铜 #C99351→#8A5A22）；③ 三相环按**国标接线色**
   U 黄 #FFD028 / V 绿 #34CE72 / W 红 #FF4D4D。改色需同步
   tools/gen_hero_viz.py 的 defs 渐变与 COL_* 常量
   ============================================================ */
.hero__deco {
  position: absolute; z-index: 1; top: 50%;
  right: max(24px, calc((100% - 1200px) / 2));
  width: clamp(320px, 31vw, 438px); aspect-ratio: 1 / 1;
  transform: translateY(-50%);
  pointer-events: none;
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, rgba(0,0,0,.35) 12%, #000 26%);
          mask-image: linear-gradient(90deg, transparent 0%, rgba(0,0,0,.35) 12%, #000 26%);
  animation: vizIn 1.2s var(--ease) .4s both;
}
/* 内页 hero 较矮，图形同步收小，并与文案留出间距 */
.hero--sm .hero__deco {
  width: clamp(212px, 21.5vw, 330px);
  right: max(20px, calc((100% - 1200px) / 2));
  animation-delay: .3s;
}
.hero__viz { width: 100%; height: 100%; overflow: visible; }

/* 绕自身包围盒中心旋转 */
.viz-ticks, .viz-field, .viz-rotor {
  transform-box: fill-box; transform-origin: 50% 50%;
}

/* — 外刻度环 — */
.viz-ticks { animation: vizSpin 140s linear infinite; }
.viz-ticks line { stroke: rgba(198, 218, 255, .64); }

/* — 三相环：连续底弧 + 光带流动（相位差 120°，读作三条相带而非一圈刻度）
     严格按国标接线色：U 黄 / V 绿 / W 红（黄绿红） — */
.viz-phase__base {
  fill: none; stroke-width: 3.4; stroke-linecap: round; opacity: .40;
}
.viz-phase__flow {
  fill: none; stroke-width: 4; stroke-linecap: round;
  stroke-dasharray: 46 60;
  animation: vizDash 2.4s linear infinite;
}
.viz-pu { stroke: #FFD028; }
.viz-pv { stroke: #34CE72; animation-delay: -.7s; }
.viz-pw { stroke: #FF4D4D; animation-delay: -1.4s; }
.viz-node { stroke: none; }
.viz-pu__node { fill: #FFD028; }
.viz-pv__node { fill: #34CE72; }
.viz-pw__node { fill: #FF4D4D; }

/* — 定子外轭：黑色铁芯实心环（evenodd 环路径，填充全幅共用的金属渐变） — */
.viz-yoke {
  fill: url(#vizIron); stroke: none;
}
/* 外缘轮廓光 / 内缘倒角光：一外一内两道细线，把黑色环「立」起来 */
.viz-yoke__edge {
  fill: none; stroke: rgba(206, 220, 240, .30); stroke-width: 1;
}
.viz-yoke__rim {
  fill: none; stroke: rgba(232, 240, 252, .13); stroke-width: .8;
}

/* — 定子齿：同一套黑色铁芯渐变，受光方向与轭一致 — */
.viz-tooth {
  fill: url(#vizIron);
  stroke: rgba(198, 212, 234, .26);
  stroke-width: 1.1; stroke-linejoin: round;
}
/* 扫到的那一齿：边缘光提亮（不发白，避免破坏黑色质感） */
.viz-tooth.is-hot { stroke: rgba(228, 238, 252, .52); }

/* — 定子绕组：槽内导体，12 组依次点亮，形成顺时针扫描
     保留冷银色（漆包线在剖面里按「通电导体」读），不跟转子黄铜抢色 — */
.viz-coil {
  opacity: .42;
  animation: vizCoil 3.6s ease-in-out infinite;
}
.viz-coil:nth-child(1) { animation-delay: 0s; }
.viz-coil:nth-child(2) { animation-delay: 0.30s; }
.viz-coil:nth-child(3) { animation-delay: 0.60s; }
.viz-coil:nth-child(4) { animation-delay: 0.90s; }
.viz-coil:nth-child(5) { animation-delay: 1.20s; }
.viz-coil:nth-child(6) { animation-delay: 1.50s; }
.viz-coil:nth-child(7) { animation-delay: 1.80s; }
.viz-coil:nth-child(8) { animation-delay: 2.10s; }
.viz-coil:nth-child(9) { animation-delay: 2.40s; }
.viz-coil:nth-child(10) { animation-delay: 2.70s; }
.viz-coil:nth-child(11) { animation-delay: 3.00s; }
.viz-coil:nth-child(12) { animation-delay: 3.30s; }
.viz-coil path {
  fill: none; stroke: #D3E2F6; stroke-width: 2.8; stroke-linecap: round;
}
/* 槽：凹进去的暗腔（比齿更黑），导线是腔里唯一亮的东西 —— 有描边就变成一格格「窗口」 */
.viz-coil .viz-slot {
  fill: rgba(3, 5, 9, .86); stroke: none;
}

/* — 气隙旋转磁场（与转子同速） — */
.viz-field { animation: vizSpin 2.8s linear infinite; }
.viz-field path {
  fill: none; stroke: url(#vizField); stroke-width: 3; stroke-linecap: round;
}

/* — 转子 8 极永磁体（4 对极）· 黄铜材质：N 极亮黄铜 / S 极古铜暗面 — */
.viz-rotor { animation: vizSpin 2.8s linear infinite; }
.viz-rotor__body {
  fill: rgba(12, 18, 34, .88);
  stroke: rgba(214, 169, 94, .48); stroke-width: 1.3;
}
.viz-mag--n { fill: url(#vizRotorN); stroke: rgba(247, 223, 174, .70); stroke-width: .9; }
.viz-mag--s { fill: url(#vizRotorS); stroke: rgba(201, 147, 81, .58); stroke-width: .9; }
.viz-hub { fill: rgba(10, 16, 30, .96); stroke: rgba(222, 180, 110, .74); stroke-width: 1.4; }
.viz-hub__in { fill: #E8C07A; }
.viz-cross { stroke: rgba(226, 190, 128, .60); stroke-width: 1.6; stroke-linecap: round; }

/* — 定子内壁黑环（仅内页 compact 版）：与首页同一黑色铁芯语言 — */
.viz-bore { fill: url(#vizIron); stroke: none; }
.viz-bore__edge { fill: none; stroke: rgba(206, 220, 240, .26); stroke-width: 1; }

@keyframes vizSpin { to { transform: rotate(360deg); } }
@keyframes vizDash { to { stroke-dashoffset: -106; } }
@keyframes vizCoil { 0%, 100% { opacity: .30; } 42% { opacity: 1; } }
@keyframes vizIn {
  from { opacity: 0; transform: translateY(-46%) scale(.965); }
  to   { opacity: 1; transform: translateY(-50%) scale(1); }
}

/* 中等以下屏幕：让位于文字（760 文案 + 320 图形 ≈ 需要 1128 可用宽）
   板图是「电机身后的一块板」，电机不显示时它没有依存对象，一并隐藏 */
@media (max-width: 1120px) {
  .hero__deco { display: none; }
  .hero__bg--board { display: none; }
}
/* 内页文案更窄，可多留一点空间给平板 */
@media (min-width: 1121px) and (max-width: 1260px) {
  .hero--sm .hero__deco { width: 220px; }
}

/* 系统开启「减少动态效果」时整体静止，仅保留静态线稿 */
@media (prefers-reduced-motion: reduce) {
  .hero__deco { animation: none; opacity: 1; }
  .viz-ticks, .viz-field, .viz-rotor, .viz-coil, .viz-phase path {
    animation: none !important;
  }
  .viz-coil { opacity: .55; }
}
