/* ===========================
   云舟智渡官网 - 主样式表
   ========================== */

/* ===========================
   主题调色板（深 / 浅 双版本）
   - :root 默认 = 深色（品牌调性）
   - [data-theme="light"] = 浅色版本
   - 切换逻辑：JS 加 data-theme 到 <html>，localStorage 持久化
   =========================== */
:root {
  /* ===== 字号缩放比例（V2 · 0.92 / 1.0 两档切换） =====
     0.92（小·A 默认）= 信息密集场景（≥14px 下限，2026-06 整改）
     1.0（中·A+）= V1 基线
     JS 改这个值，全站字号等比例缩放（hero / dropdown / 卡片 一致） */
  --font-scale: 0.92;


  /* ===== 字体堆栈（v1 统一） ===== */
  --font-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Helvetica Neue", "Segoe UI", system-ui, sans-serif;
  --font-mono: ui-monospace, "SF Mono", "Fira Code", Menlo, "Cascadia Code", Consolas, monospace;

  /* ===== 字重 token（v1 统一） ===== */
  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;
  --fw-extrabold: 800;

  /* ===== 7 级字号 token（v1 · 移动优先 rem 体系） =====
     基线 17px 桌面 / 16px 移动；
     整体较旧版（13/14/15 主体）上调 1–2px，照顾 50+ 决策者 */
  /* 注意：使用 px 而非 rem 作为基础端点。
     原因：避免和 html { font-size: var(--fs-body) } 在 @media 内链式相乘，
     否则移动端 A 档下 --fs-body 会变成 14.72×0.92=13.54px（低于 MD 14sp 下限） */
  --fs-display: calc(48px * var(--font-scale));     /* Hero H1 */
  --fs-h1:     calc(40px * var(--font-scale));    /* Section 大标题 */
  --fs-h2:     calc(28px * var(--font-scale));   /* 子标题 / 大数字 */
  --fs-h3:     calc(22px * var(--font-scale));   /* 卡片标题 */
  --fs-h4:     calc(18px * var(--font-scale));   /* 列表项 / 表头 */
  --fs-body-lg:calc(17px * var(--font-scale));   /* 大段正文 / 段落首段 */
  --fs-body:   calc(16px * var(--font-scale));   /* 标准正文主力 */
  --fs-small:  calc(15px * var(--font-scale));   /* 辅助文 / caption */
  --fs-caption:calc(13px * var(--font-scale));   /* 法律 / footer */
  --fs-micro:  calc(11px * var(--font-scale));   /* monospace 元数据 */

  /* ===== 派生 token：viewport-aware（合同 B.1 · 整改 2026-06） =====
     把 clamp() 收编在 token 里，调用方只 var(--fs-*) 即可响应 A / A+ 切档
     min/max 用 px 套 var(--font-scale)，保证 A+ 时同比放大且解耦 html 缩放 */
  --fs-hero:       clamp(36px * var(--font-scale), 6vw, 48px    * var(--font-scale));
  --fs-subhero:    clamp(32px * var(--font-scale), 5vw, 44px    * var(--font-scale));
  --fs-section:    clamp(28px * var(--font-scale), 3.5vw, 40px * var(--font-scale));
  --fs-subsection: clamp(24px * var(--font-scale), 3vw,   34px * var(--font-scale));

  /* 字号行高（v1 统一：正文 1.6→1.7，更利于扫读） */
  --lh-tight: 1.2;
  --lh-snug: 1.3;
  --lh-base: 1.7;          /* 正文默认（原 1.6） */
  --lh-relaxed: 1.5;       /* caption */
  --lh-caps: 1.0;          /* 大写英文 label */

  /* ===== 5 个彩色文字 token（v1 统一） =====
     单一职责：每个 token 仅 1 个用途，避免散落混用 */
  --c-emphasis: #DE805A;   /* 段落内联高亮（strong / em）1 段 ≤ 1 处 */
  --c-cta: #DE805A;        /* CTA 链接 / 按钮文字 */
  --c-link: #2D8CA5;       /* 普通链接 */
  --c-data: #F28339;       /* 数字 / 指标强调 */

  /* 主色（两版通用，仅微调深浅以保证对比度） */
  --primary: #00D4FF;
  --primary-dark: #00A8CC;
  --primary-hover: #33DDFF;
  --primary-on: #001218;          /* 在主色背景上的前景色 */
  --primary-glow: rgba(0, 212, 255, 0.15);

  /* 强调色 */
  --accent: #7B61FF;
  --accent2: #00FFB0;
  --warn: #FFB400;
  --danger: #FF5F56;

  /* ===== 痛点分类色（v2.5 · 七类十八大痛点）
     语义色：每类一个独立色，绑定痛点卡片顶部色条 + 类别徽章
     浅色版在 [data-theme="light"] 覆盖（见 line ~395 附近）
     全部走 token，禁止散落硬编码 hex */
  --cat-color-1: #F59E0B;   /* 1 采买之乱 · 暖橘 · 钱/钱包 */
  --cat-color-2: #818CF8;   /* 2 选择之难 · 蓝紫 · 决策/罗盘 */
  --cat-color-3: #F472B6;   /* 3 消耗之痛 · 玫红 · 成本/泄漏 */
  --cat-color-4: #EF4444;   /* 4 安全之患 · 红 · 警示/盾牌 */
  --cat-color-5: #FBBF24;   /* 5 质量之殇 · 金 · 质量/奖章 */
  --cat-color-6: #34D399;   /* 6 沉淀之殇 · 翠绿 · 积累/叠层 */
  --cat-color-7: #60A5FA;   /* 7 体验之缺 · 蓝 · 界面/工作台 */
  /* soft 变体：用于徽章/胶囊软底（深底用 alpha 0.16） */
  --cat-soft-1: rgba(245, 158, 11, 0.16);
  --cat-soft-2: rgba(129, 140, 248, 0.16);
  --cat-soft-3: rgba(244, 114, 182, 0.16);
  --cat-soft-4: rgba(239, 68, 68, 0.16);
  --cat-soft-5: rgba(251, 191, 36, 0.16);
  --cat-soft-6: rgba(52, 211, 153, 0.16);
  --cat-soft-7: rgba(96, 165, 250, 0.16);
  /* border 变体：用于 hover 边色（深底用 alpha 0.32） */
  --cat-border-1: rgba(245, 158, 11, 0.32);
  --cat-border-2: rgba(129, 140, 248, 0.32);
  --cat-border-3: rgba(244, 114, 182, 0.32);
  --cat-border-4: rgba(239, 68, 68, 0.32);
  --cat-border-5: rgba(251, 191, 36, 0.32);
  --cat-border-6: rgba(52, 211, 153, 0.32);
  --cat-border-7: rgba(96, 165, 250, 0.32);

  /* 背景层级（深色版） */
  --bg: #030B1A;
  --bg-elev: #061224;             /* 卡片 / 浮层 */
  --bg-elev-2: #0A1A30;           /* 二级卡片 */
  --bg-overlay: rgba(3, 11, 26, 0.95);  /* 导航滚动后 */

  /* 文字（对比度全部 AAA） */
  --text: #FFFFFF;
  --text-secondary: #B8C5D6;        /* 8.5:1，对比度从 7:1 提升 */
  --text-muted: #9AAEC2;            /* 6.2:1，对比度从 5.5:1 提升（AAA Large） */
  --text-on-primary: #001218;     /* 主色按钮文字 */
  --text-on-accent2: #001218;     /* 亮绿色实底文字 */

  /* 边框 / 表面 */
  --border: rgba(255, 255, 255, 0.08);
  --border-strong: rgba(255, 255, 255, 0.18);
  --border-hover: rgba(255, 255, 255, 0.12);
  --border-active: rgba(255, 255, 255, 0.15);
  --card-bg: rgba(255, 255, 255, 0.04);
  --card-border: rgba(255, 255, 255, 0.08);
  --card-hover: rgba(255, 255, 255, 0.055);
  --primary-soft: rgba(0, 212, 255, 0.035);
  --primary-soft-border: var(--border-hover);
  --accent-soft: rgba(123, 97, 255, 0.035);
  --accent-soft-border: var(--border-hover);
  --accent2-soft: rgba(0, 255, 176, 0.03);
  --accent2-soft-border: var(--border-hover);
  --warn-soft: rgba(255, 180, 0, 0.03);
  --warn-soft-border: var(--border-hover);

  /* 输入框（深色版：透明 + 白边） */
  --input-bg: rgba(255, 255, 255, 0.04);
  --input-bg-focus: rgba(0, 212, 255, 0.06);
  --input-border-focus: rgba(0, 212, 255, 0.24);

  /* Hero 蒙版（深色版需要深蒙版） */
  --hero-mask-1: rgba(3, 11, 26, 0.92);
  --hero-mask-2: rgba(3, 11, 26, 0.78);
  --hero-mask-3: rgba(3, 11, 26, 0.42);
  --hero-mask-4: rgba(3, 11, 26, 0.18);
  --hero-mask-5: rgba(3, 11, 26, 0.04);
  --hero-mask-bottom: rgba(3, 11, 26, 0.92);

  /* 微网格背景线 */
  --grid-line: rgba(0, 212, 255, 0.025);
  --grid-line-2: rgba(0, 212, 255, 0.02);

  /* 阴影 / 发光 */
  --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.2);
  --shadow-md: 0 8px 24px rgba(0, 0, 0, 0.3);
  --shadow-lg: 0 12px 40px rgba(0, 0, 0, 0.45);
  --shadow-glow: 0 8px 22px rgba(0, 0, 0, 0.18);

  /* 装饰光晕（深色版发光，浅色版关闭） */
  --decorative-glow: rgba(0, 212, 255, 0.16);

  /* 几何 */
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 20px;
  --nav-h: 72px;

  /* 兼容旧名字 */
  --dark-bg: var(--bg);
  --dark-bg2: var(--bg-elev);
  --dark-bg3: var(--bg-elev-2);
  --text-primary: var(--text);

  /* 代码块（暗色走 Dracula 配色，浅色在 [data-theme="light"] 覆盖） */
  --code-bg: #0D1B2A;
  --code-header: #1A2A3A;

  /* 主题过渡 */
  color-scheme: dark;
}

/* ===========================
   色系方案（CTA / 辅助色）
   只覆盖 --cta / --link-2 系列，不动原 4 主色（绿/青绿/金/灰）
   通过 [data-color-scheme="..."] 切换，localStorage 持久化
   =========================== */

/* 默认 = warm（暖橘 · 蓝绿） */
:root,
[data-color-scheme="warm"] {
  --cta: #DE805A;                       /* 暖橘 */
  --cta-hover: #CF524E;                 /* 珊瑚红 */
  --cta-on: #1D0D27;                    /* 深紫黑字 ≈ 6.2:1 AA（实测） */
  --cta-soft: rgba(222, 128, 90, 0.14);
  --cta-soft-border: rgba(222, 128, 90, 0.32);
  --cta-glow: rgba(222, 128, 90, 0.32);
  --link-2: #2D8CA5;                    /* 蓝绿 */
  --link-2-hover: #40C0CD;              /* 蓝绿提亮 */
  --link-2-soft: rgba(45, 140, 165, 0.12);
  --link-2-soft-border: rgba(45, 140, 165, 0.28);
  /* 装饰 / 渐变文字 / 边框（方案 A 扩展） */
  --accent-text: #F28339;               /* 渐变文字起色 · 暖橘红 */
  --accent-text-2: #CF524E;             /* 渐变文字止色 · 珊瑚红 */
  --accent-border: #DE805A;             /* 卡片 hover 边框 / 进度条 */
  /* 完整色系方案 v3 · 6 个新增 token（图标 / 区块背景 / 胶囊 / 数据 / 强调） */
  --icon-primary: #DE805A;              /* 图标主色 · service / case / step / info */
  --accent-bg: rgba(222, 128, 90, 0.10);     /* 区块背景（淡）· metric / layer / gradient-cta */
  --accent-bg-strong: rgba(222, 128, 90, 0.18); /* 区块背景（强）· stat-card / pricing.featured */
  --badge-soft: rgba(222, 128, 90, 0.14);    /* 通用软底胶囊 · badge-soft / section-tag / layer-tag */
  --data-color: #F28339;                /* 统计数字 / metric-value · 用色系亮色拉开层次 */
  --emphasis: #DE805A;                  /* 强调 (h2/title.case-tag/news-tag/layer-name) */
  /* 装饰色（v4 · 替换硬编码装饰光晕 / mega-icon 底 / tag-bg） */
  --halo-bg: rgba(222, 128, 90, 0.10);        /* section 装饰光晕底色 */
  --halo-border: rgba(222, 128, 90, 0.18);    /* section 装饰光晕边框 */
  --tag-bg: rgba(222, 128, 90, 0.14);         /* mega-col-icon / 数字徽章 / 胶囊底 */
  /* 5 个彩色文字 token（v1 统一：每 token 单一职责） */
  --c-emphasis: #F28339;                /* 段落内联高亮 */
  --c-cta: #DE805A;                     /* CTA 文字 */
  --c-link: #2D8CA5;                    /* 普通链接 */
  --c-data: #F28339;                    /* 数字强调 */
}

/* cool（蓝紫 · 科技冷） */
[data-color-scheme="cool"] {
  --cta: #816CCA;                       /* 蓝紫 */
  --cta-hover: #51448F;                 /* 蓝紫加深（hover 应更深，避开 #A6A5DC 偏浅） */
  --cta-on: #1D0D27;                    /* 深紫黑字，已实测通过 AA */
  --cta-soft: rgba(129, 108, 202, 0.14);
  --cta-soft-border: rgba(129, 108, 202, 0.32);
  --cta-glow: rgba(129, 108, 202, 0.32);
  --link-2: #40C0CD;                    /* 蓝绿点缀 */
  --link-2-hover: #2D8CA5;              /* 蓝绿 hover（同色相加深） */
  --link-2-soft: rgba(64, 192, 205, 0.12);
  --link-2-soft-border: rgba(64, 192, 205, 0.28);
  /* 装饰 / 渐变文字 / 边框（方案 A 扩展） */
  --accent-text: #40C0CD;               /* 渐变起色 · 蓝绿点缀 */
  --accent-text-2: #816CCA;             /* 渐变止色 · 蓝紫 */
  --accent-border: #2D8CA5;             /* 边框 / 进度条 · 蓝绿 */
  /* 完整色系方案 v3 · 6 个新增 token */
  --icon-primary: #816CCA;              /* 图标主色 · 蓝紫 */
  --accent-bg: rgba(64, 192, 205, 0.10);
  --accent-bg-strong: rgba(129, 108, 202, 0.18);
  --badge-soft: rgba(129, 108, 202, 0.14);
  --data-color: #40C0CD;                /* 蓝绿 · 数字 */
  --emphasis: #816CCA;                  /* 蓝紫 · 强调 */
  /* 装饰色（v4） */
  --halo-bg: rgba(64, 192, 205, 0.10);
  --halo-border: rgba(64, 192, 205, 0.18);
  --tag-bg: rgba(129, 108, 202, 0.14);
  /* 5 个彩色文字 token（v1 统一） */
  --c-emphasis: #816CCA;                /* 段落内联高亮 */
  --c-cta: #816CCA;                     /* CTA 文字 */
  --c-link: #40C0CD;                    /* 普通链接 */
  --c-data: #40C0CD;                    /* 数字强调 */
}

/* luxe（金黄 · 砖红 · 奢华） */
[data-color-scheme="luxe"] {
  --cta: #EBC03A;                       /* 金黄 */
  --cta-hover: #F28339;                 /* 橘红 */
  --cta-on: #1D0D27;                    /* 深紫黑字，已实测通过 AAA */
  --cta-soft: rgba(235, 192, 58, 0.18);
  --cta-soft-border: rgba(235, 192, 58, 0.40);
  --cta-glow: rgba(235, 192, 58, 0.34);
  --link-2: #D85F45;                    /* 砖红 · 深底提亮 (4.7:1 AA on #030B1A) */
  --link-2-hover: #CF524E;              /* 珊瑚红 hover */
  --link-2-soft: rgba(129, 48, 40, 0.14);
  --link-2-soft-border: rgba(129, 48, 40, 0.32);
  /* 装饰 / 渐变文字 / 边框（方案 A 扩展） */
  --accent-text: #F28339;               /* 渐变起色 · 橘红 */
  --accent-text-2: #E3742B;             /* 渐变止色 · 深橘 */
  --accent-border: #EBC03A;             /* 边框 / 进度条 · 金黄 */
  /* 完整色系方案 v3 · 6 个新增 token */
  --icon-primary: #EBC03A;              /* 图标主色 · 金黄 */
  --accent-bg: rgba(235, 192, 58, 0.10);
  --accent-bg-strong: rgba(235, 192, 58, 0.18);
  --badge-soft: rgba(235, 192, 58, 0.18);
  --data-color: #EBC03A;                /* 金黄 · 数字 */
  --emphasis: #EBC03A;                  /* 金黄 · 强调 */
  /* 装饰色（v4） */
  --halo-bg: rgba(235, 192, 58, 0.10);
  --halo-border: rgba(235, 192, 58, 0.18);
  --tag-bg: rgba(235, 192, 58, 0.18);
  /* 5 个彩色文字 token（v1 统一） */
  --c-emphasis: #EBC03A;                /* 段落内联高亮 */
  --c-cta: #EBC03A;                     /* CTA 文字 */
  --c-link: #D85F45;                    /* 普通链接（砖红） */
  --c-data: #EBC03A;                    /* 数字强调 */
}

/* violet（紫色家族 · 梦幻沉浸） */
[data-color-scheme="violet"] {
  --cta: #5C5AB5;                       /* 蓝紫 */
  --cta-hover: #816CCA;                 /* 蓝紫 hover */
  --cta-on: #FFFFFF;                    /* 白字，已实测通过 AA */
  --cta-soft: rgba(92, 90, 181, 0.14);
  --cta-soft-border: rgba(92, 90, 181, 0.32);
  --cta-glow: rgba(92, 90, 181, 0.32);
  --link-2: #C28BC4;                    /* 中紫 · 深底提亮 (6.5:1 AA on #030B1A) */
  --link-2-hover: #C6B0C9;              /* 浅紫 hover */
  --link-2-soft: rgba(155, 103, 159, 0.12);
  --link-2-soft-border: rgba(155, 103, 159, 0.28);
  /* 装饰 / 渐变文字 / 边框（方案 A 扩展） */
  --accent-text: #C6B0C9;               /* 渐变起色 · 浅紫 */
  --accent-text-2: #C28BC4;             /* 渐变止色 · 中紫提亮 (6.5:1 AA on #030B1A) */
  --accent-border: #5C5AB5;             /* 边框 / 进度条 · 蓝紫 */
  /* 完整色系方案 v3 · 6 个新增 token */
  --icon-primary: #5C5AB5;              /* 图标主色 · 蓝紫 */
  --accent-bg: rgba(92, 90, 181, 0.10);
  --accent-bg-strong: rgba(92, 90, 181, 0.18);
  --badge-soft: rgba(92, 90, 181, 0.14);
  --data-color: #C6B0C9;                /* 浅紫 · 数字（拉开层次） */
  --emphasis: #5C5AB5;                  /* 蓝紫 · 强调 */
  /* 装饰色（v4） */
  --halo-bg: rgba(92, 90, 181, 0.10);
  --halo-border: rgba(92, 90, 181, 0.18);
  --tag-bg: rgba(155, 103, 159, 0.14);
  /* 5 个彩色文字 token（v1 统一） */
  --c-emphasis: #5C5AB5;                /* 段落内联高亮 */
  --c-cta: #5C5AB5;                     /* CTA 文字 */
  --c-link: #C28BC4;                    /* 普通链接（中紫） */
  --c-data: #C6B0C9;                    /* 数字强调 */
}

/* ===========================
   浅色版本
   重点：在浅 hero 蒙版 + 玻璃背景上，主色/强调色全部加深一档，
        确保对比度 ≥ AA（4.5:1），文字在浅底上不再"看不见"
   =========================== */
[data-theme="light"] {
  /* 主色：在白底 + 浅 hero 蒙版上对比度足够（vs #FFFFFF ~5.5:1，AA 通过） */
  --primary: #006B85;             /* 由 #0091B3 加深一档 */
  --primary-dark: #004F65;
  --primary-hover: #0085A0;
  --primary-on: #FFFFFF;
  --primary-glow: rgba(0, 107, 133, 0.16);

  /* 浅色版专用软底/软边（用于 layer 标签、card 浅底、metric-card 等） */
  --primary-soft: rgba(0, 107, 133, 0.08);
  --primary-soft-border: var(--border-hover);

  /* 强调色（紫）：浅底加深，避免飘 */
  --accent: #4F2BD0;              /* 由 #6342E0 加深到 #4F2BD0 */
  --accent-soft: rgba(79, 43, 208, 0.08);
  --accent-soft-border: var(--border-hover);

  /* 强调色（薄荷绿）：浅底加深 */
  --accent2: #00875E;             /* 由 #00B47A 加深到 #00875E */
  --accent2-soft: rgba(0, 135, 94, 0.08);
  --accent2-soft-border: var(--border-hover);

  /* 琥珀色：浅底加深 */
  --warn: #A66E00;                /* 由 #C68500 加深到 #A66E00 */
  --warn-soft: rgba(166, 110, 0, 0.08);
  --warn-soft-border: var(--border-hover);

  --danger: #C7342F;

  /* 背景层级（浅色版） */
  --bg: #F5F7FA;
  --bg-elev: #FFFFFF;
  --bg-elev-2: #EEF2F7;
  --bg-overlay: rgba(255, 255, 255, 0.92);

  /* 文字：secondary/muted 调深一档，让 hero 副标题、stat-label 更清晰 */
  --text: #0F172A;
  --text-secondary: #334155;       /* 由 #475569 加深到 #334155（vs 浅底 ~10:1） */
  --text-muted: #475569;           /* 由 #64748B 加深到 #475569 */
  --text-on-primary: #FFFFFF;
  --text-on-accent2: #FFFFFF;

  /* 边框 / 表面 */
  --border: rgba(15, 23, 42, 0.08);
  --border-strong: rgba(15, 23, 42, 0.16);
  --border-hover: rgba(15, 23, 42, 0.12);
  --border-active: rgba(15, 23, 42, 0.15);
  --card-bg: rgba(15, 23, 42, 0.03);
  --card-border: rgba(15, 23, 42, 0.08);
  --card-hover: rgba(15, 23, 42, 0.045);

  /* 输入框（浅色版：白底 + 浅灰边框） */
  --input-bg: #FFFFFF;
  --input-bg-focus: #FFFFFF;
  --input-border-focus: rgba(0, 107, 133, 0.28);

  /* Hero 蒙版（浅色版本使用独立浅色头图，
     用更浅的蒙版让标题更清晰） */
  --hero-mask-1: rgba(245, 247, 250, 0.86);
  --hero-mask-2: rgba(245, 247, 250, 0.62);
  --hero-mask-3: rgba(245, 247, 250, 0.32);
  --hero-mask-4: rgba(245, 247, 250, 0.08);
  --hero-mask-5: rgba(245, 247, 250, 0);
  --hero-mask-bottom: rgba(245, 247, 250, 0.92);

  /* 微网格背景线 */
  --grid-line: rgba(0, 107, 133, 0.05);
  --grid-line-2: rgba(0, 107, 133, 0.04);

  /* 阴影（浅色版阴影更轻更冷） */
  --shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.06);
  --shadow-md: 0 4px 16px rgba(15, 23, 42, 0.08);
  --shadow-lg: 0 12px 40px rgba(15, 23, 42, 0.12);
  --shadow-glow: 0 8px 20px rgba(15, 23, 42, 0.10);

  /* 浅色版不需要青色发光装饰（会让浅底文字变模糊） */
  --decorative-glow: transparent;

  /* 代码窗体浅色化（v2.9+ · 跟随浅色卡片融合） */
  --code-bg: #F8FAFC;
  --code-header: #EEF2F7;
  --code-title: #64748B;
  --code-default: #1E293B;
  --code-import: #7C3AED;
  --code-fn: #0F766E;
  --code-str: #B45309;
  --code-comment: #94A3B8;
  --code-num: #1D4ED8;
  --code-window-border: rgba(15, 23, 42, 0.08);
  --code-window-shadow: 0 1px 3px rgba(15, 23, 42, 0.06);

  /* 主题过渡 */
  color-scheme: light;
}

/* ===========================
   浅色版的痛点分类色覆盖（v2.5）
   痛点分类色是「语义色」而非品牌色，跟随主题切换（深/浅），
   不跟色系方案（warm/cool/luxe/violet）走。
   浅底全部加深一档保 AA 对比度（实测 ≥ 4.9:1）
   =========================== */
[data-theme="light"] {
  --cat-color-1: #B45309;   /* 1 采买之乱 · 橙深 */
  --cat-color-2: #4F46E5;   /* 2 选择之难 · 蓝紫深 */
  --cat-color-3: #BE185D;   /* 3 消耗之痛 · 玫红深 */
  --cat-color-4: #B91C1C;   /* 4 安全之患 · 砖红 */
  --cat-color-5: #A16207;   /* 5 质量之殇 · 黄褐深 */
  --cat-color-6: #047857;   /* 6 沉淀之殇 · 翠绿深 */
  --cat-color-7: #1D4ED8;   /* 7 体验之缺 · 蓝深 */
  --cat-soft-1: rgba(180, 83, 9, 0.10);
  --cat-soft-2: rgba(79, 70, 229, 0.10);
  --cat-soft-3: rgba(190, 24, 93, 0.10);
  --cat-soft-4: rgba(185, 28, 28, 0.10);
  --cat-soft-5: rgba(161, 98, 7, 0.10);
  --cat-soft-6: rgba(4, 120, 87, 0.10);
  --cat-soft-7: rgba(29, 78, 216, 0.10);
  --cat-border-1: rgba(180, 83, 9, 0.28);
  --cat-border-2: rgba(79, 70, 229, 0.28);
  --cat-border-3: rgba(190, 24, 93, 0.28);
  --cat-border-4: rgba(185, 28, 28, 0.28);
  --cat-border-5: rgba(161, 98, 7, 0.28);
  --cat-border-6: rgba(4, 120, 87, 0.28);
  --cat-border-7: rgba(29, 78, 216, 0.28);
}

/* ===========================
   浅色版的 4 套色系变体
   选择器组合 [data-theme="light"][data-color-scheme="..."]
   =========================== */

/* 浅色 + warm（暖橘 · 蓝绿）
   :not(...) 兜底 JS 未加载场景（选择器并列，token 唯一源避免漂移） */
[data-theme="light"]:not([data-color-scheme]),
[data-theme="light"][data-color-scheme="warm"] {
  --cta: #B85A2E;                      /* 暖橘加深（白底实测通过 AA） */
  --cta-hover: #973207;                /* 砖红 hover */
  --cta-on: #FFFFFF;
  --cta-soft: rgba(184, 90, 46, 0.10);
  --cta-soft-border: rgba(184, 90, 46, 0.28);
  --cta-glow: rgba(184, 90, 46, 0.22);
  --link-2: #1F6B82;                   /* 蓝绿加深 */
  --link-2-hover: #2D8CA5;
  --link-2-soft: rgba(31, 107, 130, 0.10);
  --link-2-soft-border: rgba(31, 107, 130, 0.24);
  /* 装饰 / 渐变文字 / 边框（方案 A 扩展） */
  --accent-text: #B85A2E;              /* 浅底暖橘 · 渐变起色 */
  --accent-text-2: #973207;            /* 浅底砖红 · 渐变止色 */
  --accent-border: #B85A2E;            /* 浅底暖橘 · 边框 */
  /* 完整色系方案 v3 · 6 个新增 token（浅底版全部加深一档保对比度） */
  --icon-primary: #B85A2E;             /* 浅底暖橘 · 图标 */
  --accent-bg: rgba(184, 90, 46, 0.08);
  --accent-bg-strong: rgba(184, 90, 46, 0.16);
  --badge-soft: rgba(184, 90, 46, 0.10);
  --data-color: #A04A1E;               /* 浅底暖橘深 · 数字 (5.8:1 AA on white) */
  --emphasis: #B85A2E;                 /* 浅底暖橘 · 强调 */
  /* 装饰色（v4 · 浅底版加深透明度避免过深） */
  --halo-bg: rgba(184, 90, 46, 0.06);
  --halo-border: rgba(184, 90, 46, 0.14);
  --tag-bg: rgba(184, 90, 46, 0.10);
  /* 5 个彩色文字 token（v1 统一：浅底版全部加深一档保对比度） */
  --c-emphasis: #B85A2E;               /* 段落内联高亮 */
  --c-cta: #B85A2E;                    /* CTA 文字 */
  --c-link: #1F6B82;                   /* 普通链接（蓝绿加深） */
  --c-data: #A04A1E;                   /* 数字强调 */
}

/* 浅色 + cool（蓝紫 · 科技） */
[data-theme="light"][data-color-scheme="cool"] {
  --cta: #4F3FA8;                      /* 蓝紫加深（白底实测通过 AAA） */
  --cta-hover: #5C5AB5;
  --cta-on: #FFFFFF;
  --cta-soft: rgba(79, 63, 168, 0.10);
  --cta-soft-border: rgba(79, 63, 168, 0.24);
  --cta-glow: rgba(79, 63, 168, 0.22);
  --link-2: #1F6B82;                   /* 蓝绿 */
  --link-2-hover: #2D8CA5;
  --link-2-soft: rgba(31, 107, 130, 0.10);
  --link-2-soft-border: rgba(31, 107, 130, 0.24);
  /* 装饰 / 渐变文字 / 边框（方案 A 扩展） */
  --accent-text: #1F6B82;              /* 浅底蓝绿 · 渐变起色 */
  --accent-text-2: #4F3FA8;            /* 浅底蓝紫 · 渐变止色 */
  --accent-border: #1F6B82;            /* 浅底蓝绿 · 边框 */
  /* 完整色系方案 v3 · 6 个新增 token */
  --icon-primary: #4F3FA8;             /* 浅底蓝紫 · 图标 */
  --accent-bg: rgba(79, 63, 168, 0.08);
  --accent-bg-strong: rgba(79, 63, 168, 0.16);
  --badge-soft: rgba(79, 63, 168, 0.10);
  --data-color: #1F6B82;               /* 浅底蓝绿 · 数字 */
  --emphasis: #4F3FA8;                 /* 浅底蓝紫 · 强调 */
  /* 装饰色（v4） */
  --halo-bg: rgba(79, 63, 168, 0.06);
  --halo-border: rgba(79, 63, 168, 0.14);
  --tag-bg: rgba(79, 63, 168, 0.10);
  /* 5 个彩色文字 token（v1 统一） */
  --c-emphasis: #4F3FA8;               /* 段落内联高亮 */
  --c-cta: #4F3FA8;                    /* CTA 文字 */
  --c-link: #1F6B82;                   /* 普通链接（蓝绿） */
  --c-data: #1F6B82;                   /* 数字强调 */
}

/* 浅色 + luxe（金黄 · 砖红） */
[data-theme="light"][data-color-scheme="luxe"] {
  --cta: #A66E00;                      /* 金黄加深（白底实测通过 AA） */
  --cta-hover: #813028;                /* 砖红 hover */
  --cta-on: #FFFFFF;
  --cta-soft: rgba(166, 110, 0, 0.10);
  --cta-soft-border: rgba(166, 110, 0, 0.28);
  --cta-glow: rgba(166, 110, 0, 0.22);
  --link-2: #6B2418;                   /* 砖红加深 */
  --link-2-hover: #813028;
  --link-2-soft: rgba(107, 36, 24, 0.10);
  --link-2-soft-border: rgba(107, 36, 24, 0.24);
  /* 装饰 / 渐变文字 / 边框（方案 A 扩展） */
  --accent-text: #A66E00;              /* 浅底金黄 · 渐变起色 */
  --accent-text-2: #813028;            /* 浅底砖红 · 渐变止色 */
  --accent-border: #A66E00;            /* 浅底金黄 · 边框 */
  /* 完整色系方案 v3 · 6 个新增 token */
  --icon-primary: #A66E00;             /* 浅底金黄 · 图标 */
  --accent-bg: rgba(166, 110, 0, 0.08);
  --accent-bg-strong: rgba(166, 110, 0, 0.16);
  --badge-soft: rgba(166, 110, 0, 0.10);
  --data-color: #A66E00;               /* 浅底金黄 · 数字 */
  --emphasis: #A66E00;                 /* 浅底金黄 · 强调 */
  /* 装饰色（v4） */
  --halo-bg: rgba(166, 110, 0, 0.06);
  --halo-border: rgba(166, 110, 0, 0.14);
  --tag-bg: rgba(166, 110, 0, 0.10);
  /* 5 个彩色文字 token（v1 统一） */
  --c-emphasis: #A66E00;               /* 段落内联高亮 */
  --c-cta: #A66E00;                    /* CTA 文字 */
  --c-link: #6B2418;                   /* 普通链接（砖红加深） */
  --c-data: #A66E00;                   /* 数字强调 */
}

/* 浅色 + violet（紫色家族） */
[data-theme="light"][data-color-scheme="violet"] {
  --cta: #51448F;                      /* 深紫蓝（白底实测通过 AAA） */
  --cta-hover: #5C5AB5;
  --cta-on: #FFFFFF;
  --cta-soft: rgba(81, 68, 143, 0.10);
  --cta-soft-border: rgba(81, 68, 143, 0.24);
  --cta-glow: rgba(81, 68, 143, 0.22);
  --link-2: #5F3154;                   /* 暗紫红 */
  --link-2-hover: #9B679F;
  --link-2-soft: rgba(95, 49, 84, 0.10);
  --link-2-soft-border: rgba(95, 49, 84, 0.24);
  /* 装饰 / 渐变文字 / 边框（方案 A 扩展） */
  --accent-text: #5F3154;              /* 浅底暗紫 · 渐变起色 */
  --accent-text-2: #9B679F;            /* 浅底中紫 · 渐变止色 */
  --accent-border: #51448F;            /* 浅底深紫蓝 · 边框 */
  /* 完整色系方案 v3 · 6 个新增 token */
  --icon-primary: #51448F;             /* 浅底深紫蓝 · 图标 */
  --accent-bg: rgba(81, 68, 143, 0.08);
  --accent-bg-strong: rgba(81, 68, 143, 0.16);
  --badge-soft: rgba(81, 68, 143, 0.10);
  --data-color: #5F3154;               /* 浅底暗紫 · 数字 */
  --emphasis: #51448F;                 /* 浅底深紫蓝 · 强调 */
  /* 装饰色（v4） */
  --halo-bg: rgba(81, 68, 143, 0.06);
  --halo-border: rgba(81, 68, 143, 0.14);
  --tag-bg: rgba(155, 103, 159, 0.10);
  /* 5 个彩色文字 token（v1 统一） */
  --c-emphasis: #51448F;               /* 段落内联高亮 */
  --c-cta: #51448F;                    /* CTA 文字 */
  --c-link: #5F3154;                   /* 普通链接（暗紫红） */
  --c-data: #5F3154;                   /* 数字强调 */
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; font-size: var(--fs-body); }  /* v1 移动基线 16px（由 15 上调） */

/* 桌面基线上调到 17px（原 16px），照顾 50+ 决策者 */
@media (min-width: 768px) {
  html { font-size: var(--fs-body-lg); }
}

/* 文字选中态：跟随色系 CTA 色，luxe 因金黄本身亮度高需要更高混合比 */
::selection {
  background: color-mix(in srgb, var(--cta) 35%, transparent);
  color: inherit;
  text-shadow: none;
}
::-moz-selection {
  background: color-mix(in srgb, var(--cta) 35%, transparent);
  color: inherit;
  text-shadow: none;
}
[data-color-scheme="luxe"] ::selection,
[data-color-scheme="luxe"] ::-moz-selection {
  background: color-mix(in srgb, var(--cta) 55%, transparent);
}
[data-theme="light"] ::selection,
[data-theme="light"] ::-moz-selection {
  background: color-mix(in srgb, var(--cta) 22%, transparent);
  color: var(--text);
}

/* 移动端基线缩放：1rem 从 17px → 16px → 15px，避免 360px 屏长行溢出 */
@media (max-width: 480px) {
  html { font-size: var(--fs-body); }   /* 原 14px → 15px，避免 50+ 用户阅读困难 */
}
@media (max-width: 360px) {
  html { font-size: var(--fs-small); }   /* 极窄屏兜底 */
}

/* Skip link - 键盘可达性 */
.skip-link {
  position: absolute;
  top: -100px;
  left: 16px;
  background: var(--primary);
  color: var(--text-on-primary);
  padding: 12px 20px;
  z-index: 9999;
  font-weight: 600;
  border-radius: 0 0 8px 8px;
  text-decoration: none;
  transition: top 0.2s;
}
.skip-link:focus { top: 0; }

body {
  font-family: var(--font-sans);
  background-color: var(--dark-bg);
  color: var(--text-primary);
  line-height: var(--lh-base);  /* v1: 1.6 → 1.7（基线 17px 后语义更易扫读） */
  overflow-x: hidden;
  position: relative;
}

/* 全站微网格背景 — 让"留白"区域有质感而非纯黑 */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-image:
    linear-gradient(var(--grid-line) 1px, transparent 1px),
    linear-gradient(90deg, var(--grid-line-2) 1px, transparent 1px);
  background-size: 100px 100px;
  background-position: center top;
  -webkit-mask-image: radial-gradient(ellipse 90% 70% at 50% 25%, black 0%, transparent 75%);
  mask-image: radial-gradient(ellipse 90% 70% at 50% 25%, black 0%, transparent 75%);
  opacity: 0.9;
}

/* 全站层叠：内容提升到网格之上 */
main, header, footer, .back-to-top, .mobile-menu, .mobile-overlay {
  position: relative;
  z-index: 1;
}

a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }

.container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 24px;
}

/* ===========================
   导航栏
   ========================== */
.navbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  height: var(--nav-h);
  background: var(--bg-overlay);
  backdrop-filter: blur(20px);
  border-bottom-color: var(--card-border);
  box-shadow: var(--shadow-md);
  transition: background 0.3s, box-shadow 0.3s, border-color 0.3s;
}

/* at-top 状态：滚动距离 ≤ 60 时透明（由 JS 添加）*/
.navbar.at-top {
  background: transparent;
  backdrop-filter: none;
  border-bottom-color: transparent;
  box-shadow: none;
}

.nav-container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 24px;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: relative;  /* mega dropdown 的 offsetParent，让 nav.js 动态 left 精确对齐 logo */
}

.nav-logo {
  display: flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
  flex-shrink: 0;
  white-space: nowrap;
}

.logo-img {
  width: 44px;
  height: 44px;
  object-fit: contain;
  object-position: center;
  border-radius: 6px;
  filter: saturate(1.15) contrast(1.05);
}

.logo-text {
  font-size: var(--fs-h3);
  font-weight: 700;
  color: var(--text-primary);
  letter-spacing: 0.02em;
}

.nav-links {
  display: flex;
  align-items: center;
  gap: 4px;
}

.nav-item {
  padding: 8px 14px;
  font-size: var(--fs-small);
  color: var(--text-secondary);
  background: transparent;   /* 覆盖 <button> UA 默认背景(#6B6B6B / #EFEFEF),保持 .nav-item 视觉一致 */
  border-radius: var(--radius-sm);
  transition: color 0.2s, background 0.2s;
  white-space: nowrap;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 4px;
}

.nav-item:hover {
  color: var(--text-primary);
  background: var(--card-bg);
}

/* 顶级 nav-item 当前页激活(由 subpage.js / nav.js 的 markActiveNav 加 .is-current)
   跟 .nav-dropdown.is-active / 移动端 .mobile-nav-item.is-current 视觉风格完全统一:
   primary 蓝文字 + primary halo + 1px 描边 */
.nav-item.is-current {
  color: var(--primary);
  background: var(--primary-glow);
  box-shadow: inset 0 0 0 1px rgba(0, 212, 255, 0.32);
}
[data-theme="light"] .nav-item.is-current {
  box-shadow: inset 0 0 0 1px rgba(0, 107, 133, 0.32);
}

.nav-item.nav-cta {
  background: var(--primary);
  color: var(--text-on-primary);
  font-weight: 600;
  padding: 8px 18px;
  border-radius: 6px;
  margin-left: 8px;
}

.nav-item.nav-cta:hover {
  background: var(--primary-dark);
  color: var(--text-on-primary);
}

/* 登录入口：次级 CTA，区别于"联系我们"主按钮 */
.nav-item.nav-login {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  font-size: var(--fs-small);
  color: var(--text-primary);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 6px;
  background: transparent;
  margin-left: 12px;
  transition: border-color 0.2s, background 0.2s, color 0.2s;
  cursor: pointer;
}

.nav-item.nav-login:hover {
  border-color: var(--border-hover);
  color: var(--primary);
  background: var(--card-hover);
}

.nav-item.nav-login .nav-login-icon {
  width: 16px;
  height: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text-secondary);
}

.nav-item.nav-login:hover .nav-login-icon {
  color: var(--primary);
}

/* 已登录态：导航栏头像下拉 */
.nav-user {
  position: relative;
  margin-left: 12px;
}

.nav-user-trigger {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px 12px 4px 4px;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 100px;
  background: transparent;
  cursor: pointer;
  transition: border-color 0.2s, background 0.2s;
  color: var(--text-primary);
  font-size: var(--fs-body);
}

.nav-user-trigger:hover {
  border-color: var(--border-hover);
  background: var(--card-hover);
}

.nav-user-avatar {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--primary), var(--accent));
  color: var(--text-on-primary);
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: var(--fs-small);
}

.nav-user-menu {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  min-width: 180px;
  background: var(--dark-bg2);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-md);
  padding: 6px 0;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-4px);
  transition: opacity 0.2s, transform 0.2s, visibility 0.2s;
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.45);
  z-index: 1001;
}

.nav-user.open .nav-user-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.nav-user-menu a {
  display: block;
  padding: 9px 16px;
  font-size: var(--fs-body);
  color: var(--text-secondary);
  transition: background 0.15s, color 0.15s;
}

.nav-user-menu a:hover {
  background: var(--card-bg);
  color: var(--text-primary);
}

.nav-user-menu .nav-user-divider {
  height: 1px;
  margin: 6px 0;
  background: var(--card-border);
}

.arrow-down { font-size: var(--fs-small); opacity: 0.7; transition: transform 0.25s ease, color 0.2s; }

/* ===========================
   导航下拉触发器在子页时的"被选中"态
   当 nav.js 检测到当前页属于"产品与服务"覆盖范围时,
   给 .nav-dropdown 加上 .is-active —— 视觉上跟桌面 .nav-item.is-current
   以及移动端 .mobile-nav-item.is-current / .mobile-nav-toggle.is-active
   保持完全一致:primary 蓝文字 + primary halo + 1px 描边
   提示用户"你正处在这个大类下"
   =========================== */
.nav-dropdown.is-active > .nav-item {
  color: var(--primary);
  background: var(--primary-glow);
  box-shadow: inset 0 0 0 1px rgba(0, 212, 255, 0.32);
}
/* 箭头不翻转、不变色 —— 跟其他 is-current 项视觉一致;
   "被点击展开"的语义交给 mega dropdown 自身传达 */
.nav-dropdown.is-active .arrow-down {
  color: inherit;
  opacity: 0.85;
  transform: none;
}
[data-theme="light"] .nav-dropdown.is-active > .nav-item {
  box-shadow: inset 0 0 0 1px rgba(0, 107, 133, 0.32);
}

/* 导航下拉 */
.nav-dropdown {
  position: relative;
  /* hover 缓冲：让鼠标从 nav-item 区域向下走更远再触发 mouseleave。
     V2.8 体验整改：20px → 32px，配合 nav.js 的 350ms 离开延迟防"误关" */
  padding-bottom: 32px;
  margin-bottom: -32px;  /* 视觉上抵消 padding-bottom，保持 navbar 高度不变 */
}

/* 注：早期 .nav-dropdown:hover .dropdown-menu 规则已被 nav.js 的 mouseenter/mouseleave
   显式控制取代（alignMegaDropdown 把 dropdown 挪出 .nav-dropdown 父级后 :hover 失效）。
   显隐逻辑见 nav.js 的 HOVER_OPEN_MS / HOVER_CLOSE_MS 状态机 */

.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  background: var(--dark-bg2);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-md);
  padding: 8px 0;
  min-width: 160px;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s, visibility 0.2s;
  box-shadow: 0 20px 60px rgba(0,0,0,0.4);
  /* V2.8 体验整改：12px → 20px，更宽的物理桥接区，鼠标从 trigger 移到 dropdown 时
     有更大安全带（配合 .nav-dropdown padding-bottom 32px + 此处 20px = 52px 缓冲） */
  margin-top: 20px;
}

/* ===========================
   Mega Dropdown（4 列 + 玻璃态 + 胶囊）
   =========================== */
.dropdown-menu.dropdown-mega {
  width: 940px;
  max-width: calc(100vw - 48px);
  padding: 24px;
  background: rgba(3, 11, 26, 0.96);
  backdrop-filter: blur(56px) saturate(220%);
  -webkit-backdrop-filter: blur(56px) saturate(220%);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 14px;
  box-shadow: 0 40px 80px rgba(0, 0, 0, 0.7), 0 0 0 1px rgba(255, 255, 255, 0.06) inset, 0 0 100px rgba(124, 58, 237, 0.18);
  margin-top: 0;
  /* 由 nav.js 基于 logo 左边界动态设置 left,确保左边缘不超出 logo */
  left: 0;
  right: auto;
  transform: translateY(-12px) scale(0.98);
  opacity: 0;
  transition: opacity 0.25s ease, transform 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}
/* 注：早期 .nav-dropdown:hover .dropdown-menu.dropdown-mega 规则（transform/opacity 切换）
   已被 nav.js 的 mouseenter/mouseleave 显式控制取代。
   原因：alignMegaDropdown 把 dropdown 挪出 .nav-dropdown 父级后 :hover 后代选择器失效。
   显隐由 nav.js 的 HOVER_OPEN_MS / HOVER_CLOSE_MS 状态机接管。 */

.mega-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  gap: 14px;
}

.mega-col {
  display: block;
  padding: 16px 14px;
  border-radius: 10px;
  text-decoration: none;
  color: var(--text);
  background: transparent;
  border: 1px solid transparent;
  transition: all 0.2s;
  position: relative;
  min-height: 130px;
}
.mega-col:hover {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.08);
  transform: translateY(-1px);
}
.mega-col.mega-col-wide {
  background: rgba(255, 255, 255, 0.02);
  border-color: rgba(255, 255, 255, 0.05);
  min-height: 130px;
  padding: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.mega-col.mega-col-wide:hover {
  background: rgba(255, 255, 255, 0.04);
}
.mega-col-wide-head {
  display: block;
  padding: 16px 14px 12px;
  text-decoration: none;
  color: inherit;
  border-radius: 10px 10px 0 0;
  transition: background 0.2s;
}
.mega-col-wide-head:hover {
  background: rgba(255, 255, 255, 0.04);
}
.mega-col.mega-col-wide .mega-pills {
  margin-top: auto;
  padding: 0 12px 12px;
}

.mega-col-icon {
  width: 28px; height: 28px;
  border-radius: 7px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(0, 212, 255, 0.1);
  color: var(--primary);
  margin-bottom: 10px;
}
.mega-col-icon svg { width: 16px; height: 16px; }

.mega-col-title,
.mega-col-title-link {
  font-size: var(--fs-body);
  font-weight: 600;
  color: var(--text);
  margin-bottom: 6px;
  line-height: 1.3;
}
.mega-col-title-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  text-decoration: none;
  transition: color 0.2s ease;
}
.mega-col-title-link:hover {
  color: var(--accent);
}
.mega-col-arrow {
  width: 14px;
  height: 14px;
  opacity: 0;
  transform: translateX(-4px);
  transition: opacity 0.2s ease, transform 0.2s ease;
}
.mega-col-title-link:hover .mega-col-arrow {
  opacity: 1;
  transform: translateX(0);
}
.mega-col-arrow-inline {
  width: 14px;
  height: 14px;
  opacity: 0;
  transform: translateX(-4px);
  transition: opacity 0.2s ease, transform 0.2s ease;
}
.mega-col-title-link:hover .mega-col-arrow-inline {
  opacity: 1;
  transform: translateX(0);
}
.mega-col-desc {
  font-size: var(--fs-caption);
  color: var(--text-muted);
  line-height: 1.5;
  margin-bottom: 12px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 28ch;
}
.mega-col-arrow {
  width: 16px;
  height: 16px;
  color: var(--primary);
  transition: transform 0.2s;
  position: absolute;
  bottom: 14px;
  right: 14px;
}
.mega-col:hover .mega-col-arrow {
  transform: translateX(4px);
}


/* 浅色模式 mega dropdown */
[data-theme="light"] .dropdown-menu.dropdown-mega {
  background: rgba(255, 255, 255, 0.96);
  backdrop-filter: blur(56px) saturate(220%);
  -webkit-backdrop-filter: blur(56px) saturate(220%);
  border: 1px solid rgba(15, 23, 42, 0.12);
  box-shadow: 0 40px 80px rgba(15, 23, 42, 0.22), 0 0 0 1px rgba(15, 23, 42, 0.04) inset, 0 0 100px rgba(124, 58, 237, 0.1);
}
[data-theme="light"] .mega-col {
  color: var(--text);
}
[data-theme="light"] .mega-col-title {
  color: var(--text);
}
[data-theme="light"] .mega-col-desc {
  color: var(--text-secondary);
}
[data-theme="light"] .mega-col:hover {
  background: rgba(15, 23, 42, 0.04);
  border-color: rgba(15, 23, 42, 0.08);
}
[data-theme="light"] .mega-col.mega-col-wide {
  background: rgba(15, 23, 42, 0.02);
  border-color: rgba(15, 23, 42, 0.06);
}
[data-theme="light"] .mega-col.mega-col-wide:hover {
  background: rgba(15, 23, 42, 0.04);
}
[data-theme="light"] .mega-pill {
  background: rgba(15, 23, 42, 0.03);
  border: 1px solid rgba(15, 23, 42, 0.08);
  color: var(--text);
}
[data-theme="light"] .mega-pill:hover {
  background: rgba(15, 23, 42, 0.06);
  border-color: var(--primary);
}
[data-theme="light"] .pill-tag-green {
  background: var(--halo-bg);
  color: #047857;
  border: 1px solid var(--halo-border);
}
[data-theme="light"] .pill-tag-purple {
  background: var(--halo-bg);
  color: #6D28D9;
  border: 1px solid var(--halo-border);
}
[data-theme="light"] .pill-tag-cyan {
  background: rgba(0, 212, 255, 0.12);
  color: #006B85;
  border: 1px solid rgba(0, 212, 255, 0.4);
}
[data-theme="light"] .pill-text {
  color: var(--text-secondary);
}
[data-theme="light"] .mega-col-icon {
  background: rgba(0, 107, 133, 0.1);
  color: #006B85;
}

/* 胶囊子项（企业级 / 运营级） */
.mega-pills {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 12px;
}
.mega-pill {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 8px;
  text-decoration: none;
  color: var(--text);
  transition: all 0.2s;
  cursor: pointer;
  white-space: nowrap;
}
.mega-pill:hover {
  background: rgba(255, 255, 255, 0.08);
  border-color: var(--primary);
  transform: translateX(2px);
}
.pill-tag {
  display: inline-block;
  padding: 4px 12px;
  font-size: var(--fs-small);
  font-weight: 600;
  border-radius: 999px;
  white-space: nowrap;
  letter-spacing: 0.3px;
  min-width: 48px;
  text-align: center;
}
.pill-tag-purple {
  background: var(--tag-bg);
  color: #C4B5FD;
  border: 1px solid rgba(167, 139, 250, 0.5);
}
.pill-tag-green {
  background: var(--tag-bg);
  color: #6EE7B7;
  border: 1px solid var(--halo-border);
}
.pill-tag-cyan {
  background: rgba(0, 212, 255, 0.25);
  color: #67E8F9;
  border: 1px solid rgba(0, 212, 255, 0.5);
}
.pill-text {
  font-size: var(--fs-body);
  color: var(--text-secondary);
  flex: 1;
  white-space: nowrap;
}

.dropdown-menu a:not(.mega-col):not(.mega-col-title-link):not(.mega-pill) {
  display: block;
  padding: 10px 16px;
  font-size: var(--fs-small);
  color: var(--text-secondary);
  transition: color 0.2s, background 0.2s;
  white-space: nowrap;
}

.dropdown-menu a:not(.mega-col):not(.mega-col-title-link):not(.mega-pill):hover {
  color: var(--primary);
  background: var(--primary-glow);
}

/* 汉堡菜单 */
.hamburger {
  display: none;
  flex-direction: column;
  gap: 5px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 8px;
}

.hamburger span {
  display: block;
  width: 24px;
  height: 2px;
  background: var(--text-primary);
  border-radius: 2px;
  transition: all 0.3s;
}

/* ===========================
   移动端菜单（V2：4 段式分层）
   - 顶部 head（logo + 关闭）
   - 主导航（每项独占 1 行，子菜单可展开）
   - CTA 区（联系我们大号按钮）
   - 个性化区（色系+字号 一行，主题+登录 一行）
   ========================== */
.mobile-menu {
  position: fixed;
  top: 0;
  right: -100vw;
  width: min(86vw, 360px);
  height: 100vh;
  height: 100dvh;
  background: var(--dark-bg2);
  z-index: 2000;
  padding: 0 22px 28px;
  transition: right 0.35s cubic-bezier(0.4,0,0.2,1);
  border-left: 1px solid var(--card-border);
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 0;
}

.mobile-menu.open { right: 0; }

.mobile-menu-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 0 16px;
  border-bottom: 1px solid var(--card-border);
  margin-bottom: 8px;
  position: sticky;
  top: 0;
  background: var(--dark-bg2);
  z-index: 2;
}

.mobile-logo {
  font-size: var(--fs-h4);
  font-weight: 700;
  color: var(--primary);
  margin: 0;
}

.mobile-close {
  background: none;
  border: none;
  color: var(--text-secondary);
  cursor: pointer;
  padding: 6px;
  min-width: 36px;
  min-height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  transition: background 0.18s, color 0.18s;
}
.mobile-close:hover { background: rgba(255,255,255,0.06); color: var(--text-primary); }
.mobile-close .mobile-close-icon { width: 18px; height: 18px; }

/* 段 1：主导航 */
.mobile-nav {
  display: flex;
  flex-direction: column;
  padding: 4px 0 16px;
}
.mobile-nav-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 4px;
  font-size: var(--fs-body);
  color: var(--text-secondary);
  border-bottom: 1px solid var(--card-border);
  transition: color 0.18s, padding-left 0.18s;
  text-decoration: none;
  min-height: 48px;
}
.mobile-nav-item:hover { color: var(--text-primary); padding-left: 8px; }
.mobile-nav-item:last-of-type { border-bottom: none; }

/* 移动端顶级项当前页激活(由 subpage.js / nav.js 加 .is-current) */
.mobile-nav-item.is-current {
  color: var(--primary);
  background: var(--primary-glow);
  padding-left: 12px;
  position: relative;
}
.mobile-nav-item.is-current::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: var(--primary);
}

/* 段 2：CTA 区（联系我们） */
.mobile-cta-zone { padding: 4px 0 16px; }
.mobile-cta-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 14px 18px;
  background: var(--primary);
  color: var(--text-on-primary);
  font-size: var(--fs-body);
  font-weight: 600;
  border-radius: 10px;
  text-decoration: none;
  box-shadow: 0 4px 14px rgba(16, 185, 129, 0.25);
  transition: transform 0.15s, box-shadow 0.18s, filter 0.18s;
  min-height: 48px;
}
.mobile-cta-btn:hover { transform: translateY(-1px); filter: brightness(1.05); box-shadow: 0 6px 18px rgba(16, 185, 129, 0.35); }
.mobile-cta-btn:active { transform: translateY(0); }
.mobile-cta-icon { width: 16px; height: 16px; }

/* 段 3：个性化区 */
.mobile-personalize {
  margin-top: auto;
  padding: 16px 0 0;
  border-top: 1px solid var(--card-border);
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.mobile-personalize-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  align-items: stretch;
}
.mobile-personalize-row + .mobile-personalize-row { margin-top: 0; }

/* 色系 box：2×3 网格 — 第 1 行 label + 2 dot，第 2 行 2 dot（与第 1 行对齐）
   字号 box：保留原 flex column（label 单独一行 + 横排按钮） */
.mobile-personalize .mobile-scheme {
  display: grid;
  grid-template-columns: auto 1fr 1fr;
  column-gap: 12px;
  row-gap: 8px;
  align-items: center;
  padding: 12px 14px;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  margin: 0;
  width: auto;
}
.mobile-personalize .mobile-font-size {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
  padding: 12px 14px;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  margin: 0;
  width: auto;
}
.mobile-scheme-label,
.mobile-font-size-label {
  display: block;
  font-size: var(--fs-caption);
  color: var(--text-muted);
  letter-spacing: 0.04em;
  margin: 0;
}
.mobile-scheme-label {
  grid-row: 1;
  grid-column: 1;
}
/* dots 占 box 的右半边 2×2 网格（跨 2 行 2 列） */
.mobile-scheme-dots {
  display: grid;
  grid-template-columns: repeat(2, 28px);
  gap: 8px;
  align-items: center;
  justify-content: start;
  grid-row: 1 / span 2;
  grid-column: 2 / span 2;
}
.mobile-scheme-dots .scheme-dot { width: 28px; height: 28px; }
.mobile-font-size-buttons {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px;
  background: rgba(255,255,255,0.06);
  border-radius: 999px;
}
.mobile-font-size-buttons .fs-btn {
  min-width: 36px;
  height: 32px;
  padding: 0 10px;
  font-size: var(--fs-small);
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* 主题 / 登录 — 工具按钮 */
.mobile-tool-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 12px 14px;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--text);
  font-size: var(--fs-body);
  text-decoration: none;
  min-height: 48px;
  transition: border-color 0.18s, background 0.18s, color 0.18s;
}
.mobile-tool-btn:hover { border-color: var(--primary); color: var(--primary); }
.mobile-tool-btn-primary {
  background: var(--primary);
  color: var(--text-on-primary);
  border-color: var(--primary);
  font-weight: 600;
}
.mobile-tool-btn-primary:hover {
  background: var(--primary);
  color: var(--text-on-primary);
  filter: brightness(1.08);
  border-color: var(--primary);
}
.mobile-tool-icon { width: 16px; height: 16px; flex-shrink: 0; }

/* ── 子菜单展开（折叠面板） ── */
.mobile-nav-toggle .toggle-arrow {
  width: 14px;
  height: 14px;
  transition: transform 0.25s;
  display: inline-block;
  color: var(--text-muted);
  flex-shrink: 0;
}
.mobile-nav-toggle.open .toggle-arrow { transform: rotate(90deg); }
.mobile-nav-toggle.open { color: var(--text-primary); }

/* 移动端:产品与服务子页时,toggle 自动激活(配套 nav.js markActiveNav)
   跟 .open 区分:.open = 用户点击展开;.is-active = 当前所在大类(更强提示)
   视觉跟 .mobile-nav-item.is-current 完全一致(左竖条 + primary 文字 + 浅底) */
.mobile-nav-toggle.is-active {
  color: var(--primary);
  background: var(--primary-glow);
  padding-left: 12px;
  position: relative;
}
.mobile-nav-toggle.is-active::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: var(--primary);
}
.mobile-nav-toggle.is-active .toggle-arrow {
  color: inherit;
  transform: rotate(90deg);
}

/* mega dropdown / mobile sub 里的当前页:is-current 替代 subpage.js 的 inline style */
.dropdown-menu a.is-current {
  color: var(--c-link);
  background: var(--primary-glow);
  box-shadow: inset 0 0 0 1px rgba(0, 212, 255, 0.28);
}
.mobile-nav-sub.is-current {
  color: var(--primary);
  background: rgba(0, 212, 255, 0.08);
  padding-left: 32px;
  position: relative;
}
.mobile-nav-sub.is-current::before {
  content: "";
  position: absolute;
  left: 16px;
  top: 50%;
  width: 3px;
  height: 14px;
  margin-top: -7px;
  background: var(--primary);
  border-radius: 2px;
}

.mobile-nav-sub-wrap {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.32s ease;
  background: rgba(0,0,0,0.18);
  border-radius: 0 0 10px 10px;
  margin: 0 -4px 4px;
}
.mobile-nav-sub-wrap.open { max-height: 420px; }

.mobile-nav-sub {
  display: flex;
  align-items: center;
  padding: 10px 14px 10px 28px;
  font-size: var(--fs-small);
  color: var(--text-muted);
  text-decoration: none;
  border-bottom: 1px solid rgba(255,255,255,0.04);
  transition: color 0.18s, padding-left 0.18s, background 0.18s;
  min-height: 40px;
  width: 100%;
}
.mobile-nav-sub:last-child { border-bottom: none; }
.mobile-nav-sub:hover { color: var(--primary); padding-left: 32px; background: rgba(255,255,255,0.02); }

.mobile-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.6);
  z-index: 1999;
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s;
}

.mobile-overlay.show {
  opacity: 1;
  visibility: visible;
}

/* Desktop 下 mobile 元素从流中彻底脱离，避免 fixed 元素影响后续 static 元素定位（如 V2 页面的 breadcrumb） */
@media (min-width: 769px) {
  .mobile-menu, .mobile-overlay {
    display: none !important;
  }
}

/* ===========================
   Hero 首屏
   ========================== */
.hero {
  position: relative;
  min-height: 100vh;        /* 兜底 */
  min-height: 100dvh;       /* 优先：dynamic viewport height，规避 iOS Safari 地址栏 */
  display: flex;
  align-items: flex-end;   /* 内容贴底，"向下探索"自然成为视觉收口 */
  overflow: hidden;
  padding-top: var(--nav-h);
  padding-bottom: 120px;    /* 内容距 hero 底部留呼吸 */
}

/* Hero 右下角蓝色光晕锚点 — 解决右侧留白视觉 */
.hero::before {
  content: '';
  position: absolute;
  bottom: -200px;
  right: -120px;
  width: 720px;
  height: 720px;
  background: radial-gradient(circle, var(--primary-glow) 0%, var(--accent-soft) 35%, transparent 70%);
  pointer-events: none;
  z-index: 2;
  filter: blur(2px);
}

.hero-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
}

/* Hero 轮播背景 - 5 张候选业务图自动切换 */
.hero-slides {
  position: absolute;
  inset: 0;
  z-index: 1;
  overflow: hidden;
}

.hero-slide {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center center;
  opacity: 0;
  filter: saturate(1.08) contrast(1.06) brightness(0.95);
  transition: opacity 1.2s ease-in-out;
  /* will-change 仅给激活的 slide（其他 5 张 opacity:0，不占合成层） */
  animation: heroBgDrift 34s ease-in-out infinite alternate;
}

.hero-slide.is-active {
  opacity: 0.92;
  will-change: opacity;
}

@keyframes heroBgDrift {
  0% { transform: scale(1.015) translate(0, 0); }
  50% { transform: scale(1.045) translate(-8px, 3px); }
  100% { transform: scale(1.02) translate(6px, -3px); }
}

/* 首屏遮罩：左侧留文字阅读区，底部自然过渡到页面背景；右侧透出背景图自己讲话 */
.hero-bg-overlay {
  position: absolute;
  inset: 0;
  z-index: 2;
  background:
    /* 左侧文字阅读区（深）+ 右侧弱化 */
    linear-gradient(90deg,
      var(--hero-mask-1) 0%,
      var(--hero-mask-2) 28%,
      var(--hero-mask-3) 52%,
      var(--hero-mask-4) 78%,
      var(--hero-mask-4) 100%
    ),
    /* 底部自然过渡到页面背景 */
    linear-gradient(180deg,
      var(--hero-mask-5) 0%,
      var(--hero-mask-5) 46%,
      rgba(0, 0, 0, 0.12) 84%,
      var(--hero-mask-bottom) 100%
    );
}

/* 微动态数据流，给静态头图增加 AI 运行感（极弱化）
   浅色模式下 mix-blend-mode: screen 在浅底上几乎不可见，但不影响，留作深色版细节 */
.hero-slides::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(115deg, transparent 0%, transparent 42%, var(--primary-glow) 47%, transparent 53%, transparent 100%),
    linear-gradient(72deg, transparent 0%, transparent 58%, var(--accent2-soft) 63%, transparent 68%, transparent 100%);
  background-size: 180% 180%, 150% 150%;
  mix-blend-mode: screen;
  opacity: 0.32;
  animation: heroSignalFlow 14s linear infinite;
  pointer-events: none;
}

/* 轮播圆点指示器 */
.hero-dots {
  position: absolute;
  bottom: 92px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 6;
  display: flex;
  gap: 10px;
  padding: 8px 14px;
  border-radius: 999px;
  background: rgba(3, 11, 26, 0.32);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 1px solid rgba(255, 255, 255, 0.08);
}

.hero-dot {
  width: 32px;
  height: 4px;
  border: 0;
  padding: 0;
  border-radius: 2px;
  background: rgba(255, 255, 255, 0.35);
  cursor: pointer;
  transition: background 0.3s ease, width 0.3s ease;
  font: 0/0 a;
  color: transparent;
}

.hero-dot:hover {
  background: rgba(255, 255, 255, 0.6);
}

.hero-dot.is-active {
  background: rgba(255, 255, 255, 0.95);
  width: 44px;
}

@keyframes heroSignalFlow {
  0% { background-position: -70% 0%, 120% 0%, 0 0; }
  100% { background-position: 120% 0%, -60% 0%, 84px 0; }
}

.hero-content {
  position: relative;
  z-index: 10;
  width: min(760px, calc(100% - 48px));
  padding: 0;
  margin-left: max(24px, calc((100vw - 1200px) / 2 + 24px));
  text-align: left;
  text-shadow: 0 12px 38px rgba(0, 0, 0, 0.45);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 26px;
}

.hero-badge {
  display: inline-block;
  padding: 6px 16px;
  border: 1px solid var(--primary-soft-border);
  border-radius: 100px;
  font-size: var(--fs-body);
  letter-spacing: 0.1em;
  color: var(--primary);
  margin-bottom: 28px;
  background: var(--primary-soft);
}

.hero-title {
  font-size: var(--fs-hero);
  font-weight: 800;
  line-height: 1.15;
  margin-bottom: 24px;
  letter-spacing: 0;
}

.title-line {
  display: block;
}

.title-line.accent,
.hero-title .accent {
  background: linear-gradient(135deg, var(--accent-text), var(--accent-text-2));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.hero-desc {
  font-size: var(--fs-body-lg);
  color: var(--text-secondary);
  line-height: 1.8;
  margin-bottom: 36px;
}

.hero-actions {
  display: flex;
  gap: 16px;
  justify-content: flex-start;
  flex-wrap: wrap;
  margin-bottom: 46px;
}

/* 通用按钮 */
button, .btn-primary, .btn-cta {
  display: inline-flex;
  align-items: center;
  padding: 14px 28px;
  font-weight: 700;
  font-size: var(--fs-body);
  border-radius: 8px;
  transition: all 0.2s;
  border: none;
  cursor: pointer;
}

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

.btn-primary:hover {
  background: var(--primary-dark);
  transform: translateY(-1px);
  box-shadow: var(--shadow-glow);
}

.btn-outline {
  display: inline-flex;
  align-items: center;
  padding: 14px 28px;
  background: transparent;
  color: var(--text-primary);
  font-weight: 600;
  font-size: var(--fs-body);
  border-radius: 8px;
  border: 1px solid var(--card-border);
  transition: all 0.2s;
  cursor: pointer;
}

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

.btn-text {
  display: inline-flex;
  align-items: center;
  color: var(--primary);
  font-size: var(--fs-small);
  font-weight: 500;
  transition: opacity 0.2s;
  text-decoration: none;
}

.btn-text:hover { opacity: 0.7; }

/* ===== CTA 按钮（暖橘 / 深紫蓝） ===== */
.btn-cta {
  gap: 8px;
  background: var(--cta);
  color: var(--cta-on);
  text-decoration: none;
  line-height: 1.2;
}

/* 紧凑按钮变体（用于产品页 hero 区底部 CTA） */
.btn-sm { font-size: var(--fs-small); padding: 11px 24px; }
.btn-cta:hover {
  background: var(--cta-hover);
  transform: translateY(-1px);
  box-shadow: 0 8px 24px var(--cta-glow);
}
.btn-cta:active { transform: translateY(0); }
.btn-cta:focus-visible {
  outline: 2px solid var(--cta);
  outline-offset: 3px;
}

/* 次要链接按钮（蓝绿 / 暗紫红） */
.btn-link-2 {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  background: transparent;
  color: var(--link-2);
  font-weight: 600;
  font-size: var(--fs-small);
  border-radius: 6px;
  transition: background 0.2s, color 0.2s, border-color 0.2s;
  border: 1px solid transparent;
  text-decoration: none;
  cursor: pointer;
  line-height: 1.2;
}
.btn-link-2:hover {
  background: var(--link-2-soft);
  border-color: var(--link-2-soft-border);
  color: var(--link-2-hover);
}

/* 徽章 / 状态标签 */
.badge-cta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  background: var(--cta-soft);
  border: 1px solid var(--cta-soft-border);
  color: var(--cta);
  font-size: var(--fs-caption);
  font-weight: 600;
  border-radius: 999px;
  letter-spacing: 0.02em;
  line-height: 1.4;
}
.badge-link-2 {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  background: var(--link-2-soft);
  border: 1px solid var(--link-2-soft-border);
  color: var(--link-2);
  font-size: var(--fs-caption);
  font-weight: 600;
  border-radius: 999px;
  letter-spacing: 0.02em;
  line-height: 1.4;
}

/* 数据统计 */
.hero-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  align-items: center;
  gap: 0;
  padding: 18px 0 0;
  border-top: 1px solid var(--border-strong);
}

.stat-item {
  padding: 0 18px;
  text-align: left;
  border-left: 1px solid var(--card-border);
}

.stat-item:first-child { padding-left: 0; border-left: 0; }

.stat-num {
  font-size: var(--fs-h1);
  font-weight: 800;
  color: var(--text-primary);
  line-height: 1.1;
  margin-bottom: 6px;
  white-space: nowrap;
}

.stat-num span {
  color: var(--text-secondary);
}

.stat-label {
  font-size: var(--fs-small);
  color: var(--text-muted);
  letter-spacing: 0.05em;
  white-space: nowrap;
}

.stat-divider {
  width: 1px;
  height: 40px;
  background: var(--card-border);
}

/* 滚动提示 */
.hero-scroll-hint {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  color: var(--text-secondary);
  font-size: var(--fs-small);
  letter-spacing: 0.1em;
  z-index: 5;
  text-shadow: 0 0 12px var(--decorative-glow);
  opacity: 0.85;
  pointer-events: none;
}

.scroll-arrow {
  width: 1px;
  height: 40px;
  background: linear-gradient(to bottom, var(--primary), transparent);
  box-shadow: 0 0 8px var(--decorative-glow);
  animation: scrollDown 1.5s ease-in-out infinite;
}

@keyframes scrollDown {
  0%, 100% { transform: scaleY(1); opacity: 1; }
  50% { transform: scaleY(0.3); opacity: 0.5; }
}

/* ===========================
   Hero v2 — 让背景图自己讲业务
   ========================== */
/* 业务数据条（替代抽象能力名词） */
.stat-num { font-size: var(--fs-h1); font-weight: 800; }
.stat-num .stat-suffix,
.stat-suffix {
  font-size: var(--fs-body);
  color: var(--text-secondary);
  margin-left: 2px;
  font-weight: 700;
}

/* hero-content 内部垂直分布（flex column + gap），对齐文本和 stats */
.hero-content { gap: 28px; }
.hero-stats { padding-top: 24px; margin-top: 4px; }
.hero-actions { margin-bottom: 0; }

@media (prefers-reduced-motion: reduce) {
  .hero-slide,
  .hero-slides::after,
  .scroll-arrow {
    animation: none;
  }
  .hero-slide { transition: none; }
}

/* ===========================
   通用 Section 样式
   ========================== */
.section {
  padding: 100px 0;
}

.section-tag {
  font-size: var(--fs-body);
  letter-spacing: 0.15em;
  color: var(--emphasis);
  font-weight: 600;
  margin-bottom: 16px;
  text-transform: uppercase;
}

.section-title {
  font-size: var(--fs-section);
  font-weight: 800;
  line-height: 1.25;
  letter-spacing: -0.02em;
  margin-bottom: 20px;
}

.section-desc {
  font-size: var(--fs-body);
  color: var(--text-secondary);
  max-width: 580px;
}

.section-header {
  margin-bottom: 56px;
}

/* ===========================
   关于我们
   ========================== */
.about-section {
  background: var(--dark-bg2);
}

.about-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: center;
}

.about-desc {
  font-size: var(--fs-body);
  color: var(--text-secondary);
  margin-bottom: 16px;
  line-height: 1.8;
}

.about-highlights {
  margin-top: 32px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.highlight-item {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 16px;
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-md);
  transition: border-color 0.18s ease, background-color 0.18s ease;
}

.highlight-item:hover {
  background: var(--card-hover);
  border-color: var(--border-hover);
}

[data-theme="light"] .highlight-item:hover {
  background: var(--card-hover);
  border-color: var(--border-hover);
}

.highlight-icon {
  width: 22px;
  height: 22px;
  font-size: var(--fs-h3);
  flex-shrink: 0;
  color: var(--icon-primary);
}

.highlight-title {
  font-size: var(--fs-small);
  font-weight: 600;
  margin-bottom: 2px;
}

.highlight-sub {
  font-size: var(--fs-small);
  color: var(--text-muted);
}

/* 关于卡片 */
.about-card-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

.about-card {
  padding: 28px;
  border-radius: var(--radius-lg);
  border: 1px solid var(--card-border);
  background: var(--card-bg);
  transition: transform 0.2s, border-color 0.2s;
}

.about-card:hover {
  transform: translateY(-4px);
}

.card-icon {
  width: 40px;
  height: 40px;
  margin-bottom: 16px;
  opacity: 0.8;
}

.card-icon svg { width: 100%; height: 100%; }

.card-num {
  font-size: var(--fs-h1);
  font-weight: 800;
  margin-bottom: 4px;
}

.card-label {
  font-size: var(--fs-body);
  color: var(--text-muted);
}

.card-blue { border-color: var(--primary-soft-border); }
.card-blue .card-icon, .card-blue .card-num { color: var(--primary); }

.card-teal { border-color: var(--accent2-soft-border); }
.card-teal .card-icon, .card-teal .card-num { color: var(--accent2); }

.card-purple { border-color: var(--accent-soft-border); }
.card-purple .card-icon, .card-purple .card-num { color: var(--accent); }

.card-amber { border-color: var(--warn-soft-border); }
.card-amber .card-icon, .card-amber .card-num { color: var(--warn); }

/* ===========================
   服务介绍
   ========================== */
.services-section {
  background: var(--dark-bg);
}

.service-block {
  margin-bottom: 72px;
  padding: 48px;
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-lg);
  transition: border-color 0.3s;
}

.service-block:hover {
  border-color: var(--border-hover);
}

.service-tag-line {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 36px;
}

.service-num {
  font-size: var(--fs-display);
  font-weight: 800;
  color: var(--data-color);
  opacity: 0.3;
  line-height: 1;
}

.service-line {
  flex: 0 0 60px;
  height: 1px;
  background: var(--card-border);
}

.service-name {
  font-size: var(--fs-small);
  letter-spacing: 0.1em;
  color: var(--primary);
  font-weight: 600;
}

.service-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px;
  align-items: start;
}

.service-content-alt {
  grid-template-columns: 1fr 1fr;
}

/* API 可视化 */
.service-content-alt .service-visual { order: -1; }

.service-title {
  font-size: var(--fs-h2);
  font-weight: 700;
  line-height: 1.35;
  margin-bottom: 16px;
}

.service-desc {
  font-size: var(--fs-body);
  color: var(--text-secondary);
  line-height: 1.8;
  margin-bottom: 28px;
}

.api-features {
  margin-bottom: 32px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.feature-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.feature-item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px;
  background: rgba(255,255,255,0.02);
  border-radius: var(--radius-sm);
}

.feature-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  margin-top: 5px;
  flex-shrink: 0;
}

.dot-blue { background: var(--primary); }
.dot-teal { background: var(--accent2); }
.dot-purple { background: var(--accent); }
.dot-amber { background: var(--warn); }

.feature-name {
  font-size: var(--fs-body);
  font-weight: 600;
  margin-bottom: 2px;
}

.feature-sub {
  font-size: var(--fs-small);
  color: var(--text-muted);
  line-height: 1.5;
}

.service-actions {
  display: flex;
  align-items: center;
  gap: 20px;
  flex-wrap: wrap;
}

/* 代码窗口（编辑器保持深色，两版统一） */
.code-window {
  background: var(--code-bg);
  border-radius: var(--radius-md);
  border: 1px solid var(--code-window-border, var(--primary-soft-border));
  box-shadow: var(--code-window-shadow, none);
  overflow: hidden;
  font-family: var(--font-mono);
  font-size: var(--fs-small);  /* 16px（原 15px） */
  margin-bottom: 16px;
}

.code-header {
  background: var(--code-header);
  padding: 12px 16px;
  display: flex;
  align-items: center;
  gap: 8px;
}

.code-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
}

.code-dot.red { background: #FF5F56; }
.code-dot.yellow { background: #FFBD2E; }
.code-dot.green { background: #27C93F; }

.code-title {
  margin-left: 8px;
  font-size: var(--fs-small);
  color: var(--code-title, var(--text-muted));
}

.code-body {
  padding: 20px;
  line-height: 1.7;
  color: var(--code-default, var(--text));
}

.code-line { white-space: pre; }
.code-indent { padding-left: 16px; }
.code-indent2 { padding-left: 32px; }

.code-import { color: var(--code-import, #FF79C6); }
.code-comment { color: var(--code-comment, #6272A4); }
.code-fn { color: var(--code-fn, #50FA7B); }
.code-str { color: var(--code-str, #F1FA8C); }
.code-num { color: var(--code-num, #BD93F9); }
.code-output { color: var(--code-comment, #6272A4); margin-top: 4px; }

.api-metrics {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}

.metric-card {
  text-align: center;
  padding: 16px 12px;
  background: var(--accent-bg);
  border: 1px solid var(--accent-bg);
  border-radius: var(--radius-sm);
}

.metric-val {
  font-size: var(--fs-h3);
  font-weight: 800;
  color: var(--data-color);
  margin-bottom: 4px;
}

.metric-key {
  font-size: var(--fs-body);
  color: var(--text-muted);
}

/* 咨询步骤 */
.consult-steps {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.consult-step {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 20px 20px;
  border-radius: var(--radius-md);
  border: 1px solid var(--card-border);
  background: rgba(255,255,255,0.02);
  transition: all 0.2s;
}

.consult-step.active {
  border-color: var(--border-active);
  background: var(--primary-glow);
}

.step-connector {
  width: 1px;
  height: 16px;
  background: var(--card-border);
  margin-left: 30px;
}

.step-num {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--primary);
  color: var(--text-on-primary);
  font-size: var(--fs-body);
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.consult-step:not(.active) .step-num {
  background: var(--card-bg);
  color: var(--text-muted);
  border: 1px solid var(--card-border);
}

.step-title {
  font-size: var(--fs-small);
  font-weight: 600;
  margin-bottom: 4px;
}

.step-desc {
  font-size: var(--fs-body);
  color: var(--text-muted);
  line-height: 1.5;
}

/* 咨询领域标签 */
.consult-domains {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 28px;
}

.domain-item {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: 100px;
  font-size: var(--fs-body);
  color: var(--text-secondary);
  transition: all 0.2s;
}

.domain-item:hover {
  border-color: var(--border-hover);
  color: var(--primary);
}

.domain-icon {
  width: 15px;
  height: 15px;
  font-size: var(--fs-body);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* ===========================
   行业解决方案
   ========================== */
.solutions-section {
  background: var(--dark-bg2);
}

.solutions-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

.solution-card {
  display: flex;
  flex-direction: column;
  padding: 28px;
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-lg);
  transition: all 0.25s;
  cursor: pointer;
  position: relative;
}

.solution-card:hover {
  border-color: var(--accent-border);
  background: var(--card-hover);
  transform: translateY(-4px);
  box-shadow: 0 16px 44px rgba(0,0,0,0.24);
}

.solution-icon {
  width: 48px;
  height: 48px;
  color: var(--accent-text);
  margin-bottom: 20px;
  opacity: 0.9;
}

.solution-icon svg { width: 100%; height: 100%; }

.solution-en {
  font-size: var(--fs-small);
  letter-spacing: 0.12em;
  color: var(--primary);
  margin-bottom: 6px;
  font-weight: 600;
}

.solution-zh {
  font-size: var(--fs-h4);
  font-weight: 700;
  margin-bottom: 10px;
}

.solution-desc {
  font-size: var(--fs-body);
  color: var(--text-muted);
  line-height: 1.6;
  flex: 1;
}

.solution-arrow {
  position: absolute;
  top: 28px;
  right: 28px;
  width: 16px;
  height: 16px;
  color: var(--text-muted);
  transition: all 0.2s;
}

.solution-card:hover .solution-arrow {
  color: var(--primary);
  transform: translateX(4px);
}

/* ===========================
   技术能力
   ========================== */
.tech-section {
  background: var(--dark-bg);
  position: relative;
  overflow: hidden;
}

.tech-bg {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 60% 50% at 50% 50%, var(--accent-soft) 0%, transparent 70%);
}

.tech-section .container { position: relative; z-index: 1; }

.tech-layers {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.tech-layer {
  display: flex;
  align-items: center;
  gap: 20px;
  padding: 20px 28px;
  border-radius: var(--radius-md);
  border: 1px solid var(--card-border);
}

.layer-app { background: var(--primary-soft); border-color: var(--primary-soft-border); }
.layer-platform { background: var(--accent-soft); border-color: var(--accent-soft-border); }
.layer-model { background: var(--accent2-soft); border-color: var(--accent2-soft-border); }
.layer-infra { background: var(--warn-soft); border-color: var(--warn-soft-border); }

.layer-label {
  font-size: var(--fs-body);
  font-weight: 600;
  color: var(--text-muted);
  min-width: 90px;
  white-space: nowrap;
}

.layer-app .layer-label { color: var(--primary); }
.layer-platform .layer-label { color: var(--accent); }
.layer-model .layer-label { color: var(--accent2); }
.layer-infra .layer-label { color: var(--warn); }

.layer-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.tech-tag {
  padding: 6px 14px;
  border-radius: 100px;
  font-size: var(--fs-body);
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  color: var(--text-secondary);
  transition: all 0.2s;
}

.tech-tag:hover {
  color: var(--text-primary);
  border-color: var(--border-hover);
}

/* ===========================
   数据亮点
   ========================== */
.data-section {
  background: var(--dark-bg2);
  padding: 72px 0;
}

.data-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
}

.data-item {
  padding: 40px 32px;
  text-align: center;
  border-right: 1px solid var(--card-border);
}

.data-item:last-child { border-right: none; }

.data-num {
  display: inline-block;
  font-size: var(--fs-display);
  font-weight: 800;
  color: var(--primary);
  line-height: 1;
  /* P1-06 · 数字等宽：避免 0→99.95 计数时数字宽度变化导致后续标签抖动 */
  font-variant-numeric: tabular-nums;
}

/* P1-06 · 计数完成脉冲（home.js 在 animateCounter 完成时加 .just-counted） */
.data-num.just-counted {
  animation: numCountedPulse 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes numCountedPulse {
  0%   { color: var(--c-emphasis, var(--primary)); transform: scale(1.06); }
  100% { color: var(--primary); transform: scale(1); }
}

.data-unit {
  display: inline-block;
  font-size: var(--fs-h2);
  font-weight: 700;
  color: var(--text-secondary);
  margin-left: 2px;
  vertical-align: top;
  margin-top: 12px;
}

.data-label {
  font-size: var(--fs-body);
  font-weight: 600;
  margin-top: 12px;
  margin-bottom: 8px;
}

.data-sub {
  font-size: var(--fs-body);
  color: var(--text-muted);
  line-height: 1.5;
}

/* ===========================
   客户案例
   ========================== */
.cases-section {
  background: var(--dark-bg);
}

.cases-grid {
  display: grid;
  grid-template-columns: 1.5fr 1fr 1fr;
  gap: 20px;
  align-items: start;
}

.case-card {
  padding: 32px;
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-lg);
  transition: all 0.25s;
}

.case-card:hover {
  border-color: var(--accent-border);
  transform: translateY(-4px);
  box-shadow: 0 16px 44px rgba(0,0,0,0.24);
}

.case-tag {
  display: inline-block;
  padding: 4px 12px;
  border-radius: 100px;
  font-size: var(--fs-small);
  background: var(--badge-soft);
  color: var(--emphasis);
  border: 1px solid transparent;
  margin-bottom: 16px;
  font-weight: 500;
}

.case-title {
  font-size: var(--fs-h4);
  font-weight: 700;
  line-height: 1.4;
  margin-bottom: 12px;
}

.case-desc {
  font-size: var(--fs-small);
  color: var(--text-secondary);
  line-height: 1.7;
  margin-bottom: 24px;
}

.case-metrics {
  display: flex;
  gap: 20px;
  margin-bottom: 24px;
  flex-wrap: wrap;
}

.case-metric {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.case-val {
  font-size: var(--fs-h2);
  font-weight: 800;
  color: var(--primary);
  line-height: 1;
}

.case-key {
  font-size: var(--fs-small);
  color: var(--text-muted);
}

.case-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--fs-small);
  color: var(--primary);
  font-weight: 500;
  transition: opacity 0.2s;
}

.case-link:hover { opacity: 0.7; }

/* ===========================
   动态资讯
   ========================== */
.news-section {
  background: var(--dark-bg2);
}

.news-section .section-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 20px;
}

.news-section .section-header > * { margin-bottom: 0; }

.more-link {
  font-size: var(--fs-small);
  color: var(--primary);
  font-weight: 500;
  flex-shrink: 0;
  transition: opacity 0.2s;
}

.more-link:hover { opacity: 0.7; }

.news-grid {
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  gap: 20px;
}

.news-card {
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  transition: all 0.25s;
  cursor: pointer;
}

.news-card:hover {
  border-color: var(--border-hover);
  transform: translateY(-4px);
}

.news-img-placeholder {
  height: 200px;
  background: linear-gradient(135deg, var(--bg-elev-2) 0%, var(--bg-elev-2) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
}

.news-img-placeholder img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease;
}

.news-card:hover .news-img-placeholder img {
  transform: scale(1.05);
}

.news-img-placeholder.sm { height: 120px; }

.news-img-icon { width: 80px; height: 60px; color: var(--text-muted); }
.news-img-icon svg { width: 100%; height: 100%; }

.news-content { padding: 20px 24px; }

.news-featured .news-content { padding: 24px 28px; }

.news-tag {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 100px;
  font-size: var(--fs-body);
  background: var(--badge-soft);
  color: var(--emphasis);
  border: 1px solid var(--accent-border);
  border-color: transparent;
  margin-bottom: 12px;
}

.news-title {
  font-size: var(--fs-body);
  font-weight: 600;
  line-height: 1.5;
  margin-bottom: 10px;
}

.news-featured .news-title {
  font-size: var(--fs-h4);
  margin-bottom: 12px;
}

.news-excerpt {
  font-size: var(--fs-body);
  color: var(--text-secondary);
  line-height: 1.7;
  margin-bottom: 16px;
}

.news-meta { margin-top: 8px; }

.news-date {
  font-size: var(--fs-small);
  color: var(--text-muted);
}

.news-right {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.news-grid .news-card:nth-child(2),
.news-grid .news-card:nth-child(3),
.news-grid .news-card:nth-child(4) {
  display: flex;
  align-items: stretch;
}

.news-grid .news-card:nth-child(2) .news-img-placeholder,
.news-grid .news-card:nth-child(3) .news-img-placeholder,
.news-grid .news-card:nth-child(4) .news-img-placeholder {
  width: 120px;
  min-width: 120px;
  height: auto;
}

.news-grid .news-card:nth-child(2) .news-content,
.news-grid .news-card:nth-child(3) .news-content,
.news-grid .news-card:nth-child(4) .news-content {
  padding: 16px;
}

/* ===========================
   联系我们
   ========================== */
.contact-section {
  background: var(--dark-bg);
}

.contact-grid {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: 64px;
  align-items: start;
}

.contact-desc {
  font-size: var(--fs-body);
  color: var(--text-secondary);
  line-height: 1.8;
  margin-bottom: 36px;
}

.contact-items {
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin-bottom: 36px;
}

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

.contact-icon {
  width: 20px;
  height: 20px;
  font-size: var(--fs-h3);
  color: var(--primary);
  flex-shrink: 0;
  margin-top: 2px;
}

.contact-label {
  font-size: var(--fs-small);
  color: var(--text-muted);
  margin-bottom: 2px;
}

.contact-val {
  font-size: var(--fs-body);
  font-weight: 500;
}

/* 卡片里的可点击联系项（地址等） */
.contact-link {
  display: inline-flex;
  align-items: flex-start;
  gap: 6px;
  color: var(--text);
  text-decoration: none;
  border-bottom: 1px dashed transparent;
  transition: color 0.2s, border-color 0.2s;
  word-break: break-all;
  line-height: 1.5;
}
.contact-link:hover {
  color: var(--primary);
  border-bottom-color: var(--primary);
}
.contact-link:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
  border-radius: 4px;
}
.contact-link-icon {
  width: 12px;
  height: 12px;
  font-size: var(--fs-small);
  color: var(--text-muted);
  transition: color 0.2s, transform 0.2s;
  flex-shrink: 0;
  margin-top: 2px;
}
.contact-link:hover .contact-link-icon {
  color: var(--primary);
  transform: translate(2px, -2px);
}

/* 二维码 */
.qr-area { display: flex; }

.qr-box {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}

.qr-placeholder {
  width: 132px;
  height: 132px;
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.qr-picture,
.qr-image {
  display: block;
  width: 100%;
  height: 100%;
}

.qr-image {
  object-fit: contain;
}

.qr-label {
  font-size: var(--fs-small);
  font-weight: 500;
  color: var(--text-muted);
}

/* 联系表单 */
.contact-form-wrap {
  background: var(--dark-bg2);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-lg);
  padding: 40px;
}

.form-title {
  font-size: var(--fs-h3);
  font-weight: 700;
  margin-bottom: 28px;
}

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

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

.form-group label {
  display: block;
  font-size: var(--fs-body);
  color: var(--text-secondary);
  margin-bottom: 8px;
  font-weight: 500;
}

.form-group input,
.form-group select,
.form-group textarea {
  width: 100%;
  background: var(--input-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-sm);
  padding: 12px 16px;
  color: var(--text);
  font-size: var(--fs-body);
  font-family: inherit;
  transition: border-color 0.2s, background 0.2s;
  outline: none;
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
  border-color: var(--input-border-focus);
  background: var(--input-bg-focus);
}

.form-group select option { background: var(--bg-elev); color: var(--text); }

.form-group textarea { resize: vertical; }

.btn-submit {
  width: 100%;
  min-height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 20px;
  background: var(--primary);
  color: var(--text-on-primary);
  font-size: var(--fs-body);
  font-weight: 600;
  letter-spacing: 0.02em;
  border: none;
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: background 0.2s, transform 0.15s, box-shadow 0.2s;
  margin-top: 8px;
}

.btn-submit:hover {
  background: var(--primary-dark);
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(0, 212, 255, 0.25);
}

.btn-submit:active {
  transform: translateY(0);
  box-shadow: none;
}

.btn-submit:disabled,
.btn-submit.is-loading {
  opacity: 0.6;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
}

.btn-cta-icon {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* ===========================
   页脚（V2 极简版 — 页面导航归并入右上角菜单）
   - 顶部：品牌信息（logo + slogan + 公司名 + 地址）
   - 底部 4 行：① ICP 备案  ② 公网安备  ③ 协议  ④ 版权
   ========================== */
.footer {
  background: var(--dark-bg2);
  border-top: 1px solid var(--card-border);
  padding: 56px 0 28px;
}

.footer-top {
  display: grid;
  grid-template-columns: 1fr 1.5fr;
  gap: 60px;
  margin-bottom: 48px;
}

.footer-brand {
  max-width: 100%;
}

.footer-logo {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: var(--fs-h3);
  font-weight: 700;
  margin-bottom: 12px;
}

.footer-logo .logo-img {
  width: 42px;
  height: 32px;
}

.footer-slogan {
  font-size: var(--fs-small);
  color: var(--text-secondary);
  margin-bottom: 6px;
}

.footer-company {
  font-size: var(--fs-body);
  color: var(--text-muted);
  white-space: nowrap;        /* 公司名"北京云舟智渡科技有限公司"不内换行 */
  overflow-wrap: normal;
  word-break: keep-all;
}

/* footer 地址（可点击跳地图） */
.footer-address {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 10px;
  padding: 8px 10px;
  font-size: var(--fs-small);
  line-height: 1.6;
  color: var(--text-secondary);
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  text-decoration: none;
  transition: color 0.2s, border-color 0.2s, background 0.2s;
  max-width: 100%;
  white-space: nowrap;
}
.footer-address > span:not(.footer-address-icon) {
  white-space: nowrap;
}
.footer-address:hover {
  color: var(--primary);
  border-color: var(--border-hover);
  background: var(--card-hover);
}
.footer-address:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}
/* footer 地址图标：自身是 inline-flex 容器，内部 svg 居中，
   与右侧地址文字保持视觉水平对齐（之前用 font-size+line-height 占位，
   导致盒子比 svg 大，align-items: center 中心点偏移） */
.footer-address-icon {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  color: var(--primary);
}

.footer-links {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px;
}

.footer-col-title {
  font-size: var(--fs-body);
  font-weight: 600;
  color: var(--text-primary);
  margin-bottom: 16px;
  letter-spacing: 0.05em;
}

.footer-col a {
  display: block;
  padding: 5px 0;
  font-size: var(--fs-body);
  color: var(--text-muted);
  transition: color 0.2s;
}

.footer-col a:hover { color: var(--primary); }

/* footer 底部：桌面端横排（备案+协议+版权在 footer-bottom 内排成 2 行 + 列对齐）；
   移动端（≤768px）才改 4 行竖排，看下方媒体查询 */
.footer-bottom {
  padding-top: 24px;
  border-top: 1px solid var(--card-border);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  gap: 6px 20px;
}

.footer-row {
  font-size: var(--fs-small);
  color: var(--text-muted);
  line-height: 1.7;
}
.footer-row a {
  color: var(--text-muted);
  text-decoration: none;
  transition: color 0.2s;
  white-space: nowrap;
  word-break: keep-all;
}
.footer-row a:hover { color: var(--text-primary); }
.footer-row-sep {
  margin: 0 6px;
  color: var(--text-muted);
  opacity: 0.4;
  user-select: none;
  flex-shrink: 0;
}
.footer-row-copy {
  white-space: nowrap;
  word-break: keep-all;
}

/* 兼容旧版 .footer-icp / .footer-copy 选择器（V2 改用 .footer-row-* 渲染，保留兼容） */
.footer-copy {
  font-size: var(--fs-body);
  color: var(--text-muted);
  white-space: nowrap;
}

.footer-icp {
  display: flex;
  align-items: center;
  gap: 8px;
}
.footer-icp .sep {
  color: var(--text-muted);
  opacity: 0.4;
  user-select: none;
  pointer-events: none;
}

.icp-link {
  font-size: var(--fs-small);
  color: var(--text-muted);
  transition: color 0.2s;
}

.icp-link:hover { color: var(--text-secondary); }

.icp-sep { color: var(--text-muted); font-size: var(--fs-small); }

/* ===========================
   返回顶部
   ========================== */
.back-to-top {
  position: fixed;
  bottom: 32px;
  right: 32px;
  width: 44px;
  height: 44px;
  padding: 0;
  background: var(--primary);
  color: var(--text-on-primary);
  font-size: var(--fs-h4);
  font-weight: 700;
  border: none;
  border-radius: 50%;
  cursor: pointer;
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 999;
  transition: all 0.2s;
  box-shadow: var(--shadow-glow);
}

.back-to-top.show { display: flex; }
.back-to-top:hover { transform: translateY(-2px); }

/* ===========================
   P0-01 · Hero stagger 入场（2026-06-26 优化）
   - 适用全部 9 个有 hero 的页面：index.html .hero-content + 7 个 V2 页面的
     .api-hero / .gw-hero / .ent-hero / .ops-hero / .adv-hero / .sub-banner
   - 走纯 CSS 动画（不依赖 JS），与 AOS 渐进增强解耦
   - 与 AOS 的边界：hero 容器自身 + 直接子元素均无 data-aos 属性，
     所以不会被 AOS 隐藏规则"误伤"；动画完成后元素回到 opacity:1 / transform:none
   - 无 JS / JS 失败 / prefers-reduced-motion：全站兜底已生效，
     animation-duration 被降级为 0.01ms → 元素立即可见
   - 节奏：700ms cubic-bezier(0.16,1,0.3,1) + nth-child 100ms 错峰
   =========================== */
.hero-content > *,
.api-hero > *,
.gw-hero > *,
.ent-hero > *,
.ops-hero > *,
.adv-hero > *,
.sub-banner .container > * {
  opacity: 0;
  transform: translateY(14px);
  animation: heroStaggerIn 0.7s cubic-bezier(0.16, 1, 0.3, 1) both;
}

@keyframes heroStaggerIn {
  to { opacity: 1; transform: translateY(0); }
}

/* nth-child delay：覆盖最多 6 层 hero（gateway-operations 6 层最长） */
.hero-content > *:nth-child(1),
.api-hero > *:nth-child(1),
.gw-hero > *:nth-child(1),
.ent-hero > *:nth-child(1),
.ops-hero > *:nth-child(1),
.adv-hero > *:nth-child(1),
.sub-banner .container > *:nth-child(1) { animation-delay: 0.08s; }

.hero-content > *:nth-child(2),
.api-hero > *:nth-child(2),
.gw-hero > *:nth-child(2),
.ent-hero > *:nth-child(2),
.ops-hero > *:nth-child(2),
.adv-hero > *:nth-child(2),
.sub-banner .container > *:nth-child(2) { animation-delay: 0.18s; }

.hero-content > *:nth-child(3),
.api-hero > *:nth-child(3),
.gw-hero > *:nth-child(3),
.ent-hero > *:nth-child(3),
.ops-hero > *:nth-child(3),
.adv-hero > *:nth-child(3),
.sub-banner .container > *:nth-child(3) { animation-delay: 0.28s; }

.hero-content > *:nth-child(4),
.api-hero > *:nth-child(4),
.gw-hero > *:nth-child(4),
.ent-hero > *:nth-child(4),
.ops-hero > *:nth-child(4),
.adv-hero > *:nth-child(4),
.sub-banner .container > *:nth-child(4) { animation-delay: 0.38s; }

.hero-content > *:nth-child(5),
.api-hero > *:nth-child(5),
.gw-hero > *:nth-child(5),
.ent-hero > *:nth-child(5),
.ops-hero > *:nth-child(5),
.adv-hero > *:nth-child(5),
.sub-banner .container > *:nth-child(5) { animation-delay: 0.48s; }

.hero-content > *:nth-child(6),
.api-hero > *:nth-child(6),
.gw-hero > *:nth-child(6),
.ent-hero > *:nth-child(6),
.ops-hero > *:nth-child(6),
.adv-hero > *:nth-child(6),
.sub-banner .container > *:nth-child(6) { animation-delay: 0.58s; }

/* ===========================
   P1-02 · 图片渐进清晰（2026-06-26 优化）
   - 适用：所有 <img data-fade-in>（新闻 / 案例图 / 文章 cover）
   - 实现：CSS 控制 blur → clear transition；core.js 监听 load 事件加 .loaded class
   - 渐进增强：无 JS / JS 失败时图片默认完整显示（无 blur），不会"永远模糊"
   - prefers-reduced-motion 全站已兜底 → transition-duration: 0.01ms
   =========================== */
img[data-fade-in] {
  opacity: 0;
  filter: blur(8px);
  transition: opacity 0.5s ease, filter 0.5s ease;
}
img[data-fade-in].loaded {
  opacity: 1;
  filter: blur(0);
}

/* ===========================
   P1-03 · 阅读进度条（2026-06-26 优化）
   - 适用：文章页（7 篇）+ 首页（可选，备用）
   - 容器：<div class="reading-progress" id="readingProgress"></div>
     必须放在 navbar 之前（或之前 inline），CSS position: fixed 不依赖 DOM 顺序
   - 滚动监听复用 core.js onScroll（rAF throttle 已就绪）
   - z-index 1500 高于 navbar（1000），低于 modal（2000）
   - 无障碍：role="progressbar" + aria-label
   =========================== */
.reading-progress {
  position: fixed;
  top: 0;
  left: 0;
  height: 2px;
  width: 0;
  background: linear-gradient(90deg, var(--primary), var(--c-emphasis, var(--primary)));
  z-index: 1500;
  transition: width 0.08s linear;
  pointer-events: none;
  will-change: width;
}

/* ===========================
   P0-02 · CTA / 卡片箭头 hover 微位移（2026-06-26 优化）
   - 统一规范：箭头 SVG hover 时 translateX(4px) + 220ms 缓出
   - 配合按钮自身的颜色/阴影 hover 形成完整反馈链，强化"想点"感
   - 适用元素：.btn-cta-icon / .case-link-icon / .more-link-icon（在 .btn-cta /
     .btn-submit / .case-link / .more-link 内部）
   - 不改动的元素：.btn-link-2 用字符 "↗" 无 svg（位移字符不可控）/ .btn-outline 无箭头
   - 已存在独立位移规则的元素保留：.contact-link-icon（↗ 斜向上 translate 2,2）
     / .track-card::after（6px）/ .pricing-card.featured .btn-primary::after（4px）
     / .deliv-card .d-icon（scale 1.08 不位移）
   =========================== */
.btn-cta-icon,
.case-link-icon,
.more-link-icon {
  transition: transform 0.22s cubic-bezier(0.16, 1, 0.3, 1);
}

.btn-cta:hover .btn-cta-icon,
.btn-submit:hover .btn-cta-icon,
.case-link:hover .case-link-icon,
.more-link:hover .more-link-icon {
  transform: translateX(4px);
}

/* ===========================
   动画 AOS（渐进增强）
   - 无 JS / JS 失败时 [data-aos] 元素默认可见（SEO / 无障碍友好）
   - JS 启动后 core.js 给 <html> 加 .js class，激活下方隐藏规则
   - IntersectionObserver 进入视口后加 .aos-animate → 淡入
   ========================== */
[data-aos] {
  transition: opacity 0.6s ease, transform 0.6s ease;
}

html.js [data-aos]:not(.aos-animate) {
  opacity: 0;
  transform: translateY(24px);
}

[data-aos].aos-animate {
  opacity: 1;
  transform: translateY(0);
}

/* ===========================
   移动端适配
   ========================== */
/* iPad 横屏（769–1024px，横向）：补足手机/桌面之间的断点空白 */
@media (min-width: 769px) and (max-width: 1024px) and (orientation: landscape) {
  /* 2 列网格避免桌面 3 列在 iPad 上挤压 */
  .features-grid,
  .solutions-grid,
  .card-grid-3 { grid-template-columns: repeat(2, 1fr); }

  /* Hero 字号介于手机与桌面之间 */
  .hero-title { font-size: var(--fs-display); line-height: 1.15; }
  .hero-desc { font-size: var(--fs-body); }

  /* 容器留白适度 */
  .container { padding-left: 32px; padding-right: 32px; }

  /* 数据区块保持 2x2 而非桌面 4 列 */
  .data-grid { grid-template-columns: repeat(2, 1fr); }
}

/* iPad 横屏（768–1024px 全向）：navbar 6 项 + scheme + 字号 + 登录按钮会超宽
   - nav-container padding 收紧
   - nav-item 水平 padding 收紧、字号降一档
   - scheme/fs-switcher 间距缩小 */
@media (min-width: 768px) and (max-width: 1024px) {
  .nav-container { padding: 0 14px; gap: 8px; }
  .nav-links { gap: 0; flex: 1 1 auto; justify-content: center; }
  .nav-item { padding: 7px 9px; font-size: var(--fs-small); }
  .nav-item.nav-login { padding: 6px 11px; margin-left: 6px; }
  .scheme-switcher { gap: 4px; padding: 4px 6px; }
  .scheme-dot { width: 18px; height: 18px; }
  .fs-switcher { gap: 2px; }
  .fs-btn { padding: 4px 7px; font-size: 12px; }
  .logo-text { font-size: calc(16px * var(--font-scale)); }
  .logo-img { width: 36px; height: 36px; }
}

@media (max-width: 1024px) {
  .about-grid { grid-template-columns: 1fr; gap: 40px; }
  .about-visual { order: -1; }
  .cases-grid { grid-template-columns: 1fr; }
  .case-featured { }
  .data-grid { grid-template-columns: repeat(2, 1fr); }
  .data-item { border-right: none; border-bottom: 1px solid var(--card-border); }
  .data-item:nth-child(odd) { border-right: 1px solid var(--card-border); }
  .data-item:nth-child(3), .data-item:nth-child(4) { border-bottom: none; }
}

@media (max-width: 767px) {
  :root { --nav-h: 60px; }

  .nav-links { display: none; }
  .hamburger { display: flex; }

  /* 移动端 navbar 容器收紧 + logo 缩小 — 让 hamburger 不被挤到屏幕外 */
  .nav-container { padding: 0 14px; gap: 8px; }
  .nav-logo { gap: 8px; }
  .nav-logo .logo-text { font-size: var(--fs-body); }
  .nav-logo .logo-img { width: 32px; height: 32px; }

  /* 汉堡按钮：触摸目标 44×44，避免误触 */
  .hamburger { padding: 10px; min-width: 44px; min-height: 44px; justify-content: center; align-items: center; }
  .hamburger span { width: 22px; }

  /* 抽屉：vw 自适应，绝不超过视口（V2 4 段式，基础样式已在外层定义） */
  .mobile-menu { width: min(86vw, 360px); right: -100vw; }

  .hero-slide { background-position: 58% center; }
  .hero-bg-overlay {
    background:
      linear-gradient(90deg, var(--hero-mask-1) 0%, var(--hero-mask-2) 58%, var(--hero-mask-3) 100%),
      linear-gradient(180deg, var(--hero-mask-4) 0%, var(--hero-mask-5) 48%, var(--hero-mask-bottom) 100%);
  }
  .hero-content {
    width: calc(100% - 40px);
    padding: 0;
    margin: 0 20px;
    max-width: none;
  }
  .hero-title {
    font-size: var(--fs-hero);
    word-break: break-word;
    line-break: strict;
  }
  .hero-desc {
    font-size: var(--fs-body);
    max-width: 21em;
    overflow-wrap: anywhere;
    word-break: break-all;
    line-break: anywhere;
  }
  .hero-desc br { display: none; }
  .hero-actions {
    flex-direction: column;
    align-items: stretch;
    margin-bottom: 34px;
  }
  .hero-actions .btn-cta,
  .hero-actions .btn-outline {
    justify-content: center;
    width: min(100%, 280px);
  }
  .hero-stats {
    display: flex;             /* 桌面 grid 4 列 → 移动 flex 2x2（修复原 grid 4 列挤压 bug） */
    flex-wrap: wrap;
    gap: 18px 22px;
    padding-bottom: 56px;       /* 让出 hero-dots 与 scroll-arrow 空间 */
  }
  .stat-divider { display: none; }
  .stat-item {
    padding: 0;
    flex: 1 1 calc(50% - 11px); /* 2x2，每个 50% 减 gap */
    min-width: 0;              /* 关键：覆盖 nowrap label 撑爆宽度 */
    border-left: 0;
  }
  .stat-label { white-space: normal; } /* 移动端允许 label 换行，避免溢出 */

  /* M-1 · hero-dots 与 stats 不再打架：stats padding-bottom 让出空间,
     dots 自身略往上抬避免压住 stats 边框 */
  .hero-dots {
    bottom: 22px;
    padding: 6px 10px;
  }

  .section { padding: 64px 0; }
  .section-title { font-size: var(--fs-section); }

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

  .service-block { padding: 28px 20px; }
  .service-content { grid-template-columns: 1fr; gap: 32px; }
  .service-content-alt .service-visual { order: 0; }
  .feature-row { grid-template-columns: 1fr; }

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

  .tech-layer { flex-direction: column; align-items: flex-start; gap: 12px; }

  .data-grid { grid-template-columns: 1fr 1fr; }
  .data-item { padding: 28px 20px; }
  .data-item { border-right: none; border-bottom: 1px solid var(--card-border); }
  .data-item:nth-child(odd) { border-right: 1px solid var(--card-border); }

  .news-grid { grid-template-columns: 1fr; }
  .news-grid .news-card:nth-child(n+2) { flex-direction: column; }
  .news-grid .news-card:nth-child(n+2) .news-img-placeholder { width: 100%; height: 120px; min-width: auto; }

  .contact-grid { grid-template-columns: 1fr; gap: 40px; }
  .qr-area { justify-content: center; }
  .form-row { grid-template-columns: 1fr; }
  .contact-form-wrap { padding: 24px; }

  /* footer：3 列链接归并入右上角菜单，移动端只保留品牌 + 4 行底栏 */
  .footer-top { grid-template-columns: 1fr; gap: 32px; margin-bottom: 32px; }
  .footer-links { display: none; }
  .footer-bottom { flex-direction: column; align-items: flex-start; gap: 8px; }

  /* 移动端：ICP + 公网安备 拆 2 行（a 改 block + 隐藏 ｜），
     跟手机版 login 备案区（图示 3 行垂直堆叠）保持一致 */
  .footer-row-icp-group a {
    display: block;
  }
  .footer-row-icp-group .footer-row-sep {
    display: none;
  }

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

@media (max-width: 480px) {
  .btn-cta, .btn-outline { justify-content: center; }
  .solutions-grid { grid-template-columns: 1fr; }
  .about-card-grid { grid-template-columns: 1fr 1fr; }
  /* .footer-links 在 768px 已 display:none，480px 不再需要 grid 覆盖 */
  .hero-stats { justify-content: space-around; }
  .stat-item { min-width: 0; flex: 1 1 40%; }
  .stat-num { font-size: var(--fs-h3); }
  .data-grid { grid-template-columns: 1fr; }
  .data-item { border-right: none !important; border-bottom: 1px solid var(--card-border); }
  .data-item:last-child { border-bottom: none; }
  .pricing-grid { grid-template-columns: 1fr; }
  .about-card-grid { grid-template-columns: 1fr; }
  .sub-form .form-row { grid-template-columns: 1fr; }

  /* 首页：API 服务 3 卡 + 咨询服务 6 标签在小屏自适应 */
  .api-metrics { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .metric-card { padding: 14px 8px; }
  .metric-val { font-size: var(--fs-h4); }
  .consult-domains { gap: 8px; }
  .domain-item { padding: 7px 12px; font-size: var(--fs-small); }
  /* 服务块 padding 收紧，留出更多空间给内容 */
  .service-block { padding: 24px 16px; }
  .service-content { gap: 24px; }
}

/* M-2 · 360px 极窄屏：4 项 stats 在 50% × 4 = 200% 必溢出，强制单列堆叠 */
@media (max-width: 360px) {
  .hero-stats {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
    padding-bottom: 64px;
  }
  .stat-item {
    flex: 0 0 auto;
    width: 100%;
    min-width: 0;
    border-left: 0;
    padding: 0;
  }
}

/* ===========================
   移动端子菜单展开
   ========================== */
.mobile-nav-toggle {
  display: flex;
  justify-content: space-between;
  align-items: center;
  cursor: pointer;
  user-select: none;
}

.mobile-nav-toggle .toggle-arrow {
  width: 12px;
  height: 12px;
  transition: transform 0.25s;
  display: inline-block;
}

.mobile-nav-toggle.open .toggle-arrow {
  transform: rotate(90deg);
}

/* V2：mobile-nav-sub-wrap / mobile-nav-sub 已在 1395-1417 行定义，此处不再重复 */

/* ===========================
   字号切换器（navbar 右上角 · A / A+）
   ========================== */

/* ===========================
   字号切换器（navbar 右上角 · A / A+）
   ========================== */
.fs-switcher {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 3px;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 999px;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.fs-btn {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--text-secondary);
  font: inherit;
  font-weight: 600;
  font-size: var(--fs-small);
  line-height: 1;
  padding: 5px 10px;
  min-width: 32px;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.18s, color 0.18s;
}
.fs-btn:hover {
  color: var(--text-primary);
  background: rgba(255, 255, 255, 0.04);
}
.fs-btn.active {
  background: var(--primary);
  color: var(--cta-on, #fff);
}
/* 第 4 套色系（violet）下：--cta-on = #FFFFFF 白字，但 .fs-btn.active 背景是
   --primary (#00D4FF 青绿) 而不是 --cta 蓝紫 → 白+青绿 1.84:1 严重不达标。
   改用 --text-on-primary (深色)，青绿+深色 = 13.5:1 AAA。 */
[data-color-scheme="violet"] .fs-btn.active {
  color: var(--text-on-primary);
}
.fs-btn:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}
@media (max-width: 720px) {
  .fs-switcher { display: none; }
}

/* ===========================
   色系切换器（navbar 右上角）
   =========================== */
.scheme-switcher {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 8px;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 999px;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.scheme-dot {
  position: relative;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: 2px solid transparent;
  cursor: pointer;
  transition: transform 0.18s ease, box-shadow 0.18s ease;
  padding: 0;
  outline: none;
  background-clip: padding-box;
}
.scheme-dot:hover {
  transform: scale(1.18);
}
.scheme-dot:focus-visible {
  outline: 2px solid var(--cta);
  outline-offset: 3px;
}
.scheme-dot.active {
  border-color: var(--text);
  box-shadow: 0 0 0 2px var(--bg);
}
/* 色卡浮层（hover 展示当前色系的全部 token 颜色）
   - DOM：<div class="scheme-swatch"> 由 JS 在每个 .scheme-dot 内动态生成
   - 浮层 = 标题(2 行) + 4 行色块（CTA / CTA hover / Link / Link hover）
   - 每行：左侧 14×14 实色圆 + 右侧 token 名 + hex
   - 旧版用 attr(<color>) 实现色带，但浏览器支持极差，改为 JS 注入 */
.scheme-dot::after {
  content: attr(data-label) "\A " "仅 CTA / 链接";
  white-space: pre-line;
  text-align: center;
  position: absolute;
  bottom: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%);
  font-size: var(--fs-caption);
  line-height: 1.45;
  color: var(--text-muted);
  background: var(--bg-elev);
  border: 1px solid var(--border);
  padding: 5px 9px;
  border-radius: 4px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.15s ease;
  z-index: 100;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18);
}
/* 主浮层（4 行色卡），由 JS 注入 .scheme-swatch 节点 */
.scheme-swatch {
  position: absolute;
  top: calc(100% + 12px);
  left: 50%;
  transform: translateX(-50%);
  padding: 12px 14px;
  background: var(--bg-elev);
  border: 1px solid var(--border-strong);
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.15s ease;
  z-index: 1000;
  min-width: 320px;
  font-size: var(--fs-caption);
  line-height: 1.5;
  color: var(--text-secondary);
}
/* 浮层顶部小三角指向圆点 */
.scheme-swatch::before {
  content: "";
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 6px solid transparent;
  border-bottom-color: var(--border-strong);
}
.scheme-swatch::after {
  content: "";
  position: absolute;
  bottom: calc(100% - 1px);
  left: 50%;
  transform: translateX(-50%);
  border: 6px solid transparent;
  border-bottom-color: var(--bg-elev);
}
.scheme-swatch .ss-title {
  font-size: var(--fs-caption);
  font-weight: 600;
  color: var(--text);
  margin-bottom: 2px;
}
.scheme-swatch .ss-sub {
  font-size: var(--fs-micro);
  color: var(--text-muted);
  margin-bottom: 10px;
  letter-spacing: 0.3px;
}
.scheme-swatch .ss-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 4px 0;
  font-family: var(--font-mono);
}
.scheme-swatch .ss-chip {
  width: 16px;
  height: 16px;
  border-radius: 3px;
  flex-shrink: 0;
  border: 1px solid var(--border);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08);
}
.scheme-swatch .ss-name {
  flex: 1;
  color: var(--text);
  font-family: var(--font-sans);
  text-align: left;
}
.scheme-swatch .ss-hex {
  color: var(--text-muted);
  font-size: var(--fs-micro);
  text-align: right;
}
.scheme-swatch .ss-divider {
  height: 1px;
  background: var(--border);
  margin: 8px 0;
}
.scheme-swatch .ss-group-label {
  font-size: var(--fs-micro);
  text-transform: uppercase;
  letter-spacing: 0.8px;
  color: var(--text-muted);
  margin-bottom: 2px;
}
.scheme-dot.is-open .scheme-swatch { opacity: 1; pointer-events: auto; }
/* 默认隐藏旧 ::after（标题已合并进 .scheme-swatch 顶） */
.scheme-dot:hover::after,
.scheme-dot:focus-visible::after { opacity: 0; }

.scheme-dot-warm {
  background: linear-gradient(135deg, var(--cta) 0%, var(--link-2) 100%);
}
.scheme-dot-cool {
  background: linear-gradient(135deg, var(--cta) 0%, var(--link-2) 100%);
}
.scheme-dot-luxe {
  background: linear-gradient(135deg, var(--cta) 0%, var(--link-2) 100%);
}
.scheme-dot-violet {
  background: linear-gradient(135deg, var(--cta) 0%, var(--link-2) 100%);
}

/* ===========================
   色系切换过渡动画
   - 仅在 .scheme-transitioning 启用时生效
   - 由 core.js 在用户主动切换时给 <html> 加这个类（240ms 后移除）
   - 初始化不加，避免首屏闪烁
   - 限定到用 --cta/--link-2 的元素，避免整站动画开销
   =========================== */
.scheme-transitioning .btn-cta,
.scheme-transitioning .btn-link-2,
.scheme-transitioning .badge-cta,
.scheme-transitioning .badge-link-2 {
  transition:
    background-color 0.24s ease,
    color 0.24s ease,
    border-color 0.24s ease,
    box-shadow 0.24s ease,
    background 0.24s ease,
    transform 0.24s ease;
}

/* 桌面端 navbar 里的 scheme / 字号切换器在 ≤767px 才隐藏（移到移动端抽屉）
   768-1024 区间（iPad 横屏）继续可见，避免 iPad 用户只能进抽屉才能切换 */
@media (max-width: 767px) {
  .scheme-switcher { display: none; }
  .fs-switcher { display: none; }
}

/* 移动端抽屉里的 scheme / 字号切换器在 ≥768 不应显示 */
@media (min-width: 768px) {
  .mobile-scheme,
  .mobile-font-size { display: none; }
}

/* ===========================
   移动端抽屉里的色系切换器
   - desktop 端 navbar 隐藏
   - mobile 端放进 .mobile-menu 抽屉
   =========================== */
.mobile-scheme {
  margin-top: 18px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--card-bg);
}
.mobile-scheme-label {
  display: block;
  font-size: var(--fs-caption);
  color: var(--text-muted);
  margin-bottom: 0;
  letter-spacing: 0.04em;
  grid-row: 1;
  grid-column: 1;
}
/* dots 占 box 的右半边 2×2 网格（跨 2 行 2 列）
   label 占据 (1,1)，4 个 dot 占据 (1,2)(1,3)(2,2)(2,3)
   第 2 行第 1 列空着，让第 2 行的 2 dot 与第 1 行 2 dot 上下对齐 */
.mobile-scheme-dots {
  display: grid;
  grid-template-columns: repeat(2, 28px);
  gap: 8px 12px;
  align-items: center;
  justify-content: start;
  grid-row: 1 / span 2;
  grid-column: 2 / span 2;
}
.mobile-scheme-dots .scheme-dot {
  width: 28px;
  height: 28px;
  flex: 0 0 auto;
}

/* M-3 · 移动抽屉字号切换器（A / A+） */
.mobile-font-size {
  margin-top: 12px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--card-bg);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.mobile-font-size-label {
  font-size: var(--fs-caption);
  color: var(--text-muted);
  letter-spacing: 0.04em;
}
.mobile-font-size-buttons {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px;
  background: rgba(255, 255, 255, 0.06);
  border-radius: 999px;
}
.mobile-font-size-buttons .fs-btn {
  width: 36px;
  height: 36px;
  font-size: var(--fs-body);
  border-radius: 50%;
}

/* Reduce motion 用户体验 */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ===========================
   主题切换按钮 + 全局主题过渡
   =========================== */

/* 全站主题切换平滑过渡（不打扰现有动画） */
body,
.navbar,
.footer,
.card,
button,
input,
select,
textarea {
  transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

/* 桌面端主题切换按钮 — 放在登录按钮左侧 */
.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  margin-left: 8px;
  padding: 0;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 50%;
  color: var(--text-secondary);
  cursor: pointer;
  font-size: var(--fs-body);
  line-height: 1;
  position: relative;
  transition: background 0.2s, border-color 0.2s, color 0.2s, transform 0.2s;
  flex-shrink: 0;
}
.theme-toggle:hover {
  background: var(--card-hover);
  border-color: var(--border-hover);
  color: var(--primary);
  transform: rotate(15deg);
}
.theme-toggle:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

/* 两个图标叠在一起，根据主题显示/隐藏 */
.theme-toggle .theme-icon-light,
.theme-toggle .theme-icon-dark {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity 0.25s ease, transform 0.35s ease;
}
.theme-toggle .icon-svg {
  width: 17px;
  height: 17px;
  stroke-width: 1.6;
}
/* 默认（深色版）：显示太阳（提示可切到浅色） */
.theme-toggle .theme-icon-light { opacity: 1; transform: rotate(0); }
.theme-toggle .theme-icon-dark  { opacity: 0; transform: rotate(-90deg); }
/* 浅色版：显示月亮（提示可切到深色） */
[data-theme="light"] .theme-toggle .theme-icon-light { opacity: 0; transform: rotate(90deg); }
[data-theme="light"] .theme-toggle .theme-icon-dark  { opacity: 1; transform: rotate(0); }

/* 移动端主题切换项（在 mobile-menu 里） */
.mobile-theme-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 0;
  font-size: var(--fs-body);
  color: var(--text-secondary);
  border-bottom: 1px solid var(--card-border);
  cursor: pointer;
  transition: color 0.2s;
  user-select: none;
  background: none;
  border-left: none;
  border-right: none;
  border-top: none;
  width: 100%;
  text-align: left;
}
.mobile-theme-toggle:hover { color: var(--text); }
.mobile-theme-toggle .mobile-theme-icon {
  width: 16px;
  height: 16px;
  font-size: var(--fs-body);
  color: var(--primary);
}

.card-icon-wrap .icon-svg,
.layer-icon .icon-svg,
.value-icon .icon-svg,
.highlight-icon .icon-svg,
.domain-icon .icon-svg,
.contact-icon .icon-svg,
.footer-address-icon .icon-svg,
.contact-link-icon .icon-svg {
  width: 100%;
  height: 100%;
}

.mobile-theme-icon .icon-svg {
  width: 100%;
  height: 100%;
  stroke-width: 1.6;
}

/* ===========================
   响应式增强（480px / 360px / 触摸优化）
   =========================== */

/* 表单输入框 16px — 防 iOS Safari 自动缩放 */
@media (max-width: 768px) {
  .form-group input,
  .form-group select,
  .form-group textarea,
  .sub-form input,
  .sub-form select,
  .sub-form textarea {
    font-size: var(--fs-body);
  }
}

/* 480px 以下 — 中小屏手机 */
@media (max-width: 480px) {
  /* 全站容器缩窄 padding */
  .container { padding: 0 16px; }

  /* 顶部 navbar 内边距收紧 */
  .nav-container { padding: 0 16px; }
  .theme-toggle { width: 34px; height: 34px; }

  /* Hero 大标题再小一档 */
  .hero-title { font-size: var(--fs-hero); line-height: 1.2; }
  .hero-badge { font-size: var(--fs-body); padding: 4px 10px; }

  /* section 上下内边距收紧 */
  .section { padding: 56px 0; }
  .sub-content { padding: 48px 0; }
  .sub-banner { padding: 110px 0 48px; }

  /* 案例/卡片网格全部单列 */
  .solutions-grid,
  .about-card-grid,
  .data-grid,
  .data-grid-3 {
    grid-template-columns: 1fr !important;
  }
  .data-item { padding: 22px 16px; }
  .data-item:nth-child(odd) { border-right: none !important; }

  /* 联系卡片堆叠 */
  .contact-items { gap: 12px; }
  .contact-link { font-size: var(--fs-small); }
  .contact-val { font-size: var(--fs-small); }
  .qr-placeholder { width: 124px; height: 124px; }

  /* 联系表单更紧凑 */
  .contact-form-wrap { padding: 20px; }
  .form-title { font-size: var(--fs-h4); margin-bottom: 20px; }
  .form-group { margin-bottom: 14px; }
  .form-group input,
  .form-group select,
  .form-group textarea { padding: 11px 14px; }

  /* Footer */
  .footer { padding: 40px 0 24px; }
  .footer-top { gap: 32px; margin-bottom: 32px; }
  .footer-address { font-size: var(--fs-body); padding: 6px 8px; }

  /* Hero 圆点缩小 */
  .hero-dots { gap: 8px; padding: 8px 14px; }
  .hero-dot { width: 7px; height: 7px; }

  /* 触摸目标 ≥ 44px — 移动端链接/按钮（V2 4 段式菜单：sub 已在子菜单折叠面板内独立成行，移除以避免 inline-flex 重排） */
  .nav-item,
  .mobile-nav-item,
  .contact-link {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }
  /* footer-col a 必须保持 block（display: block），否则 5 个链接会挤到同一行 */
  .footer-col a {
    min-height: 44px;
    display: block;
    padding-top: 12px;
    padding-bottom: 12px;
  }
  /* V2：mobile-nav-sub 已在子菜单面板内独立成行（min-height 40px 已足够） */
  .mobile-nav-sub { display: flex; }
  .contact-link { min-height: auto; }   /* 链接文本不需要 44px */

  /* 提交按钮：触摸目标 44px，字号 14，icon 14×14 */
  .btn-submit { min-height: 44px; font-size: var(--fs-small); padding: 0 16px; }
  .btn-cta-icon { width: 14px; height: 14px; }
}

/* 360px 以下 — 极小屏（如 iPhone SE 1） */
@media (max-width: 360px) {
  :root { --nav-h: 56px; }

  .container { padding: 0 12px; }
  .nav-container { padding: 0 12px; }

  .hero-title { font-size: var(--fs-h2); word-break: break-word; line-break: strict; }
  .hero-badge { font-size: var(--fs-small); }

  .section-title { font-size: var(--fs-h3); }
  .section-tag { font-size: var(--fs-body); }

  /* 数据卡：缩小字号 */
  .data-num { font-size: var(--fs-h2); }

  /* 子页面 banner 标题 */
  .sub-banner h1 { font-size: var(--fs-h2); }

  /* 表单间距更紧 */
  .form-group input,
  .form-group select,
  .form-group textarea { padding: 10px 12px; font-size: var(--fs-body); }

  /* footer 地址 */
  .footer-address { font-size: var(--fs-body); max-width: 100%; }
}

/* ===========================
   横向溢出保护
   - 防止子元素溢出容器造成横向滚动条
   =========================== */
html, body {
  overflow-x: hidden;
}

img, svg, video {
  max-width: 100%;
  height: auto;
}

.icon-svg {
  width: 1em;
  height: 1em;
  display: inline-block;
  flex-shrink: 0;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* ===========================
   装饰性图标统一尺寸（替换原 Unicode 字符）
   =========================== */
.mega-col-arrow,
.toggle-arrow,
.solution-arrow,
.case-link-icon,
.more-link-icon,
.method-arrow,
.logic-arrow,
.track-cta-icon,
.t-cta-icon,
.sib-arrow,
.flow-arrow-icon,
.link-accent-icon,
.check-icon,
.news-more-icon,
.mobile-close-icon {
  width: 1em;
  height: 1em;
  display: inline-block;
  vertical-align: -0.15em;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  flex-shrink: 0;
}

/* 部分场景需要固定像素尺寸（如 mega-col-arrow 独立定位时） */
.mega-col-arrow { width: 14px; height: 14px; }
.toggle-arrow { width: 12px; height: 12px; }
.solution-arrow { width: 16px; height: 16px; }
.case-link-icon { width: 14px; height: 14px; }
.more-link-icon { width: 14px; height: 14px; }
.method-arrow { width: 14px; height: 14px; }
.logic-arrow { width: 14px; height: 14px; }
.track-cta-icon { width: 14px; height: 14px; }
.t-cta-icon { width: 14px; height: 14px; }
.sib-arrow { width: 14px; height: 14px; }

/* ===========================
   文本字号语义 utility（v1 统一）
   替换 HTML 中内联 font-size: 13/14/15px 等硬编码
   8 级类目 · 覆盖全站所有正文段
   =========================== */
.t-display { font-size: var(--fs-display); line-height: var(--lh-tight); font-weight: var(--fw-extrabold); }
.t-h1     { font-size: var(--fs-h1);     line-height: var(--lh-tight); font-weight: var(--fw-extrabold); }
.t-h2     { font-size: var(--fs-h2);     line-height: var(--lh-snug);  font-weight: var(--fw-extrabold); }
.t-h3     { font-size: var(--fs-h3);     line-height: var(--lh-snug);  font-weight: var(--fw-bold); }
.t-h4     { font-size: var(--fs-h4);     line-height: var(--lh-snug);  font-weight: var(--fw-bold); }
.t-body-lg{ font-size: var(--fs-body-lg);line-height: var(--lh-base);  font-weight: var(--fw-regular); }
.t-body   { font-size: var(--fs-body);   line-height: var(--lh-base);  font-weight: var(--fw-regular); }
.t-small  { font-size: var(--fs-small);  line-height: var(--lh-base);  font-weight: var(--fw-regular); }
.t-caption{ font-size: var(--fs-caption);line-height: var(--lh-relaxed); font-weight: var(--fw-regular); }
.t-micro  { font-size: var(--fs-micro);  line-height: var(--lh-relaxed); font-family: var(--font-mono); }

/* 复合 utility：caption + 次要色（日期/标签元数据，2026-06 整改） */
.t-caption-muted { font-size: var(--fs-caption); line-height: var(--lh-relaxed); color: var(--text-muted); }

/* 5 个彩色文字语义 utility（v1 统一） */
.t-emphasis { color: var(--c-emphasis); font-weight: var(--fw-semibold); }
.t-cta-text { color: var(--c-cta);      font-weight: var(--fw-semibold); }
.t-link     { color: var(--c-link);     text-decoration: underline; text-underline-offset: 3px; }
.t-data     { color: var(--c-data);     font-weight: var(--fw-bold); font-variant-numeric: tabular-nums; }
.flow-arrow-icon { width: 14px; height: 14px; }
.mobile-close-icon { width: 18px; height: 18px; }

/* 长文本/URL 容器换行 */
table, pre, code {
  word-wrap: break-word;
  overflow-wrap: anywhere;
}

/* 防止 fixed 定位元素在移动端抖动 */
.hero,
.navbar,
.footer,
.back-to-top,
.mobile-menu,
.mobile-overlay {
  transform: translateZ(0);
  will-change: transform;
}

/* 移动端 menu 适配更小屏 */
@media (max-width: 360px) {
  .mobile-menu { width: min(86vw, 300px); padding: 60px 20px 40px; }
  /* 极窄屏：工具按钮单列堆叠，避免 "登录/注册" 文字内换行 */
  .mobile-personalize-row { grid-template-columns: 1fr; }
}

/* ===========================
   全站磨砂（frosted glass）效果
   - 卡片 / 容器半透明 + backdrop-filter blur
   - 适用：info-card / metric-card / pricing-card / solution-card / case-card / news-card / about-card
   =========================== */
.info-card,
.metric-card,
.pricing-card,
.solution-card,
.case-card,
.news-card,
.about-card,
.dropdown-menu {
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.08);
}
.info-card,
.pricing-card,
.solution-card,
.case-card,
.news-card,
.about-card {
  background: rgba(15, 23, 42, 0.45);
}
.metric-card {
  background: rgba(15, 23, 42, 0.35);
}

/* 浅色版磨砂 */
[data-theme="light"] .info-card,
[data-theme="light"] .pricing-card,
[data-theme="light"] .solution-card,
[data-theme="light"] .case-card,
[data-theme="light"] .news-card,
[data-theme="light"] .about-card {
  background: rgba(255, 255, 255, 0.55);
  border: 1px solid rgba(15, 23, 42, 0.08);
}
[data-theme="light"] .metric-card {
  background: rgba(255, 255, 255, 0.45);
}

[data-theme="light"] .mega-col-title-link {
  color: var(--text);
}
[data-theme="light"] .mega-col-title-link:hover {
  color: var(--accent);
}

/* ==========================================================================
   英文术语 tips 气泡组件（glossary.js）
   - hover：术语加下划虚线
   - click：弹出精美气泡展示中文释义
   ========================================================================== */

.term {
  display: inline;
  background: transparent !important;
  background-color: transparent !important;
  /* 不写 shorthand `border`，避免被 button 基类的 border:none 清掉下边框 */
  border-top: 0;
  border-right: 0;
  border-left: 0;
  border-bottom: 1px dashed transparent;
  padding: 0;
  margin: 0;
  font: inherit;
  line-height: inherit;
  vertical-align: baseline;
  color: inherit;
  cursor: pointer;
  text-decoration: none;
  border-radius: 0;
  box-shadow: none;
  -webkit-appearance: none;
  appearance: none;
  transition: border-color .15s ease, color .15s ease;
  -webkit-tap-highlight-color: transparent;
  user-select: auto;
}

.term:hover,
.term:focus,
.term:focus-visible,
.term.is-focused {
  border-bottom-color: var(--primary);
  color: var(--primary);
  outline: none;
}

.term:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
  border-radius: 2px;
}

.yz-tip {
  position: absolute;
  z-index: 9999;
  max-width: 320px;
  min-width: 80px;
  padding: 12px 16px;
  /* 气泡颜色跟随页面主题（深 / 浅 双版本） */
  background: var(--bg-elev-2);
  -webkit-backdrop-filter: blur(12px) saturate(140%);
  backdrop-filter: blur(12px) saturate(140%);
  border: 1px solid var(--primary);
  border-radius: 10px;
  box-shadow: var(--shadow-elev-3, 0 10px 40px rgba(0, 0, 0, .35));
  color: var(--text);
  font-size: 14px;
  line-height: 1.5;
  letter-spacing: .01em;
  pointer-events: none;
  animation: yz-tip-in .18s cubic-bezier(.2, .7, .3, 1) both;
}

.yz-tip[hidden] { display: none !important; }

.yz-tip-cn {
  display: block;
  word-break: break-word;
  white-space: normal;
}

.yz-tip-arrow {
  position: absolute;
  width: 10px;
  height: 10px;
  background: var(--bg-elev-2);
  border-left: 1px solid var(--primary);
  border-top: 1px solid var(--primary);
  transform: rotate(45deg);
}

.yz-tip--below .yz-tip-arrow {
  top: -6px;
  left: 50%;
  margin-left: -5px;
  border-right: 0;
  border-bottom: 0;
}

.yz-tip--above .yz-tip-arrow {
  bottom: -6px;
  left: 50%;
  margin-left: -5px;
  border-right: 0;
  border-bottom: 0;
  transform: rotate(225deg);
}

@keyframes yz-tip-in {
  from { opacity: 0; transform: translateY(-4px) scale(.96); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  .yz-tip { animation: none; }
}

@media (max-width: 480px) {
  .yz-tip {
    max-width: calc(100vw - 24px);
    font-size: 13px;
    padding: 10px 14px;
  }
}
