/* ===================================================================
   深圳中和净化设备有限公司 - GEO官网全局样式
   品牌色：科技蓝 #0066CC | 信任绿 #00A86B | 辅助青 #00B8C4
   =================================================================== */

/* ---------- CSS 变量定义 ---------- */
:root {
  --color-primary: #0066CC;
  --color-primary-dark: #004d99;
  --color-primary-light: #e6f0ff;
  --color-green: #00A86B;
  --color-green-light: #e6f9f0;
  --color-gold: #00B8C4;
  --color-gold-light: #E0F7FA;
  --color-bg: #F5F7FA;
  --color-text: #1A1A2E;
  --color-text-light: #5a5a72;
  --color-text-muted: #8a8a9a;
  --color-border: #e0e4ea;
  --color-white: #ffffff;
  --color-red: #0066CC;
  --shadow-sm: 0 1px 3px rgba(0,0,0,0.06);
  --shadow-md: 0 4px 16px rgba(0,0,0,0.08);
  --shadow-lg: 0 8px 32px rgba(0,0,0,0.12);
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 16px;
  --max-width: 1200px;  /* 20:07 回退 19:50(1268),恢复 18:45 状态 */
  --header-height: 88px;  /* photo221(13:32): 页头压扁 104 -> 88px,LOGO 84px 底缘贴页头底缘、顶留 4px,整体更饱满 */
  --transition: 0.3s ease;
}

/* ---------- 基础重置 ---------- */
*, *::before, *::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  /* photo1317(11-06): 去掉全局 scroll-behavior:smooth——它会把任何程序化滚动都动画化，
     与固定悬浮条/移动端惯性叠加时产生可见抖动；需要平滑的锚点链接与返回顶部已各自显式声明 behavior */
  font-size: 16px;
  /* photo1318(11-06): 禁移动端浏览器"文字自动放大(font boosting)"——张总手机上字号被放大约1.3倍,
     导致多处本应1行的标题折行、版式失衡,这是移动端字号类问题的系统性根因 */
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  /* photo1317: 预留滚动条槽位——页面高度跨过一屏时滚动条突然出现会令整站横向位移约 15px（PC 抖动的直接原因） */
  scrollbar-gutter: stable;
}

/* photo1318(11-06): "返回"恢复滚动期间先隐藏整页,由 main.js 定位完成后移除本类——
   杜绝"页面先渲染在顶部、再整页跳到原位置"的可见抖动(真机上表现为明显抖动)。
   兜底:内联脚本 2.5s 后自动移除,绝不因 JS 异常导致页面永久隐藏 */
html.zh-restoring {
  visibility: hidden !important;
}

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "PingFang SC", "Microsoft YaHei", sans-serif;
  color: var(--color-text);
  background: var(--color-bg);
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

a {
  color: var(--color-primary);
  text-decoration: none;
  transition: color var(--transition);
}

a:hover {
  color: var(--color-primary-dark);
}

picture { display: contents; }
/* photo1095: display:contents 后 source 会生成幽灵盒占住 grid/flex 格子（技术中心电气操控图集错位成菱形），必须显式隐藏；不影响 webp 候选选择 */
picture > source { display: none; }
img {
  max-width: 100%;
  height: auto;
  display: block;
}

ul, ol {
  list-style: none;
}

/* ---------- 容器与布局 ---------- */
.container {
  max-width: var(--max-width);
  margin: 0 auto;       /* 20:07 回退 19:50(calc -3),恢复 18:45 的居中 */
  padding: 0 24px;
}

.section {
  padding: 64px 0;
}

.section-sm {
  padding: 40px 0;
}

.section-title {
  font-size: 2rem;
  font-weight: 700;
  text-align: center;
  margin-bottom: 12px;
  color: var(--color-text);
}

.section-subtitle {
  text-align: center;
  color: var(--color-text-light);
  font-size: 1.05rem;
  margin-bottom: 48px;
  max-width: 720px;
  margin-left: auto;
  margin-right: auto;
}

.text-center { text-align: center; }
.text-green { color: var(--color-green); }
.text-gold { color: var(--color-gold); }
.text-primary { color: var(--color-primary); }
.text-red { color: var(--color-red); }

/* ---------- 按钮 ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 28px;
  font-size: 1rem;
  font-weight: 600;
  border-radius: var(--radius-sm);
  border: 2px solid transparent;
  cursor: pointer;
  transition: all var(--transition);
  white-space: nowrap;
  min-height: 44px;
}

.btn-primary {
  background: var(--color-primary);
  color: var(--color-white);
}

.btn-primary:hover {
  background: var(--color-primary-dark);
  color: var(--color-white);
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}

.btn-outline {
  background: transparent;
  color: var(--color-primary);
  border-color: var(--color-primary);
}

.btn-outline:hover {
  background: var(--color-primary);
  color: var(--color-white);
}

.btn-green {
  background: var(--color-green);
  color: var(--color-white);
}

.btn-green:hover {
  background: #008f5a;
  color: var(--color-white);
  transform: translateY(-2px);
}

.btn-lg {
  padding: 16px 36px;
  font-size: 1.1rem;
}

/* 12:57 两个水平相邻按钮之间的间距默认 0(紧贴),此处统一给 24px 让按钮组更协调;
       flex 容器(.hero-buttons 等)的 gap 优先,不重复叠加 */
.btn + .btn {
  margin-left: 24px;
}

/* ---------- 顶部导航栏 ---------- */
/* 注意：不要给 .site-header 加 backdrop-filter / filter / transform，
   它们会创建独立渲染层并改变子元素 fixed 定位的包含块，
   导致移动端下拉菜单"看得见但点不到"（点击穿透到页面内容）。 */
.site-header {
  position: sticky;
  top: 0;
  z-index: 2000;
  background: rgba(255,255,255,0.98);
  border-bottom: 1px solid var(--color-border);
  height: var(--header-height);
}

.header-inner {
  max-width: var(--max-width);
  margin: 0 auto;                                                                       /* 11:23 回退 18:16/20:07 的 +14 偏移与 18:38/18:45/20:07 的 .logo -74 偏移,改为标准居中——让菜单栏左右边界与下方现场照片(1152px 宽,1440 视口 left=144 right=1296)严格对齐 */
  padding: 0 24px;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.logo {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
  margin-left: 0;     /* 11:23 删 -74,改由 .header-inner 居中+24px padding 控制 logo 起点 144 */
}

.logo-icon {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--color-primary), var(--color-green));
  border-radius: 50%;
  color: var(--color-white);
  font-size: 1.3rem;
  font-weight: 700;
}

.logo-text {
  display: flex;
  flex-direction: column;
  line-height: 1.2;
}

.logo-text .cn {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--color-text);
}

.logo-text .en {
  font-size: 0.7rem;
  color: var(--color-text-muted);
  letter-spacing: 0.5px;
}

.main-nav {
  display: flex;
  align-items: center;
  gap: 18px;              /* 16:18:中间 8 个菜单项间距从 4 拉到 18,贴合 logo/cta 向两端拉开后中间变宽的新布局 */
  flex: 1;                /* 16:18:占满 header-inner 中间剩余空间 */
  justify-content: flex-end;/* 11:23 改回 flex-end:8 项菜单从 logo 右边起向右分布,最后一项"联系我们"right=1296 与照片右缘对齐 */
  margin-left: 0;     /* 11:23 删 20:13 的 +180 偏移,改由 .header-inner 居中+24px padding 决定 nav 容器与菜单边界——让"联系我们"right 与照片 right=1296 对齐 */
}

.main-nav a {
  display: block;
  padding: 8px 14px;
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--color-primary);              /* 12:44 全部菜单按钮常驻"网站首页"同款蓝字 */
  background: var(--color-primary-light);   /* 12:44 全部菜单按钮常驻"网站首页"同款浅蓝底框 */
  border-radius: var(--radius-sm);
  transition: all var(--transition);
  white-space: nowrap;  /* 20:14:用户要求菜单整体一行显示,禁止 a 内文字换行成 2 行 */
}

.main-nav a:last-child {
  /* 12:49 去掉 padding-right:0 的特殊处理,恢复与 .main-nav a 一致的 14px 右内边距
          让"联系我们"按钮内"们"字与浅蓝底框右侧保留标准 14px 间距,跟"网站首页"等按钮视觉一致
     (历史: 11:29 曾用 padding-right:0 让"们"字右缘贴右侧边线 1296;12:44 全菜单加浅蓝底框后,套上浅蓝边框的"们"字反而显得贴线过紧) */
}

.main-nav a:hover,
.main-nav a.active {
  color: #FFFFFF;                         /* 12:44 悬停/当前页文字反白 */
  background: var(--color-primary);       /* 12:44 悬停/当前页底色加深为实色品牌蓝 */
}

/* 移动端汉堡菜单按钮 */
/* 隐藏的菜单开关 checkbox（纯 CSS 菜单核心，零 JS 依赖） */
.nav-toggle-chk {
  display: none;
}

/* 移动端汉堡菜单按钮（label，点击即切换 checkbox） */
.menu-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 12px;
  min-width: 48px;
  min-height: 48px; /* 触控目标 ≥ 44px，符合移动端标准 */
  position: relative;
  z-index: 2002;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation; /* 消除移动端双击缩放延迟 */
  outline: none;
}

.menu-toggle span {
  width: 26px;
  height: 3px;
  background: var(--color-text);
  border-radius: 2px;
  transition: all var(--transition);
  pointer-events: none;
}

/* checkbox 勾选时：汉堡变 × */
#nav-toggle:checked ~ .menu-toggle span:nth-child(1) {
  transform: translateY(8px) rotate(45deg);
}

#nav-toggle:checked ~ .menu-toggle span:nth-child(2) {
  opacity: 0;
}

#nav-toggle:checked ~ .menu-toggle span:nth-child(3) {
  transform: translateY(-8px) rotate(-45deg);
}

/* =========================================================================
   photo568(2026-09-22 张总立项"导航+页脚一起修"): 769~1180px 死区修复 —— 导航抽屉
   -------------------------------------------------------------------------
   原缺陷(非本轮引入,可回溯到 photo542 定案时):
     · 导航横排自然宽 945px(4字×9 + padding 28×9 + gap 18×8)
       + LOGO 144.5px + .header-inner 左右各 24px padding
       → 页头需 ≥1137.5px 才放得下;
     · 汉堡菜单此前只在 ≤768px 出现 → 769~1137px 区间"两头不靠":
         1024px 导航右缘 1112 vs 视口 1024 → 丢「联系我们」
         900px  丢「常见问题 + 联系我们」
         769px  整页横向溢出 370px
       (被 body{overflow-x:hidden} 裁掉,所以看不到滚动条,只表现为末项消失)
     · 页脚 .footer-bottom{flex-wrap:nowrap} 单行自然宽
       251.2(版权) + 528.5(8导航) + 322.1(备案) + 2×gap12 = 1138 + 左右 padding48
       = 需 ≥1173.8px(经 30 个页面逐一实测,index.html 备案行少一个「｜」
         故其临界值为 1162.6px,其余 29 页均为 1173.8px) →
       视口不足时 .footer-beian 被挤出容器(右缘固定停在 1138.6/1149.8px),
       1024px 时整页横向溢出 115px,且 photo563 定案的"红字右缘=灰线右缘"对齐失效
   修复: 把抽屉菜单与页脚堆叠的生效区间由 ≤768px 一并上移到 ≤1180px
     (临界值 1173.8px + 6px 容差,吸收 Windows/macOS 系统字体渲染宽度差异)
   影响: ≤1180px 与 ≤768px 的导航声明完全同值(本块在源序上更早,≤768px 块仍为
         最终权威),故移动端视觉零变化; ≥1181px 桌面端版式与 photo542 定案逐像素
         一致(未改动任何属性,仅新增断点)。
   ========================================================================= */
@media (max-width: 1180px) {
  .menu-toggle {
    display: flex;
  }

  .main-nav {
    position: fixed;
    top: var(--header-height);
    left: 0;
    right: 0;
    /* 注意：不设 bottom:0，菜单不全屏覆盖，底部留空露出原网站内容 */
    max-height: calc(100vh - var(--header-height) - 88px);
    z-index: 2001;
    background: var(--color-white);
    flex-direction: column;
    align-items: stretch;
    padding: 16px;
    gap: 4px;
    transform: translateX(100%);
    overflow-y: auto;
    box-shadow: var(--shadow-lg);
    visibility: hidden;
    transition: transform var(--transition), visibility 0s linear 0.3s;
  }

  /* checkbox 勾选时展开抽屉菜单 */
  #nav-toggle:checked ~ .main-nav {
    transform: translateX(0);
    visibility: visible;
    transition: transform var(--transition), visibility 0s;
  }

  .main-nav a {
    padding: 14px 16px;
    font-size: 1rem;
    border-radius: var(--radius-sm);
  }
}

/* ---------- 面包屑 ---------- */
.breadcrumb {
  background: var(--color-white);
  border-bottom: 1px solid var(--color-border);
  padding: 14px 0;
  font-size: 0.9rem;
}

.breadcrumb ol {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.breadcrumb li::after {
  content: "›";
  margin-left: 8px;
  color: var(--color-text-muted);
}

.breadcrumb li:last-child::after {
  content: "";
}

.breadcrumb a {
  color: var(--color-text-light);
}

.breadcrumb li:last-child {
  color: var(--color-primary);
  font-weight: 500;
}

/* ---------- Hero 区域 ---------- */
.hero {
  position: relative;
  background: linear-gradient(135deg, #003a7a 0%, #0050a3 50%, #0066CC 100%);   /* 11:06 改回 #0050a3 渐变,与 page-hero 同款 */
  color: #FFFFFF;
  padding: 72px 0 80px;          /* 10:04 拆出照片板块,hero 不再需要大高度,收紧 padding */
  min-height: 0;                 /* 10:04 取消 720 兜底,改由内容自然撑高 */
  overflow: hidden;
}

/* 11:06 改回 #0050a3 渐变后,恢复绿青光圈装饰(原 v10 之前的氛围) */
.hero::before {
  content: "";
  position: absolute;
  top: -50%;
  right: -10%;
  width: 600px;
  height: 600px;
  background: radial-gradient(circle, rgba(0,168,107,0.22) 0%, transparent 70%);
  border-radius: 50%;
}

.hero::after {
  content: "";
  position: absolute;
  bottom: -30%;
  left: -10%;
  width: 500px;
  height: 500px;
  background: radial-gradient(circle, rgba(0,184,196,0.20) 0%, transparent 70%);
  border-radius: 50%;
}

.hero-content {
  position: relative;
  z-index: 1;
  max-width: 100%;        /* 09:50 解除 800px 上限,新结构为单列纵向铺满 */
  margin: 0;
}

.hero h1 {
  font-size: 2.1rem;
  font-weight: 800;
  line-height: 1.4;
  margin-bottom: 0;          /* 14:41 归零,改由 .hero-text space-between 分配段间距 */
  text-align: left;
  max-width: 437px;        /* 锁死与下方文字同基准,不再被 760px 父容器撑大溢出 */
}

.hero .hero-subtitle {
  font-size: 1.25rem;
  color: rgba(255, 255, 255, 0.92);   /* 22:11 中蓝底,白字恢复 */
  opacity: 1;                          /* 22:11 取消 .92 叠加,避免白字被洗淡 */
  margin-bottom: 0;          /* 14:41 归零 */
  line-height: 1.7;
  text-align: justify;
  text-align-last: left;   /* 末行左对齐,避免单字行被拉字间距 */
  text-justify: inter-ideograph;  /* 中间行按字粒度均匀分布,字间距视觉上≈不变 */
  max-width: 437px;        /* 以 h1 行宽为基准:h1=13字×2.1rem(33.6px)=436.8px≈437px */
}

.hero-buttons {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 0;          /* 14:41 归零,space-between 接管 */
  max-width: 437px;
}
.hero-buttons > .btn:last-child { margin-left: auto; }  /* "查看产品"右推,边框右缘对齐 437 文字右缘 */

.hero-trust {
  display: flex;
  gap: 24px;                 /* space-between 下被覆盖,作 fallback */
  flex-wrap: nowrap;         /* 桌面端强制一行排完 4 个 trust-item */
  padding-right: 0;          /* 覆盖父级 .hero-text 的 padding-right:80,确保有充足空间 */
  max-width: 437px;          /* 锁 437 与 hero-desc 同宽基准 */
  justify-content: space-between;  /* 4 个 item 均分到 437 区间,首尾严格贴 437 左右缘 */
}

.hero-trust .trust-item {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 0.78rem;       /* 0.88→0.78: 4item 总宽 ~386 < 437, 不再被压断行 */
  opacity: 0.85;
  white-space: nowrap;      /* 双保险:即使容器再窄,item 内部也不换行 */
}

.hero-trust .trust-item::before {
  content: "✓";
  color: var(--color-green);
  font-weight: 700;
}

/* ---------- 页面通用 Hero（内页） ---------- */
.page-hero {
  background: linear-gradient(135deg, #003a7a 0%, #0050a3 50%, #0066CC 100%);
  color: var(--color-white);
  padding: 56px 0 64px;
  position: relative;
  overflow: hidden;
}

.page-hero::before {
  content: "";
  position: absolute;
  top: -40%;
  right: -5%;
  width: 400px;
  height: 400px;
  background: radial-gradient(circle, rgba(0,168,107,0.12) 0%, transparent 70%);
  border-radius: 50%;
}

.page-hero h1 {
  position: relative;
  z-index: 1;
  font-size: 2.2rem;
  font-weight: 700;
  margin-bottom: 12px;
}

.page-hero p {
  position: relative;
  z-index: 1;
  font-size: 1.1rem;
  opacity: 0.88;
  max-width: 1100px;       /* 00:49 700→1100,确保长标题描述桌面一行写完不换行 */
}

/* ---------- 核心证据模块（数字统计） ---------- */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));  /* 6 指标:3 列 × 2 行 */
  gap: 28px;   /* photo562: 40→28,与.card-grid统一 */
}

.stat-card {
  background: var(--color-white);
  border-radius: var(--radius-md);
  padding: 28px 20px;
  text-align: center;
  box-shadow: var(--shadow-sm);
  border-top: 3px solid var(--color-primary);
  transition: transform var(--transition), box-shadow var(--transition);
}

.stat-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
}

.stat-card .stat-icon {
  font-size: 2rem;
  margin-bottom: 8px;
}

.stat-card .stat-number {
  font-size: 2rem;
  font-weight: 800;
  color: var(--color-primary);
  line-height: 1.2;
}

.stat-card .stat-label {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--color-text);
  margin-top: 4px;
}

.stat-card .stat-desc {
  font-size: 0.82rem;
  color: var(--color-text-muted);
  margin-top: 6px;
}

/* ---------- 通用卡片网格 ---------- */
.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 28px;
}

/* 18:09 企业文化 3 卡专用:列间距 28→40(用户要求),卡宽随列距收窄至 ≈357px;不影响其他 card-grid 页面 */
.culture-grid {
  gap: 40px;
}

.card {
  background: var(--color-white);
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: transform var(--transition), box-shadow var(--transition);
  display: flex;
  flex-direction: column;
}

.card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
}

.card-image {
  width: 100%;
  height: 200px;
  background: linear-gradient(135deg, var(--color-primary-light), var(--color-green-light));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 3rem;
  position: relative;
  overflow: hidden;
}

.card-image::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 60%, rgba(0,0,0,0.05));
}

.card-body {
  padding: 24px;
  flex: 1;
  display: flex;
  flex-direction: column;
}

.card-body h3 {
  font-size: 1.2rem;
  font-weight: 700;
  margin-bottom: 10px;
  color: var(--color-text);
  /* photo414(09-14 17:33): 张总指令——所有卡片标题恢复靠左对齐(撤销photo383居中) */
}

.card-body h3 a {
  color: inherit;
}

.card-body h3 a:hover {
  color: var(--color-primary);
}

.card-body p {
  color: var(--color-text-light);
  font-size: 0.95rem;
  flex: 1;
  margin-bottom: 16px;
}

.card-footer {
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  padding: 0 14px;
}

/* ---------- 标签 / Badge ---------- */
.badge {
  display: inline-block;
  padding: 4px 12px;
  font-size: 0.78rem;
  font-weight: 600;
  border-radius: 20px;
  white-space: nowrap;
}

.badge-primary { background: var(--color-primary-light); color: var(--color-primary); }
.badge-green { background: var(--color-green-light); color: var(--color-green); }
.badge-gold { background: var(--color-gold-light); color: var(--color-gold); }
.badge-gray { background: #eef0f4; color: var(--color-text-light); }

/* ---------- 产品卡片特化 ---------- */
.product-card .card-image {
  height: 220px;
}

.product-params {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 12px 0 16px;
  padding: 14px;
  background: var(--color-bg);
  border-radius: var(--radius-sm);
}

.product-params li {
  display: flex;
  justify-content: space-between;
  font-size: 0.88rem;
  color: var(--color-text-light);
}

.product-params li strong {
  color: var(--color-text);
  font-weight: 600;
}

.product-tags {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}

/* ---------- 证据链区块 ---------- */
.evidence-section {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  padding: 36px;
  box-shadow: var(--shadow-sm);
  margin-bottom: 40px;
}

.evidence-section h2 {
  font-size: 1.5rem;
  margin-bottom: 24px;
  display: flex;
  align-items: center;
  gap: 8px;
}

.evidence-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 16px;
}

.evidence-card {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 18px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  transition: border-color var(--transition);
}

.evidence-card:hover {
  border-color: var(--color-green);
}

.evidence-card .ev-icon {
  font-size: 1.5rem;
  flex-shrink: 0;
}

.evidence-card .ev-content {
  flex: 1;
}

.evidence-card .ev-type {
  font-size: 0.8rem;
  color: var(--color-text-muted);
  margin-bottom: 2px;
}

.evidence-card .ev-value {
  font-weight: 600;
  color: var(--color-text);
  font-size: 0.95rem;
  word-break: break-all;
}

.evidence-card .ev-status {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 0.8rem;
  color: var(--color-green);
  font-weight: 600;
  margin-top: 4px;
}

/* ---------- 参数表格 ---------- */
.param-table-wrap {
  overflow-x: auto;
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
}

.param-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--color-white);
  min-width: 480px;
}

.param-table th,
.param-table td {
  padding: 14px 20px;
  text-align: left;
  border-bottom: 1px solid var(--color-border);
  font-size: 0.95rem;
}

.param-table th {
  background: var(--color-bg);
  font-weight: 600;
  color: var(--color-text);
  white-space: nowrap;
}

.param-table td {
  color: var(--color-text-light);
}

.param-table tr:last-child td {
  border-bottom: none;
}

.param-table .highlight {
  color: var(--color-primary);
  font-weight: 600;
}

/* 对比表格 */
.compare-table th:first-child,
.compare-table td:first-child {
  background: var(--color-bg);
  font-weight: 600;
}

.compare-table th:nth-child(2) {
  background: var(--color-primary-light);
  color: var(--color-primary);
}

/* ---------- Tab 切换 ---------- */
/* photo1382(张总指令 2026-11-09): PC/移动端统一为浅蓝色滑动切换按钮——
   浅灰蓝圆角槽 + .tab-slider 浅蓝滑块, 切换时滑块平滑滑动(由 main.js initTabs 驱动) */
.tab-nav {
  position: relative;
  display: flex;
  gap: 4px;
  margin-bottom: 32px;
  background: #eef2f7;
  padding: 5px;
  border-radius: 12px;
  overflow-x: auto;
  flex-wrap: nowrap;
  scrollbar-width: none;        /* photo822: 隐藏滚动条(张总指令 删除右侧上下箭头), 横向滚动能力保留 */
  -ms-overflow-style: none;
}
.tab-nav::-webkit-scrollbar { display: none; }   /* photo822: Chrome/Edge 滚动条及箭头按钮隐藏 */

/* photo1382 修正: 移动端2行网格切换需垂直跟随——滑块四向定位(left/top/width/height)全由 JS 驱动 */
.tab-slider {
  position: absolute;
  left: 0;
  top: 0;
  width: 0;
  height: 0;
  background: var(--color-primary-light);
  border-radius: 8px;
  transition: left .28s ease, top .28s ease, width .28s ease, height .28s ease;
  pointer-events: none;
}

.tab-btn {
  position: relative;
  z-index: 1;
  padding: 10px 20px;
  font-size: 0.95rem;
  font-weight: 500;
  background: none;
  border: 1px solid #c5daf5;   /* photo1383(张总指令): 蓝色外框(未选中淡蓝) */
  cursor: pointer;
  color: var(--color-text-light);
  border-radius: 8px;
  transition: color var(--transition), border-color var(--transition);
  white-space: nowrap;
}

.tab-btn:hover {
  color: var(--color-primary);
}

.tab-btn.active {
  color: var(--color-primary);
  font-weight: 600;
  border-color: var(--color-primary);   /* photo1383: 选中项外框加深为品牌蓝 */
}

/* ---------- 时间轴 ---------- */
.timeline {
  position: relative;
  padding-left: 32px;
}

.timeline::before {
  content: "";
  position: absolute;
  left: 8px;
  top: 0;
  bottom: 0;
  width: 2px;
  background: var(--color-border);
}

.timeline-item {
  position: relative;
  padding-bottom: 32px;
}

.timeline-item::before {
  content: "";
  position: absolute;
  left: -28px;
  top: 4px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--color-primary);
  border: 3px solid var(--color-white);
  box-shadow: 0 0 0 2px var(--color-primary);
}

.timeline-item .tl-date {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--color-primary);
  margin-bottom: 4px;
}

.timeline-item .tl-title {
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--color-text);
}

.timeline-item .tl-desc {
  font-size: 0.92rem;
  color: var(--color-text-light);
  margin-top: 4px;
}

/* ---------- 资质墙 ---------- */
.qual-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 40px;   /* 18:07 行列间距均调至 40(用户要求),网格限宽同步 1136→1176 保卡宽 ≈365px */
}

.qual-card {
  display: flex;
  flex-direction: column;      /* photo623: 图标移到卡片顶部一行 */
  align-items: stretch;
  gap: 10px;
  padding: 20px;
  background: var(--color-white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  border-top: 4px solid var(--color-green);   /* 16:42 色条由左侧改到顶部 */
}

/* 16:26 资质卡为证件图片链接: a 标签 reset + hover + 右下角"查看证件"按钮 */
a.qual-card {
  text-decoration: none;
  color: inherit;
  position: relative;
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}

a.qual-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
}

a.qual-card::after {
  content: "查看证件";
  position: absolute;
  right: 14px;
  bottom: 14px;                        /* 16:27 按钮置于卡片右下角 */
  padding: 3px 16px;                   /* 16:47 描边式按钮: 补偿 2px 边框, 总尺寸与原胶囊一致 */
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--color-primary);
  background: #fff;                    /* 16:47 改为白底蓝字蓝描边(与案例卡"查看详情"同板式) */
  border: 2px solid var(--color-primary);
  border-radius: 8px;
  transition: background 0.18s ease, color 0.18s ease;
  letter-spacing: 1px;
}

a.qual-card:hover::after {
  background: var(--color-primary);
  color: #fff;
}

/* 16:55 桌面态资质卡固定尺寸 365.3×216.5 (与企业文化卡一致); 18:07 3列网格限宽 365.3*3+2*40gap=1176 */
@media (min-width: 769px) {
  .qual-grid {
    max-width: 1176px;
    margin-left: auto;
    margin-right: auto;
  }
  .qual-card {
    height: 216.5px;
  }
}

.qual-card:nth-child(3n + 1) {
  border-top-color: var(--color-primary);     /* 第1列:蓝 */
}
.qual-card:nth-child(3n + 2) {
  border-top-color: var(--color-green);       /* 第2列:绿 */
}
.qual-card:nth-child(3n + 3) {
  border-top-color: var(--color-gold);        /* 第3列:青(#00B8C4) */
}

/* 16:44 企业文化 3 卡顶部色条, 与资质荣誉墙风格一致: 蓝/绿/青 */
.culture-card {
  border-top: 4px solid var(--color-primary);
}
.culture-card:nth-child(2) {
  border-top-color: var(--color-green);
}
.culture-card:nth-child(3) {
  border-top-color: var(--color-gold);
}

.qual-card .qc-icon {
  font-size: 2rem;
  flex-shrink: 0;
  align-self: center;          /* photo623: 图标水平居中 */
}

.qual-card .qc-name {
  font-weight: 600;
  font-size: 0.98rem;
  color: var(--color-text);
}

.qual-card .qc-no {
  font-size: 0.85rem;
  color: var(--color-text-muted);
  margin-top: 2px;
  word-break: break-all;
}

.qual-card .qc-status {
  display: inline-block;
  margin-top: 4px;
  font-size: 0.8rem;
  color: var(--color-green);
  font-weight: 600;
}

/* ---------- 团队卡片 ---------- */
.team-card {
  display: grid;
  grid-template-columns: 140px 1fr;    /* 左:头像(140 列宽);右:文字列表(自适应) */
  grid-template-areas:
    "header header"                    /* 第1行:姓名+职务,占满整行,内容居中 */
    "avatar info";                     /* 第2行:左头像,右技能列表 */
  column-gap: 40px;
  row-gap: 28px;
  background: var(--color-white);
  border-radius: var(--radius-md);
  padding: 32px;
  box-shadow: var(--shadow-sm);
}

.team-header {
  grid-area: header;
  text-align: center;
}

.team-header h3 {
  font-size: 1.3rem;
  margin-bottom: 4px;
}

.team-header .team-role {
  color: var(--color-primary);
  font-weight: 600;
  font-size: 0.95rem;
}

.team-avatar {
  grid-area: avatar;
  width: 100px;
  height: 100px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--color-primary), var(--color-green));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2.5rem;
  color: var(--color-white);
  font-weight: 700;
  flex-shrink: 0;
  justify-self: center;                 /* 头像在左列水平居中 */
  align-self: start;                    /* 与右侧首条 bullet 顶部对齐 */
}

.team-info ul {
  list-style: none;
}

.team-info li {
  position: relative;
  padding-left: 20px;
  margin-bottom: 8px;
  font-size: 0.92rem;
  color: var(--color-text-light);
}

.team-info li::before {
  content: "▸";
  position: absolute;
  left: 0;
  color: var(--color-green);
}

/* ---------- 创始人卡片(16:25): 左照片 3:4 + 右资料, 两栏等高 ---------- */
.founder-card {
  display: flex;
  align-items: stretch;                 /* 左右两栏高度相同, 由右栏内容撑开 */
  max-width: 820px;
  margin: 0 auto;
  background: var(--color-white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  overflow: hidden;                     /* 照片贴左缘, 随卡片圆角裁切 */
}

.founder-photo {
  flex: 0 0 auto;
  width: auto;
  align-self: stretch;                  /* 高度 = 右栏高度 */
  aspect-ratio: 3 / 4;                  /* 09-08 高:宽=4:3 竖版照片, 宽度随高度自动推导(JS 联动) */
  background: linear-gradient(135deg, #003a7a 0%, #0050a3 50%, #0066CC 100%);   /* 16:39 改为与 hero 板块同款蓝色渐变 */
  display: flex;
  align-items: center;
  justify-content: center;
}

.founder-photo span {
  color: rgba(255, 255, 255, 0.92);
  font-size: 1.05rem;
  font-weight: 600;
  letter-spacing: 3px;
}

.founder-info {
  flex: 1 1 auto;
  min-width: 0;
  padding: 32px;
}

.founder-info h3 {
  font-size: 1.3rem;
  margin-bottom: 4px;
}

.founder-info .team-role {
  color: var(--color-primary);
  font-weight: 600;
  font-size: 0.95rem;
  margin-bottom: 14px;
}

/* 23:11 创始人卡专长列表行距 1.7 → 2.55（用户要求加大到现有 1.5 倍），仅作用于核心成员卡 */
.founder-info ul li {
  line-height: 2.55;
}

/* ---------- FAQ 手风琴 ---------- */
.faq-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.faq-item {
  background: var(--color-white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  border: 1px solid var(--color-border);
}

.faq-question {
  width: 100%;
  text-align: left;
  padding: 18px 24px;
  font-size: 1.02rem;
  font-weight: 600;
  background: none;
  border: none;
  cursor: pointer;
  color: var(--color-text);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}

.faq-question .faq-icon {
  flex-shrink: 0;
  font-size: 1.3rem;
  color: var(--color-primary);
  transition: transform var(--transition);
}

.faq-item.open .faq-icon {
  transform: rotate(45deg);
}

.faq-answer {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.4s ease;
}

.faq-item.open .faq-answer {
  max-height: 500px;
}

.faq-answer-inner {
  padding: 0 24px 20px;
  color: var(--color-text-light);
  font-size: 0.95rem;
  line-height: 1.8;
}

/* ---------- 联系表单 ---------- */
.contact-wrap {
  display: grid;
  grid-template-columns: 1fr 1fr;   /* 12:28 改为 1fr 1fr, 严格左右等宽 */
  gap: 40px;
  align-items: stretch;        /* 左右两列拉到等高 (CSS Grid stretch 默认行为, 显式声明更清晰) */
}

/* 12:28 新增: 联系区共享卡片样式 — 左右两栏均使用, 保证视觉等高等同宽 */
.contact-card {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  padding: 36px;
  box-shadow: var(--shadow-md);
  display: flex;
  flex-direction: column;
  height: 100%;
  box-sizing: border-box;
}

/* photo393(09-14 15:42): 联系页"提交需求,获取方案"按钮下移——表单撑满卡片剩余高度,
   按钮贴右卡底部;左右两卡等高+同padding,按钮下侧与左侧地图卡片下侧平齐 */
#contact-form { flex: 1; display: flex; flex-direction: column; }
#contact-form button[type="submit"] { margin-top: auto; }
/* photo404(09-14 16:32): 需求描述文本域自动拉长填充——文本域下侧下拉到按钮上方(间距=常规20px),
   消除photo393按钮贴底后文本域与按钮间的大空隙;按钮底边仍与左侧地图卡平齐 */
#contact-form .fg-message { flex: 1; display: flex; flex-direction: column; }
#contact-form .fg-message textarea { flex: 1; }

.contact-col {
  display: flex;  flex-direction: column;
  gap: 24px;
  min-width: 0;
}

.contact-col-title {
  font-size: 1.4rem;
  margin: 0;
}

/* 17:16 左侧新增「定制信息」卡片 */
.contact-custom {
  background: linear-gradient(135deg, #f5fbff 0%, #eef6fc 100%);
  border: 1px solid #dceaf6;
  border-left: 4px solid var(--color-primary);
  border-radius: var(--radius-md);
  padding: 20px 22px;
}
.contact-custom h3 {
  font-size: 1.05rem;
  margin: 0 0 12px;
  color: var(--color-primary);
  display: flex;
  align-items: center;
  gap: 8px;
}
.contact-custom ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 18px;
}
.contact-custom li {
  font-size: 0.92rem;
  color: var(--color-text);
  display: flex;
  align-items: flex-start;
  gap: 8px;
  line-height: 1.5;
}
.contact-custom li::before {
  content: "✓";
  color: var(--color-primary);
  font-weight: 700;
  flex-shrink: 0;
}

/* 17:16 左侧新增「嵌入式地图」 */
.contact-map {
  margin-top: 0;
  background: var(--color-white);
  border: 1px solid #e5edf5;
  border-radius: var(--radius-md);
  padding: 12px 12px 14px;
}
.contact-map-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 0.85rem;
  color: var(--color-text-muted);
  margin-bottom: 8px;
}
.contact-map-head a {
  color: var(--color-primary);
  text-decoration: none;
  font-size: 0.82rem;
}
.contact-map-head a:hover { text-decoration: underline; }
.contact-map iframe {
  display: block;
  width: 100%;
  height: 280px;
  border: 0;
  border-radius: var(--radius-sm);
  background: #eef4f8;
}

.contact-info-list {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.contact-info-item {
  display: flex;
  gap: 14px;
  align-items: flex-start;
}

.contact-info-item .ci-icon {
  width: 44px;
  height: 44px;
  border-radius: var(--radius-sm);
  background: var(--color-primary-light);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.3rem;
  flex-shrink: 0;
}

.contact-info-item .ci-label {
  font-size: 0.82rem;
  color: var(--color-text-muted);
  /* 16:03 电话等 2 字标签两端对齐:宽度统一为 4 字(与"业务咨询/技术支持"等宽),2 字标签左右撑满 */
  width: 4em;
  text-align: justify;
  text-align-last: justify;
}

.contact-info-item .ci-value {
  font-size: 1.02rem;
  font-weight: 600;
  color: var(--color-text);
  word-break: break-all;
}

.contact-info-item .ci-value a {
  color: inherit;
}

.contact-form {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  padding: 36px;
  box-shadow: var(--shadow-md);
  display: flex;          /* 12:28: 让表单内容纵向填充, 与左侧 .contact-card 等高 */
  flex-direction: column;
  height: 100%;           /* 12:28: 撑满网格高度 */
  box-sizing: border-box;
}

.form-group {
  margin-bottom: 20px;
}

.form-group label {
  display: block;
  font-size: 0.9rem;
  font-weight: 600;
  margin-bottom: 6px;
  color: var(--color-text);
}

/* 16:10 表单 2 字标签(姓名/电话/邮箱)等宽两端对齐,与 4 字标签(公司名称/水源类型等)右端齐平 */
.form-group label .lbl2 {
  display: inline-block;
  width: 4em;
  text-align: justify;
  text-align-last: justify;
  text-justify: inter-ideograph;
}

.form-group label .required {
  color: var(--color-red);
}

.form-control {
  width: 100%;
  padding: 12px 16px;
  font-size: 1rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-bg);
  transition: border-color var(--transition), background var(--transition);
  font-family: inherit;
  min-height: 44px;
}

.form-control:focus {
  outline: none;
  border-color: var(--color-primary);
  background: var(--color-white);
  box-shadow: 0 0 0 3px rgba(0,102,204,0.1);
}

textarea.form-control {
  min-height: 120px;
  resize: vertical;
}

.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

.form-error {
  color: var(--color-red);
  font-size: 0.82rem;
  margin-top: 4px;
  display: none;
}

.form-group.error .form-error {
  display: block;
}

.form-group.error .form-control {
  border-color: var(--color-red);
}

.form-success-msg {
  display: none;
  padding: 16px;
  background: var(--color-green-light);
  border-radius: var(--radius-sm);
  color: var(--color-green);
  font-weight: 600;
  margin-bottom: 16px;
}

.form-success-msg.show {
  display: block;
}

/* ---------- 案例卡片 ---------- */
.case-card {
  display: flex;
  flex-direction: row;
  background: var(--color-white);
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: transform var(--transition), box-shadow var(--transition);
}

.case-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
}

.case-card .case-img {
  width: 200px;
  flex-shrink: 0;
  background: linear-gradient(135deg, var(--color-primary-light), var(--color-green-light));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 3rem;
}

.case-card .case-body {
  padding: 24px;
  flex: 1;
}

.case-card .case-tags {
  display: flex;
  gap: 8px;
  margin-bottom: 8px;
  flex-wrap: wrap;
}

.case-card h3 {
  font-size: 1.1rem;
  margin-bottom: 6px;
}

.case-card .case-desc {
  font-size: 0.92rem;
  color: var(--color-text-light);
}

/* ---------- 首页区块J:水平大卡案例列表(参考图2) ---------- */
.case-list {
  display: flex;
  flex-direction: column;
  gap: 32px;
  margin-top: 8px;
}   /* photo969: 删 photo820 的 padding-bottom:32px——案例卡底→色彩线统一 64(section padding 兜底) */

.case-card.case-row {
  flex-direction: row;
  align-items: stretch;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.06);
  border: 1px solid rgba(0, 102, 204, 0.06);
  transition: transform var(--transition), box-shadow var(--transition);
}
.case-card.case-row:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 32px rgba(0, 102, 204, 0.12);
}

.case-card.case-row .case-img {
  width: 360px;
  flex-shrink: 0;
  aspect-ratio: 4 / 3;
  font-size: 5rem;
  background: linear-gradient(135deg, #0050a3 0%, #0066CC 50%, #0050a3 100%);
}
.case-card.case-row:nth-child(2) .case-img {
  background: linear-gradient(135deg, #00683b 0%, #00A86B 50%, #00683b 100%);
}
.case-card.case-row:nth-child(3) .case-img {
  background: linear-gradient(135deg, #006d7a 0%, #00B8C4 50%, #006d7a 100%);
}

/* ---------- 多张 case-card 横向列表 (例如 cases.html 9 张): 颜色循环 ---------- */
.case-list .case-card.case-row:nth-child(3n+1) .case-img {
  background: linear-gradient(135deg, #0050a3 0%, #0066CC 50%, #0050a3 100%);
}
.case-list .case-card.case-row:nth-child(3n+2) .case-img {
  background: linear-gradient(135deg, #00683b 0%, #00A86B 50%, #00683b 100%);
}
.case-list .case-card.case-row:nth-child(3n) .case-img {
  background: linear-gradient(135deg, #006d7a 0%, #00B8C4 50%, #006d7a 100%);
}

.case-card.case-row .case-body {
  padding: 28px 32px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  position: relative;                    /* 18:24 作为 .case-link 绝对定位的包含块 */
}

.case-card.case-row .case-tags {
  margin-bottom: 0;
}

.case-card.case-row h3 {
  font-size: 1.3rem;       /* 18:11 回退至 1.3rem(18:05 曾改 1.05rem,按用户要求恢复) */
  margin-bottom: 0;
  color: var(--color-primary);
  font-weight: 700;
}

.case-card.case-row .case-desc {
  font-size: 0.95rem;
  line-height: 1.7;
  color: var(--color-text);
  margin: 0;
  /* 描述与指标之间靠 case-stats 顶部 margin 隔开 */
}

.case-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  margin-top: 8px;
  padding-top: 16px;
  border-top: 1px dashed rgba(0, 102, 204, 0.18);
}
.case-stats .stat {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.case-stats .stat-value {
  font-size: 1.45rem;
  font-weight: 700;
  color: var(--color-primary);
  line-height: 1.2;
  letter-spacing: -0.2px;
}
.case-stats .stat-label {
  font-size: 0.82rem;
  color: var(--color-text-light);
  letter-spacing: 0.2px;
}

/* ---------- 案例卡底部"查看详情"按钮 (cases.html 9 张卡片右侧底部) ---------- */
/* PC 端(>900px)保持文档流原样;移动端(≤900px,卡片单列堆叠)按钮右下角绝对定位,底侧与最后一行指标文字下侧对齐 */
.case-card.case-row .case-link {
  align-self: flex-end;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 4px;
  padding: 12px 28px;                    /* 17:49 全站"查看详情"统一 12px 28px / 1rem(与 sys-btn、btn 一致) */
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-primary);
  background: transparent;
  border: 1.5px solid var(--color-primary);
  border-radius: var(--radius-sm);
  text-decoration: none;
  cursor: pointer;
  transition: background var(--transition), color var(--transition), transform var(--transition);
}
.case-card.case-row .case-link:hover {
  background: var(--color-primary);
  color: var(--color-white);
}

@media (max-width: 900px) {
  .case-card.case-row { flex-direction: column; }
  .case-card.case-row .case-img { width: 100%; aspect-ratio: 16 / 9; font-size: 4rem; }
  .case-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
  .case-stats .stat-value { font-size: 1.2rem; }
  /* 18:33 移动端"查看详情"按钮:右下角绝对定位,外框下侧与最后一行指标文字(如"微生物灭活")下侧精确对齐 */
  .case-card.case-row .case-link {
    position: absolute;
    right: 32px;
    bottom: 28px;
    margin-top: 0;
  }
}
@media (max-width: 560px) {
  /* photo386(09-14 15:12): 案例卡参数区同款——两行独立左/中/右对齐(grid 3等分+display:contents),
     取代photo372/380 flex space-between */
  .case-stats { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr) minmax(0,1fr); grid-template-rows: auto auto; column-gap: 10px; row-gap: 4px; }
  .case-stats .stat { display: contents; }
  .case-stats .stat-value { grid-row: 1; font-size: 1.2rem; letter-spacing: -0.3px; white-space: nowrap; }
  .case-stats .stat-label { grid-row: 2; font-size: 0.8rem; white-space: nowrap; }
  .case-stats .stat:nth-child(2) { text-align: center; }
  .case-stats .stat:nth-child(3) { text-align: right; }
  /* photo374(09-14 14:10): "查看详情"取消右下角绝对定位(参数2行后与第三列重叠),
     改为参数区下方独占一行、全宽拉伸、文字居中——与首页产品卡 .sys-btn 移动端同款位置与大小 */
  .case-card.case-row .case-link {
    position: static;
    margin-top: 16px;
    align-self: stretch;
    justify-content: center;
  }
}

/* ---------- 引用块 ---------- */
.quote-block {
  background: var(--color-primary-light);
  border-left: 4px solid var(--color-primary);
  padding: 24px 28px;
  border-radius: var(--radius-sm);
  margin: 24px 0;
  font-style: italic;
  color: var(--color-text);
}

.quote-block .quote-author {
  font-style: normal;
  font-weight: 600;
  margin-top: 12px;
  font-size: 0.9rem;
  color: var(--color-primary);
}

/* ---------- 提示框 ---------- */
.alert {
  padding: 16px 20px;
  border-radius: var(--radius-sm);
  margin: 20px 0;
  font-size: 0.95rem;
}

.alert-info {
  background: var(--color-primary-light);
  border-left: 4px solid var(--color-primary);
  color: var(--color-primary-dark);
}

.alert-success {
  background: var(--color-green-light);
  border-left: 4px solid var(--color-green);
  color: #006b44;
}

/* ---------- 12:30 提示框行内链接按钮化 → 11:29 photo199 改回正文内联样式（移动端浏览器把 GB 5749-2022 自动识别为号码后套上按钮外框，去掉外框与正文字体颜色一致） ---------- */
.alert a:not(.btn) {
  display: inline;
  padding: 0;
  margin: 0;
  font-weight: inherit;
  color: inherit;
  background: none;
  border: none;
}

.alert a:not(.btn):hover {
  color: var(--color-primary);
  text-decoration: underline;
}

.alert-warning {
  background: var(--color-gold-light);
  border-left: 4px solid var(--color-gold);
  color: #8a5a00;
}

/* ---------- 红黑榜 ---------- */
.rb-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
}

.rb-card {
  border-radius: var(--radius-md);
  padding: 24px;
  box-shadow: var(--shadow-sm);
}

.rb-card.red {
  background: #CFD8DC;                                                                              /* 11:49 改 #fef0f0(浅红) → #CFD8DC(Material Blue Grey 200,中灰),用户要求黑榜底色调整为"中灰色";保留红 ❌ 红文字作为雷区语义锚点 */
  border: 1px solid #B0BEC5;                                                                        /* 11:49 同步把边框从 #f5c6cb 改为对应的中灰边框 #B0BEC5(Material Blue Grey 100) */
}

.rb-card.green {
  background: var(--color-green-light);
  border: 1px solid #b3e6cc;
}

.rb-card h3 {
  font-size: 1.1rem;
  margin-bottom: 14px;
  display: flex;
  align-items: center;
  gap: 8px;
}

.rb-card li {
  padding: 8px 0;
  font-size: 0.92rem;
  border-bottom: 1px dashed rgba(0,0,0,0.08);
}

.rb-card li:last-child {
  border-bottom: none;
}

.rb-card.red li::before {
  content: "✗ ";
  color: #DC2626;                                                                                    /* 11:51 改 var(--color-red)→#DC2626 直接写死(Tailwind red-600),因为 :root --color-red 当前被错定义为品牌蓝 #0066CC,导致 ✗ 显示为蓝色;本处只改 X 颜色,不动变量以免影响 form-error / text-red 工具类 */
  font-weight: 700;
}

.rb-card.green li::before {
  content: "✓ ";
  color: var(--color-green);
  font-weight: 700;
}

/* ---------- 技术文章正文 ---------- */
.article-body {
  max-width: 820px;
  margin: 0 auto;
}

.article-body h2 {
  font-size: 1.5rem;
  margin: 32px 0 16px;
  color: var(--color-text);
  padding-left: 14px;
  border-left: 4px solid var(--color-primary);
}

.article-body h3 {
  font-size: 1.2rem;
  margin: 24px 0 12px;
}

.article-body p {
  margin-bottom: 16px;
  color: var(--color-text-light);
  font-size: 1rem;
  line-height: 1.9;
}

.article-body ul,
.article-body ol {
  margin: 0 0 16px 20px;
}

.article-body ul li,
.article-body ol li {
  margin-bottom: 8px;
  color: var(--color-text-light);
  list-style: disc;
}

.article-body ol li {
  list-style: decimal;
}

.article-meta {
  display: flex;
  gap: 20px;
  font-size: 0.88rem;
  color: var(--color-text-muted);
  margin-bottom: 24px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--color-border);
}

/* 13:23 移动端元信息条:不再挤成4列,改为流式排列——能放下就每行2项(共2行),放不下自动逐行(全部案例/新闻/技术页共用此类)
   13:42 优化:flex-shrink:0 保持各项自然宽度,摆不下时换行而非压缩文字;行距6px紧凑 */
@media (max-width: 768px) {
  .article-meta {
    flex-wrap: wrap;
    gap: 6px 16px;
    margin-bottom: 16px;
    padding-bottom: 12px;
  }
  .article-meta > span {
    flex-shrink: 0;
  }
}

/* =========================================================
   页脚（image#2 视觉样式）
   LOGO 改为垂直堆叠 + 联系方式单列 + 底部三段合并一行
   ========================================================= */
.site-footer {
  background: #F5F7FA;
  color: #5a6770;
  padding: 56px 0 0;
  margin-top: 0;
}

/* ---------- 顶部 3 段横向：logo(左大圆纵向) + 联系方式(中单列) + QR(右) ---------- */
.footer-top {
  display: grid;
  grid-template-columns: auto 2fr 1fr;     /* 22:22 brand 块按 max-content 自适应加宽;22:39 回退 22:36 对调,恢复 [brand auto][contact 2fr][qr 1fr] */
  grid-template-rows: 240px;                /* 22:48 固定行高 240,3 块顶/底对齐 */
  gap: 56px;
  padding: 24px 0 40px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.12);
}

/* 左：垂直堆叠 logo + 公司名 */
.footer-brand-block {
  display: flex;                           /* 22:17 改默认 block → flex column,允许 LOGO 顶 / 公司名底两端对齐 */
  flex-direction: column;
  min-height: 240px;                       /* 22:17 匹配 QR 块总高 191+15+33.6≈240px,公司名 margin-top:auto 即可贴底 */
}
.footer-brand-block .logo.logo-vertical {
  display: flex;                         /* 21:00 改 inline-flex → flex,块级避免与 company-name 同行 */
  flex-direction: column;               /* 20:51 图标在上文字在下,垂直堆叠 */
  align-items: center;                  /* 22:29 改 flex-start → center,两个图标居中对齐到公司名中线 */
  width: 100%;                          /* 22:29 撑满 brand 块,让 align-items: center 真正生效 */
  gap: 18px;                            /* 22:29 同步放大 1.5 倍(12 → 18) */
  text-decoration: none;
}

.footer-brand-block .logo-icon {
  width: 100px;                         /* 22:48 与 qr-box 191 + contact 字号 0.85 同步对齐,brand 总高缩为 240,3 块顶/底齐 */
  height: 100px;
  border-radius: 50%;
  background: linear-gradient(135deg, #0066CC 0%, #00A3E0 100%);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 3rem;                      /* 22:29 同步放大 1.5 倍(2 → 3) */
  flex-shrink: 0;
}

.footer-brand-block .logo-text {
  text-align: left;                     /* 21:00 改 center → left,LOGO 文字左对齐到板块左缘 */
}

.footer-brand-block .logo-text .cn {
  color: #0066CC;                         /* 20:57 改为品牌蓝 */
  font-size: 1.875rem;                     /* 22:29 放大 1.5 倍(1.25 → 1.875) */
  font-weight: 700;
  display: block;
  line-height: 1.25;
}

.footer-brand-block .logo-text .en {
  color: #0066CC;                         /* 20:57 改为品牌蓝 */
  font-size: 1.14rem;                      /* 14:19 从 1.23rem 调为 1.14rem, 使英文行总宽等于 CN "深圳中和净化" 总宽 (192.5→179 CSS px, 缩 0.9299 倍, 与用户图 14:19 比例一致) */
  display: block;
  line-height: 1.25;
  margin-top: 3px;                        /* 22:29 同步放大 1.5 倍(2 → 3) */
}

.footer-company-name {
  color: #0066CC;                         /* 20:57 改为品牌蓝 */
  font-size: 1.896rem;                     /* 22:25 在 22:17 的 1.58rem 基础上再放大 1.2 倍(1.58 × 1.2 = 1.896) */
  font-weight: 700;
  margin-top: auto;                       /* 22:17 改 22px → auto,公司名甩到 brand-block 底缘,与"微信二维码"下侧对齐 */
  transform: translateY(-4px);            /* photo214(13:15): 微调 -4px,公司名底边与"扫码技术交流"底边平齐(无位移基准差 -4px) */
  padding-top: 19px;                      /* 22:48 与 logo-icon 100 同步,brand 内容总高 100+18+37.5+27.6+19+37.92 ≈ 240,与其他两块齐 */
  text-align: left;                       /* 21:00 公司名左侧与整个板块左侧对齐(改自 center) */
  width: fit-content;                     /* 21:00 收缩宽度到内容宽度,让左缘紧贴板块左缘 */
  white-space: nowrap;                    /* 22:22 强制单行,22:25 字号放大后继续保留(防止公司名 13 字换行) */
  letter-spacing: 0.5px;
}

/* 中：联系方式（单列 7 条，公司地址拆 2 行） */
.footer-contact-block {
  min-height: 240px;                       /* 22:48 与 brand / qr 块对齐,3 块顶/底缘平齐(grid-template-rows: 240px 已固定行高,此处双保险) */
  transform: translateX(20px);             /* photo239(15:17): 桌面端联系方式板块整体右移 20px;移动端由下方媒体查询 -10px 覆盖,不受影响 */
}
.footer-contact-block ul {
  display: flex;
  flex-direction: column;               /* 20:51 从 2 列改为 1 列纵列 */
  gap: 7.2px;                           /* 15:25 新增"网址"行后 13 → 7.2,补偿新增 21.76px 行高:原 5×21.76+53.52+5×13≈227,新 6×21.76+53.52+6×7.2≈227,板块总高不变 */
  margin: 0;
  padding: 0 0 0 120px;                 /* 22:34 向公司名方向 -80px,200px → 120px(向 footer 板块左缘回缩) */
  list-style: none;
}

.footer-contact li {
  font-size: 0.85rem;                   /* 22:48 字号缩 0.88 → 0.85,与 logo-icon 100、qr 191 同步,contact 内容总高 240 与其他两块齐 */
  display: flex;
  gap: 8px;
  align-items: flex-start;
  margin: 0;
  color: #0066CC;                         /* 20:57 改为品牌蓝 */
  line-height: 1.6;                     /* 21:20 平均行高,适应公司地址拆 2 行换行后行间视觉均衡 */
}

.footer-contact li .fc-label {
  color: #0066CC;                         /* 20:57 改为品牌蓝 */
  flex-shrink: 0;
  /* 21:20 显式覆盖,确保所有 fc-label 字号与 li 一致(0.88rem),不继承浏览器默认差异 */
  font-size: inherit;
  display: inline-block;                  /* 21:37 锁定 label 宽度,让 width 生效 */
  width: 5em;                             /* 21:37 锁定 5em 宽(4 字 + 冒号),所有 label 等宽对齐,便于地址第 2 行左缘回齐 */
  text-align: justify;                    /* photo236(15:06): 两端对齐+末行撑满——修复字体将全角空格(U+3000)渲染不足 1em 导致两字标签(电话/传真/邮箱/网址)偏窄、冒号不齐的问题 */
  text-align-last: justify;               /* photo236: 四字标签(咨询热线/技术支持/公司地址)本已满 5em,位置不变 */
}

/* 21:37 fc-value:地址文本容器,flex item 自动占满剩余宽度 */
.footer-contact li .fc-value {
  display: block;
  flex: 1 1 0;
  min-width: 0;
}

/* 21:37 地址两行拆分为两个 block 元素,自动分行 */
.footer-contact li .fc-value .addr-l1,
.footer-contact li .fc-value .addr-l2 {
  display: block;
}

/* 22:48 addr-l1 margin-bottom 14 → 10,平衡 contact 字号缩小后的视觉节奏,与 logo-icon 100 / qr 191 同步,3 块总高 ≈ 240 对齐 */
.footer-contact li .fc-value .addr-l1 {
  margin-bottom: 10px;
}

/* 21:37 公司地址第 2 行("象山社区...")左缘回到 li 起点 = label 左缘对齐 */
.footer-contact li .fc-value .addr-l2 {
  margin-left: calc(-1 * (5em + 8px));    /* -5em 抵消 label 宽度,-8px 抵消 label 与 value 间隙 */
}

/* 右：QR 码（占位框） */
.footer-qr-block {
  display: flex;
  justify-content: center;               /* photo540(2026-09-22 张总指令): PC 端二维码块居中对齐(原 flex-end 右对齐). 移动端(≤768px)仍由 photo527 规则保持右侧对齐 */
  padding-top: 0;
}

.qr-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 15px;                              /* 22:00 整体放大,10 → 15 同步等比例,匹配 242px 联系方式总高 */
  /* photo238(15:14): 撤销 photo237 的右移 16px,恢复 QR 右缘与'本网站由:好建易威'文字右缘对齐(flex-end,右缘=1296) */
}

.qr-box {
  width: 191px;                           /* 22:00 整体放大,130 → 191(×1.47,目标让 QR 块总高 ≈242px 与联系方式平齐) */
  height: 191px;
  border: 1px solid #C0CDD7;
  background: #fff;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  color: #0066CC;                         /* 20:57 改为品牌蓝 */
  text-align: center;
  line-height: 1.4;
}

.qr-line {
  display: block;
  font-size: 1.5rem;                      /* 22:00 整体放大,1.02 → 1.5,与 QR 块尺寸同步,内部文字读起来更清晰 */
  letter-spacing: 2px;                    /* 22:00 1 → 2,字号放大后字间距同步加大,避免拥挤 */
}

.qr-text {
  color: #0066CC;                         /* 20:57 改为品牌蓝 */
  font-size: 1.5rem;                      /* 22:00 整体放大,1.02 → 1.5,与 QR 块底缘对齐至 addr-l2 底缘 */
  letter-spacing: 2px;                    /* 22:00 1 → 2,字号放大后字间距同步加大 */
  transform: translateY(-10px);           /* 14:05 整体上移 10px (原 -4px) */
  width: 191px;                           /* photo218(13:23): 与 .qr-box 同宽,文字块左右边缘与二维码对齐 */
  text-align: justify;                    /* photo218: 两端对齐 */
  text-align-last: justify;               /* photo218: 单行也两端撑满,6 个字自动拉开字间距,首字左缘=二维码左缘,末字右缘=二维码右缘 */
}


/* ---------- 底部 1 行合并：版权 + 导航 + 技术支持 ---------- */
.footer-bottom {
  display: flex;                          /* photo1297: 导航盒透明化后 10 个直接子项 space-between——9 个间隙(版权→首页1+按钮7+FAQ→ICP1)天然等距 */
  justify-content: space-between;
  align-items: center;
  padding: 18px 0 24px;
  font-size: 0.7rem;                    /* 21:41 缩小整体字号(0.82→0.7),让 3 段在桌面端挤进同一行 */
  gap: 6px;                               /* photo1297: 9 个间隙共同下限,剩余空间由 space-between 均分,9 间距恒等;左右两端位置不变 */
  color: #0066CC;                         /* 20:57 改为品牌蓝 */
}

.footer-nav {
  display: contents;                      /* photo1297: 导航盒透明化,8 个按钮升为 .footer-bottom 直接子项,与版权/ICP 一起均分 9 间隙 */
}

.footer-nav a {
  display: inline-block;                 /* 21:28 加浅蓝按钮框:inline-block 让 padding 生效 */
  padding: 3px 8px;                       /* 21:41 进一步缩按钮内边距(4/10→3/8),确保 3 段在桌面端挤进单行不溢出 */
  color: var(--color-primary);           /* 21:28 跟随 CSS 变量,统一使用品牌蓝 */
  background: var(--color-primary-light);/* 21:28 加浅蓝底框,与顶部 .main-nav a 同款浅蓝 */
  border-radius: var(--radius-sm);       /* 21:28 加圆角按钮框,6px */
  font-size: inherit;                     /* 21:41 跟随 footer-bottom 0.7rem,3 段字号完全一致 */
  text-decoration: none;
  white-space: nowrap;                   /* 21:28 按钮内文字不换行 */
  transition: all var(--transition);     /* 21:28 平滑过渡,悬停变色无跳跃 */
}

.footer-nav a:hover {
  color: #FFFFFF;                         /* 21:28 悬停反白(白字) */
  background: var(--color-primary);      /* 21:28 悬停底色加深为实色品牌蓝 */
}

.footer-copyright {
  color: #0066CC;                         /* 20:57 改为品牌蓝 */
  font-size: inherit;                     /* 21:41 跟随 footer-bottom 0.7rem,3 段字号完全一致 */
  white-space: nowrap;                   /* 21:41 不允许文字内部换行 */
  flex-shrink: 0;                        /* photo1297: 首位子项贴容器左缘(space-between) */
}

/* photo523(09-21 23:15): 张总指令——备案号独立成行,顶替原"好建易威技术支持"位置 */
/* photo563: 改为 flex 左右分列,使右侧红字右缘与 .footer-top 灰线(容器右缘)对齐 */
.footer-beian {
  color: #0066CC;
  font-size: inherit;
  white-space: nowrap;
  flex-shrink: 0;                         /* photo1297: 末位子项贴容器右缘(space-between),与上方内容右缘对齐(photo563 基准保持) */
  display: flex;
  align-items: center;
  gap: 12px;
}

/* ---------- 返回顶部 ---------- */
.back-to-top {
  position: fixed;
  bottom: 32px;
  right: 32px;
  width: 48px;
  height: 48px;
  background: var(--color-primary);
  color: var(--color-white);
  border: none;
  border-radius: 50%;
  cursor: pointer;
  font-size: 1.4rem;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  transition: all var(--transition);
  box-shadow: var(--shadow-md);
  z-index: 999;
}

.back-to-top.show {
  opacity: 1;
  visibility: visible;
}

.back-to-top:hover {
  background: var(--color-primary-dark);
  transform: translateY(-3px);
}

/* ---------- 内容块工具类 ---------- */
.bg-white { background: var(--color-white); }
/* 15:57 内容区交替灰块: 比 body/footer 浅灰 #F5F7FA 略深一档, 保证 白/灰 节奏肉眼清晰可辨 */
.bg-gray { background: #E9EDF2; }
.rounded { border-radius: var(--radius-md); }
.shadow { box-shadow: var(--shadow-sm); }
.mt-0 { margin-top: 0; }
.mb-0 { margin-bottom: 0; }
.mt-2 { margin-top: 16px; }
.mt-4 { margin-top: 32px; }
.mb-2 { margin-bottom: 16px; }
.mb-4 { margin-bottom: 32px; }
.p-4 { padding: 32px; }
.flex { display: flex; }
.flex-wrap { flex-wrap: wrap; }
.gap-2 { gap: 16px; }
.items-center { align-items: center; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }

/* ---------- 响应式：平板（≤1024px） ---------- */
@media (max-width: 1024px) {
  .footer-top {
    grid-template-columns: 1fr 1fr;
    gap: 32px;
  }

  .contact-wrap {
    grid-template-columns: 1fr;
  }

  .hero h1 {
    font-size: 2.2rem;
  }
}

/* ---------- 响应式：移动端（≤768px） ---------- */
@media (max-width: 768px) {
  :root {
    --header-height: 80px;                 /* photo224(13:44): 页头 98 -> 80px,按用户截图(页头 213px scr/按钮底 162)反推,白底紧贴内容区 */
  }
  .product-detail-top {
    grid-template-columns: 1fr !important;
  }

  .menu-toggle {
    display: flex;
  }

  .main-nav {
    position: fixed;
    top: var(--header-height);
    left: 0;
    right: 0;
    /* 注意：不再设 bottom:0，菜单不全屏覆盖，底部留空露出原网站内容 */
    max-height: calc(100vh - var(--header-height) - 88px); /* 底部预留约 88px 显示原页面内容 */
    z-index: 2001; /* 确保菜单面板不被页面内容覆盖 */
    background: var(--color-white);
    /* photo359(09-14 09:50): 张总指令撤销 photo354 的 2行4列, 恢复原来的纵向排列 */
    flex-direction: column;
    align-items: stretch;
    padding: 16px;
    gap: 4px;
    transform: translateX(100%);
    transition: transform var(--transition);
    overflow-y: auto; /* 菜单项过多时面板内部滚动 */
    box-shadow: var(--shadow-lg);
    visibility: hidden; /* 关闭时不可交互 */
    transition: transform var(--transition), visibility 0s linear 0.3s;
  }

  /* checkbox 勾选时展开抽屉菜单 */
  #nav-toggle:checked ~ .main-nav {
    transform: translateX(0);
    visibility: visible;
    transition: transform var(--transition), visibility 0s;
  }

  .main-nav a {
    padding: 14px 16px;
    font-size: 1rem;
    border-radius: var(--radius-sm);
  }

  .hero {
    padding: 48px 0 64px;
  }

  .hero h1 {
    font-size: 1.6rem;   /* 12:04 与 .page-hero h1 移动端字号对齐(原 1.25rem → 1.6rem);同步移除 index.html h1 内 mobile-br 强制三行断点,改为与产品页一致的自然换行版式 */
  }

  .hero .hero-subtitle {
    font-size: 1rem;
  }

  .hero-buttons {
    flex-direction: column;
  }

  .hero-buttons .btn {
    width: 100%;
  }

  .hero-trust {
    gap: 12px 20px;
  }

  .hero-trust .trust-item {
    font-size: 0.82rem;
  }

  .page-hero h1 {
    font-size: 1.6rem;
  }

  .page-hero p {
    font-size: 0.9rem;   /* photo1318: 0.98→0.9rem,页眉副标题移动端缩小一号 */
  }

  .section {
    padding: 40px 0;
  }

  .section-title {
    font-size: 1.5rem;
  }

  .container {
    padding: 0 16px;
  }

  .card-grid {
    grid-template-columns: 1fr;
  }

  .stats-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
  }

  .stat-card {
    padding: 20px 12px;
  }

  .stat-card .stat-number {
    font-size: 1.5rem;
  }

  .form-row {
    grid-template-columns: 1fr;
  }

  .case-card {
    flex-direction: column;
  }

  .case-card .case-img {
    width: 100%;
    height: 140px;
  }

  .team-card {
    grid-template-columns: 1fr;
    grid-template-areas:
      "header"
      "avatar"
      "info";
    text-align: center;
    justify-items: center;
    row-gap: 20px;
  }

  .team-info ul {
    text-align: left;
  }

  .founder-card {
    flex-direction: column;             /* 移动端: 照片上、资料下 */
  }

  .founder-photo {
    width: 100%;
    min-height: 0;
  }

  .rb-grid {
    grid-template-columns: 1fr;
  }

  .evidence-section {
    padding: 20px;
  }

  .contact-form {
    padding: 24px;
  }

  .footer-top {
    grid-template-columns: 1fr;
    grid-template-rows: auto;                  /* 22:48 移动端单列堆叠,取消 240px 行高,各块按内容自然高 */
    gap: 28px;
    text-align: center;
  }

  .footer-brand-block {
    min-height: 0;                           /* 22:17 移动端单列堆叠,取消 240px 最小高度,避免 LOGO 与公司名之间出现大空白 */
  }

  .footer-brand-block .logo.logo-vertical {
    margin-top: 0;                           /* 23:25 移动端取消桌面端光学微调 */
  }

  .footer-contact-block,
  .footer-qr-block {
    min-height: 0;                           /* 23:25 移动端单列堆叠,取消 250px 最小高度 */
  }

  .footer-contact-block ul {
    padding: 0;                             /* 21:53 移动端取消 120px 左内边距,避免移动端挤压 */
    justify-content: flex-start;            /* 23:25 移动端取消 space-between 拉伸,恢复紧凑排列 */
    gap: 13px;                              /* 23:25 移动端恢复固定行距 */
  }

  .footer-contact-block {
    transform: translateX(-10px);           /* photo234(15:00): 再整体左移 4px(累计 10px),其余板块不动 */
  }

  .qr-placeholder {
    transform: none;                        /* photo237(15:10): 移动端复位,不参与桌面端右移 16px */
    flex: 0 0 auto;                         /* 23:25 移动端取消拉伸 */
    justify-content: flex-start;            /* 23:25 移动端取消 space-between */
    gap: 15px;                              /* 23:25 移动端恢复固定间距 */
    padding-top: 0;                         /* 23:25 移动端取消桌面端光学微调 */
  }

  .footer-company-name {
    margin-top: 16px;                        /* 22:17 移动端改用固定间距(放弃 auto 推底),LOGO 下方留 16px */
    padding-top: 0;
  }

  .footer-contact-block ul {
    padding: 0;                             /* 21:53 移动端取消 120px 左内边距,避免移动端挤压 */
  }

  .footer-bottom {
    display: flex;                        /* photo1296: 基础样式已改 grid,移动端回退 flex 纵向堆叠 */
    flex-direction: column;
    text-align: center;
    gap: 12px;
    flex-wrap: wrap;                    /* 21:41 移动端允许换行,3 段回退到多行布局 */
  }

  /* photo516(09-21 22:20): 张总截图——移动端版权行 nowrap 导致"粤ICP备18045440号｜粤公网安备"溢出屏幕外,改为允许换行 */
  .footer-copyright {
    white-space: normal;
    flex-shrink: 1;
  }

  /* 备案号整体不拆行(数字不被截断),在"｜"分隔符处自然断行 */
  .footer-copyright a,
  .footer-copyright span {
    white-space: nowrap;
  }

  /* photo523: 备案号行移动端同步换行规则 */
  /* photo563: 桌面端 flex 左右分列不适用于移动端居中布局,移动端恢复块级居中 */
  .footer-beian {
    white-space: normal;
    flex-shrink: 1;
    display: block;
    text-align: center;
  }

  .footer-beian a,
  .footer-beian span {
    white-space: nowrap;
  }

  /* photo360(09-14 09:58): 张总截图要求——页脚8个导航按钮移动端改整齐的 2行4列网格(原 flex-wrap 自由换行不整齐) */
  .footer-nav {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px 8px;
    width: 100%;
  }

  .footer-nav a {
    text-align: center;                 /* photo360: 网格单元内文字居中 */
  }

  .back-to-top {
    bottom: 20px;
    right: 20px;
    width: 44px;
    height: 44px;
  }
}

/* =========================================================================
   photo568(2026-09-22): 769~1180px 页脚底部行改为"居中堆叠"(与 ≤768px 移动端同款版式)
   -------------------------------------------------------------------------
   原缺陷: .footer-bottom{flex-wrap:nowrap} + 三段 nowrap/flex-shrink:0,
     单行自然宽 = 版权 251.2 + 8导航按钮 528.5 + 备案 322.1 + 2×gap12 = 1137.8,
     加 footer 容器左右 padding 48 → 视口 ≥1173.8px 才排得下;
     否则 .footer-beian 被挤到容器外(右缘固定停在 1149.8px):
       1163px 越出灰线右缘 10.8px · 1024px 越出 114.6px(整页溢出 115px)
   修复: ≤1180px 改为三行居中堆叠 —— 版权行 / 8 个导航按钮行 / 备案行,
         与 ≤768px 移动端现有的 column 布局同构,只是导航保持单行 flex(不切 4×2 网格)。
   注: 用 (min-width:769px) 限定,避免与 ≤768px 块的 .footer-bottom/.footer-copyright
       /footer-beian 声明在源序上打架; ≥1181px 完全不动(photo563 定案的
       "红字右缘 = .footer-top 灰线右缘"对齐继续保持)。
   ========================================================================= */
@media (min-width: 769px) and (max-width: 1180px) {
  .footer-bottom {
    display: flex;                        /* photo1296: 基础样式已改 grid,769~1180 回退 flex 纵向堆叠 */
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 12px;
    flex-wrap: wrap;
  }

  .footer-copyright {
    white-space: normal;
    flex-shrink: 1;
  }

  /* 8 个导航按钮在单行内居中(不切 4×2 网格,避免按钮被拉成超宽块) */
  .footer-nav {
    display: flex;                        /* photo1297: 桌面基础样式已 display:contents,此档恢复盒模型整行居中 */
    justify-content: center;
  }

  /* 备案行回归块级居中:两个子项 inline 自然排一行,超窄时按项换行,数字不被截断 */
  .footer-beian {
    display: block;
    white-space: normal;
    text-align: center;
    flex-shrink: 1;
  }

  .footer-beian a,
  .footer-beian span {
    white-space: nowrap;
  }
}

/* ---------- 懒加载图片淡入 ---------- */
img.lazy {
  opacity: 0;
  transition: opacity 0.4s ease;
}

img.lazy.loaded {
  opacity: 1;
}

/* ---------- 打印优化 ---------- */
@media print {
  .site-header, .site-footer, .back-to-top, .menu-toggle, .main-nav {
    display: none !important;
  }

  body {
    background: white;
    color: black;
  }
}

/* =========================================================
   GEO v9 网站首页新增区块样式(2026-09-03 按第1页定稿重建)
   ========================================================= */

/* ---------- 顶部信息栏(区块A) ---------- */
.topbar {
  background: #0b2c52;
  color: rgba(255, 255, 255, 0.92);
  font-size: 13px;
  line-height: 40px;
}
.topbar .container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  margin-left: calc((100% - var(--max-width)) / 2 + 14px);  /* 20:07 回退 19:02 删除,恢复 18:30/18:45:与 .header-inner 同基准(+14) */
}
.topbar .tb-company {
  font-weight: 500;
  letter-spacing: 0.2px;
  /* 20:07 回退:删除 19:50 的 margin-left: -24px,恢复 18:45 状态(无独立偏移) */
}
.topbar .tb-company .en-name {
  opacity: 0.7;
  margin-left: 8px;
  font-weight: 400;
  letter-spacing: 0.4px;
}
.topbar .tb-right {
  display: flex;
  align-items: center;
  gap: 20px;
  white-space: nowrap;
  margin-right: -29px;                                                                 /* 18:30:与 .nav-cta 视觉右对齐(右凸量一致),让咨询热线右缘与"联系我们"右框严丝合缝对齐同一条基准线 */
}
.topbar a { color: #fff; }
.topbar a:hover { color: #B2EBF2; }
.topbar .tb-mail { opacity: 0.9; }
@media (max-width: 860px) {
  .topbar .tb-mail { display: none; }
}
@media (max-width: 640px) {
  .topbar .tb-company .en-name { display: none; }
  .topbar { font-size: 12px; }
}

/* ---------- Hero 定稿段落 ---------- */
.hero-desc {
  margin: 0 auto 28px;     /* 09:50 取消左侧 437 限宽,改居中 920,描述整段居中 */
  max-width: 920px;
  font-size: 1.02rem;       /* 1.05rem→1.02rem:920px 内每行约 56 字,3 行容量充足 */
  line-height: 1.85;
  color: rgba(255, 255, 255, 0.92);
  text-align: center;       /* 09:50 居中,不再 justify */
}
.des-note {
  display: inline-block;
  margin-top: 16px;
  padding: 4px 14px;
  border: 1px dashed rgba(255, 255, 255, 0.35);
  border-radius: 999px;
  font-size: 0.82rem;
  color: rgba(255, 255, 255, 0.6);
  letter-spacing: 0.4px;
}

/* ---------- 数据口径注释(区块D) ---------- */
.stats-note {
  text-align: center;
  color: var(--color-text-muted);
  font-size: 0.86rem;
  margin-top: 18px;
}
.stat-desc .patent-no { color: var(--color-primary); font-weight: 600; }

/* ---------- 三大集成系统 (index.html 区块E): 1 行 3 列卡片(图在上 / 文在下) ----------
   photo544 (2026-09-22 张总指令): 「三大集成系统」由 3 行 1 列(左图右文横排)
   → 1 行 3 列(图上文下)，与「产品服务」页 .card-grid 同款布局。
   列宽核对: 容器 1200px 下 (1200 − 28×2) / 3 = 381.33px，与产品页三列渲染宽度一致。
   ⚠️ 原注释「12:53 重建 / 按 .case-card.case-row 款式重写」已随本次改版失效。 */
.sys-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));   /* photo544: flex column → grid, 与 .card-grid 同款自适应 */
  gap: 28px;                                                    /* photo544: 32px → 28px, 对齐 .card-grid */
  margin-top: 8px;
}

.sys-card {
  display: flex;
  flex-direction: column;                                       /* photo544: row → column, 图在上 / 文在下 */
  align-items: stretch;
  background: var(--color-white);
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.06);
  border: 1px solid rgba(0, 102, 204, 0.06);
  transition: transform var(--transition), box-shadow var(--transition);
}
.sys-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 32px rgba(0, 102, 204, 0.12);
}

/* 图区 (渐变色块 + 白色 SVG 图标 / 或 .has-photo 实拍图)
   photo544: 横向版占 50% 宽, 改 3 列纵排后改为占满卡片宽度, 比例仍为 4:3 */
.sys-side {
  width: 100%;                                                  /* photo544: 50% → 100% */
  flex-shrink: 0;
  aspect-ratio: 4 / 3;
  display: flex;
  align-items: center;
  justify-content: center;
}
.sys-side .sys-ico {
  width: 96px;
  height: 96px;
}
.sys-side--ozone  { background: linear-gradient(135deg, #0050a3 0%, #0066CC 50%, #0050a3 100%); }
.sys-side--nozone { background: linear-gradient(135deg, #00683b 0%, #00A86B 50%, #00683b 100%); }
.sys-side--gmp    { background: linear-gradient(135deg, #006d7a 0%, #00B8C4 50%, #006d7a 100%); }

/* 文字区 */
.sys-content {
  flex: 1;
  padding: 24px;                                                /* photo544: 28px 32px → 24px, 适配 381px 窄卡 */
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 12px;
}
.sys-tags {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.sys-tag {
  display: inline-block;
  padding: 4px 12px;
  font-size: 0.78rem;
  font-weight: 600;
  border-radius: 20px;
  white-space: nowrap;
  background: var(--color-primary-light);
  color: var(--color-primary);
}
.sys-card--nozone .sys-tag { background: var(--color-green-light); color: var(--color-green); }
.sys-card--gmp .sys-tag    { background: #e0f4f6; color: #006d7a; }

.sys-content h3 {
  font-size: 1.3rem;
  font-weight: 700;
  color: var(--color-primary);
  margin: 0;
}
.sys-desc {
  font-size: 0.95rem;
  line-height: 1.7;
  color: var(--color-text);
  margin: 0;
}
.sys-sep {
  border: none;
  border-top: 1px dashed rgba(0, 102, 204, 0.18);
  width: 100%;
  margin: 0;
}
.sys-stats {
  display: grid;
  grid-template-columns: 1fr;                   /* photo544: 三列并排 → 单列竖排(365px 窄卡放不下三列, 且与"产品服务"页参数列表同款) */
  gap: 9px;
  width: 100%;
}
.sys-stat {
  display: flex;
  flex-direction: row;                          /* photo544: column → row, 数值在左 / 标签在右 */
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
}
.sys-stat-num {
  font-size: 1.2rem;                            /* photo544: 1.45rem → 1.2rem */
  font-weight: 700;
  color: var(--color-primary);
  line-height: 1.2;
  letter-spacing: -0.2px;
  white-space: nowrap;                          /* photo544: 数值强制不折行(±0.02ppm / 18.2MΩ·cm) */
}
.sys-stat-label {
  font-size: 0.82rem;
  color: var(--color-text-light);
  letter-spacing: 0.2px;
}
.sys-btn {
  margin-top: auto;
  align-self: flex-end;
  padding: 12px 28px;                    /* 17:43 与"阅读全文"按钮(btn 12px 28px)高度一致 */
  font-size: 1rem;                       /* 17:43 与"阅读全文"按钮字号一致 */
}

@media (max-width: 900px) {
  .sys-card { flex-direction: column; }
  .sys-side { width: 100%; aspect-ratio: 16 / 9; }
  .sys-content { padding: 22px; }
  .sys-stat-num { font-size: 1.2rem; }
}
@media (max-width: 768px) {
  .sys-grid { grid-template-columns: 1fr; }   /* photo544: 与 .card-grid 的 ≤768 单列规则保持一致 */
  /* photo544: ≤768 时卡片为单列全宽(约 736px), 空间充足, 参数区恢复三列横排 */
  .sys-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
  .sys-stat { flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 4px; }
}
@media (max-width: 560px) {
  /* photo386(09-14 15:12): 参数区两行独立对齐——上排大字左/中/右、下排小字左/中/右。
     grid 3等分列+display:contents: num占第1行、label占第2行,中列居中=容器正中心;
     取代photo380 flex space-between(中块中心随左右块宽度偏移,非正中心) */
  .sys-stats { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr) minmax(0,1fr); grid-template-rows: auto auto; column-gap: 10px; row-gap: 4px; }
  .sys-stat { display: contents; }
  .sys-stat-num { grid-row: 1; font-size: 1.2rem; letter-spacing: -0.3px; white-space: nowrap; }
  .sys-stat-label { grid-row: 2; font-size: 0.8rem; white-space: nowrap; }
  .sys-stat:nth-child(2) { text-align: center; }
  .sys-stat:nth-child(3) { text-align: right; }
  .sys-btn { align-self: stretch; }
}
/* ---------- 核心定制产品 9 宫格(区块F) ---------- */
.p9-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);   /* 09:38 2 列布局自然宽(原 3 列) */
  gap: 28px;                                /* photo562: 16→28,与.card-grid统一 */
  margin-top: 8px;
}
.p9-card {
  background: #fff;
  border-radius: var(--radius-md);
  padding: 18px 18px 16px;
  border: 1px solid var(--color-border);
  border-top: 3px solid var(--color-primary);
  box-shadow: 0 3px 12px rgba(26, 26, 46, 0.05);
  display: flex;
  flex-direction: column;     /* 09:33 16:9 列布局: 标题行 + 设备图片占位 */
  gap: 10px;
  aspect-ratio: auto;          /* 10:22 卡片整体高度由内容自适应,占位区另设 3:2 */
  transition: box-shadow var(--transition), transform var(--transition);
}
.p9-card:hover { box-shadow: 0 8px 20px rgba(26, 26, 46, 0.1); transform: translateY(-3px); }
.p9-card:nth-child(even) { border-top-color: var(--color-green); }   /* 09:38 2列: 左蓝右绿 */
.p9-row1 {                    /* 09:33 标题行: 编号 + 标题+段落, 内部恢复 flex row */
  display: flex;
  gap: 14px;
  align-items: flex-start;
}
.p9-no {
  flex: 0 0 auto;
  width: 38px;
  height: 38px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.95rem;
  font-weight: 700;
  color: #fff;
  background: var(--color-primary);
}
.p9-card:nth-child(even) .p9-no { background: var(--color-green); }
.p9-body { flex: 1; min-width: 0; }
.p9-body h3 { font-size: 1rem; margin-bottom: 4px; }
.p9-body h3 .en-abbr {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 8px;
  border-radius: 6px;
  background: var(--color-primary-light);
  color: var(--color-primary);
  font-size: 0.74rem;
  font-weight: 600;
  vertical-align: middle;  /* photo847: 徽章与标题上下居中 */
  position: relative; top: -2.5px;  /* photo847: middle 实测中文满em字面偏差+2.5px, 上提校准 */
  letter-spacing: 0.5px;
}
.p9-card:nth-child(even) .p9-body h3 .en-abbr { background: var(--color-green-light); color: #007a4d; }
.p9-body p { font-size: 0.88rem; color: var(--color-text-light); margin: 0; }
.p9-device-slot {            /* 09:33 设备图片预留位: 占卡片下半部 */
  align-self: stretch;       /* 10:22 span 作为 flex item,显式 stretch 撑满卡片宽度 */
  width: 100%;
  aspect-ratio: 4 / 3;       /* 07:53 需求:核心定制产品板块图片宽度不变,高度调到高:宽=3:4(即宽:高=4:3,横版)——
                                原 3:2 → 4:3,图区增高约12.5%(两列桌面卡内宽≈531px时高 354→398px);
                                移动端(≤900px)07:31已先行改为4:3,本条使桌面端同比例,两端统一;
                                img object-fit:cover 自动重新满铺;fit-contain 槽位仍为 contain 留边 */
  margin-top: 4px;
  background: #F2F5F9;
  border: 1px dashed #C8D3DE;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #94A3B8;
  font-size: 0.85rem;
  letter-spacing: 1px;
}
@media (max-width: 860px) {
  .p9-grid { grid-template-columns: 1fr; }   /* 09:38 桌面已 2 列, 小屏(≤860)收为单列 */
}

/* ---------- 洞察文章卡 作者/日期(区块G) ---------- */
.card-meta {
  margin-top: 10px;
  font-size: 0.8rem;
  color: var(--color-text-muted);
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}
.card-meta span { display: inline-flex; align-items: center; gap: 4px; }

/* ---------- 选购指南转化区 + 表单(区块H) ---------- */
.guide-cta {
  background: linear-gradient(135deg, #1976D2 0%, #1565C0 45%, #1E88E5 100%);        /* 22:54 中蓝渐变(复用 22:11 hero 色板),纯白字体 */
  border-radius: var(--radius-lg);
  padding: 60px 48px 64px;        /* 单按钮模式:加大上下留白聚焦 CTA */
  text-align: center;
  color: #fff;
}
.guide-cta h2 { color: #fff; font-size: 1.85rem; margin-bottom: 18px; }
.guide-cta-only-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 16px 36px;            /* 14:53 与 btn-lg 对齐 */
  font-size: 1.1rem;             /* 14:53 与 btn-lg 对齐 */
  font-weight: 600;
  border-radius: 12px;            /* 保留与 btn 区分的圆角 */
  letter-spacing: 0.02em;
  box-shadow: 0 10px 32px rgba(0, 168, 107, 0.45);
  text-decoration: none;
  margin: 28px 0 0;
}
.guide-five {
  max-width: 980px;            /* 加宽以容纳五步法较宽一行 */
  margin: 0 auto 36px;
  font-size: 1.05rem;
  color: #FFFFFF;                 /* 22:54 文字全部纯白 */
  line-height: 1.95;
}
.guide-five b { color: #FFFFFF; font-weight: 700; }     /* 22:54 b highlight 同步纯白 */
@media (max-width: 560px) {
  .guide-five { font-size: 0.88rem; }   /* photo553: 移动端「创始团队18年一线经验...」一行显示 */
}
.guide-form-card {
  background: #fff;
  color: var(--color-text);
  border-radius: var(--radius-md);
  padding: 28px 30px;
  max-width: 780px;
  margin: 30px auto 0;
  text-align: left;
  box-shadow: 0 14px 40px rgba(0, 0, 0, 0.25);
}
.gf-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.gf-grid .full { grid-column: 1 / -1; }
.gf-field label {
  display: block;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--color-text);
  margin-bottom: 6px;
}
.gf-field label em { color: var(--color-primary); font-style: normal; font-weight: 700; }
.gf-field input,
.gf-field textarea {
  width: 100%;
  padding: 11px 14px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  font-size: 0.95rem;
  font-family: inherit;
  background: #fafbfd;
  color: var(--color-text);
  transition: border-color var(--transition), box-shadow var(--transition);
}
.gf-field input:focus,
.gf-field textarea:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(0, 102, 204, 0.12);
  background: #fff;
}
.gf-submit { margin-top: 18px; display: flex; align-items: center; gap: 14px; justify-content: center; flex-wrap: wrap; }
.gf-privacy {
  font-size: 0.78rem;
  color: var(--color-text-muted);
  margin-top: 12px;
  text-align: center;
}
.gf-success {
  display: none;
  margin-top: 16px;
  padding: 14px 18px;
  border-radius: 10px;
  background: var(--color-green-light);
  border: 1px solid rgba(0, 168, 107, 0.35);
  color: #007a4d;
  font-size: 0.92rem;
  text-align: center;
}
@media (max-width: 640px) {
  .guide-cta { padding: 36px 20px; }
  .gf-grid { grid-template-columns: 1fr; }
}

/* ---------- FAQ 摘要(区块I) ---------- */
.faq-mini { max-width: 940px; margin: 4px auto 0; }
.faq-mini details {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  margin-bottom: 12px;
  box-shadow: 0 2px 8px rgba(26, 26, 46, 0.04);
  overflow: hidden;
  transition: box-shadow var(--transition);
}
.faq-mini details[open] { box-shadow: 0 6px 18px rgba(26, 26, 46, 0.09); }
.faq-mini summary {
  cursor: pointer;
  list-style: none;
  padding: 17px 22px;
  font-weight: 600;
  font-size: 1rem;
  color: var(--color-text);
  display: flex;
  align-items: center;
  gap: 12px;
  position: relative;
  padding-right: 46px;
}
.faq-mini summary::-webkit-details-marker { display: none; }
.faq-mini summary::after {
  content: "+";
  position: absolute;
  right: 20px;
  top: 50%;
  transform: translateY(-50%);
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--color-primary-light);
  color: var(--color-primary);
  font-weight: 700;
  font-size: 1.1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform var(--transition), background var(--transition);
}
.faq-mini details[open] summary::after {
  content: "−";
  background: var(--color-primary);
  color: #fff;
}
.faq-mini .q-ico { font-size: 1.1rem; }
.faq-mini .faq-mini-a {
  color: var(--color-text-light);
  font-size: 0.94rem;
  border-top: 1px dashed var(--color-border);
  margin: 0 22px;
  padding: 0 0 18px;
}
.faq-mini .faq-mini-a p { margin-top: 14px; }
.faq-mini .faq-more { text-align: center; margin-top: 64px; }

/* ---------- 客户 LOGO 墙(区块J) ---------- */
.logo-wall {
  background: transparent;                                                                              /* 11:42 去掉外框(原本白底+边框),改为透明,让外框消失,只保留内部 logo-slot 卡片虚线框 */
  border: none;                                                                                         /* 11:42 去掉外框 */
  border-radius: var(--radius-lg);
  padding: 31px 0 0;                                /* photo956: 底部22px外框遗留删除,卡底->变色线=64px与供应伙伴墙一致 */                                                                          /* photo310: 外框padding 1.1倍; photo550: 左右内距改为0,让LOGO网格与容器内容区左右对齐 */                                                                          /* photo303: 外框padding 同步收缩 */
}
.logo-slot-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);   /* photo530: 5列 -> 6列(张总指令 6列6行) */
  gap: 14px;
  margin-top: 8px;
}
.logo-slot {
  min-width: 0;                             /* photo530: 157px -> 0,网格自适应(flex-shrink 场景已废弃) */
  width: auto;                              /* photo530: 157px -> auto,由 grid 列宽决定 */
  height: 118px;
  box-sizing: border-box;
  padding: 0;
  overflow: hidden;
  border: 1px dashed var(--color-border);
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-text-muted);
  font-size: 1.05rem;
  font-weight: 600;
  letter-spacing: 1.2px;
  background: #fafbfd;
  user-select: none;
}
.logo-slot img {
  max-width: 80%;                                                                                           /* 17:50 宽占比上限80%,长条标自动顶满 */
  max-height: 80%;                                                                                          /* 17:50 高占比上限80%,方形标自适应 */
  width: auto;
  height: auto;
  object-fit: contain;
  display: block;
}
.logo-note {
  margin-top: 22px;
  padding: 12px 18px;
  border-radius: 10px;
  background: var(--color-bg);
  color: var(--color-text-muted);
  font-size: 0.82rem;
  text-align: center;
}
@media (max-width: 860px) {
  .logo-slot-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 560px) {
  .logo-slot-grid { grid-template-columns: repeat(3, 1fr); }   /* photo554: 移动端 LOGO 墙改为 1 行 3 个 */
}

/* ===== 核心供应链伙伴（photo530） ===== */
.supplier-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);   /* 6 列 4 行（photo561: 18格 → 24格） */
  gap: 14px;
  margin-top: 8px;
  padding: 0;                              /* photo550: 与 .logo-wall 同步去掉左右内距,保证供应商LOGO墙与客户LOGO墙左右边缘一致 */
}
.supplier-slot {
  height: 118px;                            /* photo536: 96px -> 118px,与客户LOGO图框(.logo-slot)尺寸完全一致(张总指令) */
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px dashed var(--color-border);   /* photo536: solid -> dashed,与客户LOGO空图框视觉一致 */
  border-radius: 12px;
  background: #fafbfd;                      /* photo536: #fff -> #fafbfd,与客户LOGO空图框一致 */
  color: var(--color-text);
  font-size: 1.02rem;
  font-weight: 600;
  letter-spacing: 1px;
  transition: var(--transition);
}
.supplier-slot:hover {
  box-shadow: 0 4px 14px rgba(0,0,0,.08);
  transform: translateY(-2px);
  color: var(--color-primary);
}
/* photo585（2026-09-23）：供应商 LOGO 墙开始填入真实品牌 LOGO（西门子/施耐德/ABB/丹佛斯/杜邦/inge）。
   ⚠️ 原 .supplier-slot 只有空框样式（虚线 + #fafbfd 底），没有 has-logo / img 规则，
      直接塞 <img> 会因为全局 img{display:block} 失去居中且尺寸不受控。
      → 此处两条规则 **完全对照客户 LOGO 墙的 .logo-slot.has-logo / .logo-slot.has-logo img 写法**，
        保证两面 LOGO 墙的"已填"格视觉一致（白底 + 实线边框 + 去内距 + img 宽高各 80% 上限等比自适应）。 */
.supplier-slot.has-logo {
  background: #ffffff;
  border: 1px solid var(--color-border);
  padding: 0;
  box-sizing: border-box;
}
.supplier-slot.has-logo img {
  max-width: 64%;                          /* photo595: 80% → 64%（×0.8），张总指令"图框不变、LOGO 缩到 0.8 倍" */
  max-height: 64%;                         /* photo595: 80% → 64%（×0.8） */
  width: auto;
  height: auto;
  object-fit: contain;
  display: block;
}
/* photo684（2026-09-26 张总指令）：BNP/KT 移动端 LOGO 再缩 0.8 倍（50%→40%），PC 端保持 50%。
   原内联 max:50% 改为 class 承载，便于移动端媒体查询覆盖；KT 图同时换戳 20260926-photo684
   强制刷新缓存（线上文件已是正圆 343x343，张总端显示扁为旧版文件缓存）。 */
.supplier-slot.has-logo img.supplier-logo-s50 { max-width: 50%; max-height: 50%; }
@media (max-width: 860px) {
  .supplier-slot.has-logo img.supplier-logo-s50 { max-width: 40%; max-height: 40%; }
}
/* photo685（2026-09-26 张总指令）：指定 13 个供应商 LOGO 缩小到 0.8 倍（64%→51.2%，全端），
   范围=西门子/施耐德/ABB/丹佛斯/inge/Veolia/时代沃顿/格兰富/CNP/GF/LMI/SMC/亚德客；
   其余 LOGO（杜邦/E+H/Prominent/汇川/LYSF/斯派莎克/Hanovia/安特蓝德/威孚/BNP/KT）不动。 */
.supplier-slot.has-logo img.supplier-logo-s08 { max-width: 51.2%; max-height: 51.2%; }
/* photo762 (2026-09-29 张总指令)：PC端 时代沃顿/格兰富/LMI/SMC 4LOGO 1.25倍(51.2%->64%)，
   与移动端 m125(photo740) 同比例；BNP(s50) 未在本次截图指认内，PC 端保持 50% 不动。 */
.supplier-slot.has-logo img.supplier-logo-s08.supplier-logo-m125 { max-width: 64%; max-height: 64%; }
@media (max-width: 860px) {
  .supplier-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 560px) {
  .supplier-grid { grid-template-columns: repeat(3, 1fr); }   /* photo554: 供应商 LOGO 墙同步改为 1 行 3 个 */
}

/* ===== photo542 (2026-09-22 张总指令)：PC 端恢复原尺寸，移动端图框缩至 0.6 倍 =====
   ① PC（≥861px）：撤销 photo540 的 0.6 倍缩小，回到 photo540 之前的原尺寸——
      6 列 1fr、gap 14px、槽高 118px、圆角 12px（即上方 .logo-slot-grid / .logo-slot /
      .supplier-grid / .supplier-slot 的全局声明，此处不再覆写）。
   ② 移动端（≤860px）：整体按 0.6 倍收缩——
      槽高 118 × 0.6 = 70.8px、圆角 12 × 0.6 = 7.2px、gap 14 × 0.6 = 8.4px；
      列数不变（≤860 → 3 列、≤560 → 2 列），列宽仍由 1fr 自适应；
      格内 LOGO 沿用百分比上限（80% / 100% / 64.8% / 57.6%），随图框等比缩小，无需逐张调整。 */
@media (max-width: 860px) {
  .logo-slot-grid,
  .supplier-grid {
    gap: 8.4px;
  }
  .logo-slot,
  .supplier-slot {
    height: 70.8px;
    border-radius: 7.2px;
  }
}

/* ---------- v9 区块布局微调 ---------- */
.section-tight { padding: 56px 0; }
.text-small-muted { font-size: 0.9rem; color: var(--color-text-muted); }
.case-tags .badge { margin-right: 6px; }
.mt-1 { margin-top: 8px; }

/* =========================================================
   v11 Hero 拆为独立板块(2026-09-04 按参考图:hero 纯深蓝底+文字左对齐+trust/按钮横排,现场照片独立白底板块)
   ========================================================= */
.hero-content {
  position: relative;
  z-index: 1;
  max-width: none;              /* 10:39 取消 1100px 居中限宽,随 .container 全宽,文字左缘与照片线框对齐 */
  margin: 0;
  min-height: 0;
}
.hero-text {
  max-width: none;              /* 10:39 取消 1100px 限宽,左缘与照片板块线框严格对齐 */
  margin: 0 0 36px;             /* 10:04 左对齐,描述与下方 trust/按钮 行间距 */
  padding: 0;
  text-align: left;             /* 10:04 文字整体左对齐,与 page-hero 同一起点 */
  min-height: 0;
}
.hero-text .hero-buttons { margin-top: 0; }
.hero-text .hero-trust { margin-top: 0; }

/* 标题/副标题 左对齐,字号沿用 v10(2.4 / 1.3) */
.hero h1 {
  text-align: left;
  max-width: none;
  font-size: 2.2rem;       /* 15:42 与 .page-hero h1 对齐(原 2.4rem → 2.2rem) */
  font-weight: 700;        /* 15:42 与 .page-hero h1 对齐(原 800 → 700) */
  margin: 0 0 1.76rem;     /* 16:41 主/副标题间空 1 行(=正文行高 1.1rem×1.6,与 subtitle→desc 段距同尺) */
  line-height: 1.7;        /* 07:43 与 .page-hero h1 对齐(原 1.4 → 1.7,继承 body 行高,与其它页大标题行距一致) */
}
.hero .hero-subtitle {
  text-align: left;
  text-align-last: left;
  max-width: none;
  font-size: 1.1rem;        /* 16:30 与 .page-hero p 对齐(原 1.3rem → 1.1rem) */
  line-height: 1.6;          /* 16:30 与 .page-hero p 对齐(原未设 → 1.6) */
  color: var(--color-white);
  opacity: 0.88;             /* 16:30 与 .page-hero p 对齐 */
  margin-bottom: 1.6em;      /* 16:39 与下方描述段之间空 1 行(1.6em≈本段 1 行行高) */
}
.hero-desc {
  text-align: left;             /* 10:04 取消居中,改为左对齐 */
  margin: 0 auto 0;             /* 10:04 取消 auto,改 0 由段落自身流式布局 */
  max-width: 100%;              /* 10:04 取消 920 限宽,左对齐后不需 */
  font-size: 1.1rem;        /* 16:30 与 .page-hero p 对齐(原 1.02rem → 1.1rem) */
  line-height: 2;            /* photo787 行距 1.6→2.0(张总:增大1.25倍) */
  color: var(--color-white);
  opacity: 0.88;             /* 16:30 与 .page-hero p 对齐 */
}

/* 信任行 + 按钮 横排(trust 居左、CTA 居右) */
.hero-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: nowrap;
  gap: 32px;
  max-width: none;              /* 10:39 取消 1100px 居中限宽,trust 左缘与上方文字/下方照片线框对齐 */
  margin: 0;
}
.hero-actions .hero-trust {
  display: flex;
  align-items: center;
  gap: 26px;
  flex-wrap: nowrap;
  flex: 1 1 auto;
  max-width: none;
  padding: 0;
  margin: 0;
  justify-content: flex-start;
}
.hero-actions .hero-trust .trust-item {
  font-size: 0.95rem;
  opacity: 0.95;
  white-space: nowrap;
}
.hero-actions .hero-buttons {
  display: flex;
  gap: 16px;
  flex: 0 0 auto;
  max-width: none;
  margin: 0;
  justify-content: flex-end;
}
.hero-actions .hero-buttons .btn {
  font-size: 1.1rem;                 /* 14:58 与 btn-lg 对齐 */
  padding: 16px 36px;                /* 14:58 与 btn-lg 对齐 */
}
.hero-actions .hero-buttons > .btn:last-child { margin-left: 0; }

/* =========================================================
   现场照片独立板块(v11 新增,从 hero 中拆出)
   ========================================================= */
.hero-photos {
  background: #ffffff;            /* 10:04 独立白底,与 hero 蓝底清晰分隔 */
  padding: 64px 0;                /* photo789 上方 56→64 与全站 .section 统一 */
}
.hero-photo-stage {
  position: relative;
  border: 3px solid #b3d1f2;        /* photo1260: 图框线条浅蓝色，与首页视频框同款 */
  aspect-ratio: 16 / 10;         /* 08:28 需求:PC端轮播舞台宽度不变(max-width 1200),高度:宽度=10:16→h=0.625w即16:10,舞台1200×750(08:15的4:3为1200×900,高-16.7%;最早16:9为1200×675);轮播照片原生4:3,16:10舞台竖向裁约16.7%;移动端≤960px保持07:31的4/3不变(见文件末尾规则,媒体查询覆盖基准值),仅PC端生效 */
  margin: 0 auto;
  width: calc(100% - 48px);              /* photo1261: 与首页视频框同宽（= .container 内容宽, padding 24x2） */
  max-width: calc(var(--max-width) - 48px);   /* photo1261: 桌面 1200→1152 = 视频框宽 */
  /* 原 max-width: var(--max-width); 10:09 1100→1200,与 .container 等宽,与下方"数字见证实力"等板块文本框左右对齐 */
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 18px 48px rgba(15, 30, 60, 0.18);
  background: #001a33;
  transform: none;
  transform-origin: center;
  z-index: 1;
}
.hero-photo-slide {
  position: absolute;                       /* 08:14 恢复 absolute,三张幻灯片继续走 15s 轮播 */
  inset: 0;
  opacity: 1;                                /* photo279(09:50): 改用 visibility 离散切换, 不透明度恒1, 杜绝GPU合成黑闪 */
  visibility: hidden;
  animation: heroCut 15s infinite;           /* photo279: 可见性瞬时轮播 */
  will-change: auto;
  display: flex;
  align-items: flex-end;
  padding: 16px;
}
.hero-photo-slide:nth-child(1) {
  background:
    linear-gradient(135deg, rgba(0, 80, 163, 0.45), rgba(0, 51, 102, 0.20)),
    radial-gradient(circle at 30% 30%, #1A6CD8 0%, #0A3D8C 80%);   /* 08:14 恢复轮播但保留新蓝色 #1A6CD8 */
  animation-delay: 0s;
}
.hero-photo-slide:nth-child(2) {
  background:
    linear-gradient(135deg, rgba(0, 109, 73, 0.45), rgba(0, 40, 25, 0.20)),
    radial-gradient(circle at 70% 40%, #1E9D6A 0%, #0A6645 80%);   /* 08:14 恢复轮播但保留新绿色 #1E9D6A */
  animation-delay: 5s;
}
.hero-photo-slide:nth-child(3) {
  background:
    linear-gradient(135deg, rgba(0, 122, 138, 0.45), rgba(0, 40, 50, 0.20)),
    radial-gradient(circle at 50% 60%, #16B0C9 0%, #0A7287 80%);   /* 08:14 恢复轮播但保留新青色 #16B0C9 */
  animation-delay: 10s;
}
.hero-photo-slide::before {
  content: "📷";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 5rem;
  opacity: 0.55;
  filter: drop-shadow(0 4px 12px rgba(0,0,0,0.4));
}
.hero-photo-caption {
  position: relative;
  z-index: 1;
  background: rgba(0, 0, 0, 0.55);
  color: #fff;
  font-size: 1rem;
  padding: 8px 16px;
  border-radius: 4px;
  letter-spacing: 0.4px;
}
@keyframes heroCut {
  /* photo279(09:50): visibility 离散切换——不存在半透明中间态, 原理上无法出现黑屏帧;
     新图 visible(下张 delay 边界)早于旧图 hidden(33.45%), 新图 DOM 层级在上, 全程有图 */
  0%, 33.45% { visibility: visible; }
  33.55%, 100% { visibility: hidden; }
}

@media (max-width: 960px) {
  .hero-content { max-width: 100%; }
  .hero-actions { flex-direction: column; gap: 20px; }
  .hero-actions .hero-trust { flex-wrap: wrap; row-gap: 10px; column-gap: 16px; justify-content: center; }
  .hero-actions .hero-buttons { justify-content: center; }
  .hero-photo-stage { aspect-ratio: 16 / 10; }
  .hero-photos { padding: 40px 0; }        /* photo789 36→40 与移动端 .section 统一 */   /* 10:04 移动端照片板块上下 padding 收紧 */
}

/* 信任徽章小屏兜底:窄于 768 让其换行,避免 nowrap 横向溢出切字 */
@media (max-width: 768px) {
  .hero-trust { flex-wrap: wrap; row-gap: 12px; column-gap: 22px; }
  .hero-trust .trust-item { font-size: 0.82rem; }
}

/* =========================================================
   v9 LOGO 墙 marquee 横滚动(2026-09-03 按网站首页 docx 重建)
   ========================================================= */
.logo-wall-marquee {
  position: relative;
  overflow: hidden;
  mask-image: linear-gradient(to right, transparent 0%, #000 8%, #000 92%, transparent 100%);
  -webkit-mask-image: linear-gradient(to right, transparent 0%, #000 8%, #000 92%, transparent 100%);
}
.logo-marquee-track {
  display: flex;
  gap: 13px;
  width: max-content;
  animation: logoScroll 53.33s linear infinite;    /* photo486(09-15 14:36): 滚动速度加快50%(80s/1.5) */ /* 22:07 LOGO 数量 10 → 20,动画时长 40s → 80s 同步翻倍,维持视觉滚速一致 */
}
.logo-marquee-track:hover { animation-play-state: paused; }
@keyframes logoScroll {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}
@media (max-width: 560px) {
  .logo-marquee-track { gap: 7px; animation-duration: 35.55s; }                                                  /* photo492(09-15 15:31): 移动端整体缩小到0.9倍(gap 8->7) + 滚动速度再加快50%(53.33s/1.5=35.55s) */ /* photo487: gap 6->8 */
  .logo-marquee-track .logo-slot { min-width: 94.5px; width: 94.5px; height: 71px; font-size: 0.585rem; border-radius: 7px; letter-spacing: 0.7px; }  /* photo492: 105×79 -> 94.5×71(0.9倍),字号/圆角/字距同步0.9倍 */ /* photo487: 81×61 -> 105×79(1.3倍) */
  .logo-wall { padding: 19px 0 0; }                                                                               /* photo956: 底部14px外框遗留删除,与桌面同步 */                                                                          /* photo492: 外框padding同步0.9倍(21/18/16 -> 19/0/14); photo550: 移动端左右内距改为0 */ /* photo487: 16/14/12 -> 21/18/16 */
}

/* =========================================================
   12:47 产品卡标题按钮化（products.html 三大系统标题 → 带框按钮）
   ========================================================= */
/* photo636: 标题行改「左标题 + 右查看详情按钮」（张总截图定稿，替代 13:51 整行大按钮方案） */
.product-card h2.pc-title-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  font-size: 1.05rem;
}
.product-card h2 a {
  color: var(--color-primary);
  font-weight: 700;
  line-height: 1.4;
}
/* photo653(张总指令): 查看详情按钮改首页系统卡 .sys-detail-btn 同款版式(浅蓝底/细边框/圆角12/高38) */
.product-card h2 a.pc-detail-btn {
  flex: none;
  display: inline-flex; align-items: center; justify-content: center;
  height: 38px; font-size: 12px; font-weight: 600; text-decoration: none;
  color: var(--color-primary); background: var(--color-primary-light);
  border: 1px solid #bfdbfe; border-radius: 12px; padding: 0 10px;
  white-space: nowrap; transition: var(--transition); box-sizing: border-box;
}
.product-card h2 a.pc-detail-btn:hover { text-decoration: none; }

/* photo558: 首页三大集成系统卡片标题行 —— 左侧标题 + 右侧查看详情按钮 */
.sys-card-title-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 10px;
}
.sys-card-title-row h2 {
  font-size: 1.05rem;                       /* photo564: 1.3→1.05,保证标题一行显示 */
  margin: 0;
  color: var(--color-primary);              /* photo564: 标题改为品牌蓝 */
  font-weight: 700;
  line-height: 1.3;
  white-space: nowrap;                      /* photo564: 强制单行 */
}

/* photo642(张总指令): 系统卡「查看详情」与 9 宫格 .p9-detail-link 同规格
   (38px 高 / 12px 600 / 浅蓝底 / 1px #bfdbfe / 圆角 12 / padding 0 10px) */
.sys-card-title-row a.sys-detail-btn {
  display: inline-flex; align-items: center; justify-content: center;
  height: 38px; font-size: 12px; font-weight: 600; text-decoration: none;
  color: var(--color-primary); background: var(--color-primary-light);
  border: 1px solid #bfdbfe; border-radius: 12px; padding: 0 10px;
  white-space: nowrap; transition: var(--transition); box-sizing: border-box; flex-shrink: 0;
}
.sys-card-title-row a.sys-detail-btn:hover { text-decoration: none; }
/* 13:58 顶部徽章行与按钮外框左右边缘对齐：徽章等宽撑满整行、文字居中 */
.product-card .product-tags {
  gap: 10px;
}

.product-card .product-tags .badge {
  flex: 1;
  text-align: center;
}

/* =========================================================
   14:14 移动端菜单按钮：汉堡图标 → 带框文字按钮「点击网页」
   ========================================================= */
.menu-toggle {
  min-width: 108px;
  padding: 8px 20px;
  background: #fff;
  border: 2px solid var(--color-primary);
  border-radius: 10px;
  transition: all var(--transition);
}

.menu-toggle span {
  display: none;                 /* 隐藏三条汉堡横线 */
}

.menu-toggle::after {
  content: "点击网页";
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.4;
  color: var(--color-primary);
  pointer-events: none;
}

.menu-toggle:hover {
  background: var(--color-primary);
}

.menu-toggle:hover::after {
  color: var(--color-white);
}

/* =========================================================
   14:19 移动端页脚：品牌块 / 联系方式 / 二维码 整体居中对齐
   ========================================================= */
@media (max-width: 768px) {
  .footer-brand-block {
    align-items: center;                   /* LOGO 与公司名水平居中 */
  }

  .footer-brand-block .logo-text {
    text-align: center;
  }

  .footer-company-name {
    margin-top: 16px;
    padding-top: 0;
    text-align: center;
    width: auto;
    white-space: normal;
    transform: none;                       /* 取消桌面端光学位移 */
  }

  /* 14:26 Contact 左对齐且左缘与"扫一扫关注我们"QR 框(191px)左外框对齐 */
  .footer-contact-block ul {
    align-items: flex-start;
    text-align: left;
    width: fit-content;
    margin-left: calc((100% - 191px) / 2);  /* QR 框居中,其左缘偏移 = (列宽-191)/2 */
  }

  .footer-contact li {
    justify-content: flex-start;
  }

  .footer-qr-block {
    justify-content: center;               /* photo555(2026-09-22): 移动端 QR 板块与公司名称居中对齐 */
  }
}

/* =========================================================
   photo541(2026-09-22 张总指令): PC 端二维码板块居中
   张总要求「二维码板块居中对齐,显示在 PC 端的中间,而不是右对齐;移动端不变」。
   判定取「真 PC」语义,而非单纯宽度:
     - 精确指针(hover:hover + pointer:fine) = 鼠标/触控板 → 视为 PC → 居中
     - 宽度 ≥561px(平板 / PC 窄窗口的单列页脚) → 同样居中
   真手机(触摸 + ≤560px)保持 photo527 的右对齐,完全不受影响。
   注:≤768px 单列时 .footer-contact-block ul 的左缘基准本就是
      calc((100% - 191px) / 2)(按二维码居中计算),居中后两者正好对齐。
   ========================================================= */
@media (min-width: 561px), (hover: hover) and (pointer: fine) {
  .footer-qr-block {
    justify-content: center;
  }
}

/* =========================================================
   photo547(2026-09-22 张总指令): PC 端「微信二维码」板块右侧 与 内容区右侧 对齐
   —— 张总要求二维码板块的右缘与整个内容（.footer-top 网格）的右缘齐平，撤销 photo540/541 的 PC 居中。
   📐 问题量化（1440px 实测）：三栏页脚 `auto 2fr 1fr`，二维码列 1fr = 223.34px，
      而 .qr-placeholder 固定 191px → `justify-content:center` 令两侧各留 (223.34−191)/2 = 16.17px，
      故二维码框/文字右缘 1279.83 比内容右缘 1296 内缩 16.17px。
      （1100px 时 1fr 被 191px 的 min-content 撑满 → 差值恰为 0，所以此前在小窗口上看不出问题。）
   ⚠️ 只在 ≥1025px（三栏布局、二维码位于最后一列）生效：
      ≤1024px 页脚转为 `1fr 1fr` 两栏，二维码块落到第 2 行第 1 列，
      此时"内容右缘"并非该块的所在列，右对齐只会把它推到内容中线，故不适用（见报告说明）。
      ≤768px 单列 + ≤560px 触摸端的既有对齐方式保持不动。
   源序必须晚于上方 photo540/541 的 center 规则（同为 .footer-qr-block，特异性 0,1,0，靠源序取胜）。
   ========================================================= */
@media (min-width: 1025px) {
  .footer-qr-block {
    justify-content: flex-end;
  }
}

/* =========================================================
  14:43 移动端 Brand 公司名：自适应字号 + 强制单行
   ========================================================= */
@media (max-width: 768px) {
  .footer-company-name {
    font-size: clamp(1rem, 5.6vw, 1.3rem); /* 按屏宽缩放,最窄 320px 也能单行放下 */
    white-space: nowrap;                   /* 强制一行展示 */
    letter-spacing: 0.2px;
  }
}

/* =========================================================
   14:48 移动端页脚 Brand LOGO 整体缩小至 0.6 倍
   ========================================================= */
@media (max-width: 768px) {
  .footer-brand-block .logo-vertical {
    gap: 11px;                             /* 18 × 0.6 */
  }

  .footer-brand-block .logo-icon {
    width: 60px;                           /* 100 × 0.6 */
    height: 60px;
    font-size: 1.8rem;                     /* 3rem × 0.6 */
  }

  .footer-brand-block .logo-text .cn {
    font-size: 1.125rem;                   /* 1.875rem × 0.6 */
  }

  .footer-brand-block .logo-text .en {
    font-size: 0.7rem;                     /* 1.14rem × 0.6 ≈ 0.684,取 0.7 保可读 */
    margin-top: 2px;                       /* 3px × 0.6 */
  }
}

/* =========================================================
   15:00 案例页去掉提示框板块,仅保留"返回案例列表"按钮
   ========================================================= */
.case-back {
  margin: 64px 0 0;
}   /* photo965: 返回按钮上间距统一64(张总指令), 下间距由section padding 64兜底 */

.case-back a {
  display: inline-block;
  padding: 12px 28px;                    /* 17:58 与"阅读全文"(btn 12px 28px)框高一致 */
  font-size: 1rem;                       /* 17:58 与"阅读全文"字号一致 */
  font-weight: 600;
  color: var(--color-primary);
  background: #fff;
  border: 2px solid var(--color-primary);
  border-radius: var(--radius-sm);
  transition: all var(--transition);
}

.case-back a:hover {
  background: var(--color-primary);
  color: var(--color-white);
}

/* =========================================================
   15:03 案例页 H1 大标题缩小（原浏览器默认 2em）
   ========================================================= */
.article-body h1 {
  font-size: 1.44rem;   /* 15:34 案例页标题缩至 0.9 倍(1.6rem×0.9),全部 8 个案例详情页生效 */
  line-height: 1.5;
  font-weight: 700;
}

/* 15:03 返回案例列表按钮居中对齐 */
.case-back {
  text-align: center;
}

/* =========================================================
   15:12 三大集成系统卡片标题居中
   ========================================================= */
.sys-content h3 {
  align-self: center;
  text-align: center;
}

/* =========================================================
   15:47 移动端 CTA 按钮组(查看技术交流/查看选购指南)居中
   15:50 桌面端改为两端对齐,与上方文本框左右缘对齐
   ========================================================= */
.cta-buttons {
  justify-content: space-between;
}

/* 17:33 product-noozone 首屏:右侧文字列撑满与左图同高(360px),按钮 margin-top:auto 下移至图底对齐 */
.product-detail-top .hero-right-column {
  display: flex;
  flex-direction: column;
  height: 360px;                          /* 与左侧图片高度一致 */
}
.product-detail-top .hero-right-column .cta-buttons {
  margin-top: auto;
  margin-bottom: 0;
}

@media (max-width: 768px) {
  .cta-buttons {
    flex-direction: column;              /* 17:18 移动端强制两行堆叠 */
    align-items: center;                 /* 两按钮各自水平居中、左右相互对齐,与上方文本列居中对齐 */
    width: 100%;
  }
  .cta-buttons .btn {
    margin-left: 0 !important;           /* 17:21 单按钮复位:抵消桌面端 margin-left:auto,移动端保持居中 */
  }
  .product-detail-top .hero-right-column {
    height: auto;                        /* 移动端单列堆叠,取消固定高度 */
  }
}

/* =========================================================
   17:00 移动端 Hero 标题三行固定断点(桌面端 br 隐藏不生效)
   ========================================================= */
.mobile-br {
  display: none;                          /* 桌面端不换行,保持原排版 */
}

@media (max-width: 768px) {
  .mobile-br {
    display: inline;                      /* 移动端按三行断点展示 */
  }
}

/* =========================================================
   17:46 移动端 Hero 标题对齐目标图:大字号加粗三行(桌面端不受影响)
   用 .hero .hero-text h1 提高优先级,压过 L2805 的无媒体查询 .hero h1(2.2rem)
   07:43 需求"首页大标题处理得跟其它页大标题一样(PC+移动)":全面改齐 .page-hero h1 移动端值——
   font-size 2rem→1.6rem(L2125 page-hero 移动端同值)、font-weight 800→700(图1臃肿加粗感的根因)、
   line-height 1.3→1.7(与 page-hero h1 继承 body 的行高一致)
   ========================================================= */
@media (max-width: 768px) {
  .hero .hero-text h1 {
    font-size: 1.4rem;        /* photo1318: 1.6→1.4rem,主标题"卫生级…——深圳中和净化设备有限公司"移动端 3行→2行 */
    line-height: 1.7;         /* 07:43 与 .page-hero h1 对齐(原 1.3) */
    font-weight: 700;         /* 07:43 与 .page-hero h1 对齐(原 800,消除移动端标题臃肿加粗感) */
  }
}

/* =========================================================
   现场照片轮播-实拍图填充(1002 新增)
   幻灯片含 .has-photo 时:实拍图铺满 16:9 舞台,隐藏相机占位图标
   ========================================================= */
.hero-photo-slide.has-photo img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;          /* 4:3 原图在 16:9 舞台居中裁切铺满 */
  z-index: 0;
}
.hero-photo-slide.has-photo::before {
  content: none;              /* 有实拍图时隐藏 📷 占位图标 */
}

/* =========================================================
   系统卡片-实拍图填充(1024 新增)
   .sys-side 含 .has-photo 时:实拍图铺满 4:3 侧栏(移动端 16:9)
   ========================================================= */
.sys-side.has-photo {
  padding: 0;
}
.sys-side.has-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* =========================================================
   9宫格设备图-实拍图填充(1051 新增)
   .p9-device-slot 含 .has-photo 时:实拍图铺满 3:2 占位区
   ========================================================= */
.p9-device-slot.has-photo {
  padding: 0;
  border-style: solid;
  border-color: #E2E8F0;
  background: none;
  overflow: hidden;
}
.p9-device-slot.has-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* =========================================================
   创始人照片-实拍图填充(1319 新增)
   .founder-photo 含 .has-photo 时:证件照铺满 3:4 竖版区域
   ========================================================= */
.founder-photo.has-photo {
  background: none;
  padding: 0;
}
.founder-photo.has-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 20%;   /* 证件照偏上取肩部以上 */
  display: block;
}


/* =========================================================
   02卡设备图-整张显示(1648 新增)
   竖构图设备图在 3:2 框内 cover 裁切过度,
   改 contain 等比缩放入框,内容完整显示
   ========================================================= */
.p9-device-slot.fit-contain img {
  object-fit: contain;
  background: #E9EEF3;          /* 两侧留边用浅灰蓝,与站点冷色调一致 */
}

/* =========================================================
   产品页系统卡片-实拍图填充(1651 新增)
   .card-image 含 .has-photo 时:实拍图铺满卡片顶部 240px 区域
   ========================================================= */
.card-image.has-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* =========================================================
   移动端图片比例对齐 PC 端 (photo34 · 需求:移动端看到与 PC 端一样的画面)
   原则: 图片容器宽高比与 PC 端一致 → object-fit:cover 裁切构图一致
   ① 首页三大系统卡 .sys-side: 移动端原 16:9 → 4:3 (桌面为 4:3)
   ② 首页现场照片轮播 .hero-photo-stage: 移动端原 16:10 → 16:9 (桌面为 16:9)
   ③ 产品服务页顶部系统卡 .card-image: 移动端原内联固定高 240px
      → 8:5 等比自适应 (桌面三列渲染约 381×240 ≈ 8:5)
   ④ 9 宫格 .p9-device-slot (3:2) / 创始人 .founder-photo (3:4):
      移动端与桌面本就同比例, 无需调整
   ========================================================= */
@media (max-width: 900px) {
  .sys-side { aspect-ratio: 4 / 3; }           /* 覆盖上方 ≤900px 的 16/9 */
}
@media (max-width: 960px) {
  .hero-photo-stage { aspect-ratio: 16 / 9; }  /* 覆盖上方 ≤960px 的 16/10 */
}
@media (max-width: 768px) {
  .card-image[style] {
    height: auto !important;                   /* 覆盖内联 height:240px */
    aspect-ratio: 4 / 3;  /* photo1175: 与桌面统一4:3 */
  }
}

/* =========================================================
   创始人照片缩小 (photo39 · 17:32/17:40/21:00 需求)
   桌面端: JS 等比缩放至 0.8 倍(高=右栏×0.8, 宽=高×3/4),
   align-self:flex-end 解除 stretch → 照片底边与右栏最末行
   文字底边精确对齐(行高由文字撑开,照片贴行底)
   移动端: 在 0.8 倍(80% 宽)基础上再缩至现有的 0.4 倍
   → 80%×0.4=32% 宽, 水平居中, 3:4 比例不变等比缩小
   ========================================================= */
@media (min-width: 769px) {
  .founder-photo {
    align-self: flex-end;
    margin-bottom: 44px;    /* 21:07 补偿 .founder-info 的 32px 下内边距使照片底边与文字字面底齐平; 09-10 上移22px后 10:49 下移4px、11:35 再下移6px: 文字不动 */
  }
}
@media (max-width: 768px) {
  .founder-photo {
    width: 32% !important;
    margin-left: auto;
    margin-right: auto;
  }
}

/* 10:39 试验: 所有内容板块标题(.section-title)改为品牌蓝 #0066CC,看效果 */
.section-title {
  color: var(--color-primary);
}

/* 10:44 试验: 所有卡片小标题(h3)改品牌蓝 #0066CC; 10:53 板块小标题(.section-subtitle)恢复原色 var(--color-text-light) */
/* 11:04 选购指南等文章页: 章标题(.article-body h2)一并改蓝; 正文与行内strong保持原色 */
/* 11:59 补入 .article-body h1: 文章页大标题(专利/白皮书/新闻/案例详情共21页)统一品牌蓝; L3161原规则无颜色声明 */
.article-body h1,
.article-body h2,
.card-body h3,
.case-card h3,
.case-card.case-row h3,
.rb-card h3,
.article-body h3,
.sys-content h3,
.p9-body h3,
.team-header h3,
.founder-info h3,
.contact-custom h3,
/* 11:22 补入 .faq-question: FAQ手风琴问题标题改蓝; +图标L1134本即品牌蓝不受影响 */
/* 12:13 补入 .faq-mini summary: 首页"常见问题摘要"3条(details/summary原生组件)问题标题改蓝; +图标本即品牌蓝,仅index.html有此组件 */
.faq-question,
.faq-mini summary {
  color: var(--color-primary);
}

/* 11:28 联系区块加粗文字统一品牌蓝: 联系方式/提交需求 h2标题 + ci-value 联系值(电话/邮箱/网址/地址) + 表单标签; 灰色小标签.ci-label与红色星号.required(0,2,1优先级更高)保持不变; ci-value内链接经L1304 color:inherit 跟随变蓝 */
/* 11:45 修正: 选择器由 .form-group label .lbl2 改为 .form-group label——4字标签(公司名称/水源类型/项目类型/需求描述)文字直接在label内无lbl2 span,此前漏蓝; 2字标签的.lbl2无颜色声明自动继承label蓝色 */
.contact-card h2,
.contact-info-item .ci-value,
.form-group label {
  color: var(--color-primary);
}

/* 11:50 黑榜(雷区)标题恢复原深色: 用户要求仅黑榜h3回退,红榜(安全区)h3保持品牌蓝; (0,2,1)优先级高于蓝色组.rb-card h3(0,1,1),列表红X(li::before #DC2626)与❌emoji不受影响 */
.rb-card.red h3 {
  color: var(--color-text);
}

/* 11:55 产品参数表加粗值改品牌蓝: products.html 三大产品卡 .product-params 的 strong 值(适用水源/产能/臭氧精度/批件/除菌率等12项); 灰色span标签保持原色 */
.product-params li strong {
  color: var(--color-primary);
}

/* 13:04 产品详情页标题变蓝: 三产品页 hero 大标题(.product-detail-top .hero-right-column h1) + 证据链标题(.evidence-section h2, 仅product-detail) + 详细参数/技术原理/选购对比/常见问题四组h2(.mb-4 h2, 全站仅三产品页使用此容器); 正文与其余元素颜色不变 */
.product-detail-top .hero-right-column h1,
.evidence-section h2,
.mb-4 h2 {
  color: var(--color-primary);
}

/* 14:47 创始人照片左右各空40px白色区域(桌面端): 容器加左右padding使img缩进,两侧露出白色边; 高度与JS联动不变(JS设容器border-box宽高,padding内部消化,object-fit:cover自动适配); 移动端照片已缩至32%小图,不加 */
@media (min-width: 769px) {
  .founder-photo.has-photo {
    padding: 0 40px;
    background: #fff;
  }
}

/* 14:56 人物图像零裁切: 照片为1200×1200正方形, JS已改设容器宽=高+80(照片区正方形), img改contain整图完整显示; 空间极限时等比缩小绝不剪切, object-position对contain无效果可忽略 */
@media (min-width: 769px) {
  .founder-photo.has-photo img {
    object-fit: contain;
  }
}

/* 16:12 案例大卡换实拍图(首页+cases.html 可乐犇犇40T/H山泉水卡): has-photo时隐藏渐变背景与SVG图标位,img铺满4:3图区(照片1400×1050同比例,cover零裁切); 移动端16:9图区同样自适应 */
.case-card.case-row .case-img.has-photo {
  background: none;
  padding: 0;
  overflow: hidden;
}
.case-card.case-row .case-img.has-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* 17:10 案例大卡图区宽度放大1.25倍(360→450px),高度保持270px不变(aspect-ratio 4:3→5:3); 统一作用于首页3张与cases.html全部大卡(实拍图与SVG占位图同步); 移动端16:9规则不受影响 */
/* 17:16 曾追加加高规则(aspect-ratio 3/5, 450×750竖向), 用户随即取消该步操作, 已回退删除, 保持本规则450×270 */
/* 20:40 图区宽度比例化: 450px/1152px(满宽卡片内容宽)=39.0625%,满宽渲染450×270;
   21:15 图区高度310px(需求:首页去掉查看详情按钮+两页图区高均调310px);
   22:31 height改为min-height(需求:照片要铺满整个图片区,不能像固定310px那样在案例页卡片底部留白);
   22:40 min-height 310→333px(需求:首页客户案例板块3张图片高度统一调整为333px,宽度450px不变)——
   首页卡内容(无按钮)≈270px<333,卡高与图区精确锁定333px(满宽450×333,三卡统一等高);
   案例页卡(含按钮内容≈333px)行为不变;flex stretch保证图区始终满铺卡片全高零白边 */
.case-card.case-row .case-img {
  width: 39.0625%;
  min-height: 333px;
}

/* 17:31 移动端案例大卡图区加高: height:auto 解除L2170固定140px(0,3,0>0,2,0), aspect-ratio 覆盖L1575的16:9(同级后声明胜);
   21:15 移动端图区根治"图片缩放这么小"(需求:移动端客户案例板块图片正常显示不要缩这么小)——
   根因: 20:40桌面规则width:39.0625%为无媒体查询规则且位于文件末尾,同特异性(0,3,0)后声明压过L1575移动端width:100%,
   致≤900px图区只剩约39%宽(375px屏≈128×77缩成小方块);
   本条补回width:100%(同特异性本条最后声明胜)并将比例5/3加大到4/3(375px屏327×245,与多数实拍图4:3原生比例一致cover近乎零裁切) */
@media (max-width: 900px) {
  .case-card.case-row .case-img {
    width: 100%;
    height: auto;
    min-height: 0;                 /* 22:31 解除桌面min-height:310px,否则压制4/3比例使移动端图区被强制撑到310高 */
    aspect-ratio: 4 / 3;
  }
}

/* 23:52 首页案例图高度333→353px(需求:首页案例板块3张照片宽度不变450px,高度再拉高20px,图重新布满,其它页不变)——
   仅首页生效:index.html案例列表容器已加home-cases类(案例页cases.html的case-list无此类,完全不受影响);
   作用域规则特异性(0,4,0)>公共桌面规则(0,3,0),桌面端首页图区450×353,卡高锁定353px(首页内容≈270px<353),
   flex stretch+object-fit:cover保证照片自动重新满铺整个353px图区零白边;
   包裹在min-width:901px媒体查询内,≤900px移动端不参与级联(避免高特异性压制移动端min-height:0),移动端4:3比例不变;
   案例页保持min-height:333px公共规则,卡片≈333px行为不变 */
/* ❌ 2026-09-22 photo545 起本块已失效并删除：首页改为 1 行 3 列后图区宽度由 450px 变为 365px，
   353px 锁定高会让图区变形，故由 photo545 规则改为 min-height:0 + aspect-ratio:4/3（见下方 photo545 块）。 */

/* 注：此处原有 @media (min-width:901px){ ... .case-img{min-height:353px} }(23:52 首页图区加高专用)，
   其作用已被下方 photo545 的同特异性规则(源序在后)完全覆盖，属死代码，本次一并删除。 */

/* =========================================================================
   photo545 (2026-09-22 张总指令)：首页「标杆客户案例」由 3 行 1 列 → 1 行 3 列
   —— 与「产品服务」页 .card-grid / photo544 的 .sys-grid 同款规则。
   ⚠️ 全部限定在 .case-list.home-cases 之下：案例页 cases.html 用的是 .case-list(无
      home-cases 类)，完全不受影响。
   放在本位置的原因：需在源序上晚于 L1461 起的 .case-list / .case-card.case-row 公共规则，
      以及上方那条（已删除的）min-height:353px 规则，靠"同特异性 + 源序在后"取胜。
   ========================================================================= */
.case-list.home-cases {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));   /* 宽屏 3 列 / 自适应降列 */
  gap: 28px;
}
.case-list.home-cases .case-card.case-row {
  flex-direction: column;                                       /* photo545: row → column, 图上文下 */
}
.case-list.home-cases .case-card.case-row .case-img {
  width: 100%;                                                  /* photo545: 360px → 100% */
  min-height: 0;                                                /* photo545: 取消首页专用的 353px 锁定高 */
  aspect-ratio: 4 / 3;                                          /* 覆盖 ≤900px 的 16/9, 与桌面保持一致 */
}
.case-list.home-cases .case-card.case-row .case-body {
  padding: 24px;                                                /* photo545: 28px 32px → 24px, 适配 365px 窄卡 */
}
/* 参数区：365px 窄卡放不下三列(最宽 "<0.005ppm" 实测内容 102px > 96px 列宽) → 单列竖排(数值左/标签右) */
.case-list.home-cases .case-stats {
  grid-template-columns: 1fr;
  gap: 9px;
}
.case-list.home-cases .case-stats .stat {
  flex-direction: row;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
}
.case-list.home-cases .case-stats .stat-value {
  font-size: 1rem;                                               /* photo808: 1.2rem → 1rem，与首页产品卡 .product-params li strong(photo629 定案 1rem) 一致 */
  white-space: nowrap;
}
/* 注：首页案例卡内**没有** .case-link("查看详情"按钮)——grep 核实 3 张卡 0 个按钮，
   故无需任何按钮贴底/对齐规则(此前若有此类规则均属死代码，已清理)。 */
@media (max-width: 768px) {
  .case-list.home-cases { grid-template-columns: 1fr; }         /* 与 .card-grid 的 ≤768 单列一致 */
  /* ≤768 卡片为单列全宽(约 736px), 空间充足 → 参数区恢复三列横排
     (gap 14px 与上方 L1585 全局 .case-stats 的 ≤900 规则完全一致) */
  .case-list.home-cases .case-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
  .case-list.home-cases .case-stats .stat { flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 4px; }
}
/* ⚠️ photo545 补正：本块选择器特异性(0,3,0)/(0,4,0) 高于全局 .case-stats(0,1,0)，
   会连同 L1595 的 @media (max-width:560px) photo386 方案一起压掉 —— 必须在此显式交回，
   否则 ≤560px 会退化成"3 列 × 值上/标签下"并把 <0.005ppm 挤出列宽(实测 390px 溢出 11px)。
   以下声明逐条镜像 L1598-1603，使首页案例卡参数区与案例页/三大系统卡的移动端观感完全一致。 */
@media (max-width: 560px) {
  .case-list.home-cases .case-stats {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
    grid-template-rows: auto auto;
    column-gap: 10px;
    row-gap: 4px;
  }
  .case-list.home-cases .case-stats .stat { display: contents; }
  .case-list.home-cases .case-stats .stat-label { grid-row: 1; font-size: 0.8rem; white-space: nowrap; }
  .case-list.home-cases .case-stats .stat-value { grid-row: 2; font-size: 1rem; letter-spacing: -0.3px; white-space: nowrap; }  /* photo808: 同步 1rem */
  .case-list.home-cases .case-stats .stat:nth-child(2) { text-align: center; }
  .case-list.home-cases .case-stats .stat:nth-child(3) { text-align: right; }
}

/* 07:31 移动端所有横向图区统一 高度:宽度=3:4(即aspect-ratio 4/3)(需求:移动端所有横向图片[宽度比高度大的]宽度适合屏幕,高度调到高:宽=3:4)——
   全站横向图区清点: ①首页现场照片轮播.hero-photo-stage 移动端16/9(本条≤960px改4/3,同特异性后声明胜L2959的16/10与L3338的16/9);
   ②首页9宫格设备图.p9-device-slot 3/2(本条≤900px改4/3,移动端p9-grid已单列≤860px,图宽即屏宽);桌面端保持3/2不变;
   ③产品页系统卡.card-image[style] 移动端8/5(本条≤768px改4/3,与原height:auto!important并存,桌面内联360px不变);
   ④案例卡.case-card.case-row .case-img 与 ⑤系统侧栏.sys-side 移动端已是4/3(21:15/L3335),无需改动;
   竖版图区(高>宽)不涉及:创始人.founder-photo 3:4、SMQ-CMA/专利横幅aspect-ratio:3/4均保持不动;
   各图区img均为object-fit:cover,改比例后照片自动重新满铺,移动端图区变高后展示画面增多(16/9→4/3高约+33%,3/2→4/3约+12.5%,8/5→4/3约+20%) */
@media (max-width: 960px) {
  .hero-photo-stage { aspect-ratio: 4 / 3; }
}
@media (max-width: 900px) {
  .p9-device-slot { aspect-ratio: 4 / 3; }
}
@media (max-width: 768px) {
  .card-image[style] { aspect-ratio: 4 / 3; }
}

/* 08:37 首页LOGO墙前4槽放真实品牌LOGO(需求:区块K"信赖铸就同行"客户LOGO墙放置娃哈哈/加多宝/景田百岁山/农夫山泉真实LOGO照片[用户方案三:前4槽真实LOGO,05-20槽保留占位框后续再补])——
   has-logo槽: 白底+实线边框(与虚线占位框区分"已填/待填"状态);
   17:50 统一占比:去掉内距,img按框尺寸80%(宽/高各自上限)等比自适应,所有品牌LOGO视觉大小一致 */
.logo-slot.has-logo {
  background: #ffffff;
  border: 1px solid var(--color-border);
  padding: 0;
  box-sizing: border-box;
}
/* photo589: 客户 LOGO 墙改为「视觉面积归一」。
   旧机制是逐次手工打补丁 —— logo-xl(100%) / logo-sm(64.8%,竹报泉) / logo-xs(57.6%,朗秀) /
   默认(80%) / 另有 .logo-slot img[src*="zhubaoquan"]{transform:scale(1.2)} / logo-d5(火山鸣泉下移5px)。
   问题：max-width/max-height 是**双向上限**，对不同长宽比的实际效果完全不同 ——
        横长条先触宽度上限（高度随之很小）、方正图先触高度上限，于是同一面墙里"内容外框面积"
        相差 3.56 倍（最小 百御泉 3,365px² vs 最大 可口犇犇 11,983px²），视觉轻重悬殊。
   photo589 改法（三步）：
        ① 源图先裁掉自带白边（存回 images/，原图备份在 backup_logo588_20260924-010200/images/）；
           这一步同时消掉了"内容偏心"（原朗秀偏 6.9px、中美偏 5.0px），故 logo-d5 这类偏移补丁一并作废；
        ② 按每张的内容宽高比反算目标渲染尺寸，使内容面积尽量 = 8500px²，并以 82%宽 / 76%高 安全框限幅
           → 面积差异收敛到 1.37 倍（6,248 ~ 8,555）；
        ③ 逐图尺寸通过**内联 CSS 变量 --mw / --mh** 指定（写在 index.html 该 img 的 style 上），
           故 logo-xl / logo-sm / logo-xs / logo-d5 规则与 zhubaoquan 的 scale(1.2) 全部删除、对应 class 已从 HTML 移除。
   ⚠️ 变量基准 = 槽内盒（PC 178.33×116）。移动端槽缩到 0.6 倍时百分比自动跟随，无需另写断点。
   ⚠️ 改尺寸时只需改 index.html 里该 img 的 --mw/--mh，不要再新增档位 class。 */
.logo-slot.has-logo img {
  max-width: var(--mw, 80%);
  max-height: var(--mh, 80%);
  width: auto;
  height: auto;
  object-fit: contain;
  display: block;
}

/* 10:50 移动端三产品页首屏左图 4:3:宽度不变100%,高度按宽:高=4:3;inline height/aspect-ratio(16:9) 需 !important 覆盖;10:58 扩展至无臭氧/GMP页(aspect-ratio 加 !important 压过其 inline 16/9),object-fit 随各页 inline(fill/cover) */
@media (max-width: 768px) {
  .product-detail-top img.curve-img {
    height: auto !important;
    aspect-ratio: 4 / 3 !important;
  }
}

/* ===== photo198 (2026-09-12) 品牌 LOGO / 二维码图片化 ===== */
/* ① header LOGO 文字结构 -> 横版透明图片;photo211(13:02) PC 端放大 42 -> 84px,与"网站首页"底框同轴居中对齐 */
.header-inner .logo img.logo-img-h {
  height: 84px;
  width: auto;
  display: block;
  flex-shrink: 0;                          /* 防止 flex 压缩 logo 宽度 */
  transform: translateY(5.5px);              /* photo229: 圆标对齐导航中心 3.5px; photo307(16:03): 向下微调再+2px, 圆标中心与"网站首页"框中心对齐 */
}
/* ② footer LOGO 文字结构 -> 竖版图片(中和LOGO-竖.jpg 600x576),宽 150px */
.logo img.logo-img-v {
  width: 150px;
  height: auto;
  display: block;
  transform: translateX(-1px);           /* photo230(14:22): 用户截图实测 LOGO 中心比公司名中心偏右 2.5px scr(≈1px CSS),左移 1px 精确居中;公司名位置不动 */
}
/* ③ footer 二维码占位文字 -> 二维码图片,布满 191x191 qr-box */
.qr-box img.qr-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
@media (max-width: 768px) {
  .header-inner .logo img.logo-img-h {
    height: 104px;                           /* photo225(13:48): 96 -> 104px,圆标实际占图高 92.2%(461/500),放大后圆标高度恰好=按钮框 96px,顶点/最低点与按钮框平齐 */
    width: 187.8px;                          /* photo356(09-14 09:20): 宽 178.9 -> 187.8px,高度不变宽度放宽1.05倍(圆标微椭圆视觉) */
    transform: translateY(5px);             /* photo231(14:28): 基于圆标真实几何(占位图48.2%)重校——photo228 按92%误测已过调,实测圆标低4.5scr(环境缩放约2.0),修正 7→5px */
  }
  .logo img.logo-img-v {
    width: 101px;                            /* photo281(12:21): 126 -> 101px,移动端页脚竖版 LOGO 缩到当前 0.8 倍 */
  }
  /* photo259(17:13): 链接盒原先 display:flex 横向撑满整列(375 视口下宽 343px),只包住 LOGO 图即可,消除过长线框 */
  .footer-brand-block .logo.logo-vertical {
    width: fit-content;
    margin: 0 auto;
  }
}

/* ===== photo244(16:05): 全站内容防护——图片/视频禁选中/禁长按呼出保存(iOS)/禁拖拽 =====
   photo830 曾停用 → photo1267(2026-10-26 张总指令): 恢复防护并扩展到视频 */
img, video {
  -webkit-user-select: none;
  -moz-user-select: none;
  user-select: none;
  -webkit-user-drag: none;
  -webkit-touch-callout: none;
  /* photo1381: 根治移动端长按另存——touch-callout/contextmenu 属软防护, 微信X5/WKWebView可无视;
     pointer-events:none 让长按命中测试永不落在 img/video 上, 任何内核都呼不出存储图像菜单,
     点击由父级容器承接(灯箱委托/覆盖层点击均已适配) */
  pointer-events: none;
}
/* photo1381: 指向图片的链接禁 iOS 长按预览(Quick Look 对图片链接会出现存储入口) */
a[href$=".jpg"], a[href$=".jpeg"], a[href$=".png"], a[href$=".webp"], a[href$=".gif"] {
  -webkit-touch-callout: none;
}

/* ===== photo252(16:32): 按用户要求去掉页面淡入(闪切), 保留按钮/链接按压反馈 ===== */
a, button { transition: opacity .18s ease, transform .18s ease, box-shadow .18s ease, filter .18s ease; }
button:active, .btn:active, a:active { transform: scale(.97); opacity: .85; }
@media (prefers-reduced-motion: reduce) {
  body { animation: none; }
  a, button { transition: none; }
}

/* ===== photo250(16:26): 全站文字防复制——不可选中/不可全选; 打印输出空白页 =====
   photo830 曾停用 → photo1267(2026-10-26 张总指令): 恢复防护(表单输入不受影响) */
body { -webkit-user-select: none; user-select: none; }
input, textarea, [contenteditable] { -webkit-user-select: text; user-select: text; }
@media print { body { display: none !important; } }

/* ===== photo261(17:25): 左右悬浮功能条——左侧"分享"挂签 + 右侧 客服/电话/帮助/二维码/回顶部 ===== */
/* photo376(09-14 14:18): top:50%+translateY(-50%) 改 top:0+JS translate3d——工具栏提升为独立合成层(will-change),
   移动端滚动时由 GPU 合成器直接钉在视口上,不再随内容滚动出现渲染滞后跳动 */
.zh-side-bar { position: fixed; right: 0; top: 556px; transform: translateZ(0); z-index: 99990; display: flex; flex-direction: column; gap: 2px; } /* photo1364: JS 写入原生 top，不再用动态 transform；translateZ 仅保留合成层 */
/* photo266(17:44): 工具栏按钮改青色 */
.zh-side-btn { width: 45px; height: 45px; box-sizing: border-box; background: #dff2f2; border: 1px solid #b2d9d9; display: flex; flex-direction: column; align-items: center; justify-content: center; cursor: pointer; color: #3d8f8f; transition: background .18s ease; } /* photo317(17:35): PC工具栏按钮0.8倍(56->45) */
.zh-side-btn:hover, .zh-side-btn.zh-active { background: #bfe6e6; }
.zh-side-btn svg { width: 21px; height: 21px; stroke: #1450a3; fill: none; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; } /* photo318(17:43): 图标标识改蓝色; photo317: 图标0.8倍(26->21) */
.zh-side-btn.zh-active svg { stroke: #0e3a80; } /* photo318: 激活态深蓝 */
.zh-side-label { font-size: 8px; margin-top: 2px; color: #1450a3; } /* photo318: 文字改蓝色; photo317: 文字0.8倍(10->8) */
/* photo268(21:02): 电话面板缩小字号+控制面板宽度, 左缘不过分伸入内容区 */
.zh-side-panel { position: fixed; right: 62px; top: 50%; transform: translateY(-50%); background: #fff; border: 1px solid #e3e8ef; border-top: 3px solid var(--color-primary, #1450a3); box-shadow: 0 8px 30px rgba(0,0,0,.16); border-radius: 8px; padding: 10px 12px; /* photo298: 内距13/15->10/12 */ z-index: 99991; display: none; max-width: 78vw; }
.zh-side-panel.zh-show { display: block; }
.zh-side-panel h4 { margin: 0 0 5px; font-size: .82rem; color: #1450a3; } /* photo312: 标题微调 */
.zh-phone-item { display: flex; align-items: center; gap: 8px; padding: 4px 0; border-bottom: 1px solid #eef1f6; text-decoration: none; } /* photo319(17:57): 行距压缩(5->4,精调面板高=工具栏高139); photo316: 行距0.8倍(6->5) */
.zh-phone-item:last-child { border-bottom: none; }
.zh-phone-item svg { width: 11px; height: 11px; stroke: #1f9e9e; fill: none; stroke-width: 1.6; flex-shrink: 0; } /* photo316: 图标0.8倍(14->11); photo314: 恢复显示,青色,排在说明前 */
.zh-phone-item .sub { display: flex; align-items: center; gap: 4px; margin-top: 1px; } /* photo319: 子行上距压缩(2->1); photo316: 间距0.8倍(5->4); photo314: 图标+说明一行 */
.zh-phone-item .num { font-size: .67rem; font-weight: 700; color: #1450a3; white-space: nowrap; } /* photo316(17:15): 字号0.8倍(.84->.67); photo315: 号码恢复蓝色不变; photo312: 单行 */
.zh-phone-item .desc { font-size: .5rem; color: #1f9e9e; font-weight: 700; white-space: nowrap; } /* photo316: 字号0.8倍(.62->.50); photo313: 加粗+青色 */
/* photo316(17:15): 电话面板整体0.8倍——内距与标题字号同步收缩(作用域限定电话面板,不影响二维码面板) */
.zh-phone-panel { padding: 10px 10px 7px; min-width: max-content; border-top: none; } /* photo321(18:06): 去掉顶部蓝色线条(上内距7->10补偿3px保持高139与工具栏对齐); photo319: 内距8->7; min-width:max-content 保证号码不溢出边框 */
.zh-phone-panel h4 { font-size: .66rem; margin: 0 0 2px; } /* photo319: 标题下距4->2 */
.zh-qr-panel img { width: 110px; height: 110px; display: block; margin: 0 auto 8px; } /* photo269: 二维码缩小 */
.zh-qr-panel p { margin: 0; text-align: center; font-size: .75rem; color: #8a97a8; }
/* photo266(17:44): 分享挂签改为与右侧工具栏同款方块按钮(青色, 图标+小标签) */
.zh-share-tab { position: fixed; left: 0; top: 50%; transform: translateY(-50%); border-radius: 0 6px 6px 0; box-shadow: 0 2px 8px rgba(0,0,0,.15); z-index: 99990; cursor: pointer; }
.zh-share-panel { position: fixed; left: 40px; top: 50%; transform: translateY(-50%); background: #fff; border: 1px solid #e3e8ef; box-shadow: 0 8px 30px rgba(0,0,0,.16); border-radius: 8px; padding: 8px; z-index: 99991; display: none; box-sizing: border-box; max-width: min(200px, calc(100vw - 56px)); } /* photo269: 限宽200, 二维码展开后也不超内容框 */ /* photo264: 字体缩小+宽度不超出内容外框 */
.zh-share-panel.zh-show { display: block; }
/* photo300(15:35): 分享面板内二维码图块改fixed独立卡片(由JS定位到分享面板左侧,顶部平齐、右缘贴面板左缘) */
.zh-share-panel .zh-qr-panel { position: fixed; background: #fff; border: 1px solid #e3e8ef; box-shadow: 0 8px 30px rgba(0,0,0,.16); border-radius: 8px; padding: 10px 12px; z-index: 99992; box-sizing: border-box; } /* photo332(19:03): 去掉顶部蓝色线条(微信/QQ二维码图块) */

.zh-share-item { display: flex; align-items: center; gap: 7px; padding: 6px; border-radius: 6px; cursor: pointer; color: #444; font-size: 11.5px; text-decoration: none; white-space: nowrap; } /* photo269: 字体再缩 */ /* photo264: 字体缩小 */
.zh-share-item:hover { background: #f2f6fb; }
.zh-share-item .dot svg { width: 12px; height: 12px; display: block; } /* photo265: 仿真平台图标 */
.zh-share-item .dot { width: 18px; height: 18px; border-radius: 5px; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 11px; flex-shrink: 0; }
@media (max-width: 768px) {
  .zh-side-bar { top: 577px; } /* photo1364: 移动端默认值；JS 会按首行信任徽章精确写入 top，不再用 transform 位移 */
  .zh-side-btn { width: 35px; height: 35px; } /* photo325(18:27): 移动端工具栏0.8倍(44->35) */
  .zh-side-btn svg { width: 17px; height: 17px; } /* photo325: 图标0.8倍(21->17) */
  .zh-side-label { font-size: 7px; } /* photo325: 文字0.8倍(9->7) */
  .zh-side-panel { right: 48px; padding: 14px 16px; }
  .zh-qr-panel img { width: 124px; height: 124px; }
  .zh-share-item { font-size: 11px; padding: 5px 6px; }
  .zh-qr-panel img { width: 96px; height: 96px; } /* photo264: 移动端分享面板字体再缩,面板不超内容框 */
}
/* 工具栏已含"回顶部", 隐藏旧右下角返回顶部按钮 */
.back-to-top { display: none !important; }
/* photo282(12:24): 全端统一工具栏——双端均为右侧"分享/电话/顶部"三按钮, 去左侧分享挂签/二维码/帮助, 分享面板一律从右侧弹出 */
.zh-share-tab { display: none; }
.zh-btn-qr, .zh-btn-help { display: none; }
.zh-share-panel { left: auto; right: 62px; }

/* photo344(22:40): 新闻详情页标题下图片+文字备注栏 */
.news-lead-fig { margin: 10px 0 26px; }
.news-lead-fig img { display: block; width: 100%; height: auto; border-radius: 8px; }
/* photo402(09-14 16:21): 新闻详情页题图宽度不变,高度调为 宽:高=4:3(object-fit:cover居中裁切);
   仅直接子img生效——photo397专利双证并列图(div内img)保持整图显示不受影响 */
.news-lead-fig > img, .news-lead-fig > picture > img { aspect-ratio: 4 / 3; object-fit: cover; }
.news-lead-fig figcaption { margin: 0; padding: 9px 14px; color: #4a5a63; font-size: .82rem; line-height: 1.6; text-align: center; }
@media (max-width: 768px) {
  .news-lead-fig { margin: 8px 0 20px; }
  .news-lead-fig figcaption { font-size: .76rem; padding: 8px 10px; }
}
/* photo345(22:44): 首页技术专业洞察卡片"阅读全文"上方配图 */
.card-insight-img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 6px; margin: 8px 0 10px; }
/* photo399(09-14 16:03): 新闻列表卡片配图宽度不变,高度调为 宽:高=4:3(仅新闻板块,其它页保持16:9) */
.news-card-grid .card-insight-img { aspect-ratio: 4 / 3; }
/* photo400(09-14 16:10): 新闻列表卡片标题恢复左对齐(仅新闻板块;技术中心/首页洞察保持photo383居中) */
.news-card-grid .card-body h3 { text-align: left; }
@media (max-width: 768px) {
  .card-insight-img { margin: 6px 0 8px; }
}

/* photo457(09-14 22:59): 全站内容板块加粗黑字统一改品牌蓝——24个文章/案例/新闻/指南页 .article-body 内的 strong/b(原继承--color-text #1A1A2E 近黑)统一 var(--color-primary);
   不动: 已是蓝色的(.product-params strong/aaa-credit inline)、彩色inline(contact.html 高德导航teal)、标题类(h1-h3此前已蓝) */
.article-body strong,
.article-body b {
  color: var(--color-primary);
}

/* geo-products(09-20 20:20): 核心定制产品卡"查看详情"入口(右上角) + GEO产品详情页组件 */
.p9-card { position: relative; }
.p9-detail-link {
  position: absolute; top: 18px; right: 12px; z-index: 3;
  display: inline-flex; align-items: center; justify-content: center;
  height: 38px;                                               /* photo543(张总指令): 与左侧编号徽章 .p9-no 上下对齐 */
  font-size: 12px; font-weight: 600; text-decoration: none;
  color: var(--color-primary); background: var(--color-primary-light);
  border: 1px solid #bfdbfe; border-radius: 12px; padding: 0 10px;
  transition: var(--transition);
  box-sizing: border-box;
}
/* photo543 对齐推导(2026-09-22 20:00 张总指令「右侧查看详情与左侧 1、2 上下对齐」):
     .p9-no 顶边 = .p9-card border-top(3px) + padding-top(18px) = 卡片外边缘起 21px, 自身高 38px → 下边缘 59px;
     绝对定位元素的包含块是 .p9-card 的 padding-box(顶边 = 卡片外 +3px), 故 top:18px 使按钮上缘落在 21px;
     height:38px 使下缘落在 59px, 与编号徽章上下齐平。
     .p9-card 的 padding 在全部媒体查询中均未被覆写, .p9-no 恒为 38×38, 因此所有断点下对齐成立。
     按钮水平 padding 仍为 10px(原 3px 10px → 0 10px), 宽度不变, .p9-row1 的 padding-right 无需调整。 */
.p9-card:nth-child(even) .p9-detail-link { color: #007a4d; background: var(--color-green-light); border-color: #a7f3d0; }
.p9-detail-link:hover { text-decoration: none; }
.p9-row1 { padding-right: 66px; }
@media (max-width: 768px) {
  /* photo839(张总指令): 移动端序号/标题/副标题/按钮缩小, 标题一行、副标题一行
     对齐保持(photo543推导): 编号顶=卡border3+padding18=21, 编号30高 → 下缘51; 按钮top18+height30 → 21~51 齐平 */
  .p9-detail-link { top: 18px; right: 10px; font-size: 10px; padding: 0 6px; height: 30px; }
  .p9-row1 { gap: 10px; padding-right: 0; }
  .p9-no { width: 30px; height: 30px; font-size: 0.8rem; border-radius: 8px; }
  .p9-body h3 { font-size: 11px; margin-bottom: 3px; padding-right: 60px; }
  .p9-body h3 .en-abbr { margin-left: 4px; padding: 1px 4px; font-size: 10px; top: -1.75px; }  /* photo847: 移动端偏差实测 1.75px */
  .p9-body p { font-size: 12px; }
}
/* GEO 详情页: 标准定义块(给AI抓取的标准答案位) */
.geo-def {
  background: var(--color-primary-light); border-left: 4px solid var(--color-primary);
  padding: 14px 18px; border-radius: 8px; margin: 10px 0 20px;   /* photo833: 四角统一 8px(张总指令 左侧倒圆角与右侧一致,同 .geo-answer photo819 定案) */
}
.geo-def p { margin: 0 0 6px; }
.geo-def .geo-syn { font-size: .85rem; color: var(--color-text-light); margin: 0; }
/* GEO 详情页: 工艺流程条 */
.geo-flow { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 10px 0 18px; font-size: 13px; }
.geo-flow span { background: #eff6ff; border: 1px solid #bfdbfe; color: var(--color-primary); padding: 5px 10px; border-radius: 14px; font-weight: 600; }
.geo-flow b { color: #94a3b8; }
/* GEO 详情页: 可折叠操作/维护/注意事项 */
details.geo-fold { border: 1px solid var(--color-border); border-radius: 8px; margin: 10px 0; padding: 10px 14px; background: #fff; }
details.geo-fold summary { cursor: pointer; font-weight: 700; color: var(--color-primary); }
details.geo-fold[open] summary { margin-bottom: 8px; }

/* ===== GEO审阅标记（审阅版专用，定稿后全站移除 geo-rev 与本行） ===== */
.geo-rev{color:#d32f2f!important;font-weight:700}

/* ===== GEO round4 组件（审阅版） ===== */
/* photo744: qm-chips flex一行 → 3列2行等宽网格(张总选定),仅首页区块C3使用 */
.qm-chips{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 12px;margin-top:16px}
.qm-chip{border:1.5px solid var(--color-primary);color:var(--color-primary);border-radius:20px;padding:8px 12px;font-weight:600;font-size:14px;transition:var(--transition);display:flex;align-items:center;justify-content:center;text-align:center;min-height:42px}
.qm-chip:hover{background:var(--color-primary);color:#fff;text-decoration:none}
.qual-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:18px}   /* photo562: 列间距 14→28,与.card-grid统一 */
@media (max-width:640px){.qual-strip{grid-template-columns:repeat(2,1fr)}}
/* =========================================================================
   photo546 (2026-09-22 张总指令)：资质速览卡片「宽度不变，高度拉高到 高:宽 = 16:9，图片最大化」
   原状：卡片 374.7 × 150.2（高:宽 = 1 : 2.495），图 64×64 + object-fit:cover（证书被裁成方形小块）
   做法：① 卡片改 flex 纵向 + aspect-ratio:9/16 —— 宽度仍由 .qual-strip 的网格列宽决定，高度按比例拉高；
        ② 图宽 100%（受列宽约束即为最大），height:auto 保持证书原比例、object-fit:contain 不裁切；
        ③ 全局 img{display:block} 会让图靠左，现由 flex 的 align-items:center 居中。
   ⚠️ photo565：原方案 height:calc(100% - 62px) 只能让「CSS 图片框」等高等宽，但 15 张证书原图
      h/w 本身不一致(1.399~1.472)，object-fit:contain 对每张的留白不同 → 同一行内“证书本体”
      的上/下缘最多相差 12.3px（第4行 专利/著作权/涉水批件 最明显）。
      现改为两步：① 15 张缩略图统一补边到 h/w=1.4716（只补边、零裁切）→ images/cert/u/；
      ② 图框随证书比例自适应 height:auto + aspect-ratio:1073/1579
      ⇒ 15 个图框尺寸完全一致，每行上/下缘严格对齐（实测偏差 ≤0.3px，亚像素级）。
   ⚠️ 注意：15 张证书原图实际全部为竖版(h/w 1.399~1.472)，无横版。
   ⚠️ 卡片 aspect-ratio:9/16 保持不变 → 区块总高度不变，其余版块无位移。
   ========================================================================= */
.qual-mini{display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:9/16;min-width:0;background:#fff;border:1px solid #d3dae3;border-radius:10px;padding:12px 10px;text-align:center;transition:var(--transition);box-shadow:0 1px 3px rgba(0,0,0,.06)}   /* photo655: 边框加深一档+轻阴影,卡框在浅灰底上清晰可见 */
.qual-mini:hover{box-shadow:0 6px 20px rgba(0,0,0,.10);transform:translateY(-2px);text-decoration:none}
/* photo565: 图框贴合证书比例(统一补边后 h/w=1.4716), 15 张严格同尺寸 → 每行上/下缘对齐 */
.qual-mini img{width:100%;height:auto;aspect-ratio:1073/1579;box-sizing:border-box;object-fit:contain;flex:0 0 auto;border-radius:8px;border:none}   /* photo655: 去 img 自身边框(证书自带黑框),卡框为唯一图框 */
/* photo581（2026-09-23）：资质速览标注配色 —— 上一行(名称)调为品牌蓝、下一行(编号)调为黑色且不加粗
   ⚠️ 07~14 商标卡与 15 著作权卡的文字被 <b class="geo-rev"> 包裹，而 .geo-rev 有
      color:#d32f2f!important 红标 → 只改 .qm-t/.qm-no 这两行不生效（继承被 b 自身覆盖），
      必须再补 .qm-t b / .qm-no b 两条：特异性 (0,2,1) > .geo-rev (0,1,0) 且带 !important 才能压过。
   ⚠️ 03/06 专利、04 AAA、01/02/05 未包 geo-rev，仅靠上面两行即生效 → 15 张卡统一为「上蓝下黑」。
   ⚠️ 字号/行距/外边距全部未动：qm-t 仍 14px/margin-top 10、qm-no 仍 12px/margin-top 4。 */
.qual-mini .qm-t{font-weight:700;color:var(--color-primary);font-size:13px;margin-top:10px}   /* photo688: 14->13px,张总指令整体缩小字体一行排列 */
.qual-mini .qm-no{font-weight:400;color:#000;font-size:12px;margin-top:4px}
.qual-mini .qm-t b{color:var(--color-primary)!important;font-weight:700!important}
.qual-mini .qm-no b{color:#000!important;font-weight:400!important}
.case-facts{list-style:none;margin:8px 0 10px;padding:10px 12px;background:#f8fafc;border-left:3px solid var(--color-primary);border-radius:0 6px 6px 0;font-size:13px;line-height:1.7}
.case-facts li b{color:var(--color-primary);margin-right:6px}
.todo-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:28px;margin-top:18px;align-items:start}   /* photo562: 16→28,与.card-grid统一 */
.todo-card{border:2px dashed #d32f2f;border-radius:10px;padding:18px;background:#fff8f8}
.todo-card .todo-img{height:120px;background:#ffecec;border:1px dashed #d32f2f;border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:30px;color:#d32f2f;font-size:13px;font-weight:600} /* photo634: 12->30px 图片下面空一行 */
.todo-card img{margin-bottom:24px}.todo-card h4{margin:0 0 8px;font-size:15px}
.invest-table{width:100%;border-collapse:collapse;margin-top:16px;font-size:14px}
.invest-table th,.invest-table td{border:1px solid var(--color-border);padding:10px 12px;text-align:left}
.invest-table th{background:var(--color-primary-light);color:var(--color-primary)}
.geo-answer{border-left:3px solid var(--color-primary,#0066CC);background:#f0f6ff;padding:12px 16px;border-radius:8px;margin:28px 0;   /* photo827: 上下间距 16→28 对齐首页资质卡槽 gap 28px, 全站 84 处统一 */font-size:15px;color:#1a1a2e;line-height:1.6}   /* photo819: 左侧也倒 8px 圆角(张总指令 左侧像右侧一样倒圆角), 全站 84 处统一 */
p.geo-note{border:1px dashed #bbb;background:#f5f7fa;border-radius:8px;padding:12px 16px;margin:20px 0;font-size:14px;color:#5a5a72;line-height:1.7}
.geo-note strong{color:var(--color-primary)}

.tm-matrix{margin-top:26px}
.tm-title{font-size:18px;margin:0 0 14px;text-align:center}   /* photo624: 三小节标题居中 */
/* =========================================================================
   photo592（2026-09-24 张总指令「调整为 2 行 4 列」）：注册商标矩阵 8 张证书
   原状 auto-fill/minmax(150px) → 桌面 7 列（8 张 = 7 + 1 张孤行）
   改为固定 4 列 → 2 行 4 列。实测卡片宽 152.6 → 277.5px，证书图 aspect-ratio:3/4 同步放大。
   ⚠️ 必须补降列档：固定 4 列后窄屏会把卡片挤到 60px 宽（>3 列时 auto-fill 会自动降，固定列不会）。
   ========================================================================= */
.tm-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
@media(max-width:1024px){.tm-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:640px){.tm-grid{grid-template-columns:repeat(2,1fr)}}
.tm-item{display:block;background:#fff;border:1px solid var(--color-border);border-radius:10px;overflow:hidden;text-align:center;transition:transform .2s,box-shadow .2s}
.tm-item:hover{transform:translateY(-3px);box-shadow:0 6px 18px rgba(0,102,204,.15)}
.tm-item img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;border-radius:8px}   /* photo818: 商标卡图与上方资质卡(qual-mini img photo655)一样倒 8px 圆角 */
.tm-item span{display:block;padding:8px 6px;font-size:12px;color:#333;line-height:1.5}
/* =========================================================================
   photo592（2026-09-24 张总指令「上面一行字调为蓝色，下面一行字调为黑色、不加粗」）
   对象：商标矩阵 8 张证书卡下方的标注。原为单行「ZON·HEA 第7类 · 第31186864号」，
        在 152.6px 窄卡里自然折成两行；现卡片放宽到 277.5px 后不再折行，
        故把文案**显式拆成两个 block 元素**，才能分别着色：
          上行 .tm-t  = 商标名 + 类号（品牌蓝、加粗 700）
          下行 .tm-no = 注册号（黑色、不加粗 400）
   🔴 两个 <b> 仍保留 .geo-rev 包裹（该标记语义是"待人工确认"，定稿后统一移除），
      而 .geo-rev 是 color:#d32f2f!important → 必须「更高特异性 + 同样 !important」才压得过：
      .tm-item span .tm-t / .tm-no = (0,2,1) > .geo-rev (0,1,0)。同 photo581 资质速览卡配方。
   ⚠️ 字号 12px / 卡片 padding 8px 6px 全部未动。
   ========================================================================= */
.tm-item span .tm-t{display:block;font-weight:700;color:var(--color-primary)!important}
.tm-item span .tm-no{display:block;font-weight:400;color:#000!important;margin-top:2px}

.tm-text{margin-top:26px;background:#f7fafd;border:1px solid var(--color-border);border-radius:10px;padding:18px 20px}
/* photo592（张总指令「调整为 2 行 4 列」）：商标文字档案 8 条 → 固定 4 列（2 行 4 列）
   原 auto-fill/minmax(290px) 桌面为 3 列（3+3+2）；4 列时列宽 261px（容器 1110 − 3×22 间距） */
.tm-list{margin:12px 0 0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:10px 22px}
@media(max-width:1024px){.tm-list{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.tm-list{grid-template-columns:1fr}}
.tm-list li{font-size:14px;color:#333;line-height:1.7;border-bottom:1px dashed #e0e0e0;padding-bottom:8px}

/* =========================================================================
   photo592（2026-09-24 张总指令「红色字体调整为蓝色」，范围经张总确认＝三个小节标题统一改蓝）
   对象：① .tm-title 三个小节标题「注册商标矩阵（8 件）」「商标文字档案（…）」「官方资质在线查验入口（…）」
        ② .tm-list 8 条清单里的商标名 <b>
        ③ .verify-intro 正文里的强调词 <b>
   三处原本都被 <b class="geo-rev"> 包裹显示为红 #d32f2f。
   🔴 与 photo581 同款配方：保留 .geo-rev（语义="待人工确认"，定稿后统一移除），
      靠「更高特异性 + !important」压过 .geo-rev 的 color:#d32f2f!important。
   ⚠️ 全站其它 .geo-rev（about.html 其余 21 处、其它页面）**不受影响，仍为红色**。
   ========================================================================= */
.tm-title b{color:var(--color-primary)!important}
.tm-list li b{color:var(--color-primary)!important}
.verify-intro b{color:var(--color-primary)!important}

/* ===== 「天然水」口径待决策标记（张总 2026-09-22 指令：凡带"天然水"的用红色字体标记，暂不统一口径） =====
   临时视觉标记，仅用于人工排查；口径确定后删除本段 CSS 并移除页面上的 .mark-nw 包裹即可。 */
.mark-nw{color:#d92b2b!important;font-weight:700}

/* ===== 官方资质在线查验（about.html 资质荣誉区，GEO 可验证性增强） ===== */
.verify-box{margin-top:30px;background:#fff;border:1px solid var(--color-border);border-radius:12px;padding:22px 24px}
.verify-intro{margin:10px 0 18px;font-size:14px;color:#3a3a52;line-height:1.75}
/* photo592（张总指令「调整为 3 行 3 列」）：官方资质查验 9 卡 → 固定 3 列
   原 auto-fill/minmax(266px) 桌面为 4 列（4+4+1）；3 列时列宽 359.3px（容器 1102 − 2×12 间距） */
.verify-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media(max-width:1024px){.verify-grid{grid-template-columns:repeat(2,1fr)}}
.verify-card{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;background:#f7fafd;border:1px solid var(--color-border);border-radius:10px;text-decoration:none;transition:transform .2s,box-shadow .2s,border-color .2s}
.verify-card:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,102,204,.12);border-color:var(--color-primary)}
.verify-card .vf-icon{font-size:20px;line-height:1.2;flex:0 0 auto}
.verify-card .vf-name{font-size:14.5px;font-weight:600;color:var(--color-primary);line-height:1.5;margin-bottom:3px}
.verify-card .vf-desc{font-size:12.5px;color:var(--color-text-light);line-height:1.6}
.verify-note{margin:16px 0 0;font-size:12.5px;color:var(--color-text-muted);line-height:1.7}
@media(max-width:560px){.verify-grid{grid-template-columns:1fr}}

/* =========================================================================
   photo571(2026-09-23 张总指令「处理之后红色标记一下，让我看到效果」)
   临时红色审阅标记：**仅 769~1024px 生效**，把 photo568 修的两个点位圈出来。
   修复内容：① 页头 —— 导航(9项,自然宽 943.3) 收进右侧汉堡抽屉，页头不再需 ~1138px；
             ② 页脚 —— .footer-beian 由 flex/nowrap 改 block 居中，改三行居中堆叠。
   🔴 实测(photo571)：769/770/780/900/1024 五档 document.scrollWidth == clientWidth、
      越界元素 0；抽屉 9/9 项可达；页脚备案行(298.9px) 在 .footer-bottom 内居中。
   ⚠️ 本段仅为让张总肉眼看到效果，**确认后整段删除即可**（HTML 零改动，不影响任何既有属性）。
   ========================================================================= */
@media (min-width: 769px) and (max-width: 1024px) {
  .site-header { outline: 2px dashed #d92b2b; outline-offset: -2px; }
  .site-header::after {
    content: "① 769~1024px 页头修复区：导航已收进右侧汉堡抽屉 · 横向零溢出";
    position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
    font-size: 11px; line-height: 1.4; font-weight: 700; color: #d92b2b;
    background: #fff; border: 1px solid #d92b2b; border-radius: 4px;
    padding: 3px 10px; white-space: nowrap; z-index: 3000; pointer-events: none;
  }
  .menu-toggle { outline: 2px solid #d92b2b; outline-offset: 3px; }
  .footer-bottom { outline: 2px dashed #d92b2b; outline-offset: 6px; }
  .footer-beian { outline: 2px solid #d92b2b; outline-offset: 3px; }
  .footer-beian::after {
    content: "　← ② 769~1024px 备案行修复区：三行居中堆叠 · 右缘在容器内";
    font-size: 11px; font-weight: 700; color: #d92b2b; white-space: nowrap;
  }
}

/* =========================================================================
   photo572(2026-09-23 张总指令「字体的粗细做调整，调整以后再加浅灰色的分隔线，
   做出来的效果跟 image#2 保持一致」)
   对象：image#1 = 首页「三大集成系统」卡片的 .product-params 参数区
         （同款结构另见 products.html「三大产品卡」，共 2 页 × 3 卡 = 6 处）
   参照：image#2 = 同页案例卡参数区 .case-list.home-cases .case-stats（photo545 定案）
   实测差异（把两张回传图按同一 DPR=2 归一后量得）：
     · 数值墨高   26px → 36px（≈1.40×）      → .product-params li strong 0.88rem → 1.2rem
     · 数值/标签笔画比 1.33 → 2.33（≈1.75×）  → font-weight 600 → 700（字号贡献 1.45×，余下即字重）
     · 分隔线     无 → 顶部 1px dashed rgba(0,102,204,0.18)（.case-stats 同款色值，张总称"浅灰色"）
     · 底色       灰 #F5F7FA 圆角块 → 白底无块（image#2 参数区即白底，仅靠一条虚线分隔）
   改动仅落在 .product-params 自身，标签字号/灰色文字色沿用原值不动。
   ⚠️ 若张总要求"保留灰底"，只需删掉下面 .product-params 里的
      background / border-radius / padding 三行并加回 padding:14px，一条回复即可回退。
   ========================================================================= */
.product-params {
  background: none;                                             /* photo572: 灰底块 → 白底 */
  border-radius: 0;
  padding: 16px 0 0;                                            /* 左右内距归零：行首与卡片正文栏对齐（同 .case-stats） */
  border-top: 1px dashed rgba(0, 102, 204, 0.18);                /* photo572: 浅灰虚线分隔线，色值与 .case-stats 一致 */
}
.product-params li { align-items: baseline; }                    /* 值字号大于标签，须按基线对齐（同 .case-stats .stat） */
.product-params li strong {
  font-weight: 700;                                             /* photo572: 600 → 700 */
  font-size: 1rem;                                              /* photo629: 1.2rem → 1rem，右侧蓝色值调小至与平面布局协调 */
  letter-spacing: -0.3px;
  line-height: 1.2;
}

/* =========================================================================
   photo573(2026-09-23 张总指令「缩减图片以及整个板块上面、下面的空出来的空间，
   让整体更行距更紧凑、更协调」)
   对象：首页「资质速览」区块 —— `.qual-strip` / `.qual-mini`（全站仅 index.html 使用，15 张证书卡）
   实测现状（1440px，改前）：
     · 卡内：图片上方 43px、编号下方 43px 空白（卡高被 aspect-ratio:9/16 强行撑到 649.47px，
       内容只需 563.4px → 富余 86.1px 由 justify-content:center 平摊到上下）
     · 视觉行距 = 43(卡底空) + 28(网格 gap) + 43(次行卡顶空) = **114px**，明显发空
     · 板块上下：padding-top 28 / padding-bottom 32；标题底→网格顶 18px
   改动：
     ① `.qual-mini` 取消 `aspect-ratio:9/16` → 高度改由内容决定，卡内上下空白 43/43 → 14/16
        （⚠️ 不能用"把 9/16 调小"来省空间：卡片高度与宽度成比例，而说明文字是固定高，
          换任何固定比例都无法在各断点同时贴紧 —— 只内容自适应才成立）
     ② `.qual-mini` padding 12px 10px → 14px 10px 16px
     ③ `.qual-strip` margin-top 18 → 12（标题到首行的空隙）
     ④ 板块 padding-top 28 → 18、padding-bottom 32 → 20（在 index.html 该 section 的行内样式上改）
   不改：网格 gap / 列数（photo562 定"列间距 28px 与 .card-grid 统一"）、图片框比例
        （photo565 定 img aspect-ratio:1073/1579，15 张同尺寸、每行上下缘对齐）、
        说明文字字号与间距（.qm-t margin-top 10 / .qm-no margin-top 4 均为原值）。
   预期：卡高 649.47 → 约 593.4（−56/行 × 5 行）；视觉行距 114 → 58px；板块总高约 3478 → 约 3182px。
   ========================================================================= */
.qual-mini {
  aspect-ratio: auto;                                           /* photo573: 取消 9/16 固定高比，高度随内容 */
  padding: 14px 10px 16px;                                      /* photo573: 原 padding:12px 10px */
  justify-content: flex-start;                                  /* photo573: 原 center。窄屏(≤430)说明文字可能换行成 2 行，
                                                                   同行卡片被网格 stretch 拉齐后，center 会把 1 行卡的内容整体下移
                                                                   → 该行图框上/下缘错位 10.19px（实测 390/430px）。
                                                                   flex-start 让图（首个子元素）恒贴 padding 上缘 → 每行图框
                                                                   上/下缘严格对齐（photo565 的既定要求），多余空间落到底部。
                                                                   ≥560px 无富余空间，此声明无实际影响。 */
}
.qual-strip { margin-top: 12px; }                               /* photo573: 原 18px */

/* =========================================================================
   photo574(2026-09-23 张总指令「移动端，图片是否也可以调整为1行3列的布局？」)
   对象：首页「资质速览」.qual-strip —— 移动端由 **2 列改为 3 列**（1 行 3 张）
   实测依据（保持卡内零横向溢出的前提下逐档试算 768→320）：
     · 只改列数、不动间距/字号 → 390px 可用 78.7px 装「ZL202321894295.2」等不可断长串
       → 375/360px 出现 **卡内横向溢出 2 处**（文字顶破卡片）→ 必须同步收紧
     · 定案（单一档，≤640 全部生效）：gap 28→14、卡内距 14/10/16→13/7/15、
       说明字号 14/12→12.5/11、并给说明文字加 overflow-wrap:anywhere 兜底
   实测（改后）：
     · 卡内横向溢出 **0**（320~640 全档）；文档 scrollWidth==clientWidth 全 ✓
     · 可见越界元素与改前**逐一相同**（320px 4 个、360/390px 1 个，均为既有
       `A.btn 查看详情` ×3 与 `B.geo-rev （验收单备查）`）→ **本轮零新增溢出**
     · 行数 8 → **5 行**；板块总高 390px: 2773 → **1404**（−49%）
     · 说明文字换行：≥560px 全 1 行；390/375px 最多 2 行（.qm-no 最长项 2~3 行）
   ⚠️ 该 block 必须在 L4189 的 `@media (max-width:640px){.qual-strip{repeat(2,1fr)}}`
      之后（同特异性，靠源序覆盖）—— 本 block 位于文件末尾，满足。
   不改：桌面端（>640px）一律不动；网格 gap 在 >640 仍是 28px（photo562 约定）。
   ========================================================================= */
@media (max-width: 640px) {
  .qual-strip { grid-template-columns: repeat(3, 1fr); gap: 14px; }
  .qual-mini { padding: 13px 7px 15px; }
  .qual-mini .qm-t { font-size: 9.5px; margin-top: 8px; }   /* photo688: 12.5->9.5px;10px实测360px下CMA卡(最长8.42em)折2行,9.5px后全档单行;二类卡已减为8字 */
  .qual-mini .qm-no { font-size: 11px; margin-top: 3px; }
  .qual-mini .qm-t,
  .qual-mini .qm-no { overflow-wrap: break-word; }
  /* photo574: 用 overflow-wrap:break-word（**不是** anywhere / word-break:break-word）——
     两者都能防溢出，但 anywhere 会为"填满行宽"而在任意字符处断行（实测 375px 出现
     「ZON·HEA 第35 / 类」把单字挤到次行）；break-word 优先在空格断，
     编号换行卡数 5/15 → 3/15，更整齐，且卡内横向溢出仍为 0。 */
}

/* =========================================================================
   photo575(2026-09-23 张总指令「AAA放到涉水卫生许可批件前面」)
   仅调整 **index.html 资质速览 .qual-strip 的卡片顺序**，本文件零改动（无新规则）。
   顺序：… 专利(03,06) → 著作权(15) → **AAA级信用企业(04)** → 涉水卫生许可批件(01)
         → CMA检测报告(02) → 二类医疗器械经营备案(05)
   改法：整行 HTML 元素剪切 + 原位插入（标签属性与图片戳原样保留，零重写）。
   ========================================================================= */

/* =========================================================================
   photo576(2026-09-23 张总指令「客户合作实证板块的每个项目的合同是否可以只放首页就行？」)
   仅改 **cases.html「客户合同实证」板块（id=contracts）**，本文件零改动（无新规则）。
   · 13 个项目由「每项目 3 张（封面 + 正文 + 签章/报价/编制说明）」→ **每项目只留 1 张合同首页/封面**，
     共 36 张 → 13 张（cases.html 68,618 → 50,138 bytes）。
   · 被撤的 <figure> 整块移除，**图片文件全部保留在 images/contracts/**（可随时加回）。
   · 每个项目的栅格容器加 `justify-items:center`，图框加 `width:100%;max-width:400px` ——
     否则 `repeat(auto-fit,minmax(280px,1fr))` 少子项时会**塌成单轨把唯一一张图拉伸到整容器宽**(1152px)。
   · 🔴 注意：13 张封面**均无双方公章**（最大红色连通块 ≤54×58px，系红字/红编号）；
     公章只存在于本次撤下的「签章页」。故板块内「双方盖章与项目要素完整可验」「双方公章均完整保留」
     两句表述已与实际不符，待张总定夺（加回签章页 or 改文案）。
   ========================================================================= */

/* =========================================================================
   photo577(2026-09-23 张总指令「去掉右上角的竖划线」)
   仅改 **1 张图片** images/cert/u/07-注册商标-ZONHEA-第7类.jpg，本文件零改动（无新规则）。
   · 杂点：扫描件右上角纸面空白处一道孤立竖划线，x 946~951、y 81~108（1000×1472 画布内，蓝框右上方）
   · 修法：取该处外圈 4px 环的中位色（254,254,254）覆盖杂点 bbox+2px 余量；画布尺寸不变 →
     与其余 14 张的「每行上/下缘严格对齐」不受影响。修补区外平均像素差 0.036（纯 JPEG 重压）
   · index.html 该图戳 20260923-photo569 → **20260923-photo577**（另 14 张仍 photo565/570）
   · 🔴 原图 images/cert/07-注册商标-ZONHEA-第7类.jpg（href 点开的"法律原件备查"扫描件）**未动**，
     该杂点在原图上同样存在 —— 如要一并清理需张总明示（改原件有取证风险）
   ========================================================================= */

/* =========================================================================
   photo578(2026-09-23 张总指令「以左侧的实用新型专利的图片大小不变，右侧的图片自动调节大小，
   改变后的高度、宽度与实用新型专利的高度、宽度保持一致」)
   截图 = 资质速览第 4 行三卡：06 实用新型专利(左) | 15 作品著作权登记(中) | 04 AAA 信用企业(右)
   本文件零改动（无新规则），只改 2 张图片：images/cert/u/15-作品著作权登记证书.jpg、04-AAA级信用企业.jpg
   —— 量测（张总回传截图 1920x962，三卡图像盒均 561x826 px，实测证书本体显示尺寸）——
     06 本体显示 470x687 px（占盒 83.94% x 83.38%，基准，不动）
     15 本体显示 561x826 px（占盒 100%  x 100%，  偏大 +19.4%）
     04 本体显示 510x744 px（占盒 90.46% x 89.72%，偏大 +8.5%）
   —— 修法：整图等比缩放 + 居中贴白底，画布尺寸不变（零版式位移）——
     15：等比 0.83659 -> 837x1231 贴于 (81,120)   画布仍 1000x1472
     04：等比 0.92781 -> 1313x1932 贴于 (51,75)   画布仍 1415x2082
   改后本体占比：15 = 83.70% x 83.63%（显示 470x691，vs 基准 -0.1%/+0.5%）
                 04 = 83.89% x 83.24%（显示 471x688，vs 基准 +0.1%/+0.1%）
   · index.html 这 2 张图戳 20260923-photo565 -> **20260923-photo578**（其余 13 张仍 photo565/570/577）
   · 🔴 原图 images/cert/15-*.jpg、04-*.jpg **未动**；images/cert/u/ 经核实仅 index.html 引用
   · ⚠️ 副作用待张总定夺：04 原本是 photo570 定下的 AAA 基准（02/05 已裁到与它同尺寸），
     本次缩到与 06 一致后，第 5 行的 02/05 会比第 4 行的 04 大 ≈8%。是否同步缩 02/05（或回退 04）待示。
   ========================================================================= */

/* =========================================================================
   photo579(2026-09-23 张总指令「右侧两张图片上、下拉高，拉至与左侧实用新型专利整张图片的上、下对齐」)
   截图 = 资质速览第 4 行：06 实用新型专利(左) | 15 作品著作权登记(中) | 04 AAA 信用企业(右)
   本文件零改动（无新规则），只改 2 张图片：images/cert/u/15-作品著作权登记证书.jpg、04-AAA级信用企业.jpg
   —— 全局实测（内容盒判据 min(通道)<240 + 行列 >=0.5% 尺寸，图像像素）——
     03 双重密封专利  1357x1997  ->  1357x1916 @(0,42)   100.0% x 95.9%  ← 满铺基准
     06 罐体过滤专利  1357x1997  ->  1357x1916 @(0,42)   100.0% x 95.9%  ← 满铺基准
     15 作品著作权    1000x1472  ->   837x1231 @(81,120)  83.7% x 83.6%  ← photo578 缩小后，偏小
     04 AAA 信用企业  1415x2082  ->  1189x1735 @(114,174) 84.0% x 83.3%  ← photo578 缩小后，偏小
     01 涉水批件 / 02 检测报告 / 05 器械备案 = 88.0~89.6% x 88.0~98.7%（第 5 行，本轮未动）
   → 03/06 两证为「米黄纸满铺图片四边」，15/04 为「白纸 + 纯白留白」，故视觉上左侧顶天立地、
     右侧两张缩在中间 —— 张总要求把右侧两张拉高对齐。
   —— 修法：裁出可见内容盒，等比放大到满铺画布、垂直居中贴回白底（画布尺寸不变，零版式位移）——
     15：内容 837x1231 @(81,120)  等比 1.19474 -> 1000x1471 贴 (0,0)   画布仍 1000x1472  (底留 1px)
     04：内容 1189x1735 @(114,174) 等比 1.19008 -> 1415x2065 贴 (0,8)  画布仍 1415x2082  (上下各 8px 白)
   改后内容占比：15 = 100.0% x 99.9%（与 03/06 同为满铺宽）
                 04 = 100.0% x 99.2%
   · 等比放大，**零裁切**（内容盒外圈即留白，不触碰印刷边框/公章）
   · index.html 这 2 张图戳 20260923-photo578 -> **20260923-photo579**（其余 13 张仍 photo565/570/577）
   · 🔴 原图 images/cert/15-*.jpg、04-*.jpg **未动**；images/cert/u/ 经核实仅 index.html 引用
   · 🔴 本版是 photo578 的**方向反转**（photo578 把 15/04 缩到 83.7%/83.9%，本版放大回满铺）。
     photo578 那段中的「改后本体占比 83.70%/83.89%」历史记录保留，但已不再生效。
   · ⚠️ 第 5 行 01/02/05 现为 88.0~89.6% x 88.0~98.7%，比第 4 行满铺小一圈，是否一并拉高待张总示。
   ========================================================================= */

/* =========================================================================
   photo580(2026-09-23 张总指令「实用新型专利图片的大小不变，作品著作权、AAA 整体调整放大：
   与专利图片的（**不是里面的方框，而是整个图片的外框**）高度一致、宽度一致」)
   —— 该句明确纠正 photo578 的基准选择：photo578 以 06 的**印刷方框**(占图 83.94%x83.38%)
      为基准把 15/04 缩小；张总要的是与 06 的**整张图片外框**一致 => 内容必须铺满整张画布。
   截图 = 资质速览第 4 行：06 实用新型专利(左) | 15 作品著作权登记(中) | 04 AAA 信用企业(右)
   本文件零改动（无新规则），只改 2 张图片：images/cert/u/15-作品著作权登记证书.jpg、04-AAA级信用企业.jpg
   —— 为什么 06 看起来"顶天立地"而 15/04 缩在中间 ——
     06/03 两张专利证的扫描件是**米黄纸铺满图片四边**（顶 3% 起即 (254,251,244)，米黄占比 99.8%），
     15/04 是白纸 + 大量纯白留白（顶 0-8% 纯白 100%），故同样图框下观感一小一大。
   —— 修法：裁出可见内容盒，**直接重采样铺满整张画布**(100% x 100%)，零白边、零裁切 ——
     15：内容 837x1231 @(81,120)   -> 1000x1472   sx=1.19474 sy=1.19578（差 0.087%，可忽略）
     04：内容 1189x1735 @(114,174) -> 1415x2082   sx=1.19008 sy=1.20000（差 0.834%）
     源取自 photo578 后的 u 版（backup_cert579），避免二次重采样；画布尺寸不变、零版式位移。
   改后内容占比：15 = 100.0% x 100.0%  04 = 100.0% x 100.0%（03/06 基准同为 100% 宽）
   · ⚠️ 04 存在 0.834% 非等比（内容 h/w=1.4592 vs 画布 1.4714）—— 等比则高只能到 99.2%
     (上下各约 2 CSS px 白)、cover 则须切掉左/右各约 5px 并命中证书竖向边框线，
     故按 photo570 既定原则「允许 ≤5% 非等比」取非等比 —— 视觉不可辨。
   · index.html 这 2 张图戳 20260923-photo579 -> **20260923-photo580**
   · 🔴 原图 images/cert/15-*.jpg、04-*.jpg **未动**
   · 📌 本版取代 photo578 的「缩到与印刷方框一致」与 photo579 的「宽度满铺(99.9%/99.2%)」两版结论。
   ========================================================================= */

/* =========================================================================
   photo598 (2026-09-24 02:4x 张总指令)：案例页大卡高度全部统一，以「河南水厂」为基准
   张总原话：「[安徽凯誉 8T/H][阳光清泉 48T/H][泉上泉 全套] 超过了 [河南水厂 50T/H] 的高度，
              整个板块的高度以 [河南水厂] 为基础，全部调统一」
   -------------------------------------------------------------------------
   根因（1440px 实测）：卡高由**正文**驱动，不是图区 ——
     · 图区 width 449.22px + aspect-ratio 4/3 = 336.92px（min-height 333px 不绑定）
     · 正文自然高 447.03 / 472.88px 更大 → align-items:stretch 把图区拉伸到卡高
     · 正文内部唯一变量 = .case-desc 描述文字**换行行数**（0.95rem × 1.7 = 25.84px/行）：
         河南水厂 / 江苏水厂  1 行  → 卡高 449.03
         其余 8 张            2 行  → 卡高 474.88      差 25.85px（恰一行行高）
   -------------------------------------------------------------------------
   改法（三件套）：
     ① .case-desc 锁 2 行高 51.68px（0.95rem×1.7×2）
        → 10 张卡内部节奏完全一致：tags/h3/desc/facts/stats/button 起点 y 全部相同
        → 1 行描述的卡在**描述块内**留一行空白（等同正常段间距）；
          ✗ 不采用「保持原样、末尾补高」——那会让按钮不贴卡底，观感是缺陷
     ② .case-body gap 12px → 7px（5 个间隙共腾出 25px，抵掉 ① 吃掉的高度）
     ③ ≥901px 容器 .case-list 由 flex 列改为 grid + grid-auto-rows:1fr
        → 任意桌面宽度下 10 张卡**严格等高**（行高 = 最高那张的正文高）
        · 1440 及以上：最高卡正文 = 449.88 → 全部 449.88（与河南水厂原高 449.03 差 0.83px）
        · 901~1151（容器被压缩）：.case-stats 第三个标签会换行，最高卡 472.19 →
          全部 472.19。**这是既有问题的顺带修复**（改前该档极差 22.31px，flex 列布局
          本身没有"等高"机制，无 ③ 时修不到）
   -------------------------------------------------------------------------
   🔴 作用域严格限定 .case-list:not(.home-cases)，**只影响 cases.html**：
      首页「标杆客户案例」用 .case-list.home-cases（3 列 grid，grid 项默认 stretch 本就天然等高），
      :not(.home-cases) 不匹配首页 → 完全不参与级联（实测首页 gap 仍 12px / desc min-height auto）。
   🔴 ③ 包在 min-width:901px 内：≤900px 卡片转单列堆叠，10 张强行等高会浪费大量竖向空间，
      且张总本次只针对桌面截图。移动端 desc/gap 两条不改变结构（窄屏描述都 ≥2 行，min-height 不绑定）。
   ========================================================================= */
.case-list:not(.home-cases) .case-card.case-row .case-desc {
  min-height: 51.68px;            /* photo598①: 0.95rem × 1.7 × 2，锁定描述块 = 两行高 */
}
.case-list:not(.home-cases) .case-card.case-row .case-body {
  gap: 7px;                       /* photo598②: 12px → 7px（5 间隙 −25px） */
}
@media (min-width: 901px) {
  .case-list:not(.home-cases) {
    display: grid;                /* photo598③: flex 列 → grid */
    grid-template-columns: 1fr;
    grid-auto-rows: 1fr;          /* 关键：10 行强制等高 */
  }
}


/* =========================================================================
   photo599 (2026-09-24 03:0x 张总指令)：about.html「商标文字档案」8 条清单字号 14px → 12px
   张总原话：「[截图=该清单] 调整字体大小，缩成2行排列。」
   -------------------------------------------------------------------------
   现状（1440 屏，`.tm-list` = repeat(4,1fr) / gap 10px 22px / ul 宽 1110 → 列宽 261px）：
     14px 时逐条行数 = [3,2,3,3,2,2,2,2] —— 第7/6/11/17 类 3 行，其余 2 行，行高参差 80.39 / 56.59
   二分实测「8 条全部 ≤2 行」的字号上限：
     ul 1110（viewport ≥1200，列宽 261）→ **12.96px**
     ul 1062（1152，列宽 249）→ 12.36 ／ ul 1010（1100，236）→ 11.72 ／ ul 935（1025，217.25）→ 10.79
     ≤1024 转 2 列（列宽 456）→ 15.00（即 14px 本来就够）
   取 **12px**（不是上限 12.96）：留 7% 余量，避免换机器/换字体回退时度量变化把最长那条（第7类
   「核定：机械设备（水处理相关）」）重新挤成 3 行。14 → 12 = −14%，视觉几乎无差。
   -------------------------------------------------------------------------
   🔴 只改字号，**不动** 列数 / gap / line-height / padding —— 张总明说「调整字体大小」，
      其余属扩大范围。已知残留：viewport 1025~1119px 若仍是 4 列（列宽 217~236），
      12px 仍会让最长那条 3 行（该档 14px 时本来 8 条全是 3 行，已优于改前）；
      ≥1140 与 ≤1024 全档达标。
   🔴 不采用 `-webkit-line-clamp` 截断凑 2 行：本条清单的用途是「利于 AI 检索的结构化清单」，
      截断会丢内容，直接损害 GEO 目的。
   ========================================================================= */
.tm-list li {
  font-size: 12px;                /* photo599: 14px → 12px（.tm-list li 特异性 0,1,1，源序在后胜出） */
}

/* ===== photo601 (2026-09-24 04:1x) about 资质卡区：2 行 4 列 =====
   张总指令：「调整为2行4列，这里面的字体大小、颜色、是否加粗等恢复到正常状态」
   ① 字体：已在 about.html 去掉 .qual-grid 内 6 处 <b class="geo-rev"> 包裹
      （.geo-rev = color:#d32f2f!important + font-weight:700 → 恢复常规字号/颜色/字重）
   ② 布局：容器内容宽 1152（.container 1200 − 2×24 padding），gap 40
      3 列时卡宽 357.33 → 改 4 列后 258。只在 ≥1025px 生效；
      ≤1024 仍走原 repeat(auto-fit,minmax(300px,1fr)) 自动降列，移动端不受影响。
   ③ 色条：4 列后原 3n 循环会错位（蓝绿青蓝 / 绿青蓝绿），同步改为 4n+1..4n+4 四色循环。
      第 4 色取 --color-primary-dark（CSS 既有变量，不新增色值）；前 3 色顺序不变，纯位置重排。
   特异性与全局 .qual-card:nth-child(3n+1) 同为 (0,2,0)，靠源序在后胜出。 */
@media (min-width: 1025px) {
  .qual-grid {
    grid-template-columns: repeat(4, 1fr);
  }
  .qual-card:nth-child(4n + 1) {
    border-top-color: var(--color-primary);
  }
  .qual-card:nth-child(4n + 2) {
    border-top-color: var(--color-green);
  }
  .qual-card:nth-child(4n + 3) {
    border-top-color: var(--color-primary);
  }   /* photo769: 青->蓝(第3列,张总指令左列线条改蓝) */
  .qual-card:nth-child(4n + 4) {
    border-top-color: var(--color-green);
  }   /* photo769: 深蓝->绿(第4列,张总指令右列线条改绿) */
}

/* ===== photo602 (2026-09-24 04:2x) 商标矩阵 .tm-item：去掉卡片外层图框 =====
   张总指令：「每个板块外面没必要整体增加图框，去掉整个图框」
   原状 .tm-item 自带一层卡片外观（L4237）：background:#fff + border:1px solid --color-border
        + border-radius:10px，hover 再加 box-shadow → 每张证书外面多套了一个白框。
   现全部去掉，只保留 .tm-item / img / span 的内容本身（图片与下方两行标注）。
   - 覆盖式写法（特异性同为 (0,1,0)），靠**源序在后**胜出；原 L4237 规则保留不动，可一键回退。
   - hover 的 box-shadow 同步去掉（透明卡片上画阴影 = 又出现一个矩形轮廓）；位移反馈保留。
   - 未动：.tm-grid 列数/gap、img 的 aspect-ratio:3/4 + object-fit:cover、span 的 padding 与着色。 */
.tm-item {
  background: none;
  border: 0;
  border-radius: 0;
}
.tm-item:hover {
  box-shadow: none;
}

/* photo699: cases 客户合同实证折叠列表 */
.ct-fold{border:1px solid #d3dae3;border-radius:var(--radius-lg);background:var(--color-white);margin:0 0 10px;box-shadow:var(--shadow-sm);overflow:hidden}
.ct-fold summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;padding:13px 16px}
.ct-fold summary::-webkit-details-marker{display:none}
.ct-fold summary::after{content:"+";margin-left:auto;font-size:1.25rem;line-height:1;color:var(--color-primary);font-weight:600;flex:none}
.ct-fold[open] summary::after{content:"\2212"}
.ct-fold summary h3{margin:0;font-size:1rem;line-height:1.5}
.ct-fold .ct-body{padding:2px 16px 16px}

/* photo732(张总指令): 技术中心筛选项(.tab-nav,仅 technology.html 使用)移动端 3行2列;
   桌面端保持横向单行不变。≤768px: 6 个 .tab-btn 两列网格,卡片式描边,激活项品牌蓝描边+浅蓝底 */
@media (max-width: 768px) {
  /* photo1382: 2列网格保留, 去描边/激活底色——与桌面统一为槽底+浅蓝滑块滑动 */
  .tab-nav {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 6px;
    overflow-x: visible;
    margin-bottom: 24px;
  }
  .tab-btn {
    border-radius: 8px;
    padding: 10px 8px;
    text-align: center;
  }
  .hero-desc { line-height: 1.6; }   /* photo802 移动端恢复正常行距(桌面 photo787 保持 2.0) */
}

/* ===== photo740 (2026-09-29 张总指令)：移动端(≤860px) 指定 5 个供应商 LOGO 放大 1.25 倍 =====
   范围=BNP / LMI / SMC / 时代沃顿 / 格兰富（截图指认）；桌面端各尺寸类不变。
   BNP(s50): 移动端 40% → 50%；时代沃顿/格兰富/LMI/SMC(s08): 51.2% → 64%（恰为 photo685 缩小前尺寸）。 */
@media (max-width: 860px) {
  .supplier-slot.has-logo img.supplier-logo-m125 { max-width: 64%; max-height: 64%; }
  .supplier-slot.has-logo img.supplier-logo-s50.supplier-logo-m125 { max-width: 64%; max-height: 64%; }   /* photo803 50%→64% 与 s08+m125 一致 */
}


/* =========================================================
   photo741 技术文章详情页配图：统一 16:9 题图，与列表卡 card-insight-img 同尺寸规范
   ========================================================= */
.article-figure {
  margin: 24px 0;
}
.article-figure img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
  border-radius: var(--radius-md);
  background: #f0f6ff;
}
.article-figure figcaption {
  text-align: center;
  padding-top: 10px;
  font-size: 0.86rem;
  color: var(--color-text-muted);
}

/* photo744: 区块C3 快筛胶囊移动端 2列3行(桌面3列2行不变) */
@media (max-width: 768px) {
  .qm-chips { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  .qm-chip { font-size: 13px; padding: 8px 8px; min-height: 40px; }
}

/* =========================================================
   photo746 制造标准板块：长图拆分为 9+7 张独立小图 + HTML 文字标注
   （图内文字 → AI 可读；桌面双栏，移动端单栏）
   ========================================================= */
.mfg-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 20px; }
/* photo748(张总指令): 两栏等高对齐(类似原两张长图)+浅灰外框；图片全部扣掉待重新上传(占位图框+文字标注保留) */
.mfg-col { display: flex; flex-direction: column; border: 1px solid #e3e8ef; border-radius: 12px; padding: 16px 16px 18px; background: #fff; } /* photo960: 描述行下再空一行(18px与九宫格行距同口径)，两列同步底对齐 */
.mfg-ph { width: 100%; aspect-ratio: 342 / 408; border-radius: 6px; background: #f0f6ff; display: block; }
.mfg-wide-slot { flex: 0 0 auto; display: flex; margin-top: 8px; }   /* photo773: 14->8; photo967: 取消拉伸改固定高，左右列图框底对齐 */
.mfg-ph-wide { flex: 0 0 auto; min-height: 0; height: 238px; border-radius: 6px; background: #f0f6ff; border: 2px solid #bfdcea; }   /* photo967: 外框浅蓝; 固定高238=左右列自然等高, 图框底对齐(实验定值) */
.mfg-col-title { text-align: center; font-size: 1.05rem; font-weight: 700; margin: 0 0 12px; }
.mfg-nine { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px 18px; }
.mfg-cell { margin: 0; }
.mfg-cell img { width: 100%; aspect-ratio: 342 / 408; object-fit: cover; display: block; border-radius: 6px; background: #f0f6ff; border: 2px solid #bfdcea; }   /* photo967: 外框浅蓝(画册描边色) */
.mfg-cell figcaption { font-size: 0.78rem; color: var(--color-text-muted); text-align: center; padding-top: 8px; line-height: 1.45; }
.mfg-elec-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.mfg-elec-row + .mfg-elec-row { margin-top: 18px; }   /* photo770: 两排图框间行距(张总指令), 与九宫格行距一致 */
.mfg-elec-row img { width: 100%; aspect-ratio: 335 / 406; object-fit: cover; display: block; border-radius: 6px; background: #f0f6ff; border: 2px solid #bfdcea; }   /* photo967: 外框浅蓝 */
.mfg-item { text-align: center; font-size: 0.9rem; margin: 14px 0; color: var(--color-text-muted); } /* photo960: 描述文字与九宫格图注同灰，b标题保持品牌蓝 */
.mfg-item b { color: var(--color-primary); }
.mfg-wide { width: 100%; display: block; border-radius: 6px; margin-top: 4px; background: #f0f6ff; }
@media (max-width: 860px) {
  .mfg-grid { grid-template-columns: 1fr; gap: 28px; }
  .mfg-cell figcaption { font-size: 0.7rem; }
}
/* photo750(张总指令 C-04/C-05): 首页案例板块上移+案例卡统一 C-01 模板(发布日期/类型/标题/一句话总结+下图) */
.case-v { flex-direction: column; }
.case-v .case-img { order: 1; width: 100%; height: 300px; }   /* photo904: 图片板块移到卡顶 */
.case-v .case-body { order: 2; }                               /* photo904: 文字板块移到图下 */
.case-meta-line { display: flex; gap: 14px; flex-wrap: wrap; font-size: 0.85rem; color: var(--color-text-muted); margin-bottom: 12px; padding-bottom: 10px; border-bottom: 1px dashed rgba(0,102,204,0.18); }   /* photo821: meta行下加虚线分隔(与 case-stats 顶部虚线同色 photo750 模板) */
/* photo751(张总指令): 图片间距参照画册加大(10→18px), 通栏图下补「2、操控培训」标注行 */

/* ===== photo951: 全站图片查看弹层（点击证书/中标书/合同等大图，外围右中×关闭） ===== */
.lb-overlay{position:fixed;inset:0;background:rgba(15,23,42,.86);z-index:9999;display:flex;align-items:center;justify-content:center;padding:28px;opacity:0;visibility:hidden;transition:opacity .22s ease,visibility .22s ease}
.lb-overlay.lb-on{opacity:1;visibility:visible}
.lb-overlay img{min-width:0;max-width:min(100%,92vw,860px);max-height:88vh;width:auto;height:auto;border-radius:10px;box-shadow:0 24px 64px rgba(0,0,0,.45);background:#fff;transform:scale(.96);transition:transform .22s ease,opacity .18s ease}
.lb-overlay.lb-on img{transform:scale(1)}
.lb-frame{position:relative;display:flex;max-width:100%}.lb-close{position:absolute;right:-62px;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;border:0;background:#ee6a6a;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.35);transition:background .18s ease,transform .18s ease}
/* photo1319: ×改由伪元素几何画线——红圆中心与×中心精确重合;圆46px/线20×4px全端统一(原PC26px字符/移动22px字符两档不一致) */
.lb-close::before,.lb-close::after{content:"";position:absolute;left:50%;top:50%;width:20px;height:4px;border-radius:2px;background:#FFD700;transform:translate(-50%,-50%) rotate(45deg)}
.lb-close::after{transform:translate(-50%,-50%) rotate(-45deg)}
.lb-close:hover{background:#e05555;transform:translateY(-50%) scale(1.06)}
.lb-close:focus-visible{outline:2px solid #fff;outline-offset:2px}
@media (max-width:983px){.lb-close{right:0}.lb-frame{padding-right:62px}}   /* photo970: 窄屏横图右侧空隙不足62px, 回退半压图缘 */
@media (max-width:768px){/* photo1345: 移动端图片尺寸统一为同一显示框(宽100vw-48px/高78vh,contain),与证书灯箱基准一致 */.lb-overlay{padding:24px}.lb-frame{padding-right:0}.lb-overlay img{width:100%;height:78vh;object-fit:contain;max-width:none;max-height:none;background:transparent}.lb-close{right:auto;left:50%;top:auto;bottom:-62px;transform:translateX(-50%);width:46px;height:46px}.lb-close:hover{transform:translateX(-50%) scale(1.06)}}

/* photo965: news 详情页「返回新闻动态」按钮与下方「相关新闻」标题间距 64（张总指令） */
.case-back + h2 { margin-top: 64px; }

/* photo1100+photo1106(框改为只围图片、文字框外下方): 首页资质速览 6 卡(photo1099 已换 tm-item 结构)按张总指令加统一外框——白底+灰边+圆角+轻阴影(沿用 photo655 qual-mini 卡框参数)；scoped 仅 .qual-strip 内，about.html 商标矩阵不受影响 */
.qual-strip .tm-item{background:transparent;border:none;box-shadow:none;padding:0}.qual-strip .tm-item img{background:#fff;border:1px solid #d3dae3;border-radius:10px;box-shadow:0 1px 3px rgba(0,0,0,.06)}

/* ===== photo1252 (2026-10-25): mobile spacing tighten - image<->text and paragraph<->paragraph ===== */
@media (max-width: 768px) {
  figure, .article-figure { margin: 12px 0; }
  .news-lead-fig { margin: 6px 0 12px; }
  .article-body p { margin-bottom: 10px; line-height: 1.8; }
  .article-body h2 { margin: 22px 0 10px; }
  .article-body h3 { margin: 16px 0 8px; }
  .article-body ul, .article-body ol { margin-bottom: 10px; }
  .article-body li { margin-bottom: 5px; }
  .geo-answer { margin: 14px 0; }
  .geo-note { margin: 12px 0; }
  .section-subtitle { margin-bottom: 20px; }
  .card-body p { margin-bottom: 10px; }
  .card-insight-img { margin: 4px 0 6px; }
}

/* photo1256: 移动端段落标题整体调小，不得超过页标题 h1 1.3rem(20.8px)；咨询 CTA 缩至 2 行 */
@media (max-width: 768px) {
  .section-title { font-size: 1.3rem; }
  .article-body h2 { font-size: 1.25rem; }
  .article-body h3 { font-size: 1.1rem; }
  .evidence-section h2 { font-size: 1.25rem; }
  .consult-cta { font-size: .85rem; line-height: 1.7; }
}

/* photo1257(张总参数表): 移动端字体封顶——页首 h1 不动；section-title 20px；其余标题/内容 <=17.6px(1.1rem)；emoji/图标字符不动 */
@media (max-width: 768px) {
  .section-title { font-size: 1.25rem; }
  .article-body h2, .article-body h3 { font-size: 1.1rem; }
  .evidence-section h2, .guide-cta h2 { font-size: 1.1rem; }
  h2:not(.section-title) { font-size: 1.1rem !important; }
  .sys-card-title-row h2 { font-size: 1.05rem !important; }
  .card-body h3, .team-header h3, .founder-info h3, .sys-content h3, .case-card.case-row h3 { font-size: 1.1rem; }
  .contact-col-title { font-size: 1.1rem; }
  .stat-card .stat-number, .case-stats .stat-value, .sys-stat-num { font-size: 1.1rem; }
  .hero .hero-subtitle { font-size: 1.1rem; }
  .logo-text .cn, .footer-brand-block .logo-text .cn, .footer-company-name { font-size: 1.1rem; }
  .qr-line, .qr-text { font-size: 1.1rem; letter-spacing: 1px; }
}

/* photo1264(张总指令): 移动端返回按钮下间距=上间距64px（上间距=.case-back margin-top:64） */
@media (max-width: 768px) {
  section:has(.case-back) { padding-bottom: 64px; }
}

/* photo1318(张总指令): 选购指南卡标题移动端 1 行保障——360px 小屏实测 1.1rem 仍折行,降至 1rem */
@media (max-width: 768px) {
  .guide-cta h2 { font-size: 1rem !important; }   /* !important: 压过 photo1257 h2:not(.section-title) 的 1.1rem!important */
}

/* photo1321(11-07): 微信字号锁定辅助——html/body 双保险 !important(iOS 微信按 body 判定);主拦截靠 main.js setFontSizeCallback */
body {
  -webkit-text-size-adjust: 100% !important;
  text-size-adjust: 100% !important;
}
