/*
 * bundle-overrides.css — 由 tools/bundle_css.php 自动生成，请勿手改
 * 生成时间: 20261027-203809
 * 成员(5): fixes.css, unify.css, hero-bg.css, cta-card.css, de-ai.css
 * 源文件保留在 public/static/css/ 未删除，可随时回滚
 */
/* ===== fixes.css ===== */
/* 全站修复层：只覆盖明确的体验问题，保留原有视觉基调。
   原则：不使用 !important，通过选择器优先级控制层叠 */

/* 盒模型统一 */
*, *::before, *::after {
  box-sizing: border-box;
}

/* 防止横向溢出 */
html, body {
  max-width: 100%;
  overflow-x: hidden;
}

/* 媒体元素自适应 */
img, svg, video, iframe {
  max-width: 100%;
}

/* 图片默认不透明（避免闪烁） */
img {
  opacity: 1;
}

/* 修复 reveal 动画导致的不可见问题 */
.reveal,
.section.reveal {
  opacity: 1;
  transform: none;
}

/* 字母间距重置 */
h1, h2, h3,
.hero-title,
.section-title,
.brand-en,
.brand-cn {
  letter-spacing: 0;
}

/* 文字换行安全 */
p, li, span, a, strong, button, input, textarea, select {
  overflow-wrap: break-word;
}

/* 头部布局修复 */
.site-header {
  left: 0;
  right: 0;
  width: 100%;
}

.header-inner {
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-start;
  min-width: 0;
}

.site-header .container.header-inner {
  max-width: calc(100vw - 32px);
}

.brand {
  min-width: 0;
  flex-shrink: 0;
}

.nav-main {
  min-width: 0;
}

.phone-btn,
.lang-pill,
.hamburger {
  flex-shrink: 0;
}

/* 汉堡菜单图标 */
.hamburger::before {
  content: "☰";
  color: var(--navy-deep);
  font-size: 1.35rem;
  font-weight: 700;
  line-height: 1;
}

.hamburger-line {
  display: none;
}

/* 最小宽度约束 */
.hero-copy,
.hero-center,
.section-header,
.section-intro,
.contact-content,
.news-content,
.case-content {
  min-width: 0;
}

/* 标题文字平衡 */
.hero-title,
.section-title,
.section-intro h2,
.section-header h2 {
  text-wrap: balance;
}

/* 筛选结果隐藏 */
.case-card.is-hidden,
.news-card.is-hidden {
  display: none;
}

/* 筛选提示信息 */
.filter-result-info,
.news-result-info {
  margin: 0 0 24px;
  text-align: center;
  color: var(--u-text-muted, #5d7390);
  font-size: 0.95rem;
}

/* 筛选标签 */
.selected-tag,
.clear-all {
  border: 0;
  font: inherit;
}

.selected-tag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.selected-tag[data-key],
.clear-all {
  cursor: pointer;
}

/* 空状态 */
.filter-empty,
.news-empty {
  grid-column: 1 / -1;
  padding: 36px 24px;
  border: 1px dashed rgba(15, 43, 82, 0.18);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.78);
  color: var(--u-text-muted, #5d7390);
  text-align: center;
}

/* 下拉菜单状态 */
.dropdown.is-open .dropdown-menu,
.filter-dropdown.is-open .filter-dropdown-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0) scale(1);
}

.dropdown.is-open .dropdown-toggle .arrow,
.filter-dropdown.is-open .filter-dropdown-btn span:last-child {
  transform: rotate(180deg);
}

/* 联系信息区域修复 */
.contact-info-section .contact-detail {
  padding: 0;
  background: none;
}

.contact-info-section .contact-item {
  min-width: 0;
}

.contact-info-section .contact-content,
.contact-info-section .contact-detail,
.contact-info-section .detail-value,
.contact-info-section .detail-label {
  min-width: 0;
  max-width: 100%;
}

.contact-info-section .detail-value {
  word-break: break-word;
}

/* 地图卡片 */
.local-map-card {
  min-height: 280px;
  height: 100%;
  padding: 32px;
  border-radius: 16px;
  background: transparent;
  color: #fff;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
}

.local-map-card h3 {
  margin: 0 0 12px;
  color: #fff;
  font-size: 1.35rem;
}

.local-map-card p {
  color: rgba(255, 255, 255, 0.78);
}

.local-map-lines {
  display: grid;
  gap: 10px;
  margin-top: 24px;
}

.local-map-line {
  display: flex;
  align-items: center;
  gap: 10px;
  color: rgba(255, 255, 255, 0.9);
}

.local-map-link {
  align-self: flex-start;
  margin-top: 28px;
  padding: 10px 18px;
  border-radius: 999px;
  background: #fff;
  color: var(--u-navy, #0e2b52);
  font-weight: 700;
}

/* 表单状态 */
.form-status {
  margin-top: 14px;
  min-height: 24px;
  color: var(--u-text-muted, #5d7390);
  font-size: 0.92rem;
  text-align: center;
}

.form-status.is-success {
  color: #0b7a42;
}

/* ========================
   响应式修复
   ======================== */
@media (max-width: 900px) {
  .nav-main {
    display: none;
  }

  .hamburger {
    display: flex;
  }
}

@media (max-width: 768px) {
  :root {
    --container: min(100vw - 28px, 100%);
  }

  .site-header {
    padding-top: 12px;
  }

  .site-header .container.header-inner {
    width: calc(100vw - 28px);
    max-width: calc(100vw - 28px);
  }

  .header-inner {
    min-height: 64px;
    margin: 0 auto;
    padding: 10px 14px;
    padding-right: 64px;
    gap: 10px;
    border-radius: 28px;
    position: relative;
    justify-content: flex-start;
  }

  .brand {
    margin-right: 0;
  }

  .brand-en {
    font-size: 1.55rem;
  }

  .brand-cn {
    font-size: 1.42rem;
  }

  .phone-btn,
  .lang-pill {
    width: 42px;
    height: 42px;
    font-size: 0.9rem;
  }

  .site-header .phone-btn {
    display: none;
  }

  .site-header .hamburger {
    display: flex;
    width: 42px;
    height: 42px;
    order: 99;
    margin: 0 0 0 auto;
    border-radius: 50%;
    background: var(--u-navy, #0e2b52);
    position: static;
    transform: none;
    z-index: 2;
  }

  .site-header .hamburger-line {
    background: #fff;
  }

  .site-header .hamburger::before {
    color: #fff;
  }

  .site-header .lang-pill {
    display: none;
  }

  .page-hero,
  .contact-hero {
    min-height: auto;
    padding: 112px 0 64px;
  }

  .hero-title,
  .contact-hero .hero-title,
  .about-hero .hero-title,
  .case-hero .hero-title,
  .weapp-hero .hero-title,
  .solutions-hero .hero-title {
    margin: 22px auto 12px;
    max-width: 100%;
    font-size: clamp(2rem, 9vw, 3rem);
    line-height: 1.14;
  }

  .hero-copy h1 {
    max-width: 100%;
    font-size: 2.35rem;
    line-height: 1.18;
  }

  .hero-copy h1 .accent {
    display: block;
  }

  /* 移动端 accent 独占一行后，100% 宽的 4px 粉线会横穿下一行文字（像删除线），去掉 */
  .hero-copy h1 .accent::after {
    display: none;
  }

  /* 两个 accent 各占一行时「与」单独成行很难看，移动端隐藏（语义由上下文补足） */
  .hero-copy h1 .hero-conj {
    display: none;
  }

  .hero-subtitle,
  .contact-hero .hero-subtitle,
  .section-intro p,
  .section-header p {
    max-width: 100%;
    font-size: 0.98rem;
    line-height: 1.8;
  }

  .hero-actions {
    width: 100%;
  }

  .hero-copy,
  .hero-text {
    width: 100%;
    max-width: 100%;
  }

  .hero-text {
    white-space: normal;
    text-align: center;
    font-size: 0.95rem;
  }

  .hero-actions .cta {
    max-width: 100%;
  }

  .hero-visual {
    width: min(100%, 420px);
    overflow: hidden;
  }

  .stats-bar {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    padding: 24px 18px;
  }

  .stat-item {
    min-width: 0;
  }

  .stat-number {
    font-size: clamp(1.9rem, 9vw, 2.45rem);
  }

  .filter-section {
    overflow: hidden;
    padding: 24px 18px;
  }

  .filter-row {
    grid-template-columns: 1fr;
    gap: 14px;
  }

  .filter-options {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }

  .filter-chip,
  .filter-dropdown,
  .filter-dropdown-btn {
    min-width: 0;
    width: 100%;
  }

  .filter-chip {
    justify-content: center;
    padding: 12px 14px;
    white-space: normal;
  }

  .filter-dropdown-menu,
  .dropdown-menu {
    left: 0;
    right: auto;
    max-width: calc(100vw - 56px);
  }

  .dropdown-group {
    display: grid;
    grid-template-columns: 1fr;
    gap: 14px;
  }

  .dropdown,
  .dropdown-toggle {
    width: 100%;
  }

  .dropdown-toggle {
    justify-content: space-between;
    white-space: normal;
  }

  .dropdown-menu.tags-menu {
    min-width: min(320px, calc(100vw - 56px));
    grid-template-columns: 1fr;
  }

  .news-grid,
  .cases-grid {
    grid-template-columns: 1fr;
  }

  .news-card img,
  .case-image img {
    height: auto;
    aspect-ratio: 16 / 10;
    object-fit: cover;
  }

  .contact-card {
    grid-template-columns: 1fr;
  }

  .contact-info-section .contact-item {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr);
    align-items: start;
    gap: 14px;
    padding: 20px 18px;
  }

  .contact-info-section .contact-content h3 {
    margin-bottom: 8px;
    font-size: 1rem;
  }

  .contact-bottom {
    grid-template-columns: 1fr;
  }

  .qr-card {
    width: 100%;
    max-width: 360px;
  }
}

@media (max-width: 480px) {
  .header-inner {
    padding: 10px 12px;
    padding-right: 58px;
  }

  .site-header .container.header-inner {
    width: calc(100vw - 24px);
    max-width: calc(100vw - 24px);
  }

  .brand-en {
    font-size: 1.42rem;
  }

  .brand-cn {
    font-size: 1.28rem;
  }

  .phone-btn,
  .lang-pill,
  .hamburger {
    width: 38px;
    height: 38px;
  }

  .hero-title,
  .contact-hero .hero-title {
    font-size: clamp(1.85rem, 10vw, 2.45rem);
  }

  .hero-copy h1 {
    font-size: 2.12rem;
  }

  .filter-options {
    grid-template-columns: 1fr;
  }

  .stats-bar {
    grid-template-columns: 1fr 1fr;
  }

  .local-map-card {
    padding: 24px;
  }
}

/* ============================================================
   2026-10-27 第三轮修复：页脚触摸目标 + 移动端最小字号
   ============================================================ */
@media (max-width: 768px) {
  /* 页脚链接：扩展触摸目标至 ~44px 高（负 margin 抵消 padding，视觉节奏不变） */
  .footer-links a {
    padding-top: 10px;
    padding-bottom: 10px;
    margin-top: -10px;
    margin-bottom: -10px;
  }

  .footer-links-bottom a,
  .footer-bottom a {
    padding: 10px 8px;
    margin: -10px -8px;
    font-size: 0.9rem;
  }

  /* 底部咨询栏标签最小字号 */
  .mobile-bottom-bar .mbb-item span {
    font-size: 11px;
  }

  /* 元数据/角标小字统一提到 11px 以上 */
  .eyebrow,
  .case-card-tag,
  .tab-count,
  .feat-badge,
  .industry-tag,
  .case-tag,
  .card-tag,
  .section-count,
  .link-date,
  .count {
    font-size: 11px;
  }
}

/* 2026-10-27 补充：更多小触摸目标扩展 */
@media (max-width: 768px) {
  .weapp-copy a {
    display: inline-block;
    padding: 10px 0;
    margin: -10px 0;
  }

  .footer-text a {
    display: inline-block;
    padding: 12px 8px;
    margin: -12px -8px;
  }

  .brand {
    padding-top: 14px;
    padding-bottom: 14px;
    margin-top: -14px;
    margin-bottom: -14px;
  }
}

/* 2026-10-27 详情页移动端面包屑：末级用完整标题会折成 3 行挤爆 hero */
@media (max-width: 768px) {
  .hero-breadcrumb {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 4px 6px;
    font-size: 0.8rem;
    line-height: 1.6;
    max-width: 100%;
  }

  /* 当前页标题过长：单行省略号截断，不折行挤压 hero */
  .hero-breadcrumb span[aria-current="page"] {
    display: inline-block;
    max-width: 60vw;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: middle;
  }
}

/* ============================================================
   2026-10-27 桌面浮动组补充主 CTA
   原浮动组只有电话/微信/在线三个图标钮，缺主转化入口；
   在顶部加一枚粉色胶囊，与 hero 主按钮同文案同色，形成一致性。
   仅桌面显示（.floating-actions 在 ≤768 已 display:none）。
   ============================================================ */
.fab-cta {
  width: auto !important;
  height: auto !important;
  padding: 12px 18px !important;
  border-radius: 999px !important;
  background: #e8107a !important;
  color: #fff !important;
  font-size: 0.92rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.02em;
  box-shadow: 0 10px 26px rgba(232, 16, 122, 0.35);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.fab-cta:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 32px rgba(232, 16, 122, 0.45);
}

/* ===== unify.css ===== */
/* =================================================================
   UNIFY.CSS - 全站设计系统统一层
   作用：作为最后加载的样式文件，统一各页面分散的视觉规范
   覆盖：颜色 / 阴影 / 字体 / 按钮 / 卡片 / 面包屑 / 焦点态 / a11y
   ================================================================= */

:root {
  /* === 强制覆盖各 CSS 文件中分散的品牌色定义 === */
  --pink: #e8107a;
  --pink-light: #ff6b9d;
  --pink-dark: #c20d68;
  --navy: #0a376f;
  --navy-deep: #0a2d5e;
  --text-primary: #1c3452;
  --text-secondary: #5b6b85;
  --text-muted: #5b6b85;
  --bg: #ffffff;
  --bg-soft: #fafbff;

  /* 统一色彩 token（unify 私有空间） */
  --u-pink: #e8107a;
  --u-pink-light: #ff6b9d;
  --u-pink-dark: #c20d68;
  --u-navy: #0a376f;
  --u-navy-deep: #0a2d5e;
  --u-text-primary: #1c3452;
  --u-text-secondary: #5b6b85;
  --u-text-muted: #5b6b85;
  --u-border: rgba(12, 39, 77, 0.08);
  --u-border-strong: rgba(12, 39, 77, 0.14);

  /* 统一尺度 token */
  --u-section-py: 88px;            /* section 上下内边距 */
  --u-section-py-sm: 56px;         /* 移动端 */
  --u-container: 1280px;           /* 内容容器最大宽 */
  --u-container-narrow: 1080px;
  --u-hero-py: 96px;
  --u-hero-py-sm: 64px;
  --u-card-radius: 18px;
  --u-card-pad: 28px;

  /* 统一阴影 token */
  --u-shadow-sm: 0 2px 8px rgba(8, 38, 78, 0.04);
  --u-shadow-md: 0 8px 24px rgba(8, 38, 78, 0.08);
  --u-shadow-lg: 0 16px 40px rgba(8, 38, 78, 0.12);
  --u-shadow-xl: 0 25px 60px rgba(8, 38, 78, 0.15);
  --u-shadow-pink: 0 10px 26px rgba(232, 16, 122, 0.28);

  /* 统一圆角 */
  --u-radius-sm: 8px;
  --u-radius-md: 14px;
  --u-radius-lg: 20px;
  --u-radius-xl: 28px;
  --u-radius-pill: 999px;

  /* 统一字号 */
  --u-text-xs: 0.75rem;     /* 12px */
  --u-text-sm: 0.875rem;    /* 14px */
  --u-text-base: 1rem;      /* 16px */
  --u-text-lg: 1.125rem;    /* 18px */
  --u-text-xl: 1.25rem;     /* 20px */
  --u-text-2xl: 1.5rem;     /* 24px */
  --u-text-3xl: 2rem;       /* 32px */

  /* 统一间距 */
  --u-space-1: 4px;
  --u-space-2: 8px;
  --u-space-3: 12px;
  --u-space-4: 16px;
  --u-space-5: 20px;
  --u-space-6: 24px;
  --u-space-8: 32px;
  --u-space-10: 40px;
  --u-space-12: 48px;
  --u-space-16: 64px;
  --u-space-20: 80px;

  /* 统一动画 */
  --u-ease: cubic-bezier(0.4, 0, 0.2, 1);
  --u-ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* -----------------------------------------------------------------
   1. a11y - 跳过导航 + focus-visible 统一
   ----------------------------------------------------------------- */
.skip-to-content,
.skip-link {
  position: absolute;
  top: -100px;
  left: 12px;
  z-index: 10000;
  padding: 10px 18px;
  background: var(--u-navy-deep);
  color: #fff !important;
  font-size: 0.92rem;
  font-weight: 600;
  border-radius: var(--u-radius-md);
  text-decoration: none;
  transition: top 0.25s var(--u-ease);
}
.skip-to-content:focus,
.skip-to-content:focus-visible,
.skip-link:focus,
.skip-link:focus-visible {
  top: 12px;
  outline: 2px solid var(--u-pink);
  outline-offset: 2px;
}

/* 统一键盘焦点 */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
details summary:focus-visible {
  outline: 2px solid var(--u-pink);
  outline-offset: 2px;
  border-radius: 6px;
}

/* -----------------------------------------------------------------
   2. 字体排版统一
   ----------------------------------------------------------------- */
body {
  font-feature-settings: "palt" 1, "kern" 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.section-desc,
.section-subtext {
  font-size: 1rem;
  line-height: 1.75;
  color: var(--u-text-secondary);
}

/* 中英文混排间距 */
.hero-title,
.section-title,
.brand-title,
h1, h2, h3 {
  letter-spacing: -0.01em;
}

/* -----------------------------------------------------------------
   3. 面包屑统一组件
   ----------------------------------------------------------------- */
.hero-breadcrumb {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 0.88rem;
  color: rgba(255, 255, 255, 0.78);
  margin-top: 16px;
}
.hero-breadcrumb a {
  color: rgba(255, 255, 255, 0.9);
  text-decoration: none;
  transition: color 0.2s ease;
  /* 触控目标过小（实测 25×22）：负 margin 抵消 padding，视觉不变、可点区域扩到 ~40px 高 */
  display: inline-block;
  padding: 12px 4px;
  margin: -12px -4px;
}
.hero-breadcrumb a:hover {
  color: #fff;
  text-decoration: underline;
}
.hero-breadcrumb [aria-current="page"] {
  color: rgba(255, 255, 255, 0.78);
}
.hero-breadcrumb [aria-hidden="true"],
.hero-breadcrumb .sep {
  color: rgba(255, 255, 255, 0.6);
  font-size: 0.8rem;
}

/* 浅色文字面包屑：about-hero 实际是深蓝底（hero-bg.css 统一 #081a35），
   这里必须保持白色系，套 --u-text-secondary 会在深底上几乎不可读 */
.page-hero.about-hero .hero-breadcrumb,
.page-hero.about-hero .hero-breadcrumb a {
  color: rgba(255, 255, 255, 0.75);
}
.page-hero.about-hero .hero-breadcrumb [aria-current="page"] {
  color: rgba(255, 255, 255, 0.92);
}
.page-hero.about-hero .hero-breadcrumb a:hover {
  color: var(--u-pink);
}

/* case-detail 简化版面包屑 */
.case-hero .hero-breadcrumb {
  color: rgba(255, 255, 255, 0.78);
}

/* -----------------------------------------------------------------
   4. cases/news/about 列表 hero 升级为渐变色
   ----------------------------------------------------------------- */
.page-hero.about-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: transparent;
  background-size: 48px 48px;
  pointer-events: none;
  opacity: 0.6;
  mask: radial-gradient(ellipse at center, #000 30%, transparent 70%);
  -webkit-mask: radial-gradient(ellipse at center, #000 30%, transparent 70%);
}
.page-hero.about-hero > .container {
  position: relative;
  z-index: 1;
}

/* -----------------------------------------------------------------
   5. 按钮规格统一（cta / cta-btn / submit-btn 等）
   ----------------------------------------------------------------- */
.cta.primary,
.cta-btn.primary,
.cta-button {
  background: #e8107a;
  color: #fff;
  border: none;
  box-shadow: var(--u-shadow-pink);
  transition: all 0.3s var(--u-ease);
}
.cta.primary:hover,
.cta-btn.primary:hover,
.cta-button:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 32px rgba(232, 16, 122, 0.4);
}

.cta.ghost,
.cta-btn.secondary,
.cta-btn.outline {
  background: rgba(255, 255, 255, 0.95);
  color: var(--u-navy-deep);
  border: 1.5px solid var(--u-border-strong);
  transition: all 0.3s var(--u-ease);
}
.cta.ghost:hover,
.cta-btn.secondary:hover,
.cta-btn.outline:hover {
  border-color: var(--u-pink);
  color: var(--u-pink);
  transform: translateY(-2px);
  box-shadow: var(--u-shadow-md);
}

/* -----------------------------------------------------------------
   6. 卡片统一阴影深度
   ----------------------------------------------------------------- */
.service-card,
.capability-card,
.solution-card,
.case-card,
.news-card,
.value-card,
.advantage-item,
.client-logo,
.overview-item,
.sidebar-card,
.industry-card,
.why-card,
.feature-item,
.stat-card {
  box-shadow: var(--u-shadow-md);
}
.service-card:hover,
.capability-card:hover,
.solution-card:hover,
.case-card:hover,
.news-card:hover,
.value-card:hover,
.advantage-item:hover,
.overview-item:hover,
.industry-card:hover,
.why-card:hover,
.feature-item:hover,
.stat-card:hover {
  box-shadow: var(--u-shadow-lg);
}

/* -----------------------------------------------------------------
   7. 表单红色边框淡化（contact form）
   ----------------------------------------------------------------- */
.contact-form input.is-invalid,
.contact-form textarea.is-invalid,
.contact-form select.is-invalid {
  border-color: rgba(232, 16, 122, 0.6) !important;
  background: rgba(232, 16, 122, 0.03);
}
.contact-form input.is-valid,
.contact-form textarea.is-valid,
.contact-form select.is-valid {
  border-color: rgba(34, 168, 92, 0.5) !important;
}

/* -----------------------------------------------------------------
   8. cases/index 筛选 dropdown 视觉优化
   ----------------------------------------------------------------- */
.filter-dropdown[open] .filter-dropdown-toggle {
  border-color: var(--u-pink);
  background: rgba(232, 16, 122, 0.04);
  color: var(--u-pink);
}
.filter-dropdown summary {
  cursor: pointer;
  transition: all 0.2s ease;
}
.filter-dropdown-menu {
  animation: u-dropdown-in 0.25s var(--u-ease);
}
@keyframes u-dropdown-in {
  from { opacity: 0; transform: translateY(-6px); }
  to { opacity: 1; transform: none; }
}

/* -----------------------------------------------------------------
   9. about timeline 手机端居中修复
   ----------------------------------------------------------------- */
@media (max-width: 768px) {
  .timeline-wrapper .timeline-line {
    left: 20px !important;
    transform: none !important;
  }
  .timeline-item {
    padding-left: 56px !important;
    text-align: left !important;
  }
  .timeline-item .timeline-dot {
    left: 12px !important;
    right: auto !important;
    transform: translateX(0) !important;
  }
  .timeline-item .timeline-content {
    margin: 0 !important;
    width: auto !important;
  }
}

/* -----------------------------------------------------------------
   10. case-detail sidebar 手机端布局修复
   ----------------------------------------------------------------- */
@media (max-width: 768px) {
  .case-sidebar .info-row {
    flex-wrap: wrap;
    gap: 4px;
  }
  .case-sidebar .info-label {
    min-width: 80px;
    flex-shrink: 0;
  }
  .case-sidebar .info-value {
    flex: 1;
    text-align: right;
    color: var(--u-text-primary);
    font-weight: 600;
  }
}

/* -----------------------------------------------------------------
   11. 文章 meta 图标化（替代 emoji）
   ----------------------------------------------------------------- */
.article-meta span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

/* -----------------------------------------------------------------
   12. solutions 展开过渡优化
   ----------------------------------------------------------------- */
@media (hover: none), (max-width: 768px) {
  .solution-card .card-hover-content {
    transition: max-height 0.4s var(--u-ease), margin-top 0.4s var(--u-ease) !important;
  }
}

/* -----------------------------------------------------------------
   13. 全局图片骨架屏占位
   ----------------------------------------------------------------- */
img[loading="lazy"]:not(.loaded) {
  background: #f4f6fa;
  background-size: 200% 100%;
  animation: u-skeleton 1.4s ease-in-out infinite;
}
@keyframes u-skeleton {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* -----------------------------------------------------------------
   14. 平板断点优化（1024px-768px）
   ----------------------------------------------------------------- */
@media (max-width: 1024px) and (min-width: 769px) {
  .capability-grid,
  .industries-grid,
  .industry-grid,
  .features-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  .cases-grid,
  .news-grid,
  .case-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

/* -----------------------------------------------------------------
   15. 减少动效模式支持
   ----------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* =================================================================
   ===== 16. 强制视觉规格统一（高优先级覆盖层） =====
   解决问题：section 大小不一、标题字号 5 套、容器宽度不齐、按钮规格散乱
   ================================================================= */

/* ---- 16.1 容器宽度统一 ---- */
.container {
  max-width: var(--u-container) !important;
  width: 100%;
  margin-left: auto !important;
  margin-right: auto !important;
  padding-left: 24px !important;
  padding-right: 24px !important;
  box-sizing: border-box;
}
@media (max-width: 768px) {
  .container {
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
}

/* ---- 16.2 section 内边距统一（5 套→1 套）---- */
.section,
section.section,
.about-intro,
.core-values,
.advantages,
.timeline,
.clients,
.about-cta,
.case-overview,
.case-detail-section,
.related-cases,
.contact-info-section,
.contact-form-section,
.weapp-stats,
.weapp-why,
.weapp-industries,
.weapp-features,
.weapp-process,
.solutions-cta {
  padding-top: var(--u-section-py) !important;
  padding-bottom: var(--u-section-py) !important;
}
@media (max-width: 768px) {
  .section,
  section.section,
  .about-intro,
  .core-values,
  .advantages,
  .timeline,
  .clients,
  .about-cta,
  .case-overview,
  .case-detail-section,
  .related-cases,
  .contact-info-section,
  .contact-form-section,
  .weapp-stats,
  .weapp-why,
  .weapp-industries,
  .weapp-features,
  .weapp-process,
  .solutions-cta {
    padding-top: var(--u-section-py-sm) !important;
    padding-bottom: var(--u-section-py-sm) !important;
  }
}

/* ---- 16.3 hero 区域规格统一（与 /solutions hero 等高：180/140 + 70vh 垂直居中）---- */
.page-hero,
.weapp-hero,
.about-hero,
.case-hero,
.contact-hero {
  padding-top: 180px !important;
  padding-bottom: 140px !important;
  min-height: 70vh;
  display: flex;
  align-items: center;
}
@media (max-width: 768px) {
  .page-hero,
  .weapp-hero,
  .about-hero,
  .case-hero,
  .contact-hero {
    padding-top: 140px !important;
    padding-bottom: 100px !important;
    min-height: auto;
  }
}
@media (max-width: 480px) {
  .page-hero,
  .weapp-hero,
  .about-hero,
  .case-hero,
  .contact-hero {
    padding-top: 120px !important;
    padding-bottom: 80px !important;
  }
}

/* ---- 16.4 标题字号统一（5 套 clamp → 1 套）---- */
.hero-title,
h1.hero-title,
.page-hero h1 {
  font-size: clamp(2rem, 4.5vw, 3.4rem) !important;
  font-weight: 800 !important;
  line-height: 1.2 !important;
  margin: 0 0 16px !important;
  letter-spacing: -0.015em !important;
}

.section-title,
h2.section-title,
.section-header h2,
.overview-header h2 {
  font-size: clamp(1.75rem, 3.4vw, 2.6rem) !important;
  font-weight: 800 !important;
  line-height: 1.25 !important;
  color: var(--u-navy-deep) !important;
  margin: 0 0 14px !important;
  letter-spacing: -0.012em !important;
}

.hero-subtitle,
.section-desc,
.page-hero p,
.section-header p,
.overview-header p {
  font-size: clamp(0.98rem, 1.2vw, 1.08rem) !important;
  line-height: 1.75 !important;
  color: var(--u-text-secondary);
  margin: 0 auto !important;
  max-width: 720px;
}

.page-hero .hero-subtitle,
.page-hero p.hero-subtitle {
  color: rgba(255, 255, 255, 0.92) !important;
}
/* about-hero / case-hero 都是深蓝底（hero-bg.css 统一 #081a35），
   副标题必须用浅色；此前误用浅底色 --u-text-secondary，深底上对比度仅 ~1.4:1 */
.page-hero.about-hero .hero-subtitle,
.page-hero.about-hero p,
.solutions-hero .hero-subtitle,
.contact-hero .hero-subtitle {
  color: rgba(255, 255, 255, 0.92) !important;
}

/* ---- 16.5 eyebrow 标签统一（多套写法→1套）---- */
.eyebrow,
.hero-eyebrow,
.section-eyebrow {
  display: inline-block !important;
  padding: 6px 16px !important;
  background: !important;
  border: 1px solid rgba(232, 16, 122, 0.18) !important;
  border-radius: 30px !important;
  color: var(--u-pink) !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  margin-bottom: 16px !important;
  line-height: 1.4 !important;
}
.page-hero .hero-eyebrow {
  background: rgba(255, 255, 255, 0.15) !important;
  border: 1px solid rgba(255, 255, 255, 0.3) !important;
  color: #fff !important;
  backdrop-filter: blur(10px);
}
.page-hero.about-hero .eyebrow,
.page-hero.about-hero .hero-eyebrow {
  background: !important;
  border-color: rgba(232, 16, 122, 0.18) !important;
  color: var(--u-pink) !important;
}

/* ---- 16.6 section-header 间距统一 ---- */
.section-header,
.overview-header {
  text-align: center;
  max-width: 760px;
  margin: 0 auto 48px !important;
}
@media (max-width: 768px) {
  .section-header,
  .overview-header {
    margin-bottom: 32px !important;
  }
}

/* ---- 16.7 按钮规格统一（高度/圆角/字号）---- */
.cta,
.cta-btn,
.cta-button,
.industry-btn,
.case-view-btn,
.share-btn,
.back-btn,
button.submit-btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px;
  min-height: 46px;
  padding: 13px 28px !important;
  font-size: 0.95rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.02em;
  border-radius: 999px !important;
  transition: all 0.3s var(--u-ease) !important;
  white-space: nowrap;
  cursor: pointer;
  text-decoration: none;
}
.cta-btn.large,
.cta.large {
  min-height: 52px;
  padding: 16px 36px !important;
  font-size: 1rem !important;
}

/* primary 按钮统一为粉色渐变 */
.cta.primary,
.cta-btn.primary,
.cta-button,
button.cta-btn.primary,
a.cta-btn.primary {
  background: #e8107a !important;
  color: #fff !important;
  border: none !important;
  box-shadow: var(--u-shadow-pink) !important;
}
.cta.primary:hover,
.cta-btn.primary:hover,
.cta-button:hover {
  transform: translateY(-2px);
  box-shadow: 0 16px 36px rgba(232, 16, 122, 0.42) !important;
}

/* secondary/ghost/outline 统一为白底深色描边 */
.cta.ghost,
.cta-btn.secondary,
.cta-btn.outline {
  background: #fff !important;
  color: var(--u-navy-deep) !important;
  border: 1.5px solid var(--u-border-strong) !important;
  box-shadow: 0 2px 8px rgba(8, 38, 78, 0.04) !important;
}
.cta.ghost:hover,
.cta-btn.secondary:hover,
.cta-btn.outline:hover {
  border-color: var(--u-pink) !important;
  color: var(--u-pink) !important;
  transform: translateY(-2px);
}
/* hero 内部的 outline 按钮（深色背景上）保持白色描边 */
.page-hero:not(.about-hero) .cta-btn.outline,
.solutions-cta .cta-btn.outline {
  background: rgba(255, 255, 255, 0.06) !important;
  color: #fff !important;
  border: 1.5px solid rgba(255, 255, 255, 0.5) !important;
}

/* ---- 16.8 卡片基础规格统一（圆角/内边距）---- */
.service-card,
.capability-card,
.solution-card,
.case-card,
.news-card,
.value-card,
.advantage-item,
.overview-item,
.sidebar-card,
.industry-card,
.why-card,
.feature-item,
.stat-card,
.process-content,
.contact-card {
  border-radius: var(--u-card-radius) !important;
  background: #fff;
  border: 1px solid var(--u-border);
  transition: all 0.4s var(--u-ease);
}

/* ---- 16.9 文本颜色统一 ---- */
body {
  color: var(--u-text-primary);
}
.pink,
span.pink,
.section-title .pink,
.hero-title .pink {
  background: #e8107a;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}

/* ---- 16.10 grid 间距统一 ---- */
.values-grid,
.advantages-grid,
.clients-grid,
.industry-grid,
.industries-grid,
.why-grid,
.features-grid,
.cases-grid,
.case-grid,
.news-grid,
.overview-grid,
.solution-grid,
.capability-grid,
.process-items,
.stats-grid {
  gap: 24px !important;
}
@media (max-width: 768px) {
  .values-grid,
  .advantages-grid,
  .clients-grid,
  .industry-grid,
  .industries-grid,
  .why-grid,
  .features-grid,
  .cases-grid,
  .case-grid,
  .news-grid,
  .overview-grid,
  .solution-grid,
  .capability-grid,
  .process-items,
  .stats-grid {
    gap: 16px !important;
  }
}

/* ---- 16.11 站点统一深色背景区（CTA / weapp-hero 等）---- */
.about-cta,
.solutions-cta,
.cases-cta {
  background: #0a2d5e !important;
  color: #fff !important;
}
.about-cta h2,
.solutions-cta h2,
.cases-cta h2 {
  color: #fff !important;
}
.about-cta p,
.solutions-cta p {
  color: rgba(255, 255, 255, 0.85) !important;
}

/* ---- 16.12 修复 scrollbar 闪烁 / 防内容跳动 ---- */
html {
  scrollbar-gutter: stable;
}

/* ---- 16.13 链接默认色统一 ---- */
a {
  color: inherit;
  transition: color 0.2s ease;
}
a:hover {
  color: var(--u-pink);
}

/* ---- 16.14 input/textarea/select 统一外观 ---- */
.contact-form input,
.contact-form textarea,
.contact-form select,
input.form-control,
textarea.form-control {
  border-radius: 10px !important;
  border: 1.5px solid var(--u-border-strong) !important;
  padding: 12px 16px !important;
  /* ≥16px：iOS Safari 聚焦 <16px 输入框会自动放大整页 */
  font-size: 1rem !important;
  transition: all 0.2s ease !important;
  background: #fff !important;
}
.contact-form input:focus,
.contact-form textarea:focus,
.contact-form select:focus {
  border-color: var(--u-pink) !important;
  box-shadow: 0 0 0 3px rgba(232, 16, 122, 0.12) !important;
  outline: none !important;
}

/* ---- 16.15 导航链接美化（pill 胶囊风格） ---- */
.nav-main {
  gap: 4px !important;
  margin-left: auto !important;
}

.nav-main a {
  padding: 8px 18px !important;
  border-radius: 10px !important;
  font-weight: 500 !important;
  font-size: 0.95rem !important;
  color: var(--u-navy-deep, #0a2d5e) !important;
  transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1) !important;
  position: relative !important;
}

/* 去掉旧下划线 */
.nav-main a::after {
  display: none !important;
}

/* Hover：淡粉背景 + 品牌色文字 + 微上浮 */
.nav-main a:hover {
  background: rgba(232, 16, 122, 0.08) !important;
  color: var(--u-pink, #e8107a) !important;
  transform: translateY(-1px) !important;
}

/* Active / 当前页：粉色实心 pill + 白字 + 阴影 */
.nav-main a.active,
.nav-main a[aria-current="page"] {
  background: var(--u-pink, #e8107a) !important;
  color: #fff !important;
  box-shadow: 0 4px 14px rgba(232, 16, 122, 0.35) !important;
  font-weight: 600 !important;
}

/* 城市按钮补充品牌感 */
.lang-pill {
  background: #133c75 !important;
  color: #fff !important;
  font-weight: 600 !important;
  font-size: 0.82rem !important;
  letter-spacing: 0.05em !important;
  transition: all 0.35s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
}

.lang-pill:hover {
  background: #e8107a !important;
  box-shadow: 0 8px 24px rgba(232, 16, 122, 0.35) !important;
}

/* 滚动后 header 内导航链接适配 */
.site-header.scrolled .nav-main a,
.site-header.is-scrolled .nav-main a {
  color: var(--u-navy-deep, #0a2d5e) !important;
}

/* =================================================================
   17. 全局强制统一层
   ================================================================= */

/* ---- 17.1 全局字号强制统一（对齐 design-system.css） ---- */
h1, .h1, .hero-title, .page-hero h1 {
  font-size: clamp(2.7rem, 5vw, 4.75rem) !important;
  font-weight: 800 !important;
  line-height: 1.2 !important;
  letter-spacing: -0.04em !important;
}
h2, .h2, .section-title, .section-header h2 {
  font-size: clamp(2rem, 4vw, 3.3rem) !important;
  font-weight: 800 !important;
  line-height: 1.25 !important;
  letter-spacing: -0.035em !important;
}
h3, .h3 {
  font-size: clamp(1.2rem, 2vw, 1.35rem) !important;
  font-weight: 700 !important;
  line-height: 1.3 !important;
}
h4, .h4 {
  font-size: 1.1rem !important;
  font-weight: 600 !important;
  line-height: 1.4 !important;
}
.eyebrow {
  font-size: var(--u-text-xs) !important;
  font-weight: 700 !important;
  letter-spacing: 0.15em !important;
  text-transform: uppercase !important;
  color: var(--u-pink) !important;
}
p, .body, .section-desc, .section-subtext, .page-hero p, .section-header p {
  font-size: var(--u-text-base) !important;
  line-height: 1.75 !important;
  color: var(--u-text-secondary) !important;
}
.caption, .meta, .stat-label, .case-meta {
  font-size: var(--u-text-sm) !important;
  line-height: 1.7 !important;
  color: var(--u-text-muted) !important;
}
.small, .tag, .badge, .count {
  font-size: var(--u-text-xs) !important;
  line-height: 1.6 !important;
}

/* ---- 17.2 全局间距强制统一 ---- */
.section:not(.hero):not(.page-hero), .page-section {
  padding-top: var(--u-space-20) !important;
  padding-bottom: var(--u-space-20) !important;
}
.section-sm {
  padding-top: var(--u-space-12) !important;
  padding-bottom: var(--u-space-12) !important;
}
.section-lg {
  padding-top: 120px !important;
  padding-bottom: 120px !important;
}
@media (max-width: 768px) {
  .section:not(.hero):not(.page-hero), .page-section {
    padding-top: var(--u-space-12) !important;
    padding-bottom: var(--u-space-12) !important;
  }
  .section-lg {
    padding-top: var(--u-space-10) !important;
    padding-bottom: var(--u-space-10) !important;
  }
}

/* ---- 17.3 全局圆角强制统一 ---- */
.card, .case-card, .solution-card, .news-card, .service-card, .capability-card, .feature-item, .stat-card, .why-card, .process-step-card {
  border-radius: var(--u-radius-lg) !important;
}
.btn, .cta, .cta-btn, .cta-button, .cta.primary, .cta.ghost, .filter-dropdown-toggle, .filter-dropdown-item, .filter-dropdown-menu {
  border-radius: var(--u-radius-md) !important;
}
input, textarea, select, .form-control, .contact-form input, .contact-form textarea, .contact-form select {
  border-radius: var(--u-radius-sm) !important;
}
.pill, .tag, .badge, .industry-tag-chip, .lang-pill, .featured-tag, .case-tag, .case-card-badge {
  border-radius: var(--u-radius-pill) !important;
}

/* ---- 17.4 全局阴影强制统一 ---- */
.card, .case-card, .solution-card, .news-card, .service-card, .capability-card, .feature-item, .stat-card, .why-card, .process-step-card {
  box-shadow: var(--u-shadow-sm) !important;
  transition: box-shadow 0.35s var(--u-ease), transform 0.35s var(--u-ease) !important;
}
.card:not(.tilt-card):hover, .case-card:not(.tilt-card):hover, .solution-card:not(.tilt-card):hover, .news-card:not(.tilt-card):hover, .service-card:not(.tilt-card):hover, .capability-card:not(.tilt-card):hover, .feature-item:not(.tilt-card):hover, .stat-card:not(.tilt-card):hover, .why-card:not(.tilt-card):hover, .process-step-card:not(.tilt-card):hover {
  box-shadow: var(--u-shadow-md) !important;
  transform: translateY(-4px) !important;
}
.featured-card {
  box-shadow: var(--u-shadow-md) !important;
}
.featured-card:hover {
  box-shadow: var(--u-shadow-lg) !important;
}

/* ---- 17.5 统一按钮组件 ---- */
.btn, .cta, .cta-btn, .cta-button {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  padding: 10px 24px !important;
  font-weight: 600 !important;
  font-size: var(--u-text-sm) !important;
  transition: all 0.3s var(--u-ease) !important;
  cursor: pointer !important;
  border: none !important;
  text-decoration: none !important;
}
.btn-primary, .cta.primary, .cta-btn.primary {
  background: #e8107a !important;
  color: #fff !important;
  box-shadow: var(--u-shadow-pink) !important;
}
.btn-primary:hover, .cta.primary:hover, .cta-btn.primary:hover {
  transform: translateY(-2px) !important;
  box-shadow: 0 12px 32px rgba(232, 16, 122, 0.35) !important;
}
.btn-secondary, .cta.ghost, .cta-btn.secondary, .cta-btn.outline {
  background: #fff !important;
  color: var(--u-navy-deep) !important;
  border: 1.5px solid var(--u-border-strong) !important;
}
.btn-secondary:hover, .cta.ghost:hover, .cta-btn.secondary:hover, .cta-btn.outline:hover {
  border-color: var(--u-pink) !important;
  color: var(--u-pink) !important;
  transform: translateY(-2px) !important;
  box-shadow: var(--u-shadow-md) !important;
}

/* ---- 17.6 统一卡片组件 ---- */
.card, .case-card, .solution-card, .news-card {
  background: #fff !important;
  border: 1px solid var(--u-border) !important;
  overflow: hidden !important;
}
.card-image, .card-image-wrap, .case-image, .solution-image, .news-image {
  overflow: hidden !important;
}
.card-image img, .case-image img, .solution-image img, .news-image img {
  transition: transform 0.6s var(--u-ease) !important;
}
.card:hover .card-image img, .case-card:hover .case-image img, .solution-card:hover .solution-image img, .news-card:hover .news-image img {
  transform: scale(1.05) !important;
}

/* ---- 17.7 统一表单组件 ---- */
/* 排除 checkbox/radio：方框控件不能被输入框的内边距撑大 */
input:not([type="checkbox"]):not([type="radio"]), textarea, select, .form-control, .contact-form input, .contact-form textarea, .contact-form select {
  border: 1.5px solid var(--u-border-strong) !important;
  padding: 12px 16px !important;
  /* ≥16px：iOS Safari 聚焦 <16px 输入框会自动放大整页（原 --u-text-sm=14px） */
  font-size: 1rem !important;
  transition: all 0.2s var(--u-ease) !important;
  background: #fff !important;
  color: var(--u-text-primary) !important;
}
input:focus, textarea:focus, select:focus, .form-control:focus {
  border-color: var(--u-pink) !important;
  box-shadow: 0 0 0 3px rgba(232, 16, 122, 0.12) !important;
  outline: none !important;
}
input::placeholder, textarea::placeholder {
  color: var(--u-text-muted) !important;
  opacity: 1 !important;
}

/* ---- 17.8 统一 section 组件 ---- */
.section-header {
  text-align: center !important;
  margin-bottom: var(--u-space-12) !important;
  max-width: 720px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
.section-header h2 {
  margin: 0 0 var(--u-space-3) !important;
}
.section-header p {
  margin: 0 auto !important;
  max-width: 640px !important;
}

/* ---- 17.9 统一响应式断点 ---- */
@media (max-width: 1280px) { }
@media (max-width: 1024px) { }
@media (max-width: 768px) {
  h1, .h1, .hero-title, .page-hero h1 {
    font-size: clamp(2rem, 8vw, 2.7rem) !important;
  }
  h2, .h2, .section-title, .section-header h2 {
    font-size: clamp(1.5rem, 6vw, 2rem) !important;
  }
  h3, .h3 {
    font-size: clamp(1.1rem, 4vw, 1.35rem) !important;
  }
  .section-header {
    margin-bottom: var(--u-space-8) !important;
  }
}
@media (max-width: 480px) {
  h1, .h1, .hero-title, .page-hero h1 {
    font-size: clamp(1.6rem, 7vw, 2.2rem) !important;
  }
  h2, .h2, .section-title, .section-header h2 {
    font-size: clamp(1.35rem, 6vw, 1.75rem) !important;
  }
}

/* ---- 17.10 其他细节统一 ---- */
html {
  scroll-behavior: smooth !important;
  scrollbar-gutter: stable !important;
}
::selection {
  background: rgba(232, 16, 122, 0.2) !important;
  color: var(--u-text-primary) !important;
}
img[loading="lazy"]:not(.loaded) {
  background: #f4f6fa !important;
  background-size: 200% 100% !important;
  animation: u-skeleton 1.4s ease-in-out infinite !important;
}
@keyframes u-skeleton {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* ---- 17.11 清理内联样式后的补偿规则 ---- */
.share-icon-svg {
  vertical-align: -3px;
  margin-right: 6px;
}
.sidebar-help-text {
  font-size: var(--u-text-sm) !important;
  line-height: 1.7 !important;
  color: var(--u-text-muted) !important;
}
[hidden] {
  display: none !important;
}

.value-icon-img {
  width: 30px;
  height: 30px;
  object-fit: contain;
}
.contact-map-iframe {
  border: 0;
  border-radius: var(--u-radius-lg);
  min-height: 320px;
}

.container-narrow {
  max-width: 900px !important;
}
.article-thumb {
  width: 100%;
  border-radius: var(--u-radius-lg);
  margin-bottom: 36px;
}
.features-section {
  margin-top: 40px;
  padding-top: 30px;
  border-top: 1px solid var(--u-border);
}
.features-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  padding: 0;
  list-style: none;
}
.feature-chip {
  padding: 12px 16px;
  background: #f8f9fa;
  border-radius: var(--u-radius-sm);
  color: var(--u-text-primary);
  font-size: var(--u-text-sm);
}
.cta-wrap {
  margin-top: 40px;
  text-align: center;
}
.cta-btn.large {
  padding: 16px 40px !important;
  border-radius: 50px !important;
}

.news-empty .icon {
  color: #cbd2dc;
}
#searchEmpty {
  margin-top: 24px;
}
/* ============================================================
   2026-10-27 对比度合规（WCAG AA ≥4.5:1）
   品牌粉 #e8107a 在白/浅底上仅 4.37:1，小字号不达标；
   此处仅加深「浅底上的小字号文字」，大标题与主按钮不变。
   ============================================================ */
.cases .case-card-badge,
.cases .case-card-tag,
.news-featured .feat-cat,
.news-featured .feat-cta,
.news-card .thumb-badge,
.news-meta .cat,
.news-cta,
.news-copy a,
.weapp-copy a,
.industries-grid .industry-card-tag,
.industry-tag-chip .num,
.feature-tag,
.card-tag,
.filter-tab .num,
.article-tags .tag,
.form-privacy a {
  color: #b3136b !important;
}

/* 白字压粉底的小标签：加深底色而非改字色 */
.cases .case-overlay-cta,
.case-overlay-cta {
  background: #c40d67 !important;
}

/* 案例卡内小标签：普通态白底粉字加深；primary 态白字压深粉底 */
.case-card .case-tag {
  color: #b3136b !important;
}
.case-card .case-tag.primary {
  background: #c40d67 !important;
  color: #fff !important;
}

/* ===== hero-bg.css ===== */
/* =========================================================
   Hero 背景图（全站内页统一）
   ---------------------------------------------------------
   原来各页 hero 都是纯 CSS 渐变色块，观感单调。
   这里给所有内页 hero 挂一张真实背景图，并叠一层
   中心偏暗的遮罩，保证白色大标题仍有足够对比度。

   加载位置：由 site-overrides.css 末尾 @import，
   在所有页面 CSS（about.css / solutions.css / cases.css …）
   之后生效；配合 !important 压住各页自己写的
   background / background-size / animation。
   ========================================================= */

:root {
  /* 遮罩：单层椭圆渐变（多层叠加会成倍压暗，所以只用一层）。
     中心 0.56 / 中圈 0.34 / 边缘 0.52 —— 实测这三张图本身就够暗，
     中部平均 RGB 只有 (23,39,66)，0.56 时白色标题对比度仍有 17:1，
     最亮像素处也有 4.4:1，既能保证可读，又让背景图真的看得见。 */
  /* 遮罩：均匀半透明实色（原为椭圆渐变，已按"全站不使用过渡色"改为单一透明度）。
     0.55 时白色标题对比度充足，背景图仍可见。 */
  --hero-scrim: rgba(8, 26, 56, 0.55);
  /* 兜底图（联系页 / 站点地图这类"通用"页面） */
  --hero-img: url('/static/images/hero/hero-ambient.webp');
}

/* --- 按页面分配图片 --- */

/* 技术与方案气质：深蓝流光丝带 + 金色暖光 */
.solutions-hero,
.page-hero.weapp-hero {
  --hero-img: url('/static/images/hero/hero-tech.webp');
}

/* 公司/内容列表气质：深色玻璃几何 + 品红与青色折光 */
.page-hero.about-hero,
.case-hero {
  --hero-img: url('/static/images/hero/hero-corporate.webp');
}

/* 通用/沟通气质：深蓝到紫的柔光球体 */
.contact-hero,
.sitemap-hero {
  --hero-img: url('/static/images/hero/hero-ambient.webp');
}

/* --- 统一应用 --- */
.page-hero,
.weapp-hero,
.about-hero,
.case-hero,
.contact-hero,
.solutions-hero,
.sitemap-hero {
  background-color: #081a35 !important;
  background-image: var(--hero-scrim), var(--hero-img) !important;
  background-size: cover !important;
  background-position: center center !important;
  background-repeat: no-repeat !important;
  /* solutions-hero 原本用 heroFlow 动画移动 4 层渐变的位置，
     换成图片之后这套 keyframes 会让图整体漂移，关掉 */
  animation: none !important;
}

/* about-hero 上原本有一层 48px 粉色网格（unify.css 16.x），
   叠在照片上会变成噪点，去掉 */
.page-hero.about-hero::before {
  display: none !important;
}

/* 手机端图片按中心裁切，标题不会偏到一边 */
@media (max-width: 768px) {
  .page-hero,
  .weapp-hero,
  .about-hero,
  .case-hero,
  .contact-hero,
  .solutions-hero,
  .sitemap-hero {
    background-position: center center !important;
  }
}

/* ===== cta-card.css ===== */
/*
 * 全站底部 CTA 统一规格
 *
 * 背景：/weapp、/about、/cases、/solutions 四处 CTA 原本各写一套——
 * 有的满宽深色背景带（/about、/cases），有的外层无内边距导致卡片贴页脚（/solutions），
 * 圆角、内边距、阴影取值也各不相同。
 *
 * 这里统一为：外层透明 + 上下留白，内层深色渐变圆角卡片，
 * 卡片宽度由 .container 决定，因此两侧自然留白。
 *
 * 加载位置：bundle-overrides.css 末尾，排在 fixes/unify 之后，可压住各页自己的写法。
 */

/* ---- 外层：透明，只保留上下呼吸空间 ---- */
/* 简写与长属性同时写出：unify.css 有一条 .about-cta{padding-top:var(...)!important}，
   若只写简写，层叠按「每个长属性分别比较」处理，容易出现"写了却不生效"的歧义。 */
section.solutions-cta,
section.solutions-cta2,
section.about-cta,
section.cases-bottom-cta {
  padding: 80px 0 !important;
  padding-top: 80px !important;
  padding-bottom: 80px !important;
  background: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
}

/* 原本挂在满宽 section 上的装饰光斑，卡片化后会飘到卡外，收起 */
section.about-cta::before,
section.cases-bottom-cta::before,
section.cases-bottom-cta::after {
  display: none !important;
}

/* ---- 卡片本体：统一圆角、内边距、投影与背景 ---- */
section.solutions-cta .cta-box,
section.solutions-cta2 .cta-box,
section.about-cta .cta-content,
section.cases-bottom-cta .cta-inner {
  padding: 64px 56px !important;
  border-radius: 36px !important;
  border: 1px solid rgba(255, 255, 255, .10) !important;
  box-shadow: 0 22px 50px rgba(10, 45, 94, .18) !important;
  overflow: hidden;
  background:,
    #0a2d5e !important;
}

/* 卡片内的标题与正文统一（各页原有的字号写法不一致） */
section.solutions-cta .cta-box h2,
section.solutions-cta2 .cta-box h2,
section.about-cta .cta-content h2,
section.cases-bottom-cta .cta-inner h2 {
  color: #fff !important;
  font-size: clamp(1.5rem, 2.4vw, 2rem) !important;
  line-height: 1.3 !important;
  margin: 0 0 12px !important;
}

section.solutions-cta .cta-box p,
section.solutions-cta2 .cta-box p,
section.about-cta .cta-content p,
section.cases-bottom-cta .cta-inner p {
  color: rgba(255, 255, 255, .84) !important;
  font-size: 1rem !important;
  line-height: 1.75 !important;
  margin: 0 !important;
}

/* ---- 移动端 ---- */
@media (max-width: 768px) {
  section.solutions-cta,
  section.solutions-cta2,
  section.about-cta,
  section.cases-bottom-cta {
    padding: 48px 0 !important;
    padding-top: 48px !important;
    padding-bottom: 48px !important;
  }

  section.solutions-cta .cta-box,
  section.solutions-cta2 .cta-box,
  section.about-cta .cta-content,
  section.cases-bottom-cta .cta-inner {
    padding: 44px 24px !important;
    border-radius: 26px !important;
  }
}

/* ===== de-ai.css ===== */
/* ============================================================
   de-ai.css —— 降噪精装层（bundle 最后一位，赢下层叠）
   目标：去 AI 模板味，提高级感。原则是"减"：
   1. 标题一律单色，剥离全部渐变文字
   2. 胶囊徽章 → 细字距 overline 小标签
   3. 按钮去渐变、去发光、去扫光
   4. 装饰层下线（粒子/光斑/网格/圆环/圆点角标）
   5. 卡片细边框低阴影，图标改浅底描边
   ============================================================ */

:root {
  --dai-navy: #0a2d5e;
  --dai-ink: #132a4f;
  --dai-pink: #e8107a;
  --dai-pink-deep: #c40d67;
  --dai-line: rgba(10, 45, 94, 0.1);
}

/* ------------------------------------------------------------
   1. 标题去渐变：全站渐变文字剥离，回归单色
   ------------------------------------------------------------ */
.hero-copy h1,
.hero-copy h1 .accent,
.brand-en,
.city-hero h1 span,
.contact-hero .hero-title,
.hero-title,
.hero-title .pink,
.section-title,
.section-title .pink,
.section-intro .section-title,
.solutions-hero .hero-title,
.weapp-hero .hero-title,
.case-hero .hero-title,
.about-hero .hero-title,
.page-hero .hero-title,
.stat-num,
.stat-number,
.text-gradient,
.trust-plus,
.grad,
.gradient-text-animated,
.overview-header .section-title .pink {
  background: none !important;
  background-image: none !important;
  -webkit-background-clip: border-box !important;
  background-clip: border-box !important;
  -webkit-text-fill-color: currentColor !important;
  text-shadow: none !important;
  animation: none !important;
}

/* 各家族回填正确的单色 */
.hero-copy h1 {
  color: var(--dai-navy) !important;
}
.hero-copy h1 .accent {
  color: var(--dai-pink) !important;
  -webkit-text-fill-color: var(--dai-pink) !important;
}
.pink,
span.pink,
.section-title .pink,
.hero-title .pink,
.overview-header .section-title .pink,
.city-hero h1 span {
  color: var(--dai-pink) !important;
  -webkit-text-fill-color: var(--dai-pink) !important;
}
.brand-en {
  color: var(--dai-pink) !important;
  -webkit-text-fill-color: var(--dai-pink) !important;
}
/* 深色 hero 内标题统一纯白 */
.solutions-hero .hero-title,
.contact-hero .hero-title,
.weapp-hero .hero-title,
.case-hero .hero-title,
.about-hero .hero-title,
.page-hero .hero-title {
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}

/* ------------------------------------------------------------
   2. 徽章：胶囊 → overline 小标签（无底、无边、去圆点动画）
   ------------------------------------------------------------ */
.eyebrow,
.hero-eyebrow,
.section-eyebrow,
.page-hero.about-hero .eyebrow,
.page-hero.about-hero .hero-eyebrow {
  display: inline-block !important;
  padding: 0 !important;
  background: none !important;
  background-image: none !important;
  border: none !important;
  border-radius: 0 !important;
  backdrop-filter: none !important;
  box-shadow: none !important;
  color: var(--dai-pink-deep) !important;
  font-size: 0.8rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.22em !important;
}
.eyebrow::before,
.hero-eyebrow::before,
.section-eyebrow::before {
  display: none !important;
}
/* bundle-base 自带的引导线：渐变 → 实色细线，保留编辑感 */
.eyebrow::after {
  background: var(--dai-pink) !important;
  opacity: 0.55 !important;
}
/* 深色 hero 上的小标签用亮粉 */
.solutions-hero .hero-eyebrow,
.contact-hero .hero-eyebrow,
.weapp-hero .hero-eyebrow,
.about-hero .hero-eyebrow,
.case-hero .hero-eyebrow,
.page-hero .hero-eyebrow {
  color: #ff85ad !important;
}

/* ------------------------------------------------------------
   3. 按钮：实色、无渐变、无发光、无伪元素动效
   ------------------------------------------------------------ */
.cta.primary,
.cta-btn.primary,
.cta-button,
.btn-primary,
.submit-btn,
.view-more-btn,
.cta-link,
.fab-cta,
.consult-action .cta,
.service-address-action .cta.primary,
.solution-cta-content .cta,
.cta-box .cta-btn,
.case-cta-strip .cta,
.solutions-cta .cta-btn {
  background: var(--dai-pink) !important;
  background-image: none !important;
  box-shadow: none !important;
  text-shadow: none !important;
  transition: background-color 0.2s ease !important;
}
.cta.primary:hover,
.cta-btn.primary:hover,
.btn-primary:hover,
.submit-btn:hover,
.view-more-btn:hover,
.cta-link:hover,
.fab-cta:hover,
.cta-box .cta-btn:hover,
.solutions-cta .cta-btn:hover {
  background: var(--dai-pink-deep) !important;
  transform: none !important;
  box-shadow: none !important;
}
.cta::before,
.cta::after,
.btn::after,
.cta.primary::before,
.cta-btn.primary::before,
.cta-btn.primary::after {
  display: none !important;
}

/* ------------------------------------------------------------
   4. 装饰层全部下线
   ------------------------------------------------------------ */
.hero-particles,
.hero-particle,
.particles,
.particle,
.hero-grid-bg,
.hero-mouse-glow,
.hero-glow,
.hero-glow--top,
.hero-glow--bottom,
.shine-card::after,
.corner-dot {
  display: none !important;
}
/* 首页 hero 与各内页 hero 的光斑/网格伪元素 */
.hero::before,
.hero::after,
.hero-visual::before,
.hero-visual::after,
.hero-image-wrapper::before,
.hero-image-wrapper::after,
.solutions-hero::before,
.solutions-hero::after,
.contact-hero::before,
.contact-hero::after,
.about-hero::before,
.about-hero::after,
.case-hero::before,
.case-hero::after,
.weapp-hero::before,
.weapp-hero::after,
.page-hero::before,
.page-hero::after {
  display: none !important;
}
/* 内页深色 hero：动态流光 → 一次成形的深藏青微渐变 */
.solutions-hero,
.contact-hero,
.weapp-hero,
.about-hero,
.case-hero,
.page-hero {
  background: #0b2044 !important;
  background-size: 100% 100% !important;
  animation: none !important;
}
/* 首页 hero 底色收敛为浅灰蓝 */
.hero {
  background: #f6f8fb !important;
}

/* ------------------------------------------------------------
   5. 卡片与图标：细边框、低阴影、克制 hover
   ------------------------------------------------------------ */
.service-card,
.capability-card,
.city-pillar-card,
.city-content-card,
.news-card,
.industry-card,
.weapp-card,
.value-card,
.advantage-card,
.solution-card,
.case-card {
  border-radius: 14px !important;
  border: 1px solid var(--dai-line) !important;
  box-shadow: 0 1px 2px rgba(8, 38, 78, 0.05) !important;
  transition: border-color 0.2s ease, box-shadow 0.2s ease !important;
}
.service-card:hover,
.capability-card:hover,
.city-pillar-card:hover,
.city-content-card:hover,
.news-card:hover,
.industry-card:hover,
.weapp-card:hover,
.value-card:hover,
.advantage-card:hover,
.solution-card:hover,
.case-card:hover {
  transform: none !important;
  border-color: rgba(232, 16, 122, 0.3) !important;
  box-shadow: 0 10px 24px rgba(8, 38, 78, 0.08) !important;
}

/* 图标：实色品牌粉底 + 白色描线，清晰醒目 */
.icon-box,
.icon-circle,
.icon-circle.icon-svg-wrap,
.capability-icon,
.process-icon,
.solution-icon,
.value-icon,
.advantage-icon,
.icon-wrap,
.trust-item-icon,
.client-icon-wrap {
  background: var(--dai-pink) !important;
  background-image: none !important;
  color: #fff !important;
  box-shadow: 0 6px 16px rgba(232, 16, 122, 0.22) !important;
}
/* SVG 描边跟随容器颜色（覆盖写死的 stroke="#fff"） */
.icon-circle svg,
.capability-icon svg,
.process-icon svg,
.solution-icon svg,
.value-icon svg,
.advantage-icon svg,
.icon-box svg,
.icon-wrap svg {
  stroke: currentColor !important;
}

/* 描线型图标修复：开放路径未写 fill 时默认填黑（时钟/饼图出现黑楔形），
   这些容器内的图标全部是 stroke 型，统一去填充 */
.why-icon svg path,
.why-icon svg circle,
.why-icon svg rect,
.why-icon svg polygon,
.why-icon svg polyline,
.why-icon svg line,
.capability-icon svg path,
.capability-icon svg circle,
.capability-icon svg rect,
.capability-icon svg polyline,
.capability-icon svg line,
.process-icon svg path,
.process-icon svg circle,
.process-icon svg rect,
.process-icon svg polyline,
.process-icon svg line,
.solution-icon svg path,
.solution-icon svg circle,
.solution-icon svg rect,
.solution-icon svg polyline,
.solution-icon svg line,
.value-icon svg path,
.value-icon svg circle,
.value-icon svg rect,
.value-icon svg polyline,
.value-icon svg line,
.advantage-icon svg path,
.advantage-icon svg circle,
.advantage-icon svg rect,
.advantage-icon svg polyline,
.advantage-icon svg line,
.icon-circle svg path,
.icon-circle svg circle,
.icon-circle svg rect,
.icon-circle svg polyline,
.icon-circle svg line,
.icon-box svg path,
.icon-box svg circle,
.icon-box svg rect,
.icon-box svg polyline,
.icon-box svg line {
  fill: none !important;
}

/* 64 视图框缩到 36px 后描边发虚 → 加粗一档 */
.why-icon svg path,
.why-icon svg circle,
.why-icon svg line {
  stroke-width: 2.6;
}

/* 用户确认：内页 hero 标题过长时 76px 过大 → 收敛到 28–45px 区间（首页 hero 不受影响）
   用高特异性选择器，压过组件层 @media 内的 .hero-title !important 规则 */
.page-hero h1.hero-title,
.page-hero .hero-title,
body .page-hero h1 {
  font-size: clamp(1.9rem, 3.4vw, 2.8rem) !important;
  line-height: 1.3 !important;
}

/* ------------------------------------------------------------
   12. 区块头系统：全站四种写法（.overview-header / .section-head /
       .section-header / .section-intro）统一为一套版式
       居中容器 + overline 眉题（如有）+ 深蓝标题 + 记号笔高亮 + 灰蓝描述
   ------------------------------------------------------------ */
.section-head,
.section-header,
.section-intro,
.overview-header {
  text-align: center !important;
  max-width: 780px;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* 标题：同一字号阶梯、同一深蓝 */
.section-head h2,
.section-header h2,
.section-intro h2,
.overview-header h2,
.section-title {
  font-size: clamp(1.75rem, 3.4vw, 2.6rem) !important;
  font-weight: 800 !important;
  line-height: 1.25 !important;
  letter-spacing: -0.012em !important;
  color: var(--dai-navy) !important;
  margin: 0 0 16px !important;
}

/* 描述：同一灰蓝、同一行高与宽度（排除眉题段落） */
.section-head > p:not(.eyebrow):not(.section-eyebrow),
.section-header > p:not(.eyebrow):not(.section-eyebrow),
.section-intro > p:not(.eyebrow):not(.section-eyebrow),
.overview-header p:not(.eyebrow):not(.section-eyebrow),
.section-desc,
.section-subtext {
  font-size: 1.02rem !important;
  line-height: 1.75 !important;
  color: #5b6b85 !important;
  max-width: 680px;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* 眉题独占一行居中，防止与 inline-block 标题挤到同一行 */
.section-head .eyebrow,
.section-header .eyebrow,
.section-header .section-eyebrow,
.section-intro .eyebrow,
.overview-header .eyebrow {
  display: block !important;
  width: fit-content;
  margin: 0 auto 16px !important;
}

/* 用户确认：粉词后面的浅粉色块太丑 → 全部移除，标题回归纯文字 */
.section-title .pink::after,
.section-head h2 .pink::after,
.section-head h2 .accent::after,
.section-header h2 .pink::after,
.section-header h2 .accent::after,
.section-intro h2 .pink::after,
.overview-header h2 .pink::after,
.hero-copy h1 .accent::after,
.section-title:has(.pink)::after,
.section-title::after,
.section-title .pink::before {
  display: none !important;
  content: none !important;
}

/* 能力区引用条：渐变底 → 浅灰 */
.capability-highlight,
.capability-quote {
  background: #f6f8fb !important;
  background-image: none !important;
  box-shadow: none !important;
}

/* ------------------------------------------------------------
   6. 补充降噪
   ------------------------------------------------------------ */
/* 人像后的装饰圆环/粉色光圆下线 */
.visual-ring,
.ring-one,
.ring-two,
.ring-three,
.visual-deco {
  display: none !important;
}
/* 有机圆形（blob）人像 → 干净的圆角矩形 */
.hero-visual .hero-image-wrapper,
.hero-visual img,
.seo-visual .hero-image-wrapper,
.seo-visual img {
  border-radius: 24px !important;
  transition: transform 0.4s ease !important;
}
.hero-visual:hover img,
.seo-visual:hover img {
  border-radius: 24px !important;
  transform: none !important;
}
/* 顶部滚动进度条：渐变 → 实色 */
.scroll-progress-bar {
  background: var(--dai-pink) !important;
  background-image: none !important;
}
/* 斜纹/条纹装饰块下线 */
.hero-stripe,
.section-stripe,
.deco-stripes {
  display: none !important;
}
/* 各区块斜纹伪元素装饰下线 */
.hero::after,
.services::before,
.seo::after,
.benefits::after,
.cases::before,
.cases::after {
  display: none !important;
}
/* 筛选/分页激活态：去光晕，保留实色胶囊 */
.case-tabs .tab-btn.active,
.news-tabs .tab-btn.active,
.case-tabs button.active,
.news-tabs button.active,
.filter-btn.active,
.tab.active {
  box-shadow: none !important;
}

/* 浮动按钮组：圆形按钮与顶部胶囊右对齐（flex 纵向默认 stretch 导致圆钮偏左） */
.floating-actions {
  align-items: flex-end;
}

/* 案例卡图上的分类角标：白底粉字 → 收敛为深色玻璃底白字 */.cases .case-card-badge,
.case-card .case-card-badge,
.case-card-badge {
  background: rgba(8, 26, 56, 0.72) !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  backdrop-filter: blur(6px) !important;
  text-shadow: none !important;
}



/* ------------------------------------------------------------
   联系页信息卡规范化：统一内边距、去掉列表式首末裁切与边框
   （pages.css 的 :first-child/:last-child/border-bottom 泄漏进四卡网格，
    加上 styles.css 的 column 布局，导致第一卡图标顶边、末卡贴底）
   ------------------------------------------------------------ */
.contact-info-section .contact-item {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 14px;
  padding: 28px 24px !important;
  border-bottom: none !important;
}
.contact-info-section .contact-item:first-child,
.contact-info-section .contact-item:last-child {
  padding-top: 28px;
  padding-bottom: 28px;
}
.contact-info-section .contact-content {
  min-height: 0 !important;
  justify-content: flex-start !important;
}
/* 去掉 3D 翻转 hover，回归轻浮起 */
.contact-info-section .contact-item:hover {
  transform: translateY(-4px) !important;
  box-shadow: 0 10px 24px rgba(8, 38, 78, 0.08) !important;
}

/* 图标呼吸光晕动画下线；hover 停止弹跳缩放 */
.icon-box,
.capability-icon,
.process-icon,
.solution-icon,
.value-icon,
.advantage-icon {
  animation: none !important;
}
.contact-item:hover .icon-box,
.contact-info-section .contact-item:hover .icon-box {
  transform: none !important;
}
/* 联系信息卡：渐变顶条与渐变描边 hover 残留下线 */
.contact-info-section .contact-item::before,
.contact-info-section .contact-item::after {
  display: none !important;
}

/* ------------------------------------------------------------
   联系表单整体美化：收紧间距、统一控件、修复 select 浮动标签
   ------------------------------------------------------------ */
/* 背景光斑下线 */
.contact-form-section .form-glow {
  display: none !important;
}

/* 容器与行距收紧 */
.contact-form {
  padding: 44px 48px !important;
  border-radius: 18px !important;
}
.contact-form .form-row {
  gap: 16px !important;
  margin-bottom: 16px !important;
}
.contact-form .form-group.full-width {
  margin-bottom: 16px !important;
}
.contact-form .form-actions {
  margin-top: 22px !important;
}

/* 输入控件统一：浅灰底细边框，聚焦品牌色 */
.contact-form .form-group input,
.contact-form .form-group select,
.contact-form .form-group textarea {
  padding: 13px 16px !important;
  border: 1px solid #dce4ef !important;
  border-radius: 10px !important;
  background: #f7f9fc !important;
  box-shadow: none !important;
  transition: border-color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease !important;
}
.contact-form .form-group input:hover,
.contact-form .form-group select:hover,
.contact-form .form-group textarea:hover {
  border-color: #c3d0e2 !important;
  background: #fff !important;
}
.contact-form .form-group input:focus,
.contact-form .form-group select:focus,
.contact-form .form-group textarea:focus {
  outline: none;
  border-color: var(--dai-pink) !important;
  background: #fff !important;
  box-shadow: 0 0 0 3px rgba(232, 16, 122, 0.09) !important;
}
/* 聚焦渐变光条下线 */
.contact-form .form-group::after,
.contact-form .form-group.floating-label::after {
  display: none !important;
}

/* 浮动标签对位（padding 由 20 收到 16） */
.contact-form .form-group.floating-label label {
  left: 16px !important;
  top: 13px !important;
}
.contact-form .form-group.floating-label input:focus ~ label,
.contact-form .form-group.floating-label input:not(:placeholder-shown) ~ label,
.contact-form .form-group.floating-label textarea:focus ~ label,
.contact-form .form-group.floating-label textarea:not(:placeholder-shown) ~ label {
  top: -9px !important;
  font-size: 0.75rem !important;
  font-weight: 600 !important;
  color: var(--dai-pink-deep) !important;
  background: #fff !important;
}

/* select 修复：非必填空 select 的 :valid 会让标签提前浮起、框内空白。
   未选择时标签留在框内充当占位文案，选择后（.is-filled）或聚焦时才浮起 */
.contact-form .form-group.floating-label select ~ label {
  top: 13px !important;
  font-size: 0.95rem !important;
  font-weight: 500 !important;
  color: #5b6b85 !important;
  background: transparent !important;
}
.contact-form .form-group.floating-label select:focus ~ label,
.contact-form .form-group.floating-label select.is-filled ~ label {
  top: -9px !important;
  font-size: 0.75rem !important;
  font-weight: 600 !important;
  color: var(--dai-pink-deep) !important;
  background: #fff !important;
}

/* 校验错误提示改为悬浮小字，不撑开行距 */
.contact-form .form-group .field-error {
  position: absolute !important;
  left: 4px !important;
  bottom: -20px !important;
  margin: 0 !important;
  font-size: 0.75rem !important;
}

/* 隐私勾选：实色品牌粉 */
.contact-form .form-privacy {
  margin: 6px 0 4px !important;
  font-size: 0.875rem !important;
}
.contact-form .form-privacy input[type="checkbox"] {
  width: 18px !important;
  height: 18px !important;
  flex: 0 0 18px !important;
  border: 1.5px solid #c3d0e2 !important;
  border-radius: 5px !important;
  background: #fff !important;
  box-shadow: none !important;
  margin: 2px 0 0 !important;
  padding: 0 !important;
  appearance: none !important;
  -webkit-appearance: none !important;
  cursor: pointer;
}
.contact-form .form-privacy input[type="checkbox"]:checked {
  background: var(--dai-pink) !important;
  background-image: none !important;
  border-color: var(--dai-pink) !important;
  box-shadow: none !important;
}
.contact-form .form-privacy input[type="checkbox"]:checked::after {
  left: 5px !important;
  top: 1px !important;
}

/* 提交按钮：扫光/光晕伪元素下线，实色已由通用规则处理 */
.contact-form .submit-btn::before,
.contact-form .submit-btn::after {
  display: none !important;
}

/* 表单卡顶部渐变条下线 */
.contact-form::before {
  display: none !important;
}

/* 页脚顶部渐变分隔线统一去除（各文件多处定义） */
.site-footer::before {
  display: none !important;
}

/* ------------------------------------------------------------
   22. 底部精装：提亮文字层级、统一品牌色、收敛装饰
   ------------------------------------------------------------ */
/* 栏目标题：白字 + 24×2 品牌粉短线 */
.site-footer .footer-title {
  color: #fff !important;
  font-size: 0.95rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.04em !important;
  padding-bottom: 12px !important;
  margin-bottom: 18px !important;
}
.site-footer .footer-title::after {
  width: 24px !important;
  height: 2px !important;
  background: var(--dai-pink) !important;
}
/* 品牌名与简介 */
.site-footer .footer-desc {
  color: rgba(255, 255, 255, 0.72) !important;
  font-size: 0.9rem !important;
}
.site-footer .footer-text {
  color: rgba(255, 255, 255, 0.72) !important;
}
.site-footer .footer-text a {
  color: #fff !important;
  font-weight: 600 !important;
  transition: color 0.2s ease;
}
.site-footer .footer-text a:hover {
  color: #ff6aa5 !important;
}
/* 工作时间：金黄 → 白字粉点，消除撞色 */
.site-footer .footer-hours {
  color: rgba(255, 255, 255, 0.85) !important;
  font-size: 0.88rem !important;
}
.site-footer .footer-hours::before {
  background: var(--dai-pink) !important;
}
/* 链接列：提高对比，悬停白字 + 粉点前缀 */
.site-footer .footer-links a {
  color: rgba(255, 255, 255, 0.82) !important;
  padding: 9px 0 !important;
}
.site-footer .footer-links a:hover {
  color: #fff !important;
}
.site-footer .footer-links li {
  border-bottom-color: rgba(255, 255, 255, 0.07) !important;
}
/* 分享区文案与图标 */
.site-footer .footer-share-text {
  color: rgba(255, 255, 255, 0.7) !important;
}
.site-footer .share-icons a {
  color: rgba(255, 255, 255, 0.85) !important;
  background: rgba(255, 255, 255, 0.07) !important;
  border: 1px solid rgba(255, 255, 255, 0.12) !important;
  border-radius: 10px !important;
  transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}
.site-footer .share-icons a::before {
  border-radius: 10px !important;
}
.site-footer .share-icons a:hover {
  transform: translateY(-3px) !important;
  color: #fff !important;
}
/* 版权栏 */
.site-footer .footer-bottom {
  border-top-color: rgba(255, 255, 255, 0.08) !important;
}
.site-footer .footer-bottom p,
.site-footer .footer-bottom .footer-links-bottom a {
  color: rgba(255, 255, 255, 0.65) !important;
}
.site-footer .footer-bottom .footer-links-bottom a:hover {
  color: #fff !important;
}

/* ------------------------------------------------------------
   23. 内页 hero 文字系统统一
       （page-hero / solutions-hero / contact-hero / sitemap-hero / city-hero）
   ------------------------------------------------------------ */
/* 大标题：同一字号阶梯（30–45px），深色 hero 纯白 */
.solutions-hero .hero-title,
.contact-hero .hero-title,
.page-hero .hero-title,
.sitemap-hero h1,
.city-hero h1 {
  font-size: clamp(1.9rem, 3.4vw, 2.8rem) !important;
  line-height: 1.3 !important;
  letter-spacing: -0.01em !important;
  font-weight: 800 !important;
}
.solutions-hero .hero-title,
.contact-hero .hero-title,
.page-hero .hero-title,
.sitemap-hero h1 {
  color: #fff !important;
}
/* 眉题：统一亮粉 overline（深底上高对比） */
.solutions-hero .hero-eyebrow,
.contact-hero .hero-eyebrow,
.page-hero .hero-eyebrow,
.page-hero.about-hero .hero-eyebrow,
.page-hero.weapp-hero .hero-eyebrow,
.page-hero.case-hero .hero-eyebrow,
.sitemap-hero .hero-eyebrow {
  color: #ff85ad !important;
  font-size: 0.8rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.22em !important;
  text-transform: uppercase !important;
  margin-bottom: 18px !important;
}
/* 副标题：同一字号与柔和白 */
.solutions-hero .hero-subtitle,
.contact-hero .hero-subtitle,
.page-hero .hero-subtitle,
.sitemap-hero .hero-subtitle {
  font-size: 1.05rem !important;
  line-height: 1.8 !important;
  color: rgba(255, 255, 255, 0.85) !important;
  letter-spacing: normal !important;
}
/* 面包屑：同一字号与灰白层级 */
.solutions-hero .hero-breadcrumb,
.contact-hero .hero-breadcrumb,
.page-hero .hero-breadcrumb,
.sitemap-hero .hero-breadcrumb {
  font-size: 0.85rem !important;
  color: rgba(255, 255, 255, 0.65) !important;
}
.solutions-hero .hero-breadcrumb a,
.contact-hero .hero-breadcrumb a,
.page-hero .hero-breadcrumb a,
.sitemap-hero .hero-breadcrumb a {
  color: rgba(255, 255, 255, 0.78) !important;
}
.solutions-hero .hero-breadcrumb a:hover,
.contact-hero .hero-breadcrumb a:hover,
.page-hero .hero-breadcrumb a:hover,
.sitemap-hero .hero-breadcrumb a:hover {
  color: #fff !important;
}

/* 城市页浅色面包屑（city 页 hero 为浅底，白色面包屑不可见） */
.city-hero .city-breadcrumb,
.city-hero .city-breadcrumb span {
  color: rgba(10, 45, 94, 0.6) !important;
}
.city-hero .city-breadcrumb a {
  color: rgba(10, 45, 94, 0.8) !important;
}
.city-hero .city-breadcrumb a:hover {
  color: var(--dai-pink) !important;
}

/* ------------------------------------------------------------ 
   24. hero 眉题装饰清零 + 标题粉词统一纯白
       （solutions/contact 白底胶囊、weapp 粉底胶囊、pulse 粉点全部移除）
   ------------------------------------------------------------ */
.solutions-hero .hero-eyebrow,
.contact-hero .hero-eyebrow,
.page-hero .hero-eyebrow,
.page-hero.about-hero .hero-eyebrow,
.page-hero.weapp-hero .hero-eyebrow,
.sitemap-hero .hero-eyebrow {
  display: block !important;
  width: fit-content !important;
  margin: 0 auto 18px !important;
  padding: 0 !important;
  background: none !important;
  border: none !important;
  animation: none !important;
}
.solutions-hero .hero-eyebrow::before,
.contact-hero .hero-eyebrow::before,
.page-hero .hero-eyebrow::before,
.solutions-hero .hero-eyebrow::after,
.contact-hero .hero-eyebrow::after,
.page-hero .hero-eyebrow::after {
  display: none !important;
  content: none !important;
}
/* 深色 hero 标题内的粉词统一纯白（与 solutions 全白标题一致） */
.page-hero .hero-title .pink,
.page-hero.about-hero .hero-title .pink,
.solutions-hero .hero-title .pink,
.contact-hero .hero-title .pink,
.sitemap-hero h1 .pink {
  color: #fff !important;
}
