/* ==========================================================================
   链接未来官网 · 设计系统
   来源：对齐 WorkBuddy 官网（workbuddy.ai）实测值 —— 白底、近黑正文
   #191A23、品牌绿 #28B894、浅灰面 #F4F5F5、发丝描边 #E5E5E5。
   强调色由品牌蓝改为 WorkBuddy 绿：本站是 WorkBuddy 企业版授权服务商，
   配色与产品方保持一致，访客不会在「我们」与「产品」之间看到两套颜色。

   按钮三档分工（与 workbuddy.ai 一致）：
     .btn-primary  绿色实心 —— 页面主行动（预约演示、立即致电）
     .btn-dark     黑色实心 pill —— 顶栏等需要更重的位置
     .btn-outline  绿色描边 —— 次级行动
   ========================================================================== */

:root {
  /* 中性 */
  --bg: #ffffff;
  --fg: #191a23;
  --secondary: #f8f9fa;
  --muted: #f4f4f4;
  --muted-fg: #666666;
  --border: #e5e5e5;
  --ink: #191a23;

  /* 品牌（WorkBuddy 绿） */
  --primary: #28b894;
  --primary-dark: #1f9e7d;
  --primary-tint: #e9f8f3;
  --primary-fg: #ffffff;

  /* WorkBuddy 视觉元素用色 */
  --wb-green: #28b894;
  --wb-green-soft: #d8f2ea;
  --wb-black: #191a23;
  --wb-gray: #f4f5f5;
  --wb-gray-2: #f3f3f3;

  /* 语义 */
  --success: #28b894;
  --success-tint: #ecf8f4;
  --danger: #c0392b;

  /* 页脚 */
  --footer-bg: #1b1f2a;
  --footer-fg: #ffffff;
  --footer-muted: #9aa1ad;

  --radius-card: 12px;
  --radius-pill: 999px;
  --radius-stage: 24px;

  --shadow-card: 0 1px 2px rgba(0, 0, 0, 0.04);
  --shadow-elevated: 0 8px 28px rgba(15, 23, 42, 0.08);
  --shadow-featured: 0 6px 24px rgba(40, 184, 148, 0.14);

  --header-h: 64px;
  --container: 1200px;

  /* WorkBuddy 图标平铺纹理（img/wb-texture.svg，tile 120×120）。
     铺在伪元素上而不是元素本身：background-image 没有 opacity 属性，
     「很淡的图标底纹」只能靠伪元素整体降透明度来实现。
     tile 尺寸必须与 background-size 一致，否则接缝处会出现半截图标。 */
  --wb-tex: url("img/wb-texture.svg");
  --wb-tex-size: 120px 120px;

  --font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
    "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
}

* { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--header-h) + 16px);
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--fg);
  font-family: var(--font);
  font-size: 15px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

a { color: inherit; text-decoration: none; }
img, svg { display: block; max-width: 100%; }
button { font-family: inherit; }
h1, h2, h3, h4 { margin: 0; line-height: 1.22; font-weight: 700; }
p { margin: 0; }
ul, ol { margin: 0; padding: 0; list-style: none; }
table { border-collapse: collapse; width: 100%; }

.container {
  margin-inline: auto;
  width: 100%;
  max-width: var(--container);
  padding-inline: 20px;
}
@media (min-width: 768px) {
  .container { padding-inline: 32px; }
}

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

.skip-link {
  position: absolute; left: 12px; top: -100px; z-index: 200;
  background: var(--ink); color: #fff; padding: 10px 16px;
  border-radius: 8px; font-size: 14px; transition: top .2s;
}
.skip-link:focus { top: 12px; }

/* ---------- 顶栏 ---------- */
.site-header {
  position: fixed; inset: 0 0 auto 0; z-index: 100;
  height: var(--header-h);
  background: rgba(255, 255, 255, .88);
  backdrop-filter: saturate(180%) blur(12px);
  -webkit-backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid var(--border);
}
.site-header .container {
  height: 100%; display: flex; align-items: center; gap: 28px;
}
.brand { display: flex; align-items: center; gap: 10px; flex: none; }
/* 30px 下 3px ≈ 图稿自带的 9.92% 圆角。这里刻意与图稿对齐而不是「看着圆一点」：
   图稿四角本身是透明的，border-radius 若比它大，CSS 就会把角再切一刀，
   页头上显示的就不再是品牌标识的形状，而是一个被 CSS 改圆的近似形。
   保留这一行是为了在图片没有 alpha（比如误换成白底图）时兜住白角。 */
.brand img { width: 30px; height: 30px; border-radius: 3px; }
.brand .brand-text { display: flex; flex-direction: column; line-height: 1.15; }
.brand .brand-name { font-size: 16px; font-weight: 800; letter-spacing: -0.01em; }
.brand .brand-sub { font-size: 10.5px; color: var(--muted-fg); letter-spacing: .02em; }

.nav { display: flex; align-items: center; gap: 4px; margin-left: 8px; }
.nav a {
  display: block; padding: 8px 14px; border-radius: var(--radius-pill);
  font-size: 14.5px; color: #3a3d47; transition: color .18s, background .18s;
}
.nav a:hover { color: var(--ink); background: var(--secondary); }
.nav a[aria-current="page"] { color: var(--primary); font-weight: 600; }

.header-actions { margin-left: auto; display: flex; align-items: center; gap: 12px; }
.header-tel {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 14px; font-weight: 700; color: var(--ink); letter-spacing: .01em;
}
.header-tel:hover { color: var(--primary); }

.nav-toggle {
  display: none; margin-left: auto; width: 40px; height: 40px;
  border: 1px solid var(--border); border-radius: 10px; background: #fff;
  align-items: center; justify-content: center; cursor: pointer;
}
.nav-toggle span {
  display: block; width: 16px; height: 1.5px; background: var(--ink); position: relative;
}
.nav-toggle span::before, .nav-toggle span::after {
  content: ""; position: absolute; left: 0; width: 16px; height: 1.5px; background: var(--ink);
}
.nav-toggle span::before { top: -5px; }
.nav-toggle span::after { top: 5px; }

@media (max-width: 960px) {
  .nav {
    position: fixed; inset: var(--header-h) 0 auto 0;
    flex-direction: column; align-items: stretch; gap: 2px;
    background: #fff; border-bottom: 1px solid var(--border);
    padding: 12px 20px 20px; margin: 0;
    box-shadow: var(--shadow-elevated);
    display: none;
  }
  .nav[data-open="true"] { display: flex; }
  .nav a { padding: 12px 8px; font-size: 16px; border-radius: 8px; }
  .nav-toggle { display: inline-flex; }
  .header-tel { display: none; }
}

/* ---------- 按钮 ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  border-radius: var(--radius-pill); border: 1px solid transparent;
  font-size: 14.5px; font-weight: 600; line-height: 1;
  padding: 0 22px; height: 44px; cursor: pointer;
  transition: background .18s, border-color .18s, color .18s, transform .18s;
  white-space: nowrap;
}
.btn-primary { background: var(--primary); color: var(--primary-fg); }
.btn-primary:hover { background: var(--primary-dark); }
/* 黑色实心 pill：workbuddy.ai 顶栏那颗「下载」的形态，用在全站最重的位置 */
.btn-dark { background: var(--wb-black); color: #fff; }
.btn-dark:hover { background: #2f313d; }
/* 绿色描边：次级行动。边框与文字同色，hover 才铺浅底 —— 避免默认就抢主按钮的注意力 */
.btn-outline { background: #fff; color: var(--primary-dark); border-color: var(--primary); }
.btn-outline:hover { border-color: var(--primary-dark); background: var(--primary-tint); }
.btn-ghost { background: transparent; color: var(--primary); padding: 0 4px; height: auto; }
.btn-ghost:hover { color: var(--primary-dark); }
.btn-sm { height: 38px; padding: 0 18px; font-size: 14px; }
.btn-lg { height: 50px; padding: 0 28px; font-size: 15.5px; }
.btn-white { background: #fff; color: var(--primary-dark); }
.btn-white:hover { background: #eaf8f4; }

/* ---------- 区块 ---------- */
.section { padding: 88px 0; }
.section-alt { background: var(--secondary); }
.section-tight { padding: 64px 0; }
@media (max-width: 768px) {
  .section { padding: 56px 0; }
  .section-tight { padding: 44px 0; }
}

.eyebrow {
  display: inline-block; font-size: 12.5px; font-weight: 700;
  letter-spacing: .12em; color: var(--primary); text-transform: uppercase;
  margin-bottom: 14px;
}
.h-section {
  font-size: clamp(1.5rem, 2.4vw, 2.15rem);
  letter-spacing: -0.015em;
}
.lead {
  margin-top: 16px; font-size: clamp(1rem, 1.15vw, 1.0625rem);
  color: var(--muted-fg); line-height: 1.72; max-width: 60ch;
}
.section-head { margin-bottom: 44px; max-width: 68ch; }
.section-head.center { margin-inline: auto; text-align: center; }
.section-head.center .lead { margin-inline: auto; }
@media (max-width: 768px) { .section-head { margin-bottom: 32px; } }

/* ---------- 首屏 ---------- */
.hero {
  position: relative; overflow: hidden;
  padding-top: calc(var(--header-h) + 72px);
  padding-bottom: 0;
  background: linear-gradient(180deg, #f7f9fc 0%, #ffffff 72%);
  border-bottom: 1px solid var(--border);
}
.hero h1 {
  font-size: clamp(2.1rem, 4.2vw, 3.5rem);
  letter-spacing: -0.028em; line-height: 1.12; max-width: 20ch;
}
.hero .lead { font-size: clamp(1rem, 1.25vw, 1.15rem); max-width: 56ch; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 32px; }
.hero-meta {
  margin-top: 22px; font-size: 13px; color: var(--muted-fg);
  display: flex; flex-wrap: wrap; gap: 8px 18px;
}
.hero-meta span { display: inline-flex; align-items: center; gap: 6px; }
.hero-meta .dot {
  width: 5px; height: 5px; border-radius: 50%; background: var(--success);
}

/* 数据带
   原来是「一条顶线 + 右侧细分隔」的裸露数字排。只有 3 格、且数字比标签大得多时，
   整块看起来像一块被圈起来的空框（左右两侧没有任何收边，视觉重心全塌在底部）。
   改法：给每格一块浅底卡片，数字居上、标签居中，格与格之间靠 gap 拉开 ——
   有边界、有底色，三格才立得住；同时收掉那条孤零零的顶线。 */
.stat-band {
  margin-top: 44px;
  display: grid; grid-template-columns: repeat(var(--stat-n, 4), minmax(0, 1fr));
  gap: 14px;
}
.stat {
  padding: 24px 22px 26px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: #fff;
  display: flex; flex-direction: column;
  align-items: center;
  text-align: center;
}
.stat .num {
  font-size: clamp(1.9rem, 2.8vw, 2.4rem); font-weight: 800;
  letter-spacing: -0.03em; color: var(--ink); line-height: 1.1;
  /* 数值与量词同一行：量词字号收小、留一点缝，读数才连得上 */
  display: flex; align-items: baseline; gap: 3px;
}
.stat .num .unit {
  font-size: .5em; font-weight: 700; letter-spacing: 0;
  color: var(--muted-fg);
}
.stat .lbl { margin-top: 10px; font-size: 14px; font-weight: 600; }
.stat .note { margin-top: 6px; font-size: 12.5px; color: var(--muted-fg); line-height: 1.6; }
@media (max-width: 900px) {
  .stat-band { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 36px; gap: 12px; }
  .stat { padding: 20px 18px 22px; }
}
@media (max-width: 480px) {
  .stat-band { grid-template-columns: 1fr; }
}
@media (max-width: 480px) {
  .stat-band { grid-template-columns: 1fr; }
}

/* 页头（内页） */
.page-hero {
  position: relative; overflow: hidden;
  padding-top: calc(var(--header-h) + 56px);
  padding-bottom: 56px;
  background: linear-gradient(180deg, var(--wb-gray-2) 0%, #ffffff 78%);
  border-bottom: 1px solid var(--border);
}

/* 图标底纹：只铺首屏与内页页头。
   铺在 ::before 上而不是元素本身 —— background-image 没有 opacity，
   要做「看得见但不抢戏」的底纹，只能让整层伪元素降透明度。
   正文区一律不铺：整站都有的话就成了噪声，也失去了首屏识别度。 */
.hero::before, .page-hero::before {
  content: ""; position: absolute; inset: 0; z-index: 0;
  pointer-events: none;
  background-image: var(--wb-tex);
  background-repeat: repeat;
  background-size: var(--wb-tex-size);
  /* 0.3 是试出来的平衡点：0.4 在 page-hero 的浅灰底上明显抢戏（头图标着
     「装饰」却先于标题被看见），再低又真的看不见了。 */
  opacity: 0.3;
}
.hero > .container, .page-hero > .container { position: relative; z-index: 1; }
.crumb { font-size: 13px; color: var(--muted-fg); margin-bottom: 18px; }
.crumb a:hover { color: var(--primary); }
.page-hero h1 {
  font-size: clamp(1.85rem, 3.4vw, 2.75rem);
  letter-spacing: -0.022em; max-width: 26ch;
}

/* ---------- 卡片网格 ---------- */
.grid { display: grid; gap: 20px; }
.grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1000px) {
  .grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; }
}

.card {
  background: #fff; border: 1px solid var(--border);
  border-radius: var(--radius-card); padding: 26px 24px;
  box-shadow: var(--shadow-card);
  transition: box-shadow .22s, transform .22s, border-color .22s;
  display: flex; flex-direction: column;
}
.card-static { transition: none; }
a.card:hover { box-shadow: var(--shadow-elevated); transform: translateY(-2px); }
.card h3 { font-size: 16px; font-weight: 700; letter-spacing: -0.005em; }
.card p { margin-top: 10px; font-size: 14px; color: var(--muted-fg); line-height: 1.7; }
.card-tint { background: var(--secondary); }

.card-icon {
  width: 38px; height: 38px; border-radius: 10px; margin-bottom: 16px;
  display: grid; place-items: center; background: var(--primary-tint);
  color: var(--primary); font-size: 15px; font-weight: 800;
}
.card-icon svg { width: 19px; height: 19px; }

.card-num {
  font-size: 12px; font-weight: 800; color: var(--primary);
  letter-spacing: .08em; margin-bottom: 14px;
}

.tag-row { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 16px; }
.tag {
  font-size: 12px; line-height: 1; padding: 6px 10px; border-radius: var(--radius-pill);
  background: var(--secondary); color: #55596b; border: 1px solid var(--border);
}

/* ---------- 列表（服务项） ---------- */
.svc-list { display: grid; gap: 0; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 48px; }
@media (max-width: 860px) { .svc-list { grid-template-columns: 1fr; } }
.svc {
  display: flex; gap: 16px; padding: 24px 0;
  border-top: 1px solid var(--border);
}
/* 站上目前只有 brief 版（序号+标题一行），对齐规则见 pages.css 的
   .svc-list-brief —— 圆与标题中心对齐。 */
.svc-idx {
  flex: none; width: 30px; height: 30px; border-radius: 50%;
  background: var(--ink); color: #fff; font-size: 12px; font-weight: 700;
  display: grid; place-items: center;
}
.svc h3 { font-size: 15.5px; }
.svc p { margin-top: 8px; font-size: 14px; color: var(--muted-fg); line-height: 1.7; }

/* ---------- 勾选列表 ---------- */
.check-list { display: grid; gap: 12px; }
.check-list li { display: flex; gap: 11px; font-size: 14.5px; line-height: 1.68; }
.check-list .ck { flex: none; width: 18px; height: 18px; margin-top: 3px; color: var(--success); }
.check-list .ck svg { width: 18px; height: 18px; }

/* ---------- 双栏文字 ---------- */
.prose { max-width: 74ch; }
.prose h2 { font-size: clamp(1.3rem, 2vw, 1.6rem); letter-spacing: -0.015em; }
.prose h3 { font-size: 16.5px; margin-top: 28px; }
.prose p { margin-top: 14px; font-size: 14.5px; color: var(--muted-fg); line-height: 1.78; }

/* 授权声明块 */
.notice {
  display: flex; flex-direction: column; gap: 18px;
  border: 1px solid var(--border); background: var(--secondary);
  border-radius: var(--radius-card); padding: 24px; margin-top: 32px;
}
@media (min-width: 720px) {
  .notice { flex-direction: row; align-items: center; gap: 26px; }
}
.notice img { width: 150px; height: auto; flex: none; }
.notice .divider { width: 1px; height: 46px; background: var(--border); flex: none; }
.notice p { font-size: 13px; color: var(--muted-fg); line-height: 1.75; }
.notice strong { color: var(--ink); }

/* ---------- 客户 logo 墙 ---------- */
/* 客户 logo 墙。
   这里原来是「1px 缝隙 + 容器底色 = 描边」的无缝网格写法：容器背景是 --border，
   格子本身是白的。5 列网格里最后一行不满时，空位就把容器底色透出来 —— 于是
   每组的末尾都多出一块灰方块（消费与制造 4 家 → 1 块；物流与供应链 1 家 → 4 块）。
   改法是让每个 logo 自带描边，容器不再承担边框职责：空位露出的就是页面底色。 */
.logo-wall {
  display: grid; gap: 10px;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
}
.logo-wall > div, .logo-cell {
  background: #fff; border: 1px solid var(--border); border-radius: 10px;
  height: 74px; display: grid; place-items: center; padding: 14px;
  transition: border-color .2s ease, background .2s ease;
}
.logo-wall > div:hover { border-color: #cfd3da; }
.logo-wall img {
  max-height: 26px; width: auto; filter: brightness(0) opacity(.42);
  transition: filter .25s ease;
}
.logo-wall > div:hover img { filter: brightness(0) opacity(.85); }
.logo-note { margin-top: 14px; font-size: 12.5px; color: var(--muted-fg); }

/* ---------- 流程 ---------- */
.steps { display: grid; gap: 22px; }
.step { display: flex; gap: 15px; }
.step-num {
  flex: none; width: 30px; height: 30px; border-radius: 50%;
  background: var(--primary); color: #fff; font-size: 13px; font-weight: 700;
  display: grid; place-items: center; margin-top: 1px;
}
.step h3 { font-size: 15px; }
.step p { margin-top: 6px; font-size: 14px; color: var(--muted-fg); line-height: 1.7; }

/* ---------- FAQ ---------- */
.faq { border-top: 1px solid var(--border); }
.faq details { border-bottom: 1px solid var(--border); }
.faq summary {
  list-style: none; cursor: pointer; padding: 22px 44px 22px 0;
  font-size: 15.5px; font-weight: 600; position: relative;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: ""; position: absolute; right: 12px; top: 50%; width: 9px; height: 9px;
  border-right: 1.6px solid var(--muted-fg); border-bottom: 1.6px solid var(--muted-fg);
  transform: translateY(-70%) rotate(45deg); transition: transform .22s;
}
.faq details[open] summary::after { transform: translateY(-30%) rotate(-135deg); }
.faq details[open] summary { color: var(--primary); }
.faq .answer {
  padding: 0 44px 24px 0; font-size: 14.5px; color: var(--muted-fg); line-height: 1.78;
}

/* ---------- 联系卡 ---------- */
.contact-grid {
  display: grid; gap: 20px;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.7fr);
}
@media (max-width: 860px) { .contact-grid { grid-template-columns: 1fr; } }
.qr {
  width: 200px; height: 200px; border-radius: 10px; padding: 6px;
  border: 1px solid var(--border); background: #fff; margin-top: 14px;
}
.tel-big {
  display: block; margin-top: 10px; font-size: clamp(1.5rem, 2.6vw, 1.9rem);
  font-weight: 800; letter-spacing: -0.02em; color: var(--primary);
}
.tel-big:hover { color: var(--primary-dark); }
.mini-label { font-size: 13px; font-weight: 600; color: var(--muted-fg); }
.mini-note { margin-top: 10px; font-size: 12.5px; color: var(--muted-fg); line-height: 1.65; }

/* ---------- CTA 带 ---------- */
.cta-band {
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: #fff; padding: 72px 0;
}
.cta-band h2 {
  font-size: clamp(1.5rem, 2.6vw, 2.1rem); letter-spacing: -0.018em;
}
.cta-band p { margin-top: 14px; font-size: 15px; color: rgba(255, 255, 255, .88); max-width: 62ch; }
.cta-band .actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }
.btn-outline-light {
  background: transparent; color: #fff; border-color: rgba(255, 255, 255, .45);
}
.btn-outline-light:hover { background: rgba(255, 255, 255, .12); border-color: #fff; }
@media (max-width: 768px) { .cta-band { padding: 52px 0; } }

/* ---------- 页脚 ---------- */
.site-footer { background: var(--footer-bg); color: var(--footer-fg); padding: 60px 0 32px; }
/* 右下角给浮窗「联系商务」让位。
   浮窗是 fixed：right:22px、bottom:26px、约 117×42 —— 也就是视口右下角一块
   ~140×68 的固定区域。页脚滚到最底时，这块区域正好压在版权行的右侧，
   实测会盖住「选择我们的理由」（66×21px）和「联系我们」（52×21px）。
   浮窗层级（88）高于页脚，被盖住的链接点不到 —— 这是真实可复现的交互缺陷，
   不是视觉小瑕疵。

   解法：给 .footer-bottom 追加与浮窗等高的下内边距，把版权行整体抬到
   浮窗竖带之上。不用 padding-right —— 版权行是 flex + wrap，
   留右内边距只会让换行提前，窄屏下「关于我们」组可能反而折到浮窗正上方。
   抬高度按浮窗高度 + 间距取 68px，再减去页脚自带的 32px 下内边距 = 36px。 */
.footer-bottom {
  margin-top: 46px; padding-top: 24px; padding-bottom: 36px;
  border-top: 1px solid rgba(255, 255, 255, .12);
  position: relative; z-index: 89;
  display: flex; flex-wrap: wrap; gap: 10px 22px; justify-content: space-between;
  font-size: 12.5px; color: var(--footer-muted);
}
@media (max-width: 640px) {
  /* 窄屏浮窗被抬到底部常驻条上方（bottom:78px），竖带更高，
     版权行要让得更多；同时底部条本身已占 68px。 */
  .footer-bottom { padding-bottom: 84px; }
}
.footer-top {
  display: grid; gap: 36px;
  grid-template-columns: minmax(0, 1.6fr) repeat(4, minmax(0, 1fr));
}
/* 品牌列占宽一档，右侧三列等宽。
   旧的写法是有 5 组链接挤进 4 列 —— 第 5 组被挤到第二行单独占一格，
   在左下角留出一块突兀的「关于我们」。现在链接组固定 3 组、与顶栏栏目
   一一对应，栅格和内容才对得上。 */
@media (max-width: 900px) { .footer-top { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .footer-top { grid-template-columns: 1fr; } }
.footer-brand { display: flex; align-items: center; gap: 10px; }
.footer-brand img { width: 30px; height: 30px; border-radius: 3px; }
.footer-brand span { font-size: 16px; font-weight: 800; }
.footer-desc { margin-top: 14px; font-size: 13px; color: var(--footer-muted); line-height: 1.75; max-width: 44ch; }

/* 二维码与联系方式并排。
   原来是「二维码单独一行、下面一片空」，联系方式散在 /contact/ 才能看到；
   把电话、服务时间、服务区域挪到二维码右侧，这一块才有内容重量，
   也不必再单开一列放「联系我们」。 */
.footer-qr-row { margin-top: 20px; display: flex; align-items: center; gap: 16px; }
.footer-qr {
  flex: none; width: 96px; height: 96px; border-radius: 8px;
  background: #fff; padding: 4px;
}
.footer-contact { min-width: 0; }
.footer-contact p { font-size: 13px; color: var(--footer-muted); line-height: 1.6; }
.footer-contact p + p { margin-top: 4px; }
.footer-tel a {
  font-size: 16px; font-weight: 700; color: #fff;
  font-variant-numeric: tabular-nums; letter-spacing: .01em;
}
.footer-tel a:hover { color: var(--primary); }
.footer-hours { font-variant-numeric: tabular-nums; }
.footer-area { overflow-wrap: anywhere; }
@media (max-width: 560px) { .footer-area { max-width: 30ch; } }

.footer-col h4 { font-size: 13.5px; font-weight: 700; color: #fff; }
.footer-col ul { margin-top: 14px; display: grid; gap: 10px; }
.footer-col a { font-size: 13px; color: var(--footer-muted); }
.footer-col a:hover { color: #fff; }
.footer-col .plain { font-size: 13px; color: var(--footer-muted); line-height: 1.7; }
.footer-bottom {
  margin-top: 46px; padding-top: 24px; border-top: 1px solid rgba(255, 255, 255, .12);
  display: flex; flex-wrap: wrap; gap: 10px 22px; justify-content: space-between;
  font-size: 12.5px; color: var(--footer-muted);
}
.footer-bottom .links { display: flex; flex-wrap: wrap; gap: 10px 20px; }
.footer-bottom a:hover { color: #fff; }
/* 「关于我们」三个页面压成版权行右侧的一行链接。
   它们与按钮区、浮窗都是「找人」类入口，与顶栏同组，层级上属于页脚末行。 */
.footer-about-links a { color: var(--footer-muted); }
.footer-about-links a:hover { color: #fff; }
/* 公安联网备案：版权行内的合规链接。与相邻的 ICP 号同为页脚最低层级，
   所以沿用 --footer-muted，不做强调色。 */
.footer-filing { color: var(--footer-muted); }
.footer-filing:hover { color: #fff; }

/* 窄屏隐藏顶栏主按钮（底部已有常驻转化条） */
@media (max-width: 560px) {
  .header-actions .btn { display: none; }
  .brand-sub { display: none; }
}

/* 浮动咨询条（移动端） */
.mobile-cta {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 90;
  display: none; gap: 10px; padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
  background: rgba(255, 255, 255, .94);
  border-top: 1px solid var(--border);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
}
.mobile-cta .btn { flex: 1; }
@media (max-width: 640px) {
  .mobile-cta { display: flex; }
  body { padding-bottom: 68px; }
}

/* 窄屏：浮窗抬到底部常驻条上方。
   底部条高度 = 10+10 padding + 约 38 按钮 + 安全区内边距，取 68px 为基线，
   再加 10px 间距。不抬的话按钮被 .mobile-cta（z-index 90 > 88）盖住，点不到。 */
@media (max-width: 640px) {
  .cs-float {
    right: 14px;
    bottom: calc(78px + env(safe-area-inset-bottom));
  }
  /* 窄屏按钮只留图标，省横向空间 —— 268px 卡片在 390 屏上几乎顶满宽 */
  .cs-btn { padding: 12px; border-radius: 50%; }
  .cs-btn span { display: none; }
  .cs-panel { width: min(268px, calc(100vw - 28px)); }
}

/* 加载态：数据库内容未就绪时不闪现空块 */
[data-cloud] { min-height: 0; }
.cloud-pending { opacity: .55; transition: opacity .2s; }

/* 打印 */
@media print {
  .site-header, .mobile-cta, .cta-band, .placeholder-bar, .cs-float { display: none; }
}
