/* =====================================================
   企测超市 qicemall.com — 全局样式表
   =====================================================
   【结构分层纪律】（2026-09-02 根治重构后生效）

   本文件自上而下分为三大逻辑层，新增样式必须遵守分层纪律，
   禁止再回到「多层 !important 覆盖」的老路：

   ① 设计令牌层（:root）
      - 全站唯一令牌源，颜色/阴影/圆角/字体等一律用 CSS 变量。
      - 禁止在组件里写死色值；需要新色值先在此登记变量。

   ② 基础与组件层（页面通用 + .wb-* 工作台 + 业务组件）
      - 每个选择器只允许出现一次；同一选择器禁止分散重写。
      - 需要覆盖外观时，用更具体的组合选择器（如 .module .child），
        不得用 html body 前缀叠 !important 硬压。

   ③ 页面私有层（文件末尾，逐页注释分块）
      - 只放某个页面独有的样式，用页面级选择器限定。

   【防回归红线】
   - 禁止追加新的 !important（现有 6 处为历史遗留，仅 .btn-danger
     与 transform:none，勿再新增）。
   - 禁止重复定义同一选择器（本轮已清理 88 条冗余规则）。
   - 禁止改令牌值来覆盖旧版——改令牌即全站生效，请直接改 :root。

   【本轮根治重构记录】(2026-09-02)
   - 合并 5 个 :root 令牌块 → 1 个单一令牌层（后写赢，语义不变）。
   - 级联感知去重：删除 88 条被后置同名规则完全遮蔽的冗余规则。
   - 全站 27 页像素回归：0 差异（对照 v8-baseline）。
   ===================================================== */

/* 2026-10-25 性能根治：移除外部网络字体（@import 引入的谷歌思源宋体）。
   实测依据：该 @import 单次传输 124KB / 427ms，且 @import 属**串行阻塞**——
   必须先下完 styles.css 才解析到它、再去跨域拉字体表、再拉字形文件，
   把三个往返串成一条链，直接推迟首屏渲染；该外部域名在国内网络常不可达，
   一旦卡住，首屏文字要等它超时才显示。
   🔴 视觉零风险：--font-elegant 本就带完整后备链（Songti SC / STSong / SimSun / serif），
   未安装思源宋体的用户（绝大多数 Windows 用户）本来渲染的就是系统宋体，
   故移除后观感不变；仅极少数本机已装该字体的用户会回落到系统宋体。
   🔴 勿恢复此外部字体引入（要用该字体请本地托管，不要引入境外第三方域名）。 */

:root {
  /* —— 基础令牌（v1 起，含极简刷新覆盖值） —— */
  --font-elegant: 'Noto Serif SC', 'Songti SC', 'STSong', 'SimSun', serif;
  --color-primary: #0077FF;
  --color-primary-dark: #0077FF;
  --color-primary-light: #0077FF;
  --color-primary-soft: #eef6ff;
  --color-accent: #ffc400;
  --color-accent-dark: #d99a00;
  --color-accent-deep: #a37400;
  --color-accent-light: #fff8e1;
  /* 首页 v6 纲领区深蓝（2026-09-06 登记） */
  --hp-navy-deep: #0077FF;
  --hp-navy: #0077FF;
  --hp-navy-soft: #0077FF;
  --color-purple: #0077FF;
  --color-purple-dark: #0077FF;
  --color-purple-light: #0077FF;
  --color-purple-soft: #ede7ff;
  --color-green: #16a34a;
  --color-green-dark: #15803d;
  --color-green-light: #22c55e;
  --color-green-soft: #eaf9ef;
  --color-navy: #14283F; /* 🟡 v392（2026-10-01 用户指令「文字改成黑色」截图=账号设置行文字）：v374 全站蓝被误染的设计变量回退深藏青（项目权威标题深色，同 §152.4c 家族）；var 用户 91 处全为文字色+2 处汉堡图标条 */
  --color-navy-light: #0077FF;
  --color-text: #0f172a; /* 🟡 v392：正文近黑（152.4b 守护石板色系）；var 用户 27 处全为文字色 */
  --color-text-secondary: #42597a;
  --color-text-muted: #6f86a1;
  --color-white: #ffffff;
  --color-bg: #ffffff;
  --color-bg-light: #ffffff;
  --color-bg-soft: #f8fafd;
  --color-border: #eef1f6;
  --shadow-sm: 0 1px 2px rgba(0, 119, 255, 0.04);
  --shadow-md: 0 4px 16px rgba(0, 119, 255, 0.08);
  --shadow-lg: 0 12px 40px rgba(0, 119, 255, 0.1);
  --shadow-accent: 0 6px 16px rgba(255, 167, 0, 0.38);
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 16px;
  --radius-xl: 24px;
  --transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  --color-border-light: #f2f4f8;
  /* —— v3 纸面极简令牌 —— */
  --v3-ink: #0c1526; /* 主文字：墨黑蓝 */
  --v3-ink-2: #3d4c66; /* 次级文字 */
  --v3-ink-3: #7d8ba3; /* 弱化文字 / 眉题 */
  --v3-blue: #0077FF; /* 唯一主色：电蓝 */
  --v3-blue-deep: #0077FF; /* 主色深阶（hover） */
  --v3-blue-wash: #eef3fe; /* 主色 5% 洗色底 */
  --v3-line: #e8ecf2; /* 发丝线 */
  --v3-line-2: #d9dfea; /* 发丝线深阶（hover 边） */
  --v3-paper: #f7f9fb; /* 浅灰纸面（分区交替底） */
  --v3-gold: #ffc400; /* 黄色：仅小面积点缀 */
  /* —— v4 商务极简令牌 —— */
  --v4-ink: #0a0a0a;
  --v4-ink-2: #4a4a4a;
  --v4-ink-3: #7a7a7a;
  --v4-line: #e8e8e8;
  --v4-line-2: #d2d2d2;
  --v4-paper: #f9f9f9;
  --v4-paper-2: #f2f2f2;
  --v4-blue: #0077FF;
  --v4-blue-deep: #0077FF;
  --v4-blue-wash: #eef3ff;
  --v4-radius: 14px;
  /* —— v6 设计令牌（当前权威基线） —— */
  --v6-page-max: 1280px;
  --v6-blue: #0077FF;
  --v6-blue-deep: #0077FF;
  --v6-blue-wash: #eef4ff;
  --v6-blue-line: #0077FF;
  --v6-orange: #ff7a1a;
  --v6-orange-soft: #fff4ec;
  --v6-green: #12b76a;
  --v6-green-soft: #e8f9f1;
  --v6-red: #e5484d;
  --v6-red-soft: #fdeeee;
  --v6-paper: #f5f7fb;
  --v6-ink: #0f172a;
  --v6-ink-2: #46536a;
  --v6-ink-3: #8a94a6;
  --v6-line: #e7ecf4;
  --v6-line-2: #d5deea;
  --v6-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', Arial, sans-serif;
  --v6-radius-sm: 10px;
  --v6-radius-md: 14px;
  --v6-radius-lg: 18px;
  --v6-radius-full: 999px;
  --v6-shadow-sm: 0 1px 2px rgba(15,23,42,.05);
  --v6-shadow-md: 0 6px 20px rgba(15,23,42,.08);
  --v6-shadow-lg: 0 16px 44px rgba(15,23,42,.12);
  --v6-shadow-blue: 0 8px 22px rgba(0, 119, 255, .26);
  --v6-shadow-orange: 0 8px 22px rgba(255,122,26,.26);
}

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

html {
  scroll-behavior: smooth;
  font-size: 16px;
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

a {
  color: inherit;
  text-decoration: none;
  transition: color 0.2s ease;
}

/* 2026-09-07 用户拍板：全站去掉焦点描边圈（键盘/点击聚焦时的圆角线条） */
a:focus-visible,
button:focus-visible,
[tabindex]:focus-visible {
  outline: none;
}

ul {
  list-style: none;
}

/* 页面加载与滚动显现 —— 支付官网级过渡 */
@keyframes pageFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes revealUp {
  from {
    opacity: 0;
    transform: translateY(24px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.6s cubic-bezier(0.22, 1, 0.36, 1), transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

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

.btn svg {
  flex-shrink: 0;
}

.btn-sm {
  padding: 8px 18px;
  font-size: 14px;
}

/* 🔴v310 全站文件反悔（2026-09-11）：已选文件胶囊 + ✕ 移除（main.js qmSyncFileChip 生成，
   任意页面 input[type=file] 通用：报价附件/弹窗附件/留言附件/批注附件/设置页证件上传等）。 */
.qm-file-chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 5px 12px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 999px;
  font-size: 12.5px;
  color: #475569;
  max-width: 340px;
}
.qm-file-chip .qm-file-name {
  max-width: 230px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.qm-file-chip .qm-file-clear {
  color: #c4314b;
  font-weight: 700;
  cursor: pointer;
  flex-shrink: 0;
}
.qm-file-chip .qm-file-clear:hover { text-decoration: underline; }

.btn-lg {
  padding: 14px 32px;
  font-size: 16px;
}

.btn-block {
  width: 100%;
  padding: 12px 24px;
  margin-top: auto;
}

.btn:disabled,
.btn.disabled {
  background: #eef1f5;
  color: #9fb0c4;
  box-shadow: none;
  text-shadow: none;
  cursor: not-allowed;
  transform: none !important;
  border-color: transparent;
}

.btn-header-accent {
  background: transparent;
  color: var(--color-primary);
  border-color: var(--color-primary);
  box-shadow: none;
}

.btn-header-accent:hover {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: var(--color-white);
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(0, 119, 255, 0.25);
}

.header.hero-mode .btn-header-accent {
  background: transparent;
  border-color: rgba(255, 255, 255, 0.75);
  color: var(--color-white);
}

.header.hero-mode .btn-header-accent:hover {
  background: rgba(255, 255, 255, 0.15);
  border-color: var(--color-white);
  color: var(--color-white);
}

.header.scrolled .btn-header-accent {
  background: transparent;
  border-color: var(--color-primary);
  color: var(--color-primary);
}

.header.scrolled .btn-header-accent:hover {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: var(--color-white);
}

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

.btn-outline-green:hover {
  background: var(--color-green-soft);
  transform: translateY(-2px);
}

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

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

.btn-link {
  background: transparent;
  color: var(--color-primary);
  border-color: transparent;
  box-shadow: none;
}

.btn-link:hover {
  color: var(--color-primary-dark);
  background: var(--color-primary-soft);
  transform: translateY(-2px);
}

.btn-code {
  background: var(--color-primary-soft);
  color: var(--color-primary);
  border-color: transparent;
  box-shadow: none;
  font-weight: 500;
  padding: 10px 18px;
  border-radius: var(--v6-radius-full);
}

.btn-code:hover {
  background: #dbeaff;
  color: var(--color-primary-dark);
  transform: translateY(-1px);
}

.btn-code:disabled {
  background: var(--color-bg);
  color: var(--color-text-muted);
  cursor: not-allowed;
  transform: none;
}

.btn-accent:hover {
  background: linear-gradient(135deg, #ffad00 0%, #f29100 100%);
  transform: translateY(-2px);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12);
}

.btn-outline-white {
  background: rgba(255, 255, 255, 0.12);
  color: var(--color-white);
  border-color: rgba(255, 255, 255, 0.4);
  backdrop-filter: blur(8px);
}

.btn-outline-white:hover {
  background: rgba(255, 255, 255, 0.22);
  transform: translateY(-2px);
}

/* Header */
.header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(225, 237, 250, 0.8);
  transition: var(--transition);
}

.header.hero-mode {
  background: transparent;
  backdrop-filter: none;
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.06);
}

.header.hero-mode .logo-text strong,
.header.hero-mode .nav-link,
.header.hero-mode .menu-toggle span {
  color: var(--color-white);
}

.header.hero-mode .logo-text small {
  color: rgba(255, 255, 255, 0.85);
}

.header.hero-mode .btn-text {
  color: var(--color-white);
}

.header.hero-mode .btn-outline-primary {
  color: var(--color-white);
  border-color: rgba(255, 255, 255, 0.7);
  background: rgba(255, 255, 255, 0.08);
}

.header.hero-mode .btn-outline-primary:hover {
  background: rgba(255, 255, 255, 0.22);
  border-color: var(--color-white);
  color: var(--color-white);
}

.header.scrolled {
  background: rgba(255, 255, 255, 0.98);
  box-shadow: var(--shadow-sm);
  border-bottom-color: transparent;
}

.header.scrolled .nav-link,
.header.scrolled .btn-text {
  color: var(--color-text-secondary);
}

.header.scrolled .nav-link:hover,
.header.scrolled .nav-link.active {
  color: var(--color-primary);
}

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

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

.header.scrolled .menu-toggle span {
  background: var(--color-navy);
}

.header.scrolled .logo-img-dark {
  display: block;
}

.header.scrolled .logo-img-light {
  display: none;
}

/* 🔴 v6.43b 真缺陷修复（浏览器实测暴露）：滚动态 logo 一直 40px，scrolled 的 34px 从未生效。
   根因=(0,2,1) 特异性打平、hero 规则写在后 ⇒ 后写者胜。v6.43 前两条同为 45px 把问题掩盖。
   修法=① scrolled 挪到 hero 之后 ② 加 .header.hero-mode.scrolled 抬到 (0,3,1) 双保险。 */
.header.hero-mode .logo-img {
  height: 40px;
  filter: drop-shadow(0 2px 10px rgba(10, 37, 64, 0.18));
}

.header.scrolled .logo-img,
.header.hero-mode.scrolled .logo-img {
  height: 34px;
}

/* 🔴 v6.43 回退 + v6.43b 微缩（用户两令：「粗鲁了、不精致」→ 再「缩小一点点、就一点点」）：
   v6.42 我误把 45→56，实测新旧字标比例几乎一致（大字 55.0%/54.7%、横线 2.3%/1.8%、副标 22.9%/22.9%）
   ⇒ 放大纯属多余，还把 1px 细横线拉成 1.3px 落不到整像素 ⇒ 发虚发糊（「粗鲁」真因）。
   v6.43b 再令微缩：三档 45/45/38 → 40/40/34（40px 占页眉 55.6%、大字 21.9、源图 3.38x 更锐）。 */
.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 72px;
}

/* Logo - pure CSS/SVG, no watermark */
.logo {
  display: flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
}

.logo-icon {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--color-primary) 0%, #0077FF 100%);
  color: var(--color-white);
  border-radius: 10px;
  font-weight: 700;
  font-size: 19px;
  box-shadow: 0 4px 14px rgba(0, 119, 255, 0.28);
  flex-shrink: 0;
}

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

.logo-name {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 18px;
  color: var(--color-navy);
  font-weight: 700;
  letter-spacing: -0.3px;
}

.logo-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 6px;
  background: var(--color-primary);
  color: var(--color-white);
  border-radius: 5px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.5px;
}

.logo-domain {
  font-size: 12px;
  color: var(--color-text-muted);
  font-weight: 400;
  letter-spacing: 0.3px;
}

.logo-img {
  height: 40px;
  width: auto;
  display: block;
  flex-shrink: 0;
  transition: height 0.35s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s ease, filter 0.3s ease;
}

.logo-img-light {
  display: none;
}

.header.hero-mode:not(.scrolled) .logo-img-dark {
  display: none;
}

.header.hero-mode:not(.scrolled) .logo-img-light {
  display: block;
}

.header.hero-mode .logo-icon {
  background: var(--color-white);
  color: var(--color-primary);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.15);
}

.header.hero-mode .logo-name {
  color: var(--color-white);
}

.header.hero-mode .logo-badge {
  background: rgba(255, 255, 255, 0.22);
  color: var(--color-white);
}

.header.hero-mode .logo-domain {
  color: rgba(255, 255, 255, 0.85);
}

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

.nav-link {
  font-size: 15px;
  font-weight: 500;
  color: var(--color-text-secondary);
  position: relative;
  padding: 6px 0;
  transition: var(--transition);
}

.nav-link::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 2px;
  background: var(--color-accent-dark);
  border-radius: 2px;
  transition: var(--transition);
}

.nav-link.active::after,
.nav-link:hover::after {
  width: 100%;
}

.header.hero-mode:not(.scrolled) .nav-link::after {
  background: rgba(255, 255, 255, 0.28);
  height: 1.5px;
}

.header.hero-mode:not(.scrolled) .nav-link:hover::after,
.header.hero-mode:not(.scrolled) .nav-link.active::after {
  background: rgba(255, 255, 255, 0.5);
}

.header-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.menu-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 36px;
  height: 36px;
  background: none;
  border: none;
  cursor: pointer;
}

.menu-toggle span {
  display: block;
  width: 24px;
  height: 2px;
  background: var(--color-navy);
  border-radius: 2px;
  transition: var(--transition);
}

.menu-toggle.active span:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

.menu-toggle.active span:nth-child(2) {
  opacity: 0;
}

.menu-toggle.active span:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

/* Hero - Full Screen Cover */
.hero {
  position: relative;
  width: 100%;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  color: var(--color-white);
  overflow: hidden;
}

.hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg,
    rgba(0, 119, 255, 0.78) 0%,
    rgba(0, 119, 255, 0.35) 55%,
    rgba(255, 255, 255, 0.88) 100%);
  z-index: 1;
  pointer-events: none;
}

.hero-bg-motion {
  position: absolute;
  inset: -5%;
  /* 2026-10-25 用户指令「握手图直接去掉、以后永远不需要」：
     本块原有的 background-image 底图已摘除（全站唯一使用点 index.html 上由
     body.home-page 覆盖为蓝白渐变，实测首页从不发起该图请求）。
     只摘图，定位/尺寸/滤镜/动画一律不动，避免牵动其它页。勿恢复该底图。 */
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
  opacity: 0.20;
  filter: grayscale(20%) brightness(0.78) contrast(1.05);
  animation: heroBgMove 30s ease-in-out infinite alternate;
  z-index: 0;
  pointer-events: none;
}

/* 2026-09-19 终局：微信视频素材为暗色夜景窗格，任何「显形」方案均不可用（压导航呈阴暗带）
   → 视频底图端到端移除（元素+样式），首页 hero 定稿 = 纯蓝白渐变（各 50%，平滑过渡），无动效叠加。
   后续若上视频，需换明亮/科技感素材再议。 */

@keyframes heroBgMove {
  0% { transform: scale(1) translate(0, 0); }
  100% { transform: scale(1.08) translate(-2%, -1%); }
}

.hero-headline {
  font-size: clamp(44px, 6.4vw, 86px);
  font-weight: 800;
  letter-spacing: clamp(2px, 0.5vw, 5px);
  line-height: 1.08;
  margin: 0 0 36px;
  text-shadow: 0 6px 40px rgba(0, 0, 0, 0.24);
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: clamp(18px, 3.2vw, 42px);
  flex-wrap: nowrap;
  width: 100%;
  max-width: 1000px;
}

.hero-slogan {
  width: 100%;
  max-width: 760px;
  font-size: clamp(15px, 1.6vw, 22px);
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.95);
  margin: 0 0 56px;
  letter-spacing: 2px;
  text-shadow: 0 2px 14px rgba(0, 0, 0, 0.18);
  text-align: center;
  white-space: nowrap;
}

/* Hero new typography - 克制高级 */
.hero-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 9px 26px;
  border: 1px solid rgba(255, 255, 255, 0.32);
  border-radius: 100px;
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  font-family: var(--font-elegant);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 2.5px;
  color: rgba(255, 255, 255, 0.96);
  margin-bottom: 28px;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}

/* v5.5k：眉题左右发丝线（hero-subline-line / :last-child）删除（全站禁横向装饰线，该类现无使用方） */

.hero-subline-text {
  font-size: clamp(17px, 2vw, 22px);
  font-weight: 600;
  letter-spacing: 0.2em;
  text-indent: 0.2em;
  color: rgba(255, 255, 255, 0.98);
  white-space: nowrap;
  text-shadow: 0 2px 14px rgba(0, 0, 0, 0.2);
}

.hero-capsules {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 14px;
  margin: 0 0 24px;
  width: 100%;
  max-width: 760px;
}

.hero-capsule {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 22px;
  border-radius: 100px;
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.45);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  color: rgba(255, 255, 255, 0.95);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.5px;
  transition: all 0.3s ease;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.12);
  cursor: default;
}

.hero-capsule:hover {
  background: rgba(255, 255, 255, 0.16);
  border-color: rgba(255, 214, 110, 0.55);
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.14), 0 0 14px rgba(255, 214, 110, 0.18);
}

.hero-cta {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  justify-content: center;
  max-width: 520px;
  margin: 0 auto;
}

.hero-icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  flex: 1;
  min-width: 0;
  padding: 16px 28px;
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: 1px solid rgba(255, 255, 255, 0.45);
  border-radius: 100px;
  color: var(--color-white);
  font-size: 15px;
  font-weight: 600;
  text-decoration: none;
  transition: all 0.3s ease;
  letter-spacing: 0.5px;
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.08);
}

.hero-icon-btn:hover {
  background: rgba(255, 255, 255, 0.22);
  border-color: rgba(255, 255, 255, 0.75);
  transform: translateY(-2px);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.14);
}

.hero-icon-btn.primary {
  background: #ffbf00;
  border: none;
  color: #ffffff;
  box-shadow: 0 8px 24px rgba(255, 191, 0, 0.4);
}

.hero-icon-btn.primary:hover {
  background: #ffc71a;
  box-shadow: 0 12px 32px rgba(255, 183, 0, 0.48);
}

.hero-icon-btn.white {
  background: rgba(255, 255, 255, 0.92);
  border: none;
  color: var(--color-navy);
  box-shadow: 0 6px 22px rgba(0, 0, 0, 0.1);
}

.hero-icon-btn.white .icon-circle {
  /* 2026-09-10 按钮改蓝后图标同步回白色调（原白底时代的蓝调已不适用） */
  width: 28px;
  height: 28px;
  background: rgba(255, 255, 255, 0.22);
  border: 1px solid rgba(255, 255, 255, 0.4);
  color: #ffffff;
}

.hero-icon-btn.white:hover .icon-circle {
  background: rgba(255, 255, 255, 0.32);
  border-color: rgba(255, 255, 255, 0.55);
}

.hero-icon-btn .icon-circle {
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.22);
  border: 1px solid rgba(255, 255, 255, 0.4);
  transition: var(--transition);
  flex-shrink: 0;
}

.hero-icon-btn:hover .icon-circle {
  background: rgba(255, 255, 255, 0.32);
  border-color: rgba(255, 255, 255, 0.55);
}

.hero-icon-btn.primary .icon-circle {
  background: rgba(255, 255, 255, 0.2);
  border-color: rgba(255, 255, 255, 0.35);
}

.hero-scroll-hint {
  position: absolute;
  bottom: 36px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 2;
  color: rgba(255, 255, 255, 0.85);
  font-size: 13px;
  letter-spacing: 2px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  animation: bounce 2.5s infinite;
}

@keyframes bounce {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-8px); }
}

.hero-scroll-hint svg {
  width: 20px;
  height: 20px;
  opacity: 0.85;
}

.stat-item span {
  font-size: 13px;
  color: rgba(255, 255, 255, 0.75);
}

.section-light {
  background: var(--color-bg-soft);
}

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

.section-blue {
  background: linear-gradient(135deg, #0077FF 0%, #0077FF 100%);
  color: var(--color-white);
}

.section-gradient {
  background: linear-gradient(135deg, #ffffff 0%, #f4f7fb 100%);
}

.section-header {
  text-align: center;
  max-width: 680px;
  margin: 0 auto 60px;
}

.section-header-light {
  color: var(--color-white);
}

.section-header-light .section-desc {
  color: rgba(255, 255, 255, 0.8);
}

.section-tag {
  display: inline-block;
  padding: 6px 16px;
  background: transparent;
  color: var(--color-black);
  border-radius: 100px;
  font-size: 13px;
  font-weight: 600;
  margin-bottom: 16px;
}

.section-tag-light {
  background: rgba(255, 255, 255, 0.18);
  color: var(--color-white);
}

.section-header-light .section-title {
  color: var(--color-white);
}

.section-desc {
  font-size: 17px;
  color: var(--color-text-secondary);
  line-height: 1.7;
}

/* Process */
.process-flow {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  max-width: 960px;
  margin: 0 auto;
}

.process-step {
  text-align: left;
  padding: 28px 24px;
  background: var(--color-white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--color-border);
  transition: var(--transition);
}

.process-step:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
  border-color: #ffd54d;
}

.process-icon {
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 0 16px;
  background: var(--color-primary-soft);
  color: var(--color-primary);
  border-radius: 12px;
}

.process-step h3 {
  font-size: 17px;
  font-weight: 600;
  color: var(--color-navy);
  margin-bottom: 8px;
}

.process-step p {
  font-size: 13px;
  color: var(--color-text-secondary);
  line-height: 1.6;
}

.process-arrow {
  display: none;
}

/* Services */
.service-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}

.service-card {
  display: flex;
  flex-direction: column;
  padding: 36px;
  background: var(--color-white);
  border-radius: var(--radius-lg);
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-sm);
  transition: var(--transition);
}

.service-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-5px);
  border-color: #ffd54d;
}

.service-card-primary {
  border-color: rgba(0, 119, 255, 0.25);
  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
}

.service-card-green {
  border-color: rgba(22, 163, 74, 0.22);
  background: linear-gradient(180deg, #ffffff 0%, #f4fdf7 100%);
}

.service-card-head {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 24px;
}

.service-icon {
  width: 56px;
  height: 52px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-md);
}

.service-icon-blue {
  background: var(--color-primary-soft);
  color: var(--color-primary);
}

.service-icon-yellow {
  background: var(--color-accent-light);
  color: var(--color-accent-dark);
}

.service-icon-green {
  background: var(--color-green-soft);
  color: var(--color-green);
}

.service-card h3 {
  font-size: 22px;
  font-weight: 700;
  color: var(--color-navy);
}

.service-list {
  margin-bottom: 28px;
  flex: 1;
}

.service-list li {
  position: relative;
  padding-left: 22px;
  margin-bottom: 12px;
  font-size: 15px;
  color: var(--color-text-secondary);
  line-height: 1.6;
}

.service-list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 9px;
  width: 8px;
  height: 8px;
  background: var(--color-primary);
  border-radius: 50%;
}

/* Suppliers */
.supplier-types {
  display: flex;
  justify-content: center;
  gap: 16px;
  margin-bottom: 28px;
  flex-wrap: wrap;
}

.supplier-type {
  padding: 10px 24px;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: 100px;
  font-weight: 600;
  color: var(--color-navy);
  box-shadow: var(--shadow-sm);
}

.tag-cloud {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 48px;
}

.tag {
  padding: 6px 14px;
  border-radius: 100px;
  font-size: 13px;
  font-weight: 500;
}

.lab-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 24px;
  margin-bottom: 48px;
}

.lab-card {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: 24px;
  box-shadow: var(--shadow-sm);
  transition: var(--transition);
}

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

.lab-header {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 16px;
}

.lab-avatar {
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-primary-soft);
  color: var(--color-primary);
  border-radius: 50%;
  font-size: 18px;
  font-weight: 700;
}

.lab-info h4 {
  font-size: 16px;
  font-weight: 600;
  color: var(--color-navy);
  margin-bottom: 2px;
}

.lab-info span {
  font-size: 13px;
  color: var(--color-text-muted);
}

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

.lab-tags span {
  padding: 4px 10px;
  background: var(--color-bg);
  color: var(--color-text-secondary);
  border-radius: 100px;
  font-size: 12px;
}

.lab-meta {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 13px;
  color: var(--color-text-secondary);
}

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

.supplier-feature {
  display: flex;
  gap: 16px;
  padding: 24px;
  background: var(--color-white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
}

.supplier-feature svg {
  flex-shrink: 0;
  color: var(--color-primary);
}

.supplier-feature h4 {
  font-size: 16px;
  font-weight: 600;
  color: var(--color-navy);
  margin-bottom: 6px;
}

.supplier-feature p {
  font-size: 14px;
  color: var(--color-text-secondary);
  line-height: 1.6;
}

/* Capabilities */
.capability-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 24px;
}

.capability-card {
  padding: 32px;
  background: var(--color-bg-soft);
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border);
  transition: var(--transition);
}

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

.capability-icon {
  width: 52px;
  height: 52px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
  margin-bottom: 20px;
  color: var(--color-white);
}

.capability-icon-1 { background: linear-gradient(135deg, #0077FF, #0077FF); }
.capability-icon-2 { background: linear-gradient(135deg, #0077FF, #0077FF); }
.capability-icon-3 { background: linear-gradient(135deg, #f5a623, #f7c948); }
.capability-icon-4 { background: linear-gradient(135deg, #0077FF, #0077FF); }
.capability-icon-5 { background: linear-gradient(135deg, #10b981, #34d399); }
.capability-icon-6 { background: linear-gradient(135deg, #f43f5e, #fb7185); }

.capability-card h3 {
  font-size: 18px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 10px;
}

.capability-card p {
  font-size: 14px;
  color: var(--color-text-secondary);
  line-height: 1.7;
}

/* Trust */
.trust-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 24px;
}

.trust-card {
  padding: 32px;
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: var(--radius-md);
  backdrop-filter: blur(8px);
  transition: var(--transition);
}

.trust-card:hover {
  background: rgba(255, 255, 255, 0.16);
  transform: translateY(-4px);
}

.trust-icon {
  width: 52px;
  height: 52px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.15);
  color: var(--color-white);
  border-radius: 50%;
  margin-bottom: 18px;
}

.trust-card h3 {
  font-size: 18px;
  font-weight: 700;
  margin-bottom: 10px;
}

.trust-card p {
  font-size: 14px;
  color: rgba(255, 255, 255, 0.8);
  line-height: 1.7;
}

/* AI */
.ai-inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  align-items: center;
}

.ai-content {
  max-width: 520px;
}

.ai-content .section-header {
  text-align: left;
  margin: 0 0 24px;
}

.ai-list {
  margin: 28px 0 32px;
}

.ai-list li {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 14px;
  font-size: 15px;
  color: var(--color-text-secondary);
}

.ai-list li svg {
  color: var(--color-primary);
}

.ai-demo {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  padding: 28px;
  box-shadow: var(--shadow-lg);
  border: 1px solid var(--color-border);
}

.ai-message {
  padding: 16px 20px;
  border-radius: 18px;
  margin-bottom: 16px;
  font-size: 14px;
  line-height: 1.7;
}

.ai-message-user {
  background: var(--color-primary-soft);
  color: var(--color-navy);
  border-bottom-right-radius: 4px;
  margin-left: 40px;
}

.ai-message-bot {
  background: var(--color-bg-soft);
  color: var(--color-text);
  border-bottom-left-radius: 4px;
  margin-right: 40px;
}

.ai-message-bot ul {
  margin: 10px 0 10px 18px;
  list-style: disc;
}

.ai-message-bot li {
  margin-bottom: 6px;
}

/* About */
.about-inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  align-items: center;
}

.about-content .section-header {
  text-align: left;
  margin: 0 0 20px;
}


.about-stats {
  display: flex;
  gap: 40px;
  margin-top: 32px;
  padding-top: 32px;
  border-top: 1px solid var(--color-border);
}

.about-stats div {
  text-align: center;
}

.about-stats strong {
  display: block;
  font-size: 32px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 4px;
}

.about-stats span {
  font-size: 13px;
  color: var(--color-text-secondary);
}

.about-image {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.about-card {
  padding: 32px;
  background: var(--color-bg-soft);
  border-radius: var(--radius-lg);
  border: 1px solid var(--color-border);
  transition: var(--transition);
}

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

.about-card-offset {
  margin-left: 40px;
}

.about-card-icon {
  width: 64px;
  height: 64px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-primary-soft);
  color: var(--color-primary);
  border-radius: var(--radius-md);
  margin-bottom: 18px;
}

.about-card-icon-2 {
  background: var(--color-accent-light);
  color: var(--color-accent-dark);
}

.about-card h3 {
  font-size: 18px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 8px;
}

.about-card p {
  font-size: 14px;
  color: var(--color-text-secondary);
}

/* Contact */
.contact-inner {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 60px;
  align-items: center;
}

.contact-content .section-header {
  text-align: left;
  margin: 0 0 24px;
}

.contact-info {
  margin: 28px 0 32px;
}

.contact-row {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 14px;
  font-size: 15px;
  color: var(--color-text-secondary);
}

.contact-row svg {
  color: var(--color-primary);
}

.contact-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}

.contact-qr {
  text-align: center;
  padding: 24px;
  background: var(--color-white);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  border: 1px solid var(--color-border);
}

.contact-qr img {
  border-radius: var(--radius-sm);
  margin-bottom: 14px;
  background: var(--color-white);
}

.contact-qr p {
  font-size: 14px;
  color: var(--color-text-secondary);
}

/* Footer - light, business, restrained */
.footer {
  background: var(--color-white);
  border-top: 1px solid var(--color-border);
  color: var(--color-text-secondary);
  padding: 64px 0 28px;
}

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

.footer-brand {
  max-width: 320px;
}

.footer-brand .logo {
  margin-bottom: 18px;
}

.footer-brand p {
  font-size: 14px;
  line-height: 1.75;
  margin-bottom: 18px;
}

.footer-contact {
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: 13px;
  color: var(--color-text-muted);
}

.footer-contact span {
  display: flex;
  align-items: center;
  gap: 8px;
}

.footer-contact svg {
  width: 15px;
  height: 15px;
  color: var(--color-primary);
  flex-shrink: 0;
}

.footer-col h4 {
  color: var(--color-navy);
  font-size: 14px;
  font-weight: 700;
  margin-bottom: 16px;
  letter-spacing: 0.3px;
}

.footer-col a {
  display: block;
  font-size: 14px;
  margin-bottom: 10px;
  transition: var(--transition);
}

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

.footer-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding-top: 24px;
  border-top: 1px solid var(--color-border);
  font-size: 13px;
  color: var(--color-text-muted);
  flex-wrap: wrap;
}

.footer-bottom-links {
  display: flex;
  align-items: center;
  gap: 20px;
}

.footer-bottom-links a {
  color: var(--color-text-secondary);
  transition: var(--transition);
}

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

@media (max-width: 900px) {
  .footer-grid {
    grid-template-columns: 1fr 1fr;
    gap: 40px 32px;
  }

  .footer-brand {
    max-width: none;
  }
}

@media (max-width: 600px) {
  .footer {
    padding: 48px 0 24px;
  }

  .footer-grid {
    grid-template-columns: 1fr;
    gap: 32px;
    margin-bottom: 36px;
  }

  .footer-bottom {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
  }

  .footer-bottom-links {
    gap: 16px;
  }
}

/* ========================================
   Demand Features
   ======================================== */
.feature-hero {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-bottom: 40px;
}

.feature-hero-item {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 24px;
  background: linear-gradient(135deg, #f8fbff 0%, #fff8e7 100%);
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border);
}

.feature-hero-icon {
  width: 56px;
  height: 52px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-md);
  color: var(--color-white);
}

.feature-hero-icon-1 { background: linear-gradient(135deg, #0077FF, #0077FF); }
.feature-hero-icon-2 { background: linear-gradient(135deg, #f5a623, #ffc233); }
.feature-hero-icon-3 { background: linear-gradient(135deg, #0077FF, #0077FF); }

.feature-hero-item h3 {
  font-size: 17px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 4px;
}

.feature-hero-item p {
  font-size: 13px;
  color: var(--color-text-secondary);
  line-height: 1.5;
}

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

.feature-card {
  padding: 28px 24px;
  background: var(--color-white);
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border);
  transition: var(--transition);
}

.feature-card:hover {
  border-color: #ffd54d;
  box-shadow: var(--shadow-md);
  transform: translateY(-4px);
}

.feature-card-wide {
  grid-column: 1 / -1;
  background: linear-gradient(135deg, #f8fbff 0%, #ede7ff 100%);
}

.feature-icon {
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
  margin-bottom: 14px;
  color: var(--color-white);
}

.feature-icon-1 { background: linear-gradient(135deg, #0077FF, #0077FF); }
.feature-icon-2 { background: linear-gradient(135deg, #f5a623, #ffc233); }
.feature-icon-3 { background: linear-gradient(135deg, #0077FF, #0077FF); }
.feature-icon-4 { background: linear-gradient(135deg, #10b981, #34d399); }
.feature-icon-5 { background: linear-gradient(135deg, #0077FF, #0077FF); }
.feature-icon-6 { background: linear-gradient(135deg, #f43f5e, #fb7185); }
.feature-icon-7 { background: linear-gradient(135deg, #0077FF, #0077FF); }

.feature-card h3 {
  font-size: 17px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 8px;
}

.feature-card p {
  font-size: 14px;
  color: var(--color-text-secondary);
  line-height: 1.7;
}

.section-cta {
  text-align: center;
  margin-top: 24px;
}

/* Compact feature list — minimal, business, premium */
.feature-list-compact {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-bottom: 28px;
}

.feature-compact-card {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 24px;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  transition: var(--transition);
}

.feature-compact-card:hover {
  border-color: var(--color-primary-light);
  box-shadow: var(--shadow-md);
  transform: translateY(-3px);
}

.feature-compact-icon {
  width: 40px;
  height: 40px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  color: var(--color-white);
}

.feature-compact-icon-1 { background: linear-gradient(135deg, #0077FF, #0077FF); }
.feature-compact-icon-2 { background: linear-gradient(135deg, #f5a623, #ffc233); }
.feature-compact-icon-3 { background: linear-gradient(135deg, #0077FF, #0077FF); }
.feature-compact-icon-4 { background: linear-gradient(135deg, #10b981, #34d399); }
.feature-compact-icon-5 { background: linear-gradient(135deg, #0077FF, #0077FF); }
.feature-compact-icon-6 { background: linear-gradient(135deg, #f43f5e, #fb7185); }

.feature-compact-body h3 {
  font-size: 16px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 6px;
}

.feature-compact-body p {
  font-size: 13px;
  color: var(--color-text-secondary);
  line-height: 1.6;
}

.feature-footnote {
  text-align: center;
  padding: 16px 24px;
  background: var(--color-bg-soft);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  margin-bottom: 28px;
}

.feature-footnote p {
  font-size: 14px;
  color: var(--color-text-secondary);
  line-height: 1.7;
  margin: 0;
}

@media (max-width: 1024px) {
  .feature-list-compact {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 768px) {
  .feature-list-compact {
    grid-template-columns: 1fr;
  }
}

/* ========================================
   Governance
   ======================================== */
.governance-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
}

.governance-grid-8 .governance-card {
  position: relative;
  padding: 28px 24px 28px 26px;
  background: var(--color-white);
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border);
  transition: var(--transition);
  overflow: hidden;
}

.governance-grid-8 .governance-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-3px);
  border-color: rgba(0, 119, 255, 0.35);
}

.governance-icon {
  width: 42px;
  height: 42px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  margin-bottom: 16px;
  color: var(--color-white);
}

.governance-icon-1 { background: linear-gradient(135deg, #0077FF, #0077FF); }
.governance-icon-2 { background: linear-gradient(135deg, #5b6b7c, #8e9aa8); }
.governance-icon-3 { background: linear-gradient(135deg, #0e9f6e, #31c48d); }
.governance-icon-4 { background: linear-gradient(135deg, #0077FF, #0077FF); }
.governance-icon-5 { background: linear-gradient(135deg, #0077FF, #0077FF); }
.governance-icon-6 { background: linear-gradient(135deg, #d97706, #fbbf24); }
.governance-icon-7 { background: linear-gradient(135deg, #b91c1c, #f87171); }
.governance-icon-8 { background: linear-gradient(135deg, #0f766e, #2dd4bf); }

.governance-card h3 {
  font-size: 17px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 8px;
}

.governance-card p {
  font-size: 13.5px;
  color: var(--color-text-secondary);
  line-height: 1.65;
  margin: 0;
}

.governance-mission {
  max-width: 820px;
  margin: 0 auto 44px;
  padding: 20px 28px;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  text-align: center;
}

.governance-mission-tags {
  font-size: 17px;
  font-weight: 600;
  color: var(--color-navy);
  letter-spacing: 0.03em;
  margin-bottom: 6px;
}

.governance-mission-desc {
  font-size: 14px;
  color: var(--color-text-secondary);
  line-height: 1.7;
  margin: 0;
}

@media (max-width: 1024px) {
  .governance-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
  }
}

@media (max-width: 640px) {
  .governance-grid {
    grid-template-columns: 1fr;
  }
}

/* ========================================
   About Simple
   ======================================== */
.about-simple {
  max-width: 760px;
  margin: 0 auto;
  text-align: center;
}

.about-simple .section-header {
  margin-bottom: 20px;
}

.about-lead {
  font-size: 22px;
  font-weight: 600;
  color: var(--color-primary);
  margin-bottom: 20px;
}

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

.about-desc strong {
  color: var(--color-primary);
  font-weight: 700;
}

.about-mission {
  margin-top: 32px;
  padding: 24px 28px;
  background: linear-gradient(135deg, var(--color-primary-soft) 0%, #ffffff 100%);
  border-radius: var(--radius-md);
  text-align: left;
}

.about-mission-label {
  display: inline-block;
  font-size: 13px;
  font-weight: 600;
  color: var(--color-primary);
  letter-spacing: 1px;
  text-transform: uppercase;
  margin-bottom: 8px;
}

.about-mission-text {
  font-size: 20px;
  font-weight: 700;
  color: var(--color-navy);
  line-height: 1.5;
  margin: 0;
}

/* About Brand Spec */
.about-brand {
  max-width: 720px;
  margin: 0 auto;
  text-align: center;
}

.about-brand .section-title {
  margin-bottom: 8px;
}

.about-domain {
  display: inline-block;
  font-size: 14px;
  font-weight: 600;
  color: var(--color-primary);
  background: #ffffff;
  border: 1px solid var(--color-border);
  border-radius: 100px;
  padding: 6px 16px;
  margin-bottom: 32px;
}

.about-spec {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  text-align: left;
}

.about-spec-row {
  display: grid;
  grid-template-columns: 110px 1fr;
  align-items: center;
  gap: 20px;
  padding: 22px 28px;
  border-bottom: 1px solid var(--color-border);
}

.about-spec-row:last-child {
  border-bottom: none;
}

.about-spec-row-mission {
  background: linear-gradient(135deg, var(--color-primary-soft) 0%, #ffffff 100%);
}

.about-spec-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--color-text-muted);
  letter-spacing: 0.5px;
}

.about-spec-value {
  font-size: 16px;
  font-weight: 500;
  color: var(--color-navy);
  line-height: 1.6;
  margin: 0;
}

.about-spec-row-mission .about-spec-value {
  font-size: 18px;
  font-weight: 700;
  color: var(--color-navy);
}

.about-simple .about-stats {
  justify-content: center;
}

@media (max-width: 640px) {
  .about-spec-row {
    grid-template-columns: 1fr;
    gap: 8px;
    padding: 20px 24px;
  }

  .about-spec-label {
    margin-bottom: 2px;
  }
}

/* ========================================
   About - 关于我们（新版）
   ======================================== */
.about-intro {
  max-width: 880px;
  margin: 0 auto 44px;
  text-align: center;
  font-size: 16px;
  color: var(--color-text-secondary);
  line-height: 1.9;
}

.about-mission-block {
  max-width: 880px;
  margin: 0 auto 44px;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  padding: 40px 48px;
}

.about-mission-head {
  text-align: center;
  margin-bottom: 26px;
}

.about-mission-head h3 {
  font-size: 20px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 12px;
}

.about-mission-slogan {
  font-size: 24px;
  font-weight: 800;
  color: var(--color-primary);
  line-height: 1.4;
}

.about-mission-block p {
  font-size: 15px;
  color: var(--color-text-secondary);
  line-height: 1.9;
  margin-bottom: 14px;
}

.about-mission-block ul {
  margin: 0 0 16px;
  padding: 0;
  list-style: none;
}

.about-mission-block ul li {
  position: relative;
  padding-left: 20px;
  font-size: 15px;
  color: var(--color-text-secondary);
  line-height: 1.9;
  margin-bottom: 8px;
}

.about-mission-block ul li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 0.85em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--color-accent);
}

.about-mission-note {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-top: 28px;
  padding: 16px 18px;
  background: var(--color-bg-soft);
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border);
}

.about-mission-note-icon {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-primary);
  background: rgba(0, 119, 255, 0.08);
  border-radius: 50%;
}

.about-mission-note p {
  flex: 1;
  margin: 0;
  font-size: 13px;
  color: var(--color-text-muted);
  line-height: 1.7;
}

.about-op-block {
  max-width: 880px;
  margin: 0 auto;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  padding: 32px 48px;
}

.about-op-block h3 {
  font-size: 20px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 20px;
}

.about-op-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  margin-bottom: 24px;
}

.about-op-item {
  background: var(--color-bg-soft);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: 18px 20px;
}

.about-op-item span {
  display: block;
  font-size: 13px;
  color: var(--color-text-muted);
  margin-bottom: 6px;
}

.about-op-item strong {
  font-size: 15px;
  font-weight: 600;
  color: var(--color-navy);
  word-break: break-all;
  line-height: 1.6;
}

.about-op-note {
  font-size: 13px;
  color: var(--color-text-muted);
  line-height: 1.8;
  background: var(--color-primary-soft);
  border-radius: var(--radius-sm);
  padding: 16px 20px;
  margin: 0;
}

/* ========================================
   Governance - 平台治理（新版）
   ======================================== */
.gov-rules {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  max-width: 1100px;
  margin: 0 auto;
}

.gov-rule {
  display: flex;
  gap: 20px;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  padding: 28px 28px 30px;
  transition: var(--transition);
}

.gov-rule:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
  border-color: var(--color-primary-light);
}

.gov-rule-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  flex-shrink: 0;
  background: var(--color-primary-soft);
  color: var(--color-primary);
  border-radius: 12px;
  font-size: 16px;
  font-weight: 700;
}

.gov-rule-body h3 {
  font-size: 18px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 14px;
}

.gov-rule-body p {
  font-size: 14px;
  color: var(--color-text-secondary);
  line-height: 1.9;
  margin-bottom: 12px;
}

.gov-rule-body ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.gov-rule-body ul li {
  position: relative;
  padding-left: 16px;
  font-size: 14px;
  color: var(--color-text-secondary);
  line-height: 1.9;
  margin-bottom: 10px;
}

.gov-rule-body ul li:last-child {
  margin-bottom: 0;
}

.gov-rule-body ul li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.8em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--color-primary);
}

.gov-penalty {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  background: var(--color-accent-light);
  border-radius: var(--radius-sm);
  padding: 12px 16px;
  margin-bottom: 12px;
}

.gov-penalty span {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-accent-deep);
}

.gov-penalty i {
  font-style: normal;
  font-weight: 700;
  color: var(--color-accent-deep);
}

.gov-warn {
  font-size: 13px;
  color: var(--color-accent-deep);
  background: var(--color-accent-light);
  border-radius: var(--radius-sm);
  padding: 12px 16px;
  margin-top: 14px;
}

@media (max-width: 1024px) {
  .gov-rules {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 640px) {
  .about-mission-block,
  .about-op-block {
    padding: 28px 24px;
  }

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

  .gov-rule {
    flex-direction: column;
    gap: 14px;
    padding: 24px 20px;
  }
}

/* Responsive */
@media (max-width: 1024px) {
  .hero-headline {
    font-size: clamp(42px, 8vw, 64px);
  }

  .ai-inner,
  .about-inner,
  .contact-inner {
    grid-template-columns: 1fr;
    gap: 48px;
  }

  .about-card-offset {
    margin-left: 0;
  }

  .contact-qr {
    justify-self: center;
  }

  .feature-grid,
  .governance-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .feature-hero {
    grid-template-columns: 1fr;
  }

  .service-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 768px) {
  .header-actions .btn-text,
  .header-actions .btn-outline-primary {
    display: none;
  }

  .nav {
    position: fixed;
    top: 72px;
    left: 0;
    right: 0;
    background: rgba(255, 255, 255, 0.98);
    backdrop-filter: blur(12px);
    flex-direction: column;
    padding: 24px;
    gap: 0;
    border-bottom: 1px solid var(--color-border);
    transform: translateY(-150%);
    opacity: 0;
    transition: var(--transition);
    pointer-events: none;
  }

  .nav.active {
    transform: translateY(0);
    opacity: 1;
    pointer-events: all;
  }

  .nav-link {
    padding: 14px 0;
    width: 100%;
    border-bottom: 1px solid var(--color-border);
  }

  .nav-link:last-child {
    border-bottom: none;
  }

  .menu-toggle {
    display: flex;
  }

  .hero {
    padding: 130px 0 70px;
  }

  .hero-headline {
    font-size: clamp(38px, 10vw, 56px);
    gap: clamp(12px, 3vw, 24px);
  }

  .hero-slogan {
    font-size: 15px;
    letter-spacing: 1px;
    white-space: normal;
  }

  .hero-eyebrow {
    font-size: 12px;
    letter-spacing: 2px;
    gap: 8px;
    padding: 6px 14px;
  }

  .hero-service {
    padding: 6px 14px;
    font-size: 13px;
    letter-spacing: 1px;
    text-indent: 1px;
  }

  .hero-subline {
    gap: 12px;
    margin-bottom: 40px;
  }

  .hero-subline-text {
    letter-spacing: 5px;
    text-indent: 5px;
    font-size: 16px;
  }

  .hero-cta {
    flex-direction: column;
    align-items: stretch;
  }

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

  .section {
    padding: 64px 0;
  }

  .process-flow {
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
  }

  .process-step {
    max-width: 100%;
    width: 100%;
  }

  .service-grid,
  .capability-grid,
  .trust-grid,
  .lab-grid,
  .supplier-features,
  .feature-hero,
  .feature-grid,
  .governance-grid {
    grid-template-columns: 1fr;
  }

  .feature-card-wide {
    grid-column: span 1;
  }

  .about-stats {
    gap: 24px;
  }

  .footer-links {
    gap: 40px;
  }
}

@media (max-width: 480px) {
  .hero-headline {
    font-size: 34px;
    gap: 12px;
  }

  .hero-slogan {
    font-size: 14px;
    letter-spacing: 0.5px;
    margin-bottom: 40px;
  }

  .hero-icon-btn {
    padding: 16px 24px;
    font-size: 15px;
  }

  .btn-lg {
    padding: 12px 24px;
    font-size: 15px;
  }

  .process-flow {
    grid-template-columns: 1fr;
  }
}

/* ========================================
   Subpage Common
   ======================================== */
.subpage-hero {
  padding: 130px 0 60px;
  background: linear-gradient(135deg, #ffdb73 0%, #ffc233 35%, #0077FF 78%, #0077FF 100%);
  color: var(--color-white);
  position: relative;
  overflow: hidden;
}

.subpage-hero .container {
  position: relative;
  z-index: 2;
}

.subpage-hero h1 {
  font-family: var(--font-elegant);
  font-size: 38px;
  font-weight: 700;
  margin-bottom: 12px;
  letter-spacing: 1px;
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.12);
}

.breadcrumb {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  margin-bottom: 20px;
  color: rgba(255, 255, 255, 0.7);
}

.breadcrumb a {
  color: rgba(255, 255, 255, 0.85);
  transition: var(--transition);
}

.subpage-content {
  /* 顶部 130px = fixed 导航让位（v1.30 全站删页头横幅后由内容区承担，原由 subpage-hero 提供） */
  padding: 130px 0 80px;
}

/* Form */
.form-card {
  max-width: 760px;
  margin: 0 auto;
  background: var(--color-white);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  padding: 24px;
  border: 1px solid var(--color-border);
}

.form-section + .form-section {
  margin-top: 36px;
  padding-top: 36px;
  border-top: 1px solid var(--color-border);
}

.form-section-title {
  font-size: 18px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 20px;
  display: flex;
  align-items: center;
  gap: 10px;
}

/* v5.5k：.form-section-title::before 首定义（4x20 蓝竖条）删除（后置覆盖已清，本体同步退役） */

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

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

@media (max-width: 768px) {
  .form-row--cate-qty {
    grid-template-columns: 1fr;
  }
}

.form-row-full {
  grid-column: 1 / -1;
}

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

.form-label {
  display: block;
  font-size: 14px;
  font-weight: 600;
  color: var(--color-navy);
  margin-bottom: 8px;
}

.form-label .required {
  color: #e53e3e;
  margin-left: 2px;
}

.form-label .form-label-sub {
  display: inline-block;
  margin-left: 6px;
  font-size: 12px;
  font-weight: 400;
  color: var(--color-text-secondary);
  letter-spacing: 0;
}

.form-hint {
  font-size: 13px;
  color: var(--color-text-muted);
  margin-top: 6px;
}

.form-input,
.form-select,
.form-textarea {
  width: 100%;
  padding: 12px 16px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  font-size: 15px;
  line-height: 1.5;
  color: var(--color-text);
  background: var(--color-white);
  transition: var(--transition);
  font-family: inherit;
}

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

.form-check-inline {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.radio-chip,
.checkbox-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 18px;
  border: 1px solid var(--color-border);
  border-radius: 100px;
  font-size: 14px;
  cursor: pointer;
  transition: var(--transition);
  user-select: none;
}

.radio-chip:hover,
.checkbox-chip:hover {
  border-color: var(--color-primary-light);
}

.radio-chip.active,
.checkbox-chip.active {
  border-color: var(--color-primary);
  background: var(--color-primary-soft);
  color: var(--color-primary);
  font-weight: 600;
}

.form-actions {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-top: 36px;
  padding-top: 24px;
  border-top: 1px solid var(--color-border);
}

.form-actions .btn-accent {
  flex: 1 1 auto;
  border-radius: 9999px;
  padding: 16px 32px;
  font-size: 17px;
  font-weight: 600;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
}

.form-actions .btn-outline-primary {
  flex: 0 0 auto;
  border-radius: 9999px;
  padding: 14px 26px;
  font-size: 15px;
  font-weight: 500;
  background: var(--color-white);
  min-width: 110px;
}

.submit-tip {
  margin-top: 14px;
  font-size: 13px;
  line-height: 1.6;
  color: var(--color-text-secondary);
  text-align: center;
}

.submit-tip a {
  color: var(--color-primary);
  text-decoration: none;
}

.submit-tip a:hover {
  text-decoration: underline;
}

/* 交易模式区域 —— 简约商务提示卡片 */
.trade-mode-section {
  text-align: left;
}

.trade-mode-card {
  display: flex;
  align-items: flex-start;
  gap: 20px;
  padding: 28px 32px;
  background: linear-gradient(135deg, #ffffff 0%, #f8fbff 100%);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  transition: var(--transition);
}

.trade-mode-card:hover {
  border-color: rgba(0, 119, 255, 0.25);
  box-shadow: var(--shadow-md);
}

.trade-mode-icon {
  width: 48px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  background: var(--color-primary-soft);
  color: var(--color-primary);
  flex-shrink: 0;
}

.trade-mode-body h4 {
  font-size: 16px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 8px;
  line-height: 1.4;
}

.trade-mode-body p {
  font-size: 14px;
  color: var(--color-text-secondary);
  line-height: 1.7;
}

@media (max-width: 768px) {
  .trade-mode-card {
    padding: 22px 24px;
    gap: 16px;
  }

  .trade-mode-icon {
    width: 40px;
    height: 40px;
  }

  .trade-mode-icon svg {
    width: 20px;
    height: 20px;
  }
}

/* Feedback form */
.feedback-wrap {
  max-width: 720px;
  margin: 0 auto;
}

.feedback-form {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 40px;
  box-shadow: var(--shadow-md);
}

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

.form-row .form-group {
  margin-bottom: 0;
}

.feedback-actions {
  display: flex;
  align-items: center;
  gap: 20px;
  margin-top: 32px;
  padding-top: 24px;
  border-top: 1px solid var(--color-border);
}

.feedback-success {
  text-align: center;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 56px 40px;
  box-shadow: var(--shadow-md);
}

.feedback-success-icon {
  width: 72px;
  height: 72px;
  margin: 0 auto 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-green-soft);
  color: var(--color-green);
  border-radius: 50%;
}

.feedback-success-icon svg {
  width: 36px;
  height: 36px;
}

.feedback-success h3 {
  font-size: 24px;
  color: var(--color-navy);
  margin-bottom: 12px;
}

.feedback-success p {
  color: var(--color-text-secondary);
  max-width: 480px;
  margin: 0 auto 28px;
  line-height: 1.7;
}

@media (max-width: 640px) {
  .feedback-form {
    padding: 24px;
  }

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

  .feedback-actions {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }

  .feedback-success {
    padding: 40px 24px;
  }
}

/* v5.5k：「可 / 不可上传」清单组件（全站共享，工单详情上传规则 + 发布页附件区共用；
   由 order-detail.html 私有 .od2-frules 提升为公共组件，杜绝重复实现） */
.qm-frules { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px 28px; margin-top: 12px; text-align: left; }
@media (max-width: 680px) { .qm-frules { grid-template-columns: 1fr; } }
.qm-frule { display: flex; gap: 8px; align-items: flex-start; font-size: 12.5px; line-height: 1.6; color: #475569; }
.qm-frule i { flex: none; width: 15px; height: 15px; margin-top: 2px; }
.qm-frule.ok i { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230e9f6e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='m8.5 12.5 2.4 2.4 4.6-5.3'/%3E%3C/svg%3E") center/contain no-repeat; }
.qm-frule.no i { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c4314b' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M6 6l12 12'/%3E%3C/svg%3E") center/contain no-repeat; }

.upload-zone {
  border: 2px dashed var(--color-border);
  border-radius: var(--radius-md);
  padding: 32px;
  text-align: center;
  transition: var(--transition);
  cursor: pointer;
}

.upload-zone:hover {
  border-color: var(--color-primary);
  background: var(--color-primary-soft);
}

.upload-zone svg {
  color: var(--color-primary);
  margin-bottom: 10px;
}

.upload-zone p {
  font-size: 14px;
  color: var(--color-text-secondary);
}

.upload-zone small {
  display: block;
  font-size: 12px;
  color: var(--color-text-muted);
  margin-top: 4px;
}

.tag-selector {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.tag-option {
  padding: 8px 18px;
  border: 1px solid var(--color-border);
  border-radius: 100px;
  font-size: 14px;
  cursor: pointer;
  transition: var(--transition);
}

.tag-option:hover {
  border-color: var(--color-accent);
}

.tag-option.active {
  border-color: var(--color-accent);
  background: var(--color-accent-light);
  color: var(--color-accent-dark);
  font-weight: 600;
}

/* Demand Hall */
.filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
  margin-bottom: 32px;
  padding: 20px 24px;
  background: var(--color-white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--color-border);
}

.filter-bar select {
  padding: 8px 16px;
  border: 1px solid var(--color-border);
  border-radius: 100px;
  font-size: 14px;
  background: var(--color-white);
  cursor: pointer;
}

.filter-search {
  flex: 1;
  min-width: 200px;
  padding: 8px 16px;
  border: 1px solid var(--color-border);
  border-radius: 100px;
  font-size: 14px;
}

.demand-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.demand-card {
  display: flex;
  flex-direction: column;
  padding: 24px;
  background: var(--color-white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--color-border);
  transition: var(--transition);
}

.demand-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-3px);
  border-color: #0077FF;
}

.demand-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
  gap: 12px;
}

.demand-card-title {
  font-size: 17px;
  font-weight: 700;
  color: var(--color-navy);
  display: flex;
  align-items: center;
  gap: 10px;
}

.demand-badge {
  padding: 3px 10px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 600;
}

.demand-badge-public {
  background: var(--color-primary-soft);
  color: var(--color-primary);
}

.demand-badge-urgent {
  background: #fee2e2;
  color: #dc2626;
}

.demand-badge-top {
  background: var(--color-accent-light);
  color: var(--color-accent-dark);
}

.demand-card-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  font-size: 13px;
  color: var(--color-text-secondary);
  margin-bottom: 12px;
}

.demand-card-meta span {
  display: flex;
  align-items: center;
  gap: 4px;
}

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

.demand-card-tags span {
  padding: 4px 12px;
  background: var(--color-bg);
  border-radius: 100px;
  font-size: 12px;
  color: var(--color-text-secondary);
}

.demand-card-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: 14px;
  border-top: 1px solid var(--color-border);
}

.demand-card-stats {
  display: flex;
  gap: 20px;
  font-size: 13px;
  color: var(--color-text-muted);
}

.demand-card-stats strong {
  color: var(--color-navy);
  font-weight: 700;
}

/* Supplier Dashboard */
.dashboard-tabs {
  display: flex;
  gap: 8px;
  margin-bottom: 32px;
  border-bottom: 1px solid var(--color-border);
}

.tab-link {
  padding: 12px 24px;
  font-size: 15px;
  font-weight: 500;
  color: var(--color-text-secondary);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: var(--transition);
}

.tab-link:hover,
.tab-link.active {
  color: var(--color-primary);
  border-bottom-color: var(--color-primary);
}

.stat-cards {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  margin-bottom: 32px;
}

.stat-card {
  padding: 24px;
  background: var(--color-white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--color-border);
}

.stat-card strong {
  display: block;
  font-size: 28px;
  font-weight: 800;
  color: var(--color-primary);
  margin-bottom: 4px;
}

.stat-card span {
  font-size: 13px;
  color: var(--color-text-secondary);
}

.chat-header {
  padding: 20px 28px;
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%);
  color: var(--color-white);
  display: flex;
  align-items: center;
  gap: 14px;
}

.chat-header-icon {
  width: 44px;
  height: 44px;
  background: rgba(255, 255, 255, 0.2);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.chat-header h3 {
  font-size: 17px;
  font-weight: 700;
}

.chat-header small {
  font-size: 13px;
  color: rgba(255, 255, 255, 0.75);
}

.chat-body {
  height: 440px;
  overflow-y: auto;
  padding: 28px;
  background: var(--color-bg-soft);
}

.chat-message {
  margin-bottom: 18px;
  display: flex;
  gap: 12px;
}

.chat-message-user {
  flex-direction: row-reverse;
}

.chat-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 700;
  flex-shrink: 0;
}

.chat-avatar-bot {
  background: linear-gradient(135deg, var(--color-primary), var(--color-primary-light));
  color: var(--color-white);
}

.chat-avatar-user {
  background: var(--color-accent);
  color: var(--color-white);
}

.chat-bubble {
  padding: 14px 18px;
  border-radius: 18px;
  font-size: 14px;
  line-height: 1.7;
  max-width: 75%;
}

.chat-message-bot .chat-bubble {
  background: var(--color-white);
  color: var(--color-text);
  border: 1px solid var(--color-border);
  border-bottom-left-radius: 4px;
}

.chat-message-user .chat-bubble {
  background: var(--color-primary);
  color: var(--color-white);
  border-bottom-right-radius: 4px;
}

.chat-bubble ul {
  margin: 8px 0 8px 18px;
  list-style: disc;
}

.chat-bubble li {
  margin-bottom: 4px;
}

.chat-input-area {
  padding: 20px 28px;
  border-top: 1px solid var(--color-border);
  background: var(--color-white);
  display: flex;
  gap: 12px;
  align-items: center;
}

.chat-input {
  flex: 1;
  padding: 12px 20px;
  border: 1px solid var(--color-border);
  border-radius: 100px;
  font-size: 14px;
}

.chat-input:focus {
  outline: none;
  border-color: var(--color-primary);
}

.chat-quick {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 0 28px 16px;
  background: var(--color-white);
}

.chat-quick button {
  padding: 6px 14px;
  border: 1px solid var(--color-border);
  border-radius: 100px;
  font-size: 13px;
  background: var(--color-white);
  cursor: pointer;
  transition: var(--transition);
  color: var(--color-text-secondary);
}

.chat-quick button:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
}

/* Login */
.auth-card {
  max-width: 640px;
  margin: 0 auto;
  background: var(--color-white);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  padding: 48px 40px;
  border: 1px solid var(--color-border);
}

.reg-role-chips {
  gap: 12px;
}

.reg-role-chips .radio-chip {
  flex: 1 1 0;
  justify-content: center;
  padding: 12px 10px;
  font-size: 15px;
  min-width: 0;
  text-align: center;
}

.reg-role-chips .radio-chip.active {
  border-color: var(--color-accent);
  background: var(--color-accent-light);
  color: var(--color-accent-dark);
}

.reg-role-chips .radio-chip:hover {
  border-color: var(--color-accent);
}

.auth-tabs {
  display: flex;
  gap: 0;
  margin-bottom: 32px;
  border-bottom: 1px solid var(--color-border);
}

.auth-tab {
  flex: 1;
  text-align: center;
  padding: 12px 0;
  font-size: 16px;
  font-weight: 600;
  color: var(--color-text-muted);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: var(--transition);
}

.auth-tab.active {
  color: var(--color-primary);
  border-bottom-color: var(--color-primary);
}

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

.auth-divider {
  text-align: center;
  margin: 24px 0;
  font-size: 13px;
  color: var(--color-text-muted);
  position: relative;
}

.auth-divider::before,
.auth-divider::after {
  content: '';
  position: absolute;
  top: 50%;
  width: calc(50% - 30px);
  height: 1px;
  background: var(--color-border);
}

.auth-divider::before { left: 0; }
.auth-divider::after { right: 0; }

@media (max-width: 768px) {
  .form-row {
    grid-template-columns: 1fr;
  }

  .form-card,
  .auth-card {
    padding: 28px 20px;
  }

  .stat-cards {
    grid-template-columns: repeat(2, 1fr);
  }

  .subpage-hero h1 {
    font-size: 28px;
  }

  .chat-body {
    height: 360px;
  }
}

.wb-role-btn svg {
  width: 17px;
  height: 17px;
  color: var(--color-text-muted);
  transition: color 0.25s ease;
}

.wb-role-btn:hover {
  color: var(--color-primary);
  background: var(--color-primary-soft);
}

.wb-role-btn:hover svg {
  color: var(--color-primary);
}


.wb-role-btn.is-active svg {
  color: #0077FF; /* 🔄v376：白底选中态，图标随字色（原白图标白底会消失） */
}

/* 面板切换 */
.wb-panel {
  display: none;
}

.wb-panel.is-active {
  display: block;
  animation: wbFadeIn 0.4s ease;
}

@keyframes wbFadeIn {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}




.wb-kpi-info {
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* 消息中心链接（工作台消息模块标题位，链接继承标题外观，hover 变蓝） */
.wb-msg-center-link {
  text-decoration: none;
  white-space: nowrap;
}

.wb-module-msg .wb-module-title {
  white-space: nowrap;
}

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

.wb-table tbody tr {
  transition: background 0.2s ease;
  cursor: pointer;
}

.wb-status::before {
  content: '';
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
}




.wb-quick span {
  font-size: 13px;
  font-weight: 600;
  color: var(--color-navy);
}

/* 消息提醒模块 */
.wb-msg-chips {
  display: flex;
  gap: 8px;
  padding: 14px 20px 0;
  flex-wrap: wrap;
}

.wb-msg-chip {
  padding: 5px 12px;
  border-radius: 100px;
  border: 1px solid var(--color-border);
  background: var(--color-white);
  font-size: 12.5px;
  color: var(--color-text-secondary);
  cursor: pointer;
  transition: var(--transition);
  font-family: inherit;
}

.wb-msg-chip:hover {
  color: var(--color-primary);
  border-color: rgba(0, 119, 255, 0.4);
}

.wb-msg-chip.active {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: #fff;
}



.wb-msg-row.unread {
  background: #f7fbff;
}

/* 响应式 */
@media (max-width: 1080px) {
}

@media (max-width: 860px) {
}

@media (max-width: 560px) {
}

/* ============================================================
   需求大厅 V2 —— 筛选、卡片、状态、报价弹窗
   ============================================================ */

/* .demand-hall-section 原 padding-top:40px 已删（hero 时代收紧间距遗留；
   v1.30 全站删页头后须沿用 .subpage-content 全局 130px 导航让位） */

/* 筛选面板 */
.dh-filter-panel {
  background: var(--color-white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--color-border);
  padding: 0;
  margin-bottom: 24px;
  overflow: hidden;
}

/* 筛选工具条 —— 支付官网风格：单行、分隔线、轻量标签 */
.dh-filter-toolbar {
  display: flex;
  align-items: stretch;
  gap: 0;
  padding: 22px 28px;
}

.dh-filter-group {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  padding: 0 18px;
}

.dh-filter-group:first-child {
  padding-left: 0;
}

.dh-filter-group:last-child,
.dh-filter-sort {
  padding-right: 0;
}

.dh-filter-group label {
  flex: 0 0 auto;
  font-size: 12px;
  font-weight: 500;
  color: var(--color-text-muted);
  letter-spacing: 0.02em;
}

.dh-filter-group select {
  flex: 1 1 auto;
  min-width: 0;
  padding: 4px 22px 4px 0;
  border: none;
  border-bottom: 1px solid transparent;
  border-radius: 0;
  font-size: 15px;
  font-weight: 500;
  color: var(--color-navy);
  background: transparent;
  cursor: pointer;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23849ab5' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right center;
  transition: var(--transition);
}

.dh-filter-group select:hover {
  color: var(--color-primary);
}

.dh-filter-group select:focus {
  outline: none;
  border-bottom-color: var(--color-primary);
}

.dh-filter-divider {
  flex: 0 0 1px;
  width: 1px;
  background: var(--color-border);
  margin: 6px 0;
}

/* 快速筛选 */
.dh-quick-filter {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  padding: 16px 28px;
  border-top: 1px solid var(--color-border);
  background: var(--color-bg-soft);
}

.dh-quick-label {
  font-size: 13px;
  font-weight: 500;
  color: var(--color-text-muted);
  margin-right: 4px;
}

.dh-quick-btn {
  padding: 6px 16px;
  border: 1px solid var(--color-border);
  border-radius: 100px;
  background: var(--color-white);
  font-size: 13px;
  font-weight: 500;
  color: var(--color-text-secondary);
  cursor: pointer;
  transition: var(--transition);
}

.dh-quick-btn:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: var(--color-primary-soft);
}

.dh-quick-btn.active {
  background: linear-gradient(135deg, #ffb300 0%, #ff9e00 100%);
  border-color: #ff9e00;
  color: #ffffff;
  font-weight: 600;
  text-shadow: 0 1px 1px rgba(160, 100, 0, 0.25);
}

.dh-quick-btn.active:hover {
  background: linear-gradient(135deg, #ffa400 0%, #f08c00 100%);
  border-color: #f08c00;
  color: #ffffff;
}

/* 提示条 */
.dh-notice {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 14px 18px;
  background: #fff8e6;
  border: 1px solid #fae1a0;
  border-radius: var(--radius-sm);
  margin-bottom: 20px;
  color: #8a6d1f;
  font-size: 13px;
  line-height: 1.6;
}

.dh-notice svg {
  flex-shrink: 0;
  margin-top: 2px;
  color: var(--color-accent-deep);
}

.dh-notice strong {
  color: #7c5f12;
  font-weight: 700;
}

/* 结果统计 */
.dh-result-bar {
  margin-bottom: 18px;
  font-size: 13px;
  color: var(--color-text-muted);
}

.dh-result-bar strong {
  color: var(--color-navy);
  font-weight: 700;
}

/* 需求卡片网格 */
.dh-demand-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
  margin-bottom: 32px;
}

.dh-demand-card {
  display: flex;
  flex-direction: column;
  padding: 22px;
  background: var(--color-white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--color-border);
  transition: var(--transition);
}

.dh-card-urgent {
  background: linear-gradient(to bottom, #fffbfb, var(--color-white));
}

/* 卡片头部 */
.dh-card-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}

.dh-card-title-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  flex: 1;
}

.dh-card-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--color-navy);
  line-height: 1.4;
  margin: 0;
}

.dh-card-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.dh-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 8px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 700;
}

.dh-badge-top {
  background: #fff7e6;
  color: #d97706;
}

.dh-badge-urgent {
  background: #fee2e2;
  color: #dc2626;
}

.dh-badge-sampling {
  background: #f3e8ff;
  color: #0077FF;
}

.dh-status {
  flex-shrink: 0;
  padding: 4px 10px;
  border-radius: 100px;
  font-size: 11px;
  font-weight: 700;
}

/* 标签 */
.dh-card-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 14px;
}

.dh-card-tags span {
  padding: 4px 10px;
  background: var(--color-bg);
  border-radius: 100px;
  font-size: 12px;
  color: var(--color-text-secondary);
}

/* 元信息 */
.dh-card-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  font-size: 12px;
  color: var(--color-text-secondary);
  margin-bottom: 12px;
}

.dh-card-meta span {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.dh-card-meta svg {
  color: var(--color-text-muted);
}

/* 状态行 */
.dh-card-matched,
.dh-card-locked,
.dh-card-stopped {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 12px;
  border-radius: var(--radius-sm);
  font-size: 12px;
  margin-bottom: 12px;
}

.dh-card-matched {
  background: #fef2f2;
  color: #991b1b;
}

.dh-card-locked {
  background: #f3f4f6;
  color: #4b5563;
}

.dh-card-stopped {
  background: #fffbeb;
  color: #92400e;
}

/* 卡片底部 */
.dh-card-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: auto;
  padding-top: 14px;
  border-top: 1px solid var(--color-border);
  gap: 12px;
}

.dh-card-stats {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  font-size: 12px;
  color: var(--color-text-muted);
}

.dh-stat-status {
  display: inline-flex;
  align-items: center;
  font-weight: 600;
}

.dh-stat-quoting { color: #0077FF; }
.dh-stat-matched { color: #991b1b; }
.dh-stat-locked  { color: #4b5563; }
.dh-stat-stopped { color: #92400e; }

/* 分页 */
.dh-pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  margin-bottom: 48px;
}

.dh-page-btn {
  min-width: 36px;
  height: 36px;
  padding: 0 12px;
  border: 1px solid var(--color-border);
  border-radius: var(--v6-radius-full);
  background: var(--color-white);
  font-size: 14px;
  color: var(--color-black);
  cursor: pointer;
  transition: var(--transition);
}

.dh-page-btn:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
}

.dh-page-btn.active {
  background: var(--color-white);
  border-color: var(--color-black);
  color: var(--color-black);
  font-weight: 600;
  box-shadow: none;
}

.dh-page-btn.next {
  padding: 0 16px;
}

/* 报价弹窗 */
.dh-modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.25s ease, visibility 0.25s ease;
}

.dh-modal.is-open {
  opacity: 1;
  visibility: visible;
}

.dh-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.5);
}

.dh-modal-dialog {
  position: relative;
  width: 100%;
  max-width: 520px;
  max-height: 90vh;
  margin: auto;
  overflow-y: auto;
  background: var(--color-white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  transform: translateY(12px);
  transition: transform 0.25s ease;
}

.dh-modal.is-open .dh-modal-dialog {
  transform: translateY(0);
}

.dh-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 24px;
  border-bottom: 1px solid var(--color-border);
}

.dh-modal-header h3 {
  font-size: 18px;
  font-weight: 700;
  color: var(--color-navy);
  margin: 0;
}

.dh-modal-close {
  width: 32px;
  height: 32px;
  border: none;
  background: transparent;
  font-size: 26px;
  line-height: 1;
  color: var(--color-text-muted);
  cursor: pointer;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.dh-modal-close:hover {
  background: var(--color-bg-soft);
  color: var(--color-text-primary);
}

.dh-modal-body {
  padding: 24px;
}

.dh-modal-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 24px;
  border-top: 1px solid var(--color-border);
  background: #f8fafc;
  border-radius: 0 0 var(--radius-md) var(--radius-md);
}

.dh-modal-footer-tip {
  font-size: 12px;
  color: var(--color-text-muted);
}

.dh-modal-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.dh-btn-submit {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 22px;
  font-weight: 600;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
  transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}

.dh-btn-submit:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12);
}

.dh-quote-demand {
  padding: 14px 16px;
  background: var(--color-bg-soft);
  border-radius: var(--radius-sm);
  margin-bottom: 20px;
}

.dh-quote-demand h4 {
  font-size: 15px;
  font-weight: 700;
  color: var(--color-navy);
  margin: 0 0 6px;
}

.dh-quote-demand p {
  font-size: 13px;
  color: var(--color-text-secondary);
  margin: 0;
}

.dh-form-group {
  margin-bottom: 18px;
}

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

.dh-price-input,
.dh-cycle-input {
  display: flex;
  align-items: center;
  gap: 10px;
}

.dh-currency {
  font-size: 16px;
  font-weight: 700;
  color: var(--color-text-primary);
}

.dh-price-input input[type="number"],
.dh-cycle-input input[type="number"],
.dh-form-group textarea {
  flex: 1;
  padding: 10px 12px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  font-size: 14px;
  color: var(--color-text-primary);
  font-family: inherit;
}

.dh-form-group textarea {
  width: 100%;
  resize: vertical;
  min-height: 90px;
}

.dh-price-input input:focus,
.dh-cycle-input input:focus,
.dh-form-group textarea:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(0, 119, 255, 0.08);
}

.dh-form-hint {
  margin-top: 6px;
  font-size: 12px;
  min-height: 18px;
  color: var(--color-text-muted);
}

.dh-form-hint.is-error {
  color: #dc2626;
  font-weight: 600;
}

/* 响应式 */
@media (max-width: 1024px) {
  .dh-filter-toolbar {
    flex-wrap: wrap;
    gap: 16px 0;
    padding: 20px 24px;
  }
  .dh-filter-group {
    flex: 1 1 calc(33.333% - 18px);
    min-width: 140px;
    padding: 0 16px;
  }
  .dh-filter-group:first-child {
    padding-left: 16px;
  }
  .dh-filter-divider {
    display: none;
  }
  .dh-demand-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 640px) {
  .dh-filter-toolbar {
    padding: 18px 20px;
    gap: 14px 0;
  }
  .dh-filter-group {
    flex: 1 1 calc(50% - 12px);
    min-width: 120px;
    padding: 0 10px;
  }
  .dh-filter-group:first-child {
    padding-left: 10px;
  }
  .dh-filter-panel {
    border-radius: var(--radius-sm);
  }
  .dh-quick-filter {
    padding: 14px 20px;
  }
  .dh-card-head {
    flex-direction: column;
  }

  .dh-modal-footer {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }

  .dh-modal-footer-tip {
    text-align: center;
  }

  .dh-modal-actions {
    justify-content: center;
  }
}

/* ============================================================
   发布需求页 V2 —— 4 列核心信息 + 业务类型卡片 + 地域多选
   ============================================================ */

.publish-grid-4 {
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr 1fr;
  gap: 20px;
  align-items: start;
  margin-bottom: 24px;
}

.publish-col {
  min-width: 0;
}

.biz-type-col {
  display: flex;
  flex-direction: column;
  gap: 10px;
}





.biz-type-icon {
  width: 48px;
  height: 44px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: var(--transition);
}

.biz-type-icon svg {
  width: 24px;
  height: 24px;
}

.biz-type-icon.blue {
  background: rgba(0, 119, 255, 0.12);
  color: var(--color-primary);
}

.biz-type-icon.orange {
  background: rgba(255, 169, 20, 0.15);
  color: #c67a00;
}

.biz-type-icon.green {
  background: rgba(16, 185, 129, 0.12);
  color: var(--color-green-dark);
}

.biz-type-card.active .biz-type-icon.blue {
  background: var(--color-primary);
  color: var(--color-white);
}

.biz-type-card.active .biz-type-icon.orange {
  background: var(--color-accent);
  color: var(--color-white);
}

.biz-type-card.active .biz-type-icon.green {
  background: var(--color-green);
  color: var(--color-white);
}

.biz-type-title {
  font-size: 15px;
  font-weight: 700;
  color: var(--color-navy);
}

.biz-type-desc {
  font-size: 11px;
  color: var(--color-text-muted);
  line-height: 1.35;
}

.biz-type-card.active .biz-type-title {
  color: #fff;
}

.biz-type-card.active .biz-type-desc {
  color: rgba(255, 255, 255, 0.75);
}

.meta-row {
  margin-bottom: 0;
}

.meta-row .form-group {
  margin-bottom: 0;
}

/* 紧凑上传区 */
.upload-zone.compact {
  padding: 18px 14px;
  min-height: 130px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.upload-zone.compact p {
  font-size: 13px;
  margin: 6px 0 2px;
}

.upload-zone.compact small {
  font-size: 11px;
}

/* 地域多选器 */
.region-selector {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: 14px;
  background: var(--color-white);
}

.region-actions {
  display: flex;
  gap: 10px;
  margin-bottom: 12px;
}

.region-action {
  padding: 5px 12px;
  border: 1px solid var(--color-border);
  border-radius: 100px;
  background: var(--color-white);
  font-size: 12px;
  color: var(--color-text-secondary);
  cursor: pointer;
  transition: var(--transition);
}

.region-action:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: var(--color-primary-soft);
}

.region-provinces {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 14px;
  max-height: 92px;
  overflow-y: auto;
  padding-right: 4px;
}

.region-province {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 10px;
  border: 1px solid var(--color-border);
  border-radius: 100px;
  font-size: 13px;
  color: var(--color-text);
  cursor: pointer;
  transition: var(--transition);
  background: var(--color-white);
  user-select: none;
}

.region-province:hover {
  border-color: var(--color-primary-light);
}

.region-province.checked {
  border-color: var(--color-primary);
  background: var(--color-primary-soft);
  color: var(--color-primary);
  font-weight: 600;
}

.region-province input {
  pointer-events: none;
}

.region-cities {
  border-top: 1px dashed var(--color-border);
  padding-top: 12px;
  margin-bottom: 12px;
  min-height: 52px;
}

.region-cities-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--color-navy);
  margin-bottom: 10px;
}

.region-city-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.region-city {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 10px;
  border: 1px solid var(--color-border);
  border-radius: 100px;
  font-size: 12px;
  color: var(--color-text);
  cursor: pointer;
  transition: var(--transition);
  background: var(--color-white);
  user-select: none;
}

.region-city:hover {
  border-color: var(--color-primary-light);
}

.region-city.checked {
  border-color: var(--color-primary);
  background: var(--color-primary-soft);
  color: var(--color-primary);
}

.region-empty {
  font-size: 13px;
  color: var(--color-text-muted);
}

.region-summary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  border-top: 1px solid var(--color-border);
  padding-top: 12px;
}

.region-summary-head {
  font-size: 12px;
  font-weight: 600;
  color: var(--color-navy);
  margin-right: 4px;
}

.region-tag {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 100px;
  background: rgba(0, 119, 255, 0.08);
  color: var(--color-primary);
  font-size: 12px;
}

.region-group {
  min-width: 0;
}

@media (max-width: 1200px) {
  .publish-grid-4 {
    grid-template-columns: 1fr 1fr;
  }

  .biz-type-col {
    grid-column: 1 / -1;
  }

  .biz-type-options {
    grid-template-columns: repeat(3, minmax(120px, 1fr));
    max-width: 100%;
  }
}

@media (max-width: 768px) {
  .publish-grid-4 {
    grid-template-columns: 1fr;
  }

  .region-provinces {
    max-height: 120px;
  }
}

/* ============================================================
   发布需求页 V3 —— 10 点改造补充样式
   ============================================================ */

.text-muted {
  color: var(--color-text-muted);
  font-weight: 400;
}

/* 业务类型：上选卡 + 下选卡 */
.biz-type-options {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 16px;
}

/* 下选卡容器：三列并排 */
.biz-type-options--secondary {
  grid-template-columns: repeat(3, 1fr);
  margin-top: 16px;
}

.biz-type-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 24px 16px;
  border: 2px solid var(--color-border);
  border-radius: 24px;
  background: var(--color-white);
  cursor: pointer;
  transition: var(--transition);
  text-align: center;
  min-height: 110px;
}

.biz-type-card.active {
  border-color: var(--color-primary);
  background: #f4f8ff;
  box-shadow: 0 0 0 4px rgba(0, 119, 255, 0.08);
}

.biz-type-word {
  font-size: 32px;
  font-weight: 700;
  color: var(--color-navy);
  line-height: 1;
  letter-spacing: 1px;
}

.biz-type-sub {
  font-size: 13px;
  font-weight: 500;
  color: var(--color-text-muted);
  letter-spacing: 0.3px;
}

.biz-type-card.active .biz-type-sub {
  color: var(--color-primary);
  opacity: 0.85;
}

/* 下选卡：测绘 | 环评 | 工程、诊断 | 审厂 | 清关、耗材 | 仪器 | 试剂 */
.biz-type-card--wide {
  min-height: 86px;
  border-radius: 20px;
  flex-direction: row;
  gap: 12px;
  font-size: 17px;
  font-weight: 600;
  color: var(--color-navy);
  letter-spacing: 0.5px;
}

.biz-type-card--wide:hover {
  border-color: rgba(245, 166, 35, 0.35);
  box-shadow: 0 10px 24px rgba(245, 166, 35, 0.08);
}

.biz-type-card--wide.active {
  border-color: var(--v4-ink);
  background: var(--v4-ink);
  color: #fff;
  box-shadow: 0 0 0 4px rgba(10, 10, 10, 0.08);
}

/* 项目名称/类型/地址 三列、实验室等级/资质、国家认可/平台认可 两列 */
.form-row.three-col {
  grid-template-columns: repeat(3, 1fr);
}

.form-row.two-col,
.form-row.lab-require-row,
.form-row.appeal-row {
  grid-template-columns: 1fr 1fr;
}

/* 资质与国家/平台筛选面板 */
.qualification-selector,
.filter-chip-group {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  padding: 14px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-white);
  max-height: 168px;
  overflow-y: auto;
}

/* 发布方式选项 — 双列大卡片（简约商务风，置于提交按钮上方） */
.publish-mode-options {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}

.publish-mode-options .radio-chip {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 52px;
  padding: 18px 20px;
  border-radius: var(--radius-lg);
  border: 1px solid var(--color-border);
  background: var(--color-white);
  color: var(--color-navy);
  font-size: 16px;
  font-weight: 600;
  text-align: center;
  cursor: pointer;
  transition: var(--transition);
}

.publish-mode-options .radio-chip:hover {
  border-color: rgba(245, 166, 35, 0.45);
  background: var(--color-accent-light);
}

.publish-mode-options .radio-chip.active {
  border-color: var(--color-accent);
  background: var(--color-accent-light);
  color: var(--color-accent-dark);
}

/* 隐藏原单选圆点 */
.publish-mode-options .radio-chip::after,
.publish-mode-options .radio-chip::before {
  display: none;
}

.publish-mode-hint {
  margin-top: 14px;
  padding: 12px 16px;
  border-radius: var(--radius-md);
  background: var(--color-primary-soft);
  color: var(--color-text-secondary);
  font-size: 14px;
  line-height: 1.7;
}

/* 增值服务选项 — 双列均衡卡片（简约商务风） */
.value-added-options {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}

.value-added-options .radio-chip {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 12px;
  padding: 24px 24px 24px 28px;
  min-height: 170px;
  border-radius: var(--radius-lg);
  border: 1px solid var(--color-border);
  background: var(--color-white);
  transition: var(--transition);
  cursor: pointer;
  overflow: hidden;
}

/* 左侧选中指示条已按 2026-09-08 用户指令全站去除（选中态由 .active 边框+底色表达） */

/* 隐藏原右上角单选圆点 */
.value-added-options .radio-chip::after {
  display: none;
}

.value-added-options .radio-chip:hover {
  border-color: rgba(0, 119, 255, 0.35);
  background: #fbfdff;
}

.value-added-options .radio-chip.active {
  border-color: rgba(0, 119, 255, 0.45);
  background: #f6f9ff;
}

.value-added-options .radio-chip .va-icon {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  background: var(--color-primary-soft);
  color: var(--color-primary);
  margin-bottom: 2px;
}

.value-added-options .radio-chip.active .va-icon {
  background: var(--color-primary);
  color: var(--color-white);
}

.value-added-options .radio-chip .va-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--color-navy);
  letter-spacing: 0;
}

.value-added-options .radio-chip .va-meta {
  font-size: 14px;
  color: var(--color-text-secondary);
  line-height: 1.6;
  flex: 1;
}

.value-added-options .radio-chip .value-input-wrap {
  display: flex;
  align-items: center;
  gap: 6px;
  width: 100%;
  margin-top: 6px;
  padding: 10px 12px;
  background: var(--color-bg);
  border-radius: var(--radius-sm);
  font-size: 13px;
  color: var(--color-text-secondary);
  white-space: nowrap;
}

.value-added-options .radio-chip.active .value-input-wrap {
  background: #eaf3ff;
}

.value-added-options .radio-chip .value-input-wrap.value-input-free {
  background: #eaf9ef;
  color: var(--color-green);
}

.value-added-options .radio-chip.active .value-input-wrap.value-input-free {
  background: #dff7e8;
}

.value-added-options .radio-chip .currency {
  color: var(--color-accent-dark);
  font-weight: 700;
  font-size: 14px;
  flex-shrink: 0;
}

.value-added-options .radio-chip .currency-free {
  color: var(--color-green);
}

.chip-number-input:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(0, 119, 255, 0.1);
}

/* 防止数字输入框触发 chip 切换 */
.chip-number-input {
  width: 44px;
  padding: 5px 6px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  font-size: 14px;
  text-align: center;
  color: var(--color-text);
  font-family: inherit;
  background: var(--color-white);
  transition: var(--transition);
  pointer-events: auto;
  }

@media (max-width: 768px) {
  .form-row.three-col,
  .form-row.two-col,
  .form-row.lab-require-row,
  .form-row.appeal-row {
    grid-template-columns: 1fr;
  }

  .value-added-options {
    grid-template-columns: 1fr;
  }

  .value-added-options .radio-chip {
    min-height: 0;
  }

  .biz-type-options {
    max-width: none;
    grid-template-columns: 1fr;
  }
}

/* 送样检测信息 */
.sample-delivery-row {
  grid-template-columns: 1fr;
}

.sample-delivery-group {
  margin-bottom: 0;
}

.sample-delivery-card {
  padding: 22px 24px 18px;
  border: 1.5px solid var(--color-accent, #ffc233);
  background: rgba(255, 194, 51, 0.04);
  border-radius: 16px;
  box-shadow: 0 4px 16px rgba(255, 194, 51, 0.08);
}

/* v5.5k：.sample-delivery-heading 残壳删除（0 使用方，左右饰线已于 v5.5j 删） */

/* 🔴 v5.5j：.sample-delivery-heading 左右 1px 渐变饰线删除（全站禁装饰线；该类现无使用方，顺手清死规则） */

.sample-delivery-hint {
  text-align: center;
  font-size: 12px;
  color: var(--color-text-secondary);
  margin-bottom: 16px;
}

.sample-fields {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  margin-top: 10px;
}

.sample-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.sample-field-label {
  font-size: 13px;
  color: var(--color-text-secondary);
  font-weight: 500;
}

.sample-special {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px dashed var(--color-border);
}

.sample-special-label {
  display: block;
  font-size: 13px;
  color: var(--color-text-secondary);
  font-weight: 500;
  margin-bottom: 8px;
}

@media (max-width: 768px) {
  .sample-fields {
    grid-template-columns: 1fr;
  }
}

/* 超市 */
.supermarket-section {
  padding: 48px 0 80px;
}

.supermarket-supplier-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  justify-content: center;
  margin-bottom: 44px;
  padding: 18px 24px;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}

.supplier-bar-item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  font-weight: 500;
  color: var(--color-text-secondary);
}

.supplier-bar-item svg {
  color: var(--color-primary);
}

.supermarket-grid.three-col {
  grid-template-columns: repeat(3, 1fr);
}

.supermarket-grid.two-col {
  grid-template-columns: repeat(2, 1fr);
  margin-top: 28px;
}

.supermarket-icon.navy {
  background: #e8eef5;
  color: var(--color-navy);
  box-shadow: 0 8px 20px rgba(0, 119, 255, 0.1);
}

.supermarket-icon.purple {
  background: var(--color-purple-soft);
  color: var(--color-purple);
  box-shadow: 0 8px 20px rgba(0, 119, 255, 0.12);
}

.supermarket-icon.teal {
  background: #e8f5f3;
  color: #0d9488;
  box-shadow: 0 8px 20px rgba(13, 148, 136, 0.1);
}

@media (max-width: 992px) {
  .supermarket-grid.three-col {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 768px) {
  .supermarket-grid.three-col,
  .supermarket-grid.two-col {
    grid-template-columns: 1fr;
  }
}

/* 消息中心已并入工作台右侧栏（见 Workbench V3 样式 .wb-msg-*） */

.supermarket-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 28px;
  margin-bottom: 40px;
}

.supermarket-card {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 40px 36px;
  box-shadow: var(--shadow-sm);
  transition: var(--transition);
}

.supermarket-icon {
  width: 72px;
  height: 72px;
  border-radius: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 24px;
}

.supermarket-icon.blue {
  background: var(--color-primary-soft);
  color: var(--color-primary);
  box-shadow: 0 8px 20px rgba(0, 119, 255, 0.12);
}

.supermarket-icon.orange {
  background: var(--color-accent-light);
  color: var(--color-accent-dark);
  box-shadow: 0 8px 20px rgba(245, 166, 35, 0.14);
}

.supermarket-card h2 {
  font-size: 24px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 12px;
}

.supermarket-card p {
  color: var(--color-text-secondary);
  line-height: 1.7;
  margin-bottom: 22px;
  min-height: 58px;
}

.supermarket-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 28px;
}

.sm-tag {
  display: inline-block;
  padding: 5px 12px;
  background: #f8fbff;
  color: var(--color-text-secondary);
  border-radius: 6px;
  font-size: 12px;
  border: 1px solid #e1edfa;
  transition: var(--transition);
}

.sm-tag:hover {
  background: var(--color-primary-soft);
  color: var(--color-primary);
  border-color: var(--color-primary-light);
}

.supermarket-card .btn {
  border-radius: var(--v6-radius-full);
  padding: 11px 24px;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.3px;
  box-shadow: none;
  background: var(--color-white);
  color: var(--color-navy);
  border: 1px solid var(--color-border);
  transition: var(--transition);
}

.supermarket-card .btn:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: var(--color-primary-soft);
  transform: translateY(-2px);
  box-shadow: none;
}

.supermarket-card .btn-accent {
  color: var(--color-accent-dark);
  border-color: rgba(245, 166, 35, 0.35);
  background: #fffdfa;
}

.supermarket-card .btn-accent:hover {
  background: var(--color-accent-light);
  border-color: var(--color-accent);
  color: var(--color-accent-dark);
}

.supermarket-notice {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 18px 22px;
  background: var(--color-primary-soft);
  border-radius: var(--radius-md);
  color: var(--color-primary-dark);
  font-size: 14px;
  line-height: 1.6;
}

.supermarket-notice svg {
  flex-shrink: 0;
  margin-top: 2px;
}

@media (max-width: 768px) {
  .supermarket-grid {
    grid-template-columns: 1fr;
  }

  .supermarket-card {
    padding: 28px 24px;
  }

  .supermarket-card p {
    min-height: auto;
  }
}

/* ============================================================
   法律文档与协议页面
   ============================================================ */
.legal-doc {
  display: flex;
  gap: 48px;
  align-items: flex-start;
}

.legal-doc-toc {
  flex: 0 0 220px;
  position: sticky;
  top: 100px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.legal-doc-toc a {
  display: block;
  padding: 10px 16px;
  border-radius: var(--radius-sm);
  font-size: 14px;
  color: var(--color-text-secondary);
  transition: var(--transition);
  border-left: 3px solid transparent;
}

.legal-doc-toc a:hover,
.legal-doc-toc a.active {
  background: var(--color-primary-soft);
  color: var(--color-primary);
  border-left-color: var(--color-primary);
  font-weight: 600;
}

.legal-doc-body {
  flex: 1 1 auto;
  min-width: 0;
  background: var(--color-white);
  border: none;
  border-radius: var(--radius-lg);
  padding: 48px 56px;
  box-shadow: var(--shadow-sm);
}

.legal-effective {
  font-size: 13px;
  color: var(--color-text-muted);
  margin-bottom: 8px;
}

.legal-preface {
  font-size: 15px;
  color: var(--color-text-secondary);
  line-height: 1.8;
  margin-bottom: 32px;
  padding-bottom: 28px;
  border-bottom: 1px solid var(--color-border);
}

.legal-section {
  margin-bottom: 36px;
}

.legal-section h2 {
  font-size: 20px;
  font-weight: 700;
  color: var(--color-navy);
  margin: 0 0 14px;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--color-primary-soft);
}

.legal-section p {
  font-size: 15px;
  line-height: 1.9;
  color: var(--color-text);
  margin-bottom: 12px;
}

.legal-section p strong {
  color: var(--color-navy);
}

.legal-back {
  margin-top: 44px;
  padding-top: 28px;
  border-top: 1px solid var(--color-border);
}

@media (max-width: 992px) {
  .legal-doc {
    flex-direction: column;
  }
  .legal-doc-toc {
    position: static;
    flex: 1 1 auto;
    width: 100%;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 8px;
  }
  .legal-doc-toc a {
    white-space: nowrap;
    border-left: none;
    border-bottom: 3px solid transparent;
  }
  .legal-doc-toc a.active {
    border-left-color: transparent;
    border-bottom-color: var(--color-primary);
  }
  .legal-doc-body {
    padding: 32px 28px;
  }
}

@media (max-width: 768px) {
  .legal-doc-toc {
    gap: 6px;
  }
  .legal-doc-toc a {
    padding: 8px 12px;
    font-size: 13px;
  }
  .legal-doc-body {
    padding: 24px 20px;
  }
  .legal-section h2 {
    font-size: 18px;
  }
  .legal-section p {
    font-size: 14px;
  }
}

/* ============================================================
   工作台 V4 — 简约商务高级排版
   ============================================================ */
.wb-page {
  /* 顶部 104px = 固定导航栏 72px + 与导航之间呼吸空间 32px */
  padding: 104px 0 72px;
  background: linear-gradient(180deg, #f6f8fb 0%, #f0f3f7 100%);
  min-height: 100vh;
}

.wb-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 28px 32px;
  margin-bottom: 24px;
  background: #ffffff;
  border: 1px solid #e8edf3;
  border-radius: 18px;
  box-shadow: 0 4px 20px rgba(0, 119, 255, 0.04);
}

.wb-greeting {
  display: flex;
  align-items: center;
  gap: 16px;
}

.wb-avatar {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--color-primary) 0%, #0077FF 100%);
  color: #fff;
  font-size: 20px;
  font-weight: 700;
  flex-shrink: 0;
}

.wb-greeting-title {
  font-size: 20px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 4px;
}

.wb-greeting-meta {
  font-size: 13px;
  color: var(--color-text-secondary);
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}

.wb-org {
  color: var(--color-navy);
  font-weight: 600;
}

.wb-divider {
  color: #cbd5e1;
}

.wb-role-tag {
  display: inline-block;
  padding: 2px 8px;
  background: var(--color-primary-soft);
  color: var(--color-primary);
  border-radius: 12px;
  font-size: 12px;
  font-weight: 600;
}

/* ========================================
Workbench V3 我的工作台（后台式布局）
======================================== */
/* 角色切换（分段控件） */
.wb-role-switch {
  display: inline-flex;
  gap: 6px;
  flex: 1;
  min-width: 0;
  padding: 4px;
  background: #e8edf3;
  /* 🟡 v3.15（2026-10-03 用户指令「灰色底改成跟按钮一样的圆弧形」，截图=工单详情视角切换）：
     12px → 999px 与内部按钮(--v6-radius-full)同弧；settings(.st-page)/workbench(#wbv7) 本就 999px，
     本条为三页统一胶囊化（order-detail body 无页面类，唯此基础层生效） */
  border-radius: 999px;
  }

.wb-role-btn {
  /* 🟡 v390（2026-10-01 用户指令「文字颜色改：#0077FF」，截图=工单详情视角切换） */
  /* 🟡 v390：与视角切换同组件同字色 */
  flex: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 9px 20px;
  border: none;
  border-radius: var(--v6-radius-full);
  background: transparent;
  color: #0077FF;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: var(--transition);
  font-family: inherit;
  white-space: nowrap;
  }

.wb-kpis {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 18px;
  margin-bottom: 24px;
}

.wb-kpi:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0, 119, 255, 0.06);
  border-color: #d6e0eb;
}

.wb-kpi-icon {
  width: 48px;
  height: 44px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.wb-kpi-icon svg {
  width: 24px;
  height: 24px;
}

.wb-kpi-icon--blue { background: #e8f1ff; color: var(--color-primary); }
.wb-kpi-icon--amber { background: #fff5e0; color: #d99000; }
.wb-kpi-icon--purple { background: #f0ecff; color: #0077FF; }
.wb-kpi-icon--teal { background: #e6f7f1; color: #0d9488; }

.wb-kpi-num {
    font-size: 26px;
    font-weight: 700;
    color: var(--color-navy);
    line-height: 1.2;
    letter-spacing: -0.5px;
  }

.wb-kpi-num small {
  font-size: 13px;
  font-weight: 500;
  color: var(--color-text-secondary);
  margin-left: 2px;
}

.wb-kpi-label {
  font-size: 13px;
  color: var(--color-text-secondary);
  margin-top: 2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  }

.wb-layout {
  display: grid;
  grid-template-columns: 1.65fr 1fr;
  gap: 24px;
  align-items: start;
}

/* 主区两栏布局 */
.wb-main, .wb-side {
  display: flex;
  flex-direction: column;
  gap: 24px;
  min-width: 0;
  }

/* 模块卡片 */
.wb-module {
  background: #ffffff;
  border: 1px solid #e8edf3;
  border-radius: 18px;
  box-shadow: 0 4px 20px rgba(0, 119, 255, 0.04);
  overflow: hidden;
  padding: 24px;
  transition: var(--transition);
  }

.wb-module:hover {
  box-shadow: 0 6px 24px rgba(0, 119, 255, 0.06);
}

.wb-module-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 15px 20px;
  border-bottom: 1px solid var(--color-border);
  gap: 12px;
  margin-bottom: 18px;
  }

.wb-module-title {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 16px;
  font-weight: 700;
  color: var(--color-navy);
  min-width: 0;
  }

/* v5.5k：模块标题竖条 .wb-module-title .bar（含 .yellow）删除（markup 已同步退役） */

.wb-module-more {
  font-size: 13px;
  font-weight: 500;
  color: var(--color-text-secondary);
  display: inline-flex;
  align-items: center;
  gap: 4px;
  transition: var(--transition);
  white-space: nowrap;
  text-decoration: none;
  }

.wb-module-more svg {
  width: 14px;
  height: 14px;
}

.wb-module-more:hover {
  color: var(--color-primary);
}

.wb-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

/* 业务列表表格 */
.wb-table th {
  text-align: left;
  padding: 14px 12px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--color-text-secondary);
  background: #fafcff;
  border-bottom: 1px solid #eef2f7;
  white-space: nowrap;
  }

.wb-table td {
  padding: 14px 12px;
  font-size: 14px;
  color: var(--color-text);
  border-bottom: 1px solid #f5f7fa;
  white-space: nowrap;
  vertical-align: middle;
  }

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

.wb-table tbody tr:hover {
  background: #fbfdff;
}

.wb-proj-name {
  font-weight: 600;
  color: var(--color-navy);
  max-width: 240px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  }

.wb-proj-cat {
  display: inline-block;
  padding: 4px 10px;
  background: #f5f7fa;
  border-radius: 6px;
  font-size: 12px;
  color: var(--color-text-secondary);
  white-space: nowrap;
}

.wb-proj-meta {
  color: var(--color-text-secondary);
  font-size: 13px;
  white-space: nowrap;
  }

/* 状态标签 */
.wb-status {
  display: inline-block;
  align-items: center;
  gap: 6px;
  padding: 5px 10px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
  }

.wb-status.blue { background: #eef6ff; color: #0077FF; }
.wb-status.yellow { background: #fff5e0; color: #d99000; }
.wb-status.green { background: #e6f7f1; color: #0d9488; }
.wb-status.purple { background: #f0ecff; color: #0077FF; }
.wb-status.gray { background: #eef2f7; color: #64748b; }

/* 快捷服务宫格 */
.wb-quick-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  padding: 18px 20px;
  }

.wb-quick {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    padding: 16px;
    border: 1px solid #e8edf3;
    border-radius: 14px;
    cursor: pointer;
    transition: var(--transition);
    background: #fbfcff;
    color: var(--color-text);
    font-size: 14px;
    font-weight: 500;
    text-decoration: none;
  }

.wb-quick:hover {
  background: #ffffff;
  border-color: var(--color-primary-light);
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(0, 119, 255, 0.08);
}

.wb-quick-icon {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.wb-quick-icon svg {
  width: 20px;
  height: 20px;
}

.wb-quick-icon--blue { background: #e8f1ff; color: var(--color-primary); }
.wb-quick-icon--amber { background: #fff5e0; color: #d99000; }
.wb-quick-icon--teal { background: #e6f7f1; color: #0d9488; }
.wb-quick-icon--purple { background: #f0ecff; color: #0077FF; }
.wb-quick-icon--rose { background: #fff0f3; color: #e11d48; }
.wb-quick-icon--cyan { background: #e8f8ff; color: #0891b2; }

/* 工单表格 · 操作列 */
.wb-acts {
  white-space: nowrap;
}

.wb-act {
  display: inline-block;
  margin-right: 12px;
  font-size: 13px;
  font-weight: 500;
  color: var(--color-primary);
  text-decoration: none;
  cursor: pointer;
  transition: var(--transition);
}

.wb-act:last-child {
  margin-right: 0;
}

.wb-act:hover {
  color: var(--color-accent-dark);
  text-decoration: underline;
}

.wb-act.danger {
  color: #e11d48;
}

.wb-act.danger:hover {
  color: #be123c;
}

.wb-msg-chips,
.wb-filter-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 14px;
}

.wb-msg-chip,
.wb-filter-chip {
  padding: 6px 12px;
  border: 1px solid transparent;
  border-radius: 20px;
  background: #f5f7fa;
  color: var(--color-text-secondary);
  font-size: 12px;
  cursor: pointer;
  transition: var(--transition);
}

.wb-msg-chip:hover,
.wb-filter-chip:hover {
  background: #e8f1ff;
  color: var(--color-primary);
}

.wb-msg-chip.active,
.wb-filter-chip.active {
  background: var(--color-primary);
  color: #ffffff;
}

.wb-msg-list {
  padding: 8px 0 4px;
  max-height: 340px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  }

.wb-msg-row {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 0;
  border-bottom: 1px solid #f5f7fa;
  cursor: pointer;
  transition: var(--transition);
  color: var(--color-text);
  text-decoration: none;
  }

.wb-msg-row:last-child {
  border-bottom: none;
}

.wb-msg-row:hover {
  background: #fbfdff;
}

.wb-msg-ic {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.wb-msg-ic svg {
  width: 18px;
  height: 18px;
}

.wb-msg-ic.report { background: #e8f1ff; color: var(--color-primary); }
.wb-msg-ic.chat { background: #fff5e0; color: #d99000; }
.wb-msg-ic.remind { background: #e6f7f1; color: #0d9488; }
.wb-msg-ic.system { background: #f0ecff; color: #0077FF; }

.wb-msg-main {
  flex: 1;
  min-width: 0;
}

.wb-msg-name {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  font-size: 14px;
  font-weight: 600;
  color: var(--color-navy);
}

.wb-msg-name .tag {
  font-size: 11px;
  font-weight: 500;
  padding: 3px 8px;
  border-radius: 12px;
  background: #f5f7fa;
  color: var(--color-text-secondary);
  flex-shrink: 0;
  white-space: nowrap;
  }

.wb-msg-txt {
  display: block;
  font-size: 13px;
  color: var(--color-text-secondary);
  line-height: 1.6;
  margin-top: 4px;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.wb-msg-time {
  display: block;
  font-size: 12px;
  color: var(--color-text-muted);
  margin-top: 4px;
}

.wb-msg-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--color-primary);
  margin-top: 8px;
  flex-shrink: 0;
  display: none;
}

.wb-msg-row.unread .wb-msg-dot {
  display: block;
}

.wb-msg-foot {
  padding: 10px 20px 14px;
  text-align: center;
  border-top: 1px solid #f0f5fb;
  margin-top: 14px;
  }

.wb-msg-foot button {
  background: transparent;
  border: none;
  font-size: 13px;
  font-weight: 500;
  color: var(--color-primary);
  cursor: pointer;
  font-family: inherit;
  transition: var(--transition);
  padding: 6px 14px;
  border-radius: var(--v6-radius-full);
  }

.wb-msg-foot button:hover {
  color: var(--color-primary-dark);
  background: #eef6ff;
  }

@media (max-width: 1200px) {
  .wb-layout {
    grid-template-columns: 1.4fr 1fr;
  }
}

@media (max-width: 992px) {
  .wb-layout {
    grid-template-columns: 1fr;
  }

  .wb-side {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 24px;
  }

  .wb-side .wb-module {
    margin-bottom: 0;
  }
}

@media (max-width: 768px) {
  .wb-topbar {
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
  }

  .wb-kpis {
    grid-template-columns: repeat(2, 1fr);
  }

  .wb-side {
    grid-template-columns: 1fr;
  }

  .wb-quick-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .wb-table th,
  .wb-table td {
    padding: 12px 10px;
    font-size: 13px;
  }
}

@media (max-width: 480px) {
  .wb-kpis {
    grid-template-columns: 1fr;
  }

  .wb-quick-grid {
    grid-template-columns: 1fr;
  }
}

/* 发布页底部协议提示（单行、精致、可点击） */
.form-agreement {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-top: 16px;
  font-size: 13px;
  line-height: 1.5;
  color: var(--color-text-secondary);
  text-align: center;
}

.form-agreement a {
  color: var(--color-primary);
  font-weight: 500;
  white-space: nowrap;
}

.form-agreement a:hover {
  color: var(--color-accent-dark);
  text-decoration: underline;
}

@media (max-width: 480px) {
  .form-agreement {
    font-size: 12px;
    flex-wrap: wrap;
  }
}


/* ============================================================
   在线沟通（chat.html）— 供需撮合后接通的询盘聊天
   ============================================================ */
.chat-app {
  display: grid;
  grid-template-columns: 340px minmax(0, 1fr);
  gap: 20px;
  align-items: stretch;
  min-height: 640px;
}

/* ---------- 左栏：会话列表 ---------- */
.chat-list-pane {
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-width: 0;
}

.chat-rule-card {
  display: flex;
  gap: 12px;
  padding: 16px 18px;
  background: linear-gradient(135deg, #f6f9ff 0%, #f2f7ff 100%);
  border: 1px solid rgba(0, 119, 255, 0.18);
  border-radius: 14px;
}

.chat-rule-icon {
  width: 34px;
  height: 34px;
  border-radius: 10px;
  background: var(--color-white);
  border: 1px solid rgba(0, 119, 255, 0.2);
  color: var(--color-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.chat-rule-body strong {
  display: block;
  font-size: 14px;
  font-weight: 600;
  color: var(--color-navy);
  margin-bottom: 4px;
}

.chat-rule-body p {
  font-size: 12.5px;
  line-height: 1.7;
  color: var(--color-text-secondary);
}

.chat-list-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  padding: 0 4px;
  font-size: 15px;
  font-weight: 600;
  color: var(--color-navy);
}

.chat-list-head small {
  font-size: 12px;
  font-weight: 400;
  color: var(--color-text-3);
}

.chat-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  overflow-y: auto;
  padding-right: 2px;
}

.chat-item {
  display: flex;
  gap: 12px;
  padding: 14px 16px;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: 14px;
  cursor: pointer;
  transition: var(--transition);
}

.chat-item:hover {
  border-color: rgba(0, 119, 255, 0.35);
  background: #fbfdff;
}

.chat-item.active {
  border-color: rgba(0, 119, 255, 0.55);
  background: #f4f8ff;
  box-shadow: 0 2px 12px rgba(0, 119, 255, 0.08);
}

.chat-item.unmatched {
  cursor: default;
}

.chat-item.unmatched:hover {
  border-color: var(--color-border);
  background: var(--color-white);
}

.chat-item.unmatched.active {
  border-color: var(--color-border);
  background: var(--color-bg-soft);
  box-shadow: none;
}

.chat-item-avatar {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: linear-gradient(135deg, #0077FF 0%, #0077FF 100%);
  color: #fff;
  font-size: 16px;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.chat-item-avatar.lock {
  background: #eef2f7;
  color: #9aa8b8;
}

.chat-item-body {
  flex: 1;
  min-width: 0;
}

.chat-item-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
}

.chat-item-name {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-navy);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.chat-item-time {
  font-size: 11.5px;
  color: var(--color-text-3);
  flex-shrink: 0;
}

.chat-item-proj {
  font-size: 12px;
  color: var(--color-primary);
  margin-top: 3px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.chat-item.unmatched .chat-item-proj {
  color: var(--color-text-3);
}

.chat-item-bottom {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 5px;
}

.chat-item-last {
  flex: 1;
  min-width: 0;
  font-size: 12.5px;
  color: var(--color-text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.chat-item-badge {
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 9px;
  background: #f54e5e;
  color: #fff;
  font-size: 11px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.chat-item-locktag {
  flex-shrink: 0;
  padding: 2px 8px;
  border-radius: 6px;
  background: #eef2f7;
  color: #8a97a8;
  font-size: 11px;
  white-space: nowrap;
}

/* AI Chat */
/* ---------- 右栏：聊天窗口 ---------- */
.chat-window {
  max-width: 820px;
  margin: 0 auto;
  background: var(--color-white);
  border-radius: 18px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--color-border);
  overflow: hidden;
  min-width: 0;
  }

.chat-win-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 24px;
  border-bottom: 1px solid var(--color-border);
}

.chat-peer {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}

.chat-peer-avatar {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: linear-gradient(135deg, #0077FF 0%, #0077FF 100%);
  color: #fff;
  font-size: 17px;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.chat-peer-name {
  font-size: 15px;
  font-weight: 600;
  color: var(--color-navy);
}

.chat-peer-meta {
  font-size: 12px;
  color: var(--color-text-secondary);
  margin-top: 3px;
  display: flex;
  align-items: center;
  gap: 6px;
}

.chat-online {
  color: #16a34a;
  font-size: 12px;
}

.chat-win-context {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 10px 24px;
  background: #f8fafd;
  border-bottom: 1px solid var(--color-border);
  font-size: 12.5px;
  color: var(--color-text-secondary);
}

.chat-ctx-label {
  padding: 2px 8px;
  border-radius: 6px;
  background: var(--color-primary);
  color: #fff;
  font-size: 11.5px;
  font-weight: 600;
  flex-shrink: 0;
}

.chat-ctx-title {
  font-weight: 600;
  color: var(--color-navy);
}

.chat-ctx-dot {
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: #c3cdd8;
  flex-shrink: 0;
}

/* 消息区 */
.chat-win-body {
  flex: 1;
  padding: 22px 24px;
  overflow-y: auto;
  background: linear-gradient(180deg, #fbfcfe 0%, #f7f9fc 100%);
  display: flex;
  flex-direction: column;
  gap: 16px;
  min-height: 380px;
  max-height: 520px;
}

.chat-time-divider {
  align-self: center;
  font-size: 11.5px;
  color: #9aa8b8;
  background: #eef2f7;
  padding: 4px 14px;
  border-radius: 999px;
}

/* ===== 联系方式授权 ===== */
.chat-win-head-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}

.chat-auth-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  border-radius: 999px;
  border: 1px solid #e5484d;
  background: transparent;
  color: #e5484d;
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: all 0.2s ease;
}

.chat-auth-btn:hover {
  background: #fff5f5;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(229, 72, 77, 0.18);
}

.chat-auth-btn.authed {
  border-color: #34c98e;
  background: #e9faf3;
  color: #0e9f6e;
}

.chat-auth-btn.authed:hover {
  background: #d8f4e9;
  box-shadow: 0 4px 12px rgba(52, 201, 142, 0.25);
}

.chat-msg-system {
  align-self: center;
  font-size: 12px;
  color: #0e9f6e;
  background: #e9faf3;
  border: 1px solid #c9f0e0;
  padding: 5px 16px;
  border-radius: 999px;
  max-width: 92%;
  text-align: center;
  line-height: 1.6;
}

.chat-msg-system-time {
  display: block;
  font-size: 10.5px;
  color: #7fc9ac;
}

.auth-modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(15, 27, 43, 0.45);
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  backdrop-filter: blur(2px);
}

.auth-modal {
  background: var(--color-white, #fff);
  border-radius: 16px;
  box-shadow: 0 20px 50px rgba(15, 27, 43, 0.25);
  max-width: 430px;
  width: 100%;
  padding: 28px 26px 24px;
  text-align: center;
  animation: authModalIn 0.22s ease;
}

@keyframes authModalIn {
  from { opacity: 0; transform: translateY(12px) scale(0.97); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

.auth-modal-icon {
  width: 52px;
  height: 52px;
  border-radius: 14px;
  background: #fff3d6;
  color: #b26a00;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 14px;
}

.auth-modal h3 {
  font-size: 17px;
  margin: 0 0 10px;
  color: var(--color-text, #1a2b3c);
}

.auth-modal p {
  font-size: 13.5px;
  color: var(--color-text-secondary, #5b6b7b);
  line-height: 1.75;
  margin: 0 0 12px;
}

.auth-modal-note {
  font-size: 12px;
  color: #8a99a8;
  background: #f5f7fa;
  border-radius: 8px;
  padding: 9px 13px;
  margin: 0 0 18px;
  line-height: 1.65;
  text-align: left;
}

.auth-modal-actions {
  display: flex;
  gap: 12px;
  justify-content: center;
}

.auth-modal-actions .btn {
  min-width: 112px;
}

/* 🔴 v6.47（2026-10-22 用户指令）：danger 族换鲜红色（原 #e5484d 偏暗玫红，「不够警示」）。
   影响面：settings.html 注销当前账号 / admin.html 驳回·判定恶意差评 / chat.html 确认关闭
   —— 同为破坏性确认语义，全站统一一个红，不分页各改各的。 */
.btn-danger {
  background: #f5222d !important;
  border-color: #f5222d !important;
  color: #fff !important;
}

.btn-danger:hover {
  background: #cf1322 !important;
  border-color: #cf1322 !important;
}

.chat-msg {
  display: flex;
  gap: 10px;
  max-width: 78%;
}

.chat-msg-me {
  align-self: flex-end;
  flex-direction: row-reverse;
}

.chat-msg-them {
  align-self: flex-start;
}

.chat-msg-avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: #e3ecfb;
  color: var(--color-primary);
  font-size: 13px;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.chat-msg-me .chat-msg-avatar {
  background: linear-gradient(135deg, #0077FF 0%, #0077FF 100%);
  color: #fff;
}

.chat-msg-col {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.chat-msg-me .chat-msg-col {
  align-items: flex-end;
}

.chat-msg-bubble {
  padding: 11px 14px;
  border-radius: 14px;
  font-size: 13.5px;
  line-height: 1.7;
  color: var(--color-text);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-top-left-radius: 4px;
  word-break: break-word;
}

.chat-msg-me .chat-msg-bubble {
  background: linear-gradient(135deg, #0077FF 0%, #0077FF 100%);
  border-color: transparent;
  color: #fff;
  border-top-left-radius: 14px;
  border-top-right-radius: 4px;
}

.chat-msg-time {
  font-size: 11px;
  color: #a8b3c1;
  padding: 0 4px;
}

/* 附件消息 */
.chat-msg-file {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 220px;
  cursor: pointer;
}

.chat-file-icon {
  width: 38px;
  height: 38px;
  border-radius: 10px;
  background: #eef3fb;
  color: var(--color-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.chat-msg-me .chat-msg-file .chat-file-icon {
  background: rgba(255, 255, 255, 0.18);
  color: #fff;
}

.chat-file-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.chat-file-info b {
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.chat-file-info small {
  font-size: 11px;
  opacity: 0.75;
}

/* 输入区 */
.chat-win-input {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 20px;
  border-top: 1px solid var(--color-border);
}

.chat-attach-btn {
  width: 40px;
  height: 40px;
  border-radius: var(--v6-radius-full);
  border: 1px solid var(--color-border);
  background: var(--color-white);
  color: var(--color-text-secondary);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: var(--transition);
  flex-shrink: 0;
}

.chat-attach-btn:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: #f6f9ff;
}

.chat-win-text {
  flex: 1;
  height: 44px;
  padding: 0 16px;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  font-size: 14px;
  color: var(--color-text);
  font-family: inherit;
  background: var(--color-bg);
  transition: var(--transition);
}

.chat-win-text:focus {
  outline: none;
  border-color: var(--color-primary);
  background: var(--color-white);
  box-shadow: 0 0 0 3px rgba(0, 119, 255, 0.1);
}

.chat-send-btn {
  height: 40px;
  padding: 0 22px;
  flex-shrink: 0;
}

.chat-win-hint {
  padding: 0 20px 14px;
  font-size: 11.5px;
  color: #a8b3c1;
}

/* ---------- 未匹配锁定态 ---------- */
.chat-locked {
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  padding: 60px 40px;
  text-align: center;
  min-height: 640px;
  display: flex;
}

.chat-locked-icon {
  width: 88px;
  height: 88px;
  border-radius: 24px;
  background: #f1f4f9;
  color: #9aa8b8;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 4px;
}

.chat-locked h3 {
  font-size: 20px;
  font-weight: 700;
  color: var(--color-navy);
}

.chat-locked p {
  font-size: 14px;
  line-height: 1.8;
  color: var(--color-text-secondary);
}

.chat-locked-rule {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 14px 22px;
  background: #f8fafd;
  border: 1px dashed #c9d4e0;
  border-radius: 12px;
  font-size: 13px;
  color: var(--color-text-secondary);
  line-height: 1.7;
}

.chat-locked-rule strong {
  color: var(--color-primary);
  font-size: 12.5px;
}

.chat-locked-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 6px;
}

/* ---------- 响应式 ---------- */
@media (max-width: 992px) {
  .chat-app {
    grid-template-columns: 1fr;
  }

  .chat-list {
    max-height: 320px;
  }

  .chat-win-inner,
  .chat-locked {
    min-height: 560px;
  }
}

/* 需求大厅 · 已撮合卡片的在线沟通入口 */
.dh-card-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}

.dh-chat-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 7px 14px;
  border-radius: var(--v6-radius-full);
  background: #eaf3ff;
  color: var(--color-primary);
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  transition: var(--transition);
  white-space: nowrap;
}

/* ========================================
   Organization Register
   ======================================== */
.page-simple {
  padding-top: 104px;
  padding-bottom: 64px;
  background: var(--color-bg);
  min-height: 100vh;
}

.org-reg-card {
  max-width: 920px;
  margin: 0 auto;
  background: var(--color-white);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--color-border);
  overflow: hidden;
}

.org-reg-card .reg-head {
  padding: 40px 48px 28px;
  background: linear-gradient(135deg, rgba(0, 119, 255, 0.06), rgba(255, 196, 0, 0.05));
  border-bottom: 1px solid var(--color-border);
}

.org-reg-card .reg-head h1 {
  font-size: 28px;
  font-weight: 800;
  color: var(--color-navy);
  margin-bottom: 10px;
}

.org-reg-card .reg-head p {
  font-size: 15px;
  color: var(--color-text-secondary);
}

.org-form {
  padding: 36px 48px 48px;
}

.org-section {
  margin-bottom: 40px;
}

.org-section-title {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 18px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 24px;
}

.org-section-title span {
  width: 30px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-primary);
  color: var(--color-white);
  border-radius: 50%;
  font-size: 14px;
  font-weight: 700;
}

.org-section-tip {
  font-size: 14px;
  color: var(--color-text-secondary);
  margin-bottom: 16px;
  line-height: 1.6;
}

.qual-tabs {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.qual-card {
  padding: 24px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-white);
}

.qual-card h3 {
  font-size: 16px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 18px;
  padding-bottom: 12px;
  border-bottom: 1px dashed var(--color-border);
}

.upload-box {
  border: 2px dashed var(--color-border);
  border-radius: var(--radius-md);
  padding: 28px;
  text-align: center;
  cursor: pointer;
  transition: var(--transition);
}

.upload-box:hover {
  border-color: var(--color-primary);
  background: var(--color-primary-soft);
}

.upload-placeholder svg {
  color: var(--color-primary);
  margin-bottom: 10px;
}

.upload-placeholder p {
  font-size: 14px;
  color: var(--color-text-secondary);
}

.cap-toolbar {
  display: flex;
  gap: 12px;
  margin-bottom: 16px;
}

.cap-table-wrap {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  overflow-x: auto;
}

.cap-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

.cap-table th,
.cap-table td {
  padding: 14px 16px;
  text-align: left;
  border-bottom: 1px solid var(--color-border);
}

.cap-table th {
  background: var(--color-bg);
  font-weight: 600;
  color: var(--color-navy);
}

.cap-table td input {
  min-width: 140px;
}

.cap-del {
  font-size: 13px;
  color: #dc2626;
  background: none;
  border: none;
  cursor: pointer;
}

.cap-del:hover {
  text-decoration: underline;
}

.org-agreement {
  padding: 18px 20px;
  background: var(--color-bg);
  border-radius: var(--radius-md);
}

.org-agreement .checkbox-label {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 14px;
  color: var(--color-text-secondary);
  line-height: 1.6;
}

.org-agreement .checkbox-label a {
  color: var(--color-primary);
}

.org-agreement .checkbox-label input {
  margin-top: 3px;
}

@media (max-width: 768px) {
  .org-reg-card .reg-head,
  .org-form {
    padding: 24px;
  }
}

/* ========================================
   Unified Auth / Institution Register
   ======================================== */
.auth-form .form-hint {
  font-size: 13px;
  color: var(--color-text-secondary);
  margin-top: 8px;
  margin-bottom: 0;
  line-height: 1.5;
}

.auth-form .org-fields {
  margin-top: 4px;
  margin-bottom: 20px;
  padding: 20px;
  background: #f8fafd;
  border: 1px solid var(--color-border);
  border-radius: 12px;
}

.auth-form .form-section-title {
  font-size: 15px;
  font-weight: 700;
  color: var(--color-navy);
  margin: 0 0 14px 0;
  padding-bottom: 10px;
  border-bottom: 1px dashed var(--color-border);
}

.auth-form .form-section-title .required {
  color: #e53e3e;
}

.auth-form .org-fields .form-section-title:not(:first-child) {
  margin-top: 24px;
}

.auth-form .cap-toolbar {
  display: flex;
  gap: 10px;
  margin-bottom: 12px;
}

.auth-form .cap-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--color-border);
  border-radius: 10px;
  background: var(--color-white);
}

.auth-form .cap-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  min-width: 520px;
}

.auth-form .cap-table th {
  background: #f1f5fb;
  color: var(--color-navy);
  font-weight: 600;
  text-align: left;
  padding: 10px 12px;
  border-bottom: 1px solid var(--color-border);
  white-space: nowrap;
}

.auth-form .cap-table td {
  padding: 8px 10px;
  border-bottom: 1px solid var(--color-border);
  vertical-align: middle;
}

.auth-form .cap-table tr:last-child td {
  border-bottom: none;
}

.auth-form .cap-table .form-input {
  min-width: 100px;
  font-size: 13px;
  padding: 8px 10px;
}

.auth-form .cap-del {
  padding: 4px 10px;
  font-size: 12px;
  color: var(--color-accent-dark);
  background: transparent;
  border: 1px solid currentColor;
  border-radius: 6px;
  cursor: pointer;
  transition: var(--transition);
}

.auth-form .cap-del:hover {
  background: var(--color-accent-dark);
  color: var(--color-white);
}

.auth-form .checkbox-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}

.auth-form .checkbox-grid .checkbox-chip {
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  padding: 10px 12px;
  min-height: 44px;
  line-height: 1.3;
}

.auth-form .checkbox-grid .checkbox-chip span {
  font-weight: 600;
}

.auth-form .checkbox-grid .checkbox-chip small {
  font-size: 12px;
  color: var(--color-text-secondary);
  font-weight: 400;
}

.auth-form .checkbox-grid .checkbox-chip.active small {
  color: var(--color-primary);
}

@media (max-width: 768px) {
  .auth-form .checkbox-grid {
    grid-template-columns: 1fr;
  }
  .auth-form .org-fields {
    padding: 16px;
  }
}

/* ========================================
   File Upload
   ======================================== */
.file-upload {
  position: relative;
  border: 1px dashed #c8d4e0;
  border-radius: var(--radius-md);
  background: var(--color-white);
  padding: 16px 18px;
  cursor: pointer;
  transition: var(--transition);
}

.file-upload:hover {
  border-color: var(--color-primary);
  background: rgba(0, 119, 255, 0.03);
}

.file-upload.has-file {
  border-style: solid;
  border-color: rgba(0, 119, 255, 0.45);
  background: rgba(0, 119, 255, 0.04);
}

.file-upload-inner {
  display: flex;
  align-items: center;
  gap: 14px;
}

.file-upload-icon {
  width: 40px;
  height: 40px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  background: rgba(0, 119, 255, 0.08);
  color: var(--color-primary);
}

.file-upload-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
}

.file-upload-text strong {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-navy);
}

.file-upload-text span {
  font-size: 12px;
  color: var(--color-text-muted);
}

.file-upload-hint {
  font-size: 12px;
  color: var(--color-text-muted);
  text-align: right;
  flex-shrink: 0;
}

.file-upload-name {
  display: none;
  align-items: center;
  gap: 8px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px dashed var(--color-border);
  font-size: 13px;
  color: var(--color-text-secondary);
}

.file-upload-name svg {
  width: 16px;
  height: 16px;
  color: var(--color-primary);
  flex-shrink: 0;
}

@media (max-width: 640px) {
  .file-upload-inner {
    flex-wrap: wrap;
  }
  .file-upload-hint {
    width: 100%;
    text-align: left;
    margin-left: 54px;
  }
}


/* ============ 服务类目（三级级联 + 四级细则输入） ============ */
.form-row--contact-qty {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}

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

.form-row--cate-detail .form-group {
  width: 100%;
}

.cate-detail-line {
  display: flex;
  gap: 10px;
  align-items: center;
  margin-top: 10px;
}

.cate-detail-line .cate-cascade {
  display: grid;
  grid-template-columns: 1fr 1fr 1.6fr;
  gap: 10px;
  width: 320px;
  flex-shrink: 0;
  min-width: 0;
}

.cate-detail-line .cate-cascade .form-select {
  width: 100%;
  min-width: 0;
}

.cate-detail-input {
  flex: 1;
  min-width: 0;
  width: 100%;
}

.cate-chosen {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
  padding: 9px 12px;
  background: var(--color-primary-soft);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  font-size: 13px;
  color: var(--color-text);
}

.cate-chosen-path {
  font-weight: 600;
}

.cate-chosen-code {
  font-family: Consolas, Monaco, monospace;
  font-size: 12px;
  color: var(--color-primary);
  background: var(--color-white);
  border: 1px solid var(--color-primary-light);
  border-radius: 6px;
  padding: 1px 8px;
}

.cate-chosen-clear {
  margin-left: auto;
  color: var(--color-text-muted);
  cursor: pointer;
  font-size: 12px;
}

.cate-chosen-clear:hover {
  color: var(--color-primary);
}

@media (max-width: 768px) {
  .form-row--contact-qty {
    grid-template-columns: 1fr;
  }

  .cate-detail-line {
    flex-direction: column;
    align-items: stretch;
  }

  .cate-detail-line .cate-cascade {
    grid-template-columns: 1fr;
    width: 100%;
  }

  .cate-detail-input {
    flex: 1 1 auto;
    width: 100%;
    min-width: 0;
  }
}

/* 机构入驻 · 检测能力类目选择 */
.cate-picker-bar {
  display: grid;
  grid-template-columns: 1fr 1.2fr 1.6fr auto;
  gap: 10px;
  align-items: center;
  margin: 10px 0 4px;
  padding: 12px;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
}

.cate-picker-bar .form-select {
  width: 100%;
}

.cate-picker-bar .btn {
  white-space: nowrap;
}

@media (max-width: 768px) {
  .cate-cascade,
  .cate-picker-bar {
    grid-template-columns: 1fr;
  }
}

/* 委托工单 · 单选组 / 发票信息 / 协议勾选 */
.radio-group {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.radio-group .radio-chip {
  flex: 0 1 auto;
}

.invoice-info-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

@media (max-width: 768px) {
  .invoice-info-grid {
    grid-template-columns: 1fr;
  }
}

.checkbox-row {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  font-size: 14px;
  color: var(--color-text);
}

.checkbox-row input[type="checkbox"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.checkbox-custom {
  width: 18px;
  height: 18px;
  border: 2px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-white);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: var(--transition);
  flex-shrink: 0;
}

.checkbox-row input[type="checkbox"]:checked + .checkbox-custom {
  background: var(--color-primary);
  border-color: var(--color-primary);
}

.checkbox-row input[type="checkbox"]:checked + .checkbox-custom::after {
  content: "";
  width: 5px;
  height: 9px;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
  margin-top: -2px;
}

.form-section--compact {
  padding-top: 16px;
  padding-bottom: 16px;
  border-top: 1px solid var(--color-border);
  margin-top: 8px;
}

/* ========================================
   工单详情页 · od-*
   ======================================== */
.od-page {
  /* 顶部 130px = fixed 导航让位（v1.30 全站删页头横幅） */
  padding: 130px 0 60px;
  background: var(--color-bg);
}

.od-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 18px;
  flex-wrap: wrap;
}

.od-back {
  /* 2026-09-28 v2.99 用户拍板：纯文字返回键太低调 → 与全站「蓝底白字胶囊」统一（同 .btn-primary 蓝渐变） */
  display: inline-flex;
  align-items: center;
  gap: 4px;
  /* 2026-09-07 用户拍板：去箭头后文字贴容器左缘显得太靠左，加缩进对齐卡片内文字 */
  margin-left: 18px;
  padding: 6px 16px;
  border-radius: 999px;
  background: linear-gradient(135deg, #0077FF 0%, #0077FF 100%);
  color: #fff;
  font-size: 13.5px;
  font-weight: 600;
  text-decoration: none;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
  transition: var(--transition);
}

.od-back::before {
  content: '‹';
  font-size: 16px;
  line-height: 1;
  margin-top: -1px;
}

.od-back:hover {
  background: linear-gradient(135deg, #0077FF 0%, #0077FF 100%);
  color: #fff;
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12);
}

/* 工单头部卡 */
.od-head {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  padding: 22px 26px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}

.od-head-main {
  min-width: 0;
  flex: 1;
}

.od-head-title {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.od-head-title h2 {
  font-size: 22px;
  font-weight: 800;
  color: var(--color-navy);
  letter-spacing: -0.3px;
}

.od-head-meta {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 8px;
  font-size: 13px;
  color: var(--color-text-secondary);
}

.od-dot {
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--color-text-muted);
}

.od-head-note {
  font-size: 12.5px;
  color: var(--color-text-muted);
}

.od-head-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(96px, 1fr));
  gap: 12px 22px;
}

.od-head-item {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding-left: 14px;
  border-left: 2px solid var(--color-border);
}

.od-head-item small {
  font-size: 12px;
  color: var(--color-text-muted);
}

.od-head-item b {
  font-size: 14.5px;
  font-weight: 700;
  color: var(--color-navy);
  white-space: nowrap;
}

/* 流程时间线 */
.od-steps {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 8px;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  padding: 18px 22px 14px;
  margin-top: 14px;
}

.od-step {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 2px;
  padding-top: 6px;
}

.od-step::before {
  content: "";
  position: absolute;
  top: 11px;
  left: -50%;
  width: 100%;
  height: 2px;
  background: var(--color-border);
}

.od-step:first-child::before {
  display: none;
}

.od-step-dot {
  position: relative;
  z-index: 1;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--color-white);
  border: 2px solid var(--color-border);
}

.od-step-name {
  font-size: 13px;
  font-weight: 600;
  color: var(--color-text-muted);
}

.od-step.done .od-step-name,
.od-step.active .od-step-name {
  color: var(--color-navy);
}

.od-step-date {
  font-size: 11.5px;
  color: var(--color-text-muted);
}

/* 双栏布局 */
.od-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 16px;
  margin-top: 16px;
  align-items: start;
}

.od-main {
  display: flex;
  flex-direction: column;
  gap: 16px;
  min-width: 0;
}

.od-side {
  display: flex;
  flex-direction: column;
  gap: 16px;
  position: sticky;
  top: 84px;
}

/* 报价对比 */
.od-quotes {
  display: flex;
  flex-direction: column;
  padding: 6px 0;
}

.od-quote-row {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 14px 22px;
  border-bottom: 1px solid #f0f5fb;
  transition: var(--transition);
}

.od-quote-row:last-child {
  border-bottom: none;
}

.od-quote-row.selected {
  background: var(--color-primary-soft);
  border-radius: var(--radius-md);
  border-bottom-color: transparent;
}

.od-quote-org {
  display: flex;
  align-items: center;
  gap: 12px;
  flex: 1;
  min-width: 0;
}

.od-quote-avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%);
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.od-quote-avatar.big {
  width: 52px;
  height: 52px;
  font-size: 20px;
  border-radius: 50%;
}

.od-quote-org-info {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.od-quote-org-info b {
  font-size: 14.5px;
  font-weight: 700;
  color: var(--color-navy);
}

.od-quote-org-info small {
  font-size: 12px;
  color: var(--color-text-muted);
  margin-top: 2px;
}

.od-quote-nums {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  white-space: nowrap;
}

.od-quote-nums b {
  font-size: 17px;
  font-weight: 800;
  color: var(--color-primary);
  letter-spacing: -0.3px;
}

.od-quote-nums small {
  font-size: 12px;
  color: var(--color-text-muted);
  margin-top: 2px;
}

.od-quote-op {
  flex-shrink: 0;
}

/* 已选机构 */
.od-org {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 16px 22px 18px;
  flex-wrap: wrap;
}

.od-org-left {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
}

.od-org-info {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.od-org-info b {
  font-size: 15px;
  font-weight: 700;
  color: var(--color-navy);
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.od-org-info small {
  font-size: 12.5px;
  color: var(--color-text-muted);
}

.od-org-tag {
  padding: 2px 8px;
  border-radius: 100px;
  background: var(--color-primary-soft);
  color: var(--color-primary);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.5px;
}

.od-org-contact {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}

.od-org-phone {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 2px;
}

.od-org-phone small {
  font-size: 11.5px;
  color: var(--color-text-muted);
}

.od-org-phone b {
  font-size: 15px;
  font-weight: 700;
  color: var(--color-navy);
  letter-spacing: 0.3px;
}

/* 沟通记录摘要 */
.od-chat-mini {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 16px 22px 18px;
}

.od-chat-row {
  display: flex;
  gap: 10px;
  align-items: flex-start;
}

.od-chat-row.me {
  flex-direction: row-reverse;
}

.od-chat-avatar {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: #eef2f8;
  color: var(--color-text-secondary);
  font-size: 13px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.od-chat-col {
  display: flex;
  flex-direction: column;
  gap: 3px;
  max-width: 76%;
}

.od-chat-row.me .od-chat-col {
  align-items: flex-end;
}

.od-chat-bubble {
  padding: 9px 14px;
  border-radius: 12px;
  background: #f4f7fb;
  font-size: 13.5px;
  color: var(--color-text);
  line-height: 1.55;
}

.od-chat-row.me .od-chat-bubble {
  background: var(--color-primary-soft);
  color: var(--color-primary-dark);
}

.od-chat-col small {
  font-size: 11.5px;
  color: var(--color-text-muted);
}

/* 附件 */
.od-files {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 16px 22px 20px;
}

.od-file-group-title {
  font-size: 12.5px;
  font-weight: 700;
  color: var(--color-text-muted);
  margin-bottom: 8px;
}

.od-file-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: #fbfdff;
  transition: var(--transition);
}

.od-file-row + .od-file-row {
  margin-top: 8px;
}

.od-file-row:hover {
  border-color: rgba(0, 119, 255, 0.35);
}

.od-file-row.waiting {
  border-style: dashed;
  background: transparent;
}

.od-file-icon {
  width: 38px;
  height: 38px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.od-file-icon svg {
  width: 19px;
  height: 19px;
}

.od-file-icon.pdf {
  background: #fdeeee;
  color: #d64545;
}

.od-file-icon.img {
  background: var(--color-primary-soft);
  color: var(--color-primary);
}

.od-file-icon.wait {
  background: var(--color-accent-light);
  color: var(--color-accent-dark);
}

.od-file-info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
}

.od-file-info b {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--color-navy);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.od-file-info small {
  font-size: 11.5px;
  color: var(--color-text-muted);
  margin-top: 1px;
}

.od-file-dl {
  padding: 6px 14px;
  border-radius: 100px;
  border: 1px solid var(--color-border);
  background: var(--color-white);
  font-size: 12.5px;
  font-weight: 600;
  color: var(--color-text-secondary);
  cursor: pointer;
  transition: var(--transition);
  font-family: inherit;
  flex-shrink: 0;
}

.od-file-dl:hover {
  color: var(--color-primary);
  border-color: rgba(0, 119, 255, 0.4);
}

.od-file-list {
  display: flex;
  flex-direction: column;
  margin-top: 10px;
}

/* 确认完成与评价 */
.od-accept {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  padding: 22px 22px 26px;
}

.od-accept-tip {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--color-text-secondary);
}

.od-accept-tip svg {
  width: 16px;
  height: 16px;
  color: var(--color-accent-dark);
  flex-shrink: 0;
}

.od-rate {
  padding: 18px 22px 22px;
}

.od-rate-title {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 8px;
}

.od-rate-stars {
  display: flex;
  gap: 6px;
  margin-bottom: 12px;
}

.od-rate-stars span {
  font-size: 26px;
  line-height: 1;
  color: #d8e2ee;
  cursor: pointer;
  transition: color 0.15s ease, transform 0.15s ease;
}

.od-rate-stars span:hover {
  transform: scale(1.15);
}

.od-rate-stars span.on {
  color: var(--color-accent-dark);
}

.od-rate-text {
  width: 100%;
  padding: 11px 14px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  font-size: 13.5px;
  font-family: inherit;
  color: var(--color-text);
  resize: vertical;
  outline: none;
  transition: var(--transition);
}

.od-rate-text:focus {
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(0, 119, 255, 0.1);
}

.od-rate-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-top: 12px;
  flex-wrap: wrap;
}

.od-rate-foot small {
  font-size: 12px;
  color: var(--color-text-muted);
}

.od-rated {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 20px 22px;
  flex-wrap: wrap;
}

.od-rated-stars {
  font-size: 22px;
  color: var(--color-accent-dark);
  letter-spacing: 2px;
}

.od-rated p {
  flex: 1;
  min-width: 200px;
  font-size: 13.5px;
  color: var(--color-text-secondary);
}

/* 需求信息（机构端） */
.od-demand {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px 22px;
  padding: 16px 22px 20px;
}

.od-kv {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.od-kv span {
  font-size: 12px;
  color: var(--color-text-muted);
}

.od-kv b {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--color-navy);
}

/* 执行进度（机构端） */
.od-progress {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 16px 22px 20px;
}

.od-progress-item {
  position: relative;
  display: flex;
  gap: 14px;
  padding: 0 0 22px 4px;
}

.od-progress-item:last-child {
  padding-bottom: 0;
}

.od-progress-item::before {
  content: "";
  position: absolute;
  left: 9px;
  top: 18px;
  bottom: -2px;
  width: 2px;
  background: var(--color-border);
}

.od-progress-item:last-child::before {
  display: none;
}

.od-progress-item.done::before {
  background: var(--color-primary);
}

.od-progress-dot {
  position: relative;
  z-index: 1;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--color-white);
  border: 2px solid var(--color-border);
  flex-shrink: 0;
  margin-top: 2px;
}

.od-progress-item.done .od-progress-dot {
  background: var(--color-primary);
  border-color: var(--color-primary);
}

.od-progress-item.active .od-progress-dot {
  border-color: var(--color-primary);
  box-shadow: 0 0 0 4px rgba(0, 119, 255, 0.15);
}

.od-progress-body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.od-progress-body b {
  font-size: 14px;
  font-weight: 700;
  color: var(--color-text-muted);
}

.od-progress-item.done .od-progress-body b,
.od-progress-item.active .od-progress-body b {
  color: var(--color-navy);
}

.od-progress-body small {
  font-size: 12.5px;
  color: var(--color-text-muted);
}

/* 业务附件上传（机构端） */
.od-upload {
  padding: 16px 22px 20px;
}

.od-upload-acts {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.od-upload-hint {
  display: block;
  font-size: 12px;
  color: var(--color-text-muted);
  margin-top: 10px;
  line-height: 1.6;
}

/* 付款状态（机构端） */
.od-pay {
  padding: 16px 22px 20px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.od-pay-state {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13.5px;
  color: var(--color-text-secondary);
}

.od-pay-state b {
  font-size: 12.5px;
}

.od-pay-acts {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

/* 侧栏 */
.od-side-kv {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 16px 20px 18px;
}

.od-side-note {
  padding: 14px 20px 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.od-side-note p {
  font-size: 12.8px;
  color: var(--color-text-secondary);
  line-height: 1.7;
}

.od-side-note p b {
  color: var(--color-navy);
}

/* 工单详情响应式 */
@media (max-width: 1024px) {
  .od-layout {
    grid-template-columns: 1fr;
  }

  .od-side {
    position: static;
  }
}

@media (max-width: 768px) {
  .od-head {
    flex-direction: column;
    align-items: stretch;
  }

  .od-head-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .od-steps {
    grid-template-columns: repeat(3, 1fr);
    row-gap: 16px;
  }

  .od-quote-row,
  .od-org {
    flex-direction: column;
    align-items: flex-start;
  }

  .od-quote-nums {
    align-items: flex-start;
  }

  .od-org-contact,
  .od-org-phone {
    align-items: flex-start;
  }

  .od-demand {
    grid-template-columns: 1fr;
  }

  .od-chat-col {
    max-width: 88%;
  }
}

/* ========== 工作台改版：顶栏组合 / KPI 联动 / 未读徽标 ========== */
.wb-topbar-actions {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-shrink: 0;
}

/* KPI 概览条 */
.wb-kpi {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  background: #ffffff;
  border: 1px solid #e8edf3;
  border-radius: 16px;
  padding: 20px 22px;
  box-shadow: var(--shadow-sm);
  transition: var(--transition);
  text-align: left;
  font-family: inherit;
  cursor: pointer;
  }

.wb-kpi[data-filter]:hover .wb-kpi-label,
.wb-kpi[data-scroll]:hover .wb-kpi-label {
  color: var(--color-primary);
}

.wb-kpi.active {
  border-color: var(--color-primary);
  box-shadow: 0 8px 24px rgba(0, 119, 255, 0.12);
}

.wb-kpi.active .wb-kpi-label {
  color: var(--color-primary);
  font-weight: 600;
}

.wb-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  padding: 0 6px;
  background: #ff4d4f;
  color: #ffffff;
  border-radius: 10px;
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
}

.wb-proj-sub {
  display: block;
  font-size: 12px;
  color: var(--color-text-muted);
  margin-top: 2px;
}

@media (max-width: 768px) {
  .wb-topbar-actions {
    flex-wrap: wrap;
    gap: 10px;
  }
}

/* ========== 工单详情：机构履约卡 ========== */
.od-perf {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px dashed #e8edf3;
}

.od-perf-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 12px 8px;
  background: #f8fafd;
  border-radius: 12px;
}

.od-perf-item b {
  font-size: 18px;
  font-weight: 700;
  color: var(--color-navy);
}

.od-perf-item span {
  font-size: 12px;
  color: var(--color-text-secondary);
}

@media (max-width: 768px) {
  .od-perf {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* ========== 账号与设置中心（settings） ========== */
.st-page {
  /* 顶部 130px = fixed 导航让位（v1.30 全站删页头横幅） */
  padding-top: 130px;
}

.st-layout .wb-main {
  max-width: 100%;
}

.st-head-note {
  font-size: 12px;
  color: var(--color-text-muted);
}

.st-tabs {
  display: flex;
  gap: 8px;
  padding: 6px;
  background: #e8edf3;
  border-radius: 14px;
  margin-bottom: 24px;
}

.st-tab {
  flex: 1;
  padding: 11px 16px;
  border: none;
  border-radius: 10px;
  background: transparent;
  color: var(--color-text-secondary);
  font-size: 14px;
  font-weight: 600;
  font-family: inherit;
  cursor: pointer;
  transition: var(--transition);
  white-space: nowrap;
}

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

.st-tab.active {
  background: #ffffff;
  color: var(--color-navy);
  box-shadow: 0 2px 8px rgba(0, 119, 255, 0.08);
}

.st-tab-panel {
  display: none;
}

.st-tab-panel.active {
  display: block;
  animation: wbFadeIn 0.4s ease;
}

.st-account {
  display: flex;
  flex-direction: column;
}

.st-account-item {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 0;
  border-bottom: 1px solid #f5f7fa;
}

.st-account-item:last-child {
  border-bottom: none;
}

.st-account-label {
  width: 88px;
  flex-shrink: 0;
  font-size: 14px;
  font-weight: 600;
  color: var(--color-navy);
}

.st-account-value {
  flex: 1;
  min-width: 0;
  font-size: 14px;
  color: var(--color-text);
}

.st-account-note {
  font-size: 12px;
  color: var(--color-text-muted);
}

.st-form .form-row {
  grid-template-columns: repeat(2, 1fr);
}

.st-form-foot {
  display: flex;
  justify-content: flex-end;
  gap: 12px;
  margin-top: 8px;
  padding-top: 16px;
  border-top: 1px solid #f5f7fa;
}

.st-qual-hint {
  display: block;
  margin-top: 14px;
  font-size: 12px;
  line-height: 1.7;
  color: var(--color-text-muted);
}

.st-ability-group {
  margin-bottom: 20px;
}

.st-ability-group:last-of-type {
  margin-bottom: 8px;
}

.st-ability-title {
  font-size: 14px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 10px;
}

.st-ability-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.st-ability-chips .wb-filter-chip {
  margin-bottom: 0;
}

.st-ability-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
  margin-top: 8px;
  padding-top: 16px;
  border-top: 1px solid #f5f7fa;
  font-size: 13px;
  color: var(--color-text-secondary);
}

.st-ability-foot b {
  color: var(--color-primary);
  font-size: 15px;
}

@media (max-width: 768px) {
  .st-tabs {
    flex-direction: column;
  }

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

  .st-account-item {
    flex-wrap: wrap;
  }
}
::-webkit-scrollbar-track {
  background: transparent;
}
::-webkit-scrollbar-thumb {
  background: #cdd8e6;
  border-radius: 8px;
  border: 2px solid #ffffff;
}

/* ===== 自定义日期选择器（极简） ===== */
.qm-datepicker {
  position: relative;
  width: 100%;
}
.qm-datepicker-input {
  cursor: pointer;
  user-select: none;
}
.qm-datepicker-input::-webkit-calendar-picker-indicator {
  display: none;
}
.qm-datepicker-popup {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  z-index: 1200;
  width: 288px;
  padding: 14px;
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  box-shadow: 0 16px 40px rgba(15, 23, 42, 0.12);
  display: none;
}
.qm-datepicker.open .qm-datepicker-popup {
  display: block;
}
.qm-datepicker-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
}
.qm-datepicker-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-black);
  letter-spacing: 0.5px;
}
.qm-datepicker-nav {
  width: 26px;
  height: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: #fff;
  color: #5b6472;
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
  transition: var(--transition);
}
.qm-datepicker-nav:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
}
.qm-datepicker-week {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  text-align: center;
  font-size: 12px;
  color: var(--color-text-muted);
  margin-bottom: 4px;
}
.qm-datepicker-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
}
.qm-datepicker-day {
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  color: var(--color-text);
  border-radius: 6px;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}
.qm-datepicker-day:hover {
  background: #f3f6fb;
}
.qm-datepicker-day.blank {
  cursor: default;
}
.qm-datepicker-day.other {
  color: #c0c6d1;
}
.qm-datepicker-day.other:hover {
  background: transparent;
}
.qm-datepicker-day.today {
  color: var(--color-primary);
  font-weight: 600;
  border: 1px solid var(--color-primary);
  border-radius: 50%;
  width: 30px;
  height: 30px;
  margin: 0 auto;
}
.qm-datepicker-day.selected {
  background: var(--color-primary);
  color: #fff;
  font-weight: 600;
  border-radius: 50%;
  width: 30px;
  height: 30px;
  margin: 0 auto;
}
.qm-datepicker-day.selected:hover {
  background: var(--color-primary);
}
.qm-datepicker-foot {
  display: flex;
  justify-content: space-between;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid #eef1f5;
}
.qm-datepicker-foot button {
  border: 0;
  background: none;
  font-size: 12px;
  color: var(--color-text-muted);
  cursor: pointer;
  padding: 4px 10px;
  border-radius: var(--v6-radius-full);
  transition: var(--transition);
}
.qm-datepicker-foot button:hover {
  color: var(--color-primary);
  background: #f3f6fb;
}

/* ========================================
   全站极简页脚
   ======================================== */
.site-footer--slim .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}
.site-footer--slim .footer-links {
  display: flex;
  align-items: center;
  gap: 28px;
}
@media (max-width: 768px) {
  .site-footer--slim .container {
    flex-direction: column;
    text-align: center;
    gap: 16px;
  }
  .site-footer--slim .footer-links {
    gap: 20px;
  }
}

/* ==================== 头像 / 留言附件（v117 新增） ==================== */

/* 二维码灰度工具类：仅前端展示变化，原始头像文件不变 */
.qr-gray {
  filter: grayscale(100%);
}

/* 聊天头像（会话列表 / 消息行 / 会话头部）内嵌真实头像图 */
.chat-item-avatar img,
.chat-msg-avatar img,
.chat-peer-avatar img {
  width: 100%;
  height: 100%;
  border-radius: inherit;
  object-fit: cover;
  display: block;
}

/* 工作台顶部问候头像 */
.wb-avatar img {
  width: 100%;
  height: 100%;
  border-radius: inherit;
  object-fit: cover;
  display: block;
}

/* 工单详情留言行：发信人小头像 */
.qm-avatar-sm {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  object-fit: cover;
  flex: none;
  align-self: flex-start;
  margin-top: 2px;
  border: 1px solid #e2e8f0;
}

/* 聊天文件卡片：下载按钮 */
.chat-file-dl {
  color: #0f172a;
  opacity: 0.7;
  flex-shrink: 0;
  margin-left: 10px;
  display: inline-block;
  padding: 2px 10px;
  border-radius: 999px;
  border: 1px solid #cbd5e1;
  background: #fff;
  font-size: 12px;
  line-height: 1.6;
  text-decoration: none;
  cursor: pointer;
  }
.chat-file-dl:hover {
  border-color: #0f172a;
  background: #f8fafc;
}

/* 工单详情留言附件（图片缩略图 / 文档标签 + 下载） */
.qm-msg-attach {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 6px;
  font-size: 12px;
  color: #475569;
}
.qm-msg-att-img {
  width: 120px;
  height: 90px;
  object-fit: cover;
  border-radius: 8px;
  border: 1px solid #e2e8f0;
  cursor: zoom-in;
  display: block;
}
.qm-msg-att-doc {
  display: inline-block;
  padding: 3px 8px;
  border-radius: 6px;
  background: #f1f5f9;
  color: #334155;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .5px;
  border: 1px solid #e2e8f0;
}
.qm-msg-att-name {
  word-break: break-all;
}

/* 聊天页图片在线预览弹窗 */
.qm-img-preview {
  max-width: min(860px, calc(100vw - 40px));
  background: #fff;
  border-radius: 14px;
  box-shadow: 0 24px 60px rgba(0, 0, 0, .28);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.qm-img-preview-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  border-bottom: 1px solid #e2e8f0;
  font-size: 13px;
  color: #1f2d3d;
  word-break: break-all;
}
.qm-img-preview-close {
  border: 0;
  background: none;
  cursor: pointer;
  color: #64748b;
  padding: 4px;
  border-radius: 6px;
  flex: none;
}
.qm-img-preview-close:hover {
  background: #f1f5f9;
  color: #0f172a;
}
.qm-img-preview-body {
  max-height: min(70vh, 640px);
  overflow: auto;
  background: #f8fafc;
  text-align: center;
}
.qm-img-preview-body img {
  max-width: 100%;
  max-height: 70vh;
  display: block;
  margin: 0 auto;
}
.qm-img-preview-actions {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 12px 16px;
  border-top: 1px solid #e2e8f0;
}

/* ============ 全站极简商务风格刷新：少框线 · 多线条/箭头/数字 ============ */

/* 减框线：表单、卡片、面板统一更干净的边界 */
.form-input, .form-select, .form-textarea,
.biz-type-card, .form-card,
.contact-card, .auth-card, .nl-card,
.ch-code-card, .chat-rule-card,
.dh-demand-card, .dh-card-matched, .dh-card-locked, .dh-card-stopped {
  border: none;
  box-shadow: 0 1px 3px rgba(0, 119, 255, 0.06), 0 0 0 1px rgba(226, 232, 240, 0.6);
  background: #fff;
  border-radius: var(--radius-md);
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.form-input:hover, .form-select:hover, .form-textarea:hover,
.biz-type-card:hover, .contact-card:hover, .auth-card:hover,
.dh-demand-card:hover {
  box-shadow: 0 4px 12px rgba(0, 119, 255, 0.08), 0 0 0 1px rgba(208, 218, 233, 0.8);
}
.form-input:focus, .form-select:focus, .form-textarea:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(0, 119, 255, 0.12), 0 0 0 1px rgba(0, 119, 255, 0.5);
  }

/* Buttons */
/* 🔴v309（2026-09-11 用户反馈：供应端「提交报价/解锁洽谈」胶囊贴边）——
.btn 基类此前零 padding，凡不带 .btn-sm/.btn-lg 的按钮（提交报价、解锁洽谈、
设置页保存等）文字全部贴边；补全站默认内边距，尺寸类与页面级规则照常覆盖。 */
/* 按钮更圆润、更少边框 */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 10px 22px;
  font-size: 14px;
  line-height: 1.4;
  font-weight: 500;
  border-radius: 999px;
  transition: var(--transition);
  border: none;
  cursor: pointer;
  white-space: nowrap;
  box-shadow: 0 1px 2px rgba(0, 119, 255, 0.06);
  }
.btn-primary {
  background: linear-gradient(180deg, #0077FF 0%, #0077FF 100%);
  color: #ffffff;
  text-shadow: 0 1px 2px rgba(163, 100, 0, 0.32);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
  }
.btn-outline-primary {
  background: #fff;
  color: #0077FF;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 1px rgba(0, 119, 255, 0.25), 0 1px 2px rgba(0, 119, 255, 0.04);
  }
.btn-outline-primary:hover {
  background: #f5f9ff;
  transform: translateY(-2px);
  box-shadow: 0 0 0 1px rgba(0, 119, 255, 0.45), 0 4px 10px rgba(0, 119, 255, 0.1);
  }
.btn-accent {
  background: linear-gradient(180deg, #ffd040 0%, #ffc400 100%);
  color: #14283F;
  text-shadow: 0 1px 2px rgba(163, 100, 0, 0.32);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
  }
.btn-text, .btn-link { box-shadow: none; background: transparent; }

/* 表格减框线 */
table, .table, .data-table, .qm-table {
  border-collapse: separate;
  border-spacing: 0;
  box-shadow: none;
  border: none;
}
table th, .table th, .data-table th, .qm-table th {
  background: #f8fafd;
  border-bottom: 1px solid #eef1f6;
  font-weight: 600;
  color: #14283F;
}
table td, .table td, .data-table td, .qm-table td {
  border-bottom: 1px solid #f2f4f8;
}

/* 通用线条工具 */
/* 🔴 v5.5j：.qm-line 渐变短杠删除（全站禁装饰线；现无任何使用方，顺手清死规则，--center/--long 变体一并清理） */
/* v5.5k：.qm-divider 渐变饰线规则删除（全站禁装饰线，0 使用方） */

/* 小箭头工具 */
.qm-arrow {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #0077FF;
  font-weight: 500;
  transition: gap 0.2s ease;
}
.qm-arrow::after {
  content: '';
  width: 16px;
  height: 16px;
  background: currentColor;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E") no-repeat center;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E") no-repeat center;
}
.qm-arrow:hover { gap: 10px; }

/* 数字徽章/序号 */
.qm-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: #f0f5ff;
  color: #0077FF;
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
}
.qm-num--outline {
  background: transparent;
  box-shadow: 0 0 0 1px #dbe6ff;
}

/* 大数字统计 */
.qm-stats-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  max-width: 960px;
  margin: 0 auto 40px;
}
.qm-stat {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 28px 16px;
  background: #fff;
  border-radius: var(--radius-lg);
  box-shadow: 0 1px 3px rgba(0, 119, 255, 0.06);
  text-align: center;
}
.qm-arrow-wrap { text-align: center; }

/* 页脚改为深色（参考图风格） */
.site-footer--slim {
  background: #0a1628;
  color: #9fb0c8;
  border-top: none;
  padding: 28px 0 22px;
}
.site-footer--slim .footer-copyright {
  font-size: 13px;
  color: #7d8fa8;
  font-weight: 400;
  line-height: 1.6;
  }
.site-footer--slim .footer-links a {
  font-size: 13px;
  color: #9fb0c8;
  font-weight: 400;
  line-height: 1.6;
  transition: color 0.2s ease;
  position: relative;
  }
.site-footer--slim .footer-links a:hover { color: #fff; }
.site-footer--slim .footer-links a:not(:last-child)::after {
  content: '';
  position: absolute;
  right: -12px;
  top: 50%;
  transform: translateY(-50%);
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: #0077FF;
}

/* 模块标题统一加小蓝条（线条运用） */
.section-header .section-tag { margin-bottom: 10px; }
.section-title, .contact-card-title, .adm-card-title,
.form-section-title, .dh-section-title {
  position: relative;
}
/* v5.5k：模块标题左侧小蓝条（section-title 等 5 类 ::before）整体删除 —— 全站禁装饰竖条 */
.section-title {
  font-size: 38px;
  font-weight: 700;
  color: var(--color-navy);
  margin-bottom: 16px;
  line-height: 1.3;
  letter-spacing: -0.5px;
  display: flex;
  align-items: center;
  gap: 10px;
  }
.section-header .section-title { justify-content: center; }

/* 更干净的标签 */
.qm-tag {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 500;
  background: #f0f5ff;
  color: #0077FF;
  border: none;
}

/* ============ 右下角悬浮在线客服（弹窗仅企业微信客服二维码） ============ */
.qm-service { position: fixed; right: 24px; bottom: 28px; z-index: 900; }
.qm-service-fab {
  width: 64px; height: 64px; border-radius: 16px; border: 0; cursor: pointer; overflow: visible;
  background: transparent; color: #14283F; display: flex; align-items: center; justify-content: center; padding: 0;
  box-shadow: 0 8px 20px rgba(0, 119, 255, .12); transition: transform .2s, box-shadow .2s;
}
.qm-service-fab:hover { transform: translateY(-2px); box-shadow: 0 12px 26px rgba(0, 119, 255, .16); }
.qm-service-fab img { width: 64px; height: 64px; display: block; border-radius: 16px; }
.qm-service-pop {
  position: absolute; right: 0; bottom: 76px; width: 240px; padding: 16px;
  background: #fff; border: 1px solid #e8edf5; border-radius: 16px;
  box-shadow: 0 12px 32px rgba(0, 119, 255, .16); display: none;
}
.qm-service-pop.open { display: block; }
.qm-service-pop-head {
  position: relative; display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 600; color: #14283F; margin-bottom: 10px;
}
.qm-service-pop-close {
  position: absolute; right: 0; top: 50%; transform: translateY(-50%);
  border: 0; background: none; cursor: pointer; color: #98a3b5;
  font-size: 18px; line-height: 1; padding: 2px 4px;
}
.qm-service-pop-close:hover { color: #40506b; }
.qm-service-qr {
  width: 208px; height: 208px; display: block; margin: 0 auto;
  border: 1px solid #e8edf5; border-radius: 12px; background: #fff;
}

/* ============ 全站极简商务风 v2 · 穿透覆盖层（body 前缀穿透页内私有样式） ============ */
/* 顶栏导航：干净白底 + 发丝线 */

/* 按钮：统一胶囊，主按钮电蓝渐变，头部按钮深藏蓝 */
.btn { border-radius: 999px; border: none; font-weight: 500; box-shadow: none; transition: transform .15s ease, box-shadow .15s ease, background .15s ease; }
.btn-primary { background: linear-gradient(180deg, #0077FF 0%, #0077FF 100%); color: #fff; box-shadow: 0 6px 16px rgba(0, 119, 255, .26); }
.btn-outline-primary, .btn-ghost { background: #fff; color: #0077FF; box-shadow: inset 0 0 0 1px #0077FF; }
.btn-outline-primary:hover, .btn-ghost:hover { background: #f5f9ff; box-shadow: inset 0 0 0 1px #0077FF; }
.btn-sm { padding: 6px 16px; }

/* 表单：圆角 10 · 发丝边 · 浅底 */
.form-input, .form-select, .form-textarea,
 
{
  border: 1px solid #e3e9f2; border-radius: 10px;
  background: #fbfcfe; box-shadow: none;
}
.form-input:focus, .form-select:focus, .form-textarea:focus {
  border-color: #0077FF; box-shadow: 0 0 0 3px rgba(0, 119, 255, .10); background: #fff; outline: none;
}

/* 选择 chips / 筛选：胶囊 + 描边，选中浅蓝填充 */
.radio-chip, .checkbox-chip, .tag-option, .filter-chip,
.wb-page .wb-filter-chip, .wb-page .wb-msg-chip, .wb-page .wb-role-btn {
  border-radius: var(--v6-radius-full); border: 1px solid #e3e9f2;
  background: #fff; color: #44546b; box-shadow: none;
}
.radio-chip:hover, .checkbox-chip:hover, .tag-option:hover,
 {
  border-color: #0077FF; background: #f5f9ff; color: #0077FF;
}
.radio-chip.active, .checkbox-chip.active, .tag-option.active,
 {
  background: #e8f1ff; color: #0077FF; border-color: #0077FF;
}

/* 卡片/面板：发丝边 + 极轻投影，圆角 14 */
.form-card, .auth-card, .biz-type-card, .contact-card,
.nl-card, .ch-code-card, .chat-rule-card,
.dh-demand-card, .dh-card-matched, .dh-card-locked, .dh-card-stopped,
.wb-page .wb-kpi, .wb-page .wb-module, .wb-page .wb-quick,
.adm-card, .adm-panel, .adm-login-card,
.od-steps, .od-quote-row {
  border: 1px solid #e9eef4; border-radius: 14px;
  box-shadow: 0 1px 2px rgba(0, 119, 255, .04), 0 10px 28px rgba(0, 119, 255, .05);
  background: #fff;
}
.dh-demand-card:hover, .biz-type-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 2px 4px rgba(0, 119, 255, .05), 0 16px 36px rgba(0, 119, 255, .09);
}

/* 图标底：统一中性浅灰蓝 */
.biz-type-icon { background: #f0f5fc; color: #2C4A72; border-radius: 10px; }

/* 筛选栏 / Tab：干净化，Tab 用下划线（线条运用） */
.filter-bar { background: #fff; border: 1px solid #eef2f7; border-radius: 12px; box-shadow: none; }
.filter-bar select, .filter-search, .dh-select { border-radius: 999px; border: 1px solid #e3e9f2; background: #fbfcfe; }
.dh-quick-btn { border-radius: 999px; border: 1px solid #e3e9f2; background: #fff; color: #44546b; box-shadow: none; }
.dh-quick-btn:hover { border-color: #0077FF; color: #0077FF; }
.dh-quick-btn.active { background: #e8f1ff; color: #0077FF; border-color: #0077FF; }
.wb-page .wb-act.danger { color: #d64550; }
.wb-page .wb-table { border: none; box-shadow: none; }
.btn-buy-lead { border-radius: 999px; border: none; background: #ffbf00; color: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08); }
.btn-buy-lead:hover { background: #ffc71a; color: #fff; }
.btn-buy-lead:active { background: #f0b400; color: #fff; }

/* 订单详情：顶栏干净 */
.od-topbar { background: #fff; border-bottom: 1px solid #eef2f7; box-shadow: none; }

/* 🔴 2026-10-04 体验优化（批3）：v4 期「深藏蓝侧栏」整层退役。
   根因：admin.html v78 已把侧栏定为「白底黑字·黄标」（.adm-side 白底同优先级后到即胜），
   但本层三条规则以更高优先级把菜单项压成 #9fb0c8 / hover 白字 / active 白字，
   叠在白底上 ⇒ **当前选中项与 hover 项文字在白底上不可见**（实测 computed color=rgb(255,255,255)）。
   admin.html 对侧栏已全量自管（含 border-radius / 颜色 / hover / active），此处按「删后层叠值即预期」删除。 */
.adm-kpi { background: #fff; border: 1px solid #e9eef4; border-radius: 14px; box-shadow: none; }

/* 全站正文标题色统一 */
h1, h2, h3 { color: #14283F; }
.qm-service-pop-tip { text-align: center; font-size: 12px; color: #7a8699; margin: 10px 0 0; line-height: 1.7; }
/* v5.5k：.subpage-hero h1::before 蓝色短横删除（0 使用方：全站已删页头） */
.breadcrumb, .breadcrumb a, .breadcrumb span { color: var(--v3-ink-3); }
.breadcrumb a:hover { color: var(--v3-blue); }

/* ---------- 0) 全局调色板 & 字体排版权重（v3 基调） ---------- */
body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
  color: var(--v3-ink-2);
  background-color: var(--color-bg-light);
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  animation: pageFadeIn 0.5s cubic-bezier(0.22, 1, 0.36, 1) forwards;
  font-size: 15px;
  letter-spacing: .01em;
  }
h1, h2, h3, h4 {
  color: var(--v3-ink);
  font-weight: 700;
  letter-spacing: -.02em;
  line-height: 1.28;
}
p { color: var(--v3-ink-2); }

/* ---------- 1) 顶栏导航：更轻、更矮、字距化 + 下划线动效 ---------- */
.header {
  background: rgba(255, 255, 255, .92);
  backdrop-filter: saturate(1.4) blur(10px);
  border-bottom: 1px solid var(--v3-line);
  box-shadow: none;
}

/* ---------- 2) 按钮：全面扁平化（去渐变去光晕），主色唯一 ---------- */
.btn,
.hero-icon-btn,
.chat-send-btn,
.chat-auth-btn,
.chat-attach-btn {
  border-radius: 999px;
  font-weight: 600;
  letter-spacing: .02em;
  box-shadow: none;
  border: none;
  transition: background .16s ease, color .16s ease, border-color .16s ease, transform .16s ease;
}
.btn-primary,
.hero-icon-btn.primary,
.btn-primary,
.hero-icon-btn.primary,
.chat-send-btn {
  background: var(--v3-blue);
  color: #fff;
}
.btn-primary:hover,
.hero-icon-btn.primary:hover,
.chat-send-btn:hover {
  background: var(--v3-blue-deep);
  transform: translateY(-1px);
}
.btn-outline-primary, .btn-ghost,
.hero-icon-btn.white,
.dh-chat-btn,
.chat-auth-btn, .chat-attach-btn {
  background: #fff;
  color: var(--v3-blue);
  box-shadow: inset 0 0 0 1px var(--v3-line-2);
}
.btn-outline-primary:hover, .btn-ghost:hover,
.hero-icon-btn.white:hover,
.dh-chat-btn:hover,
.chat-auth-btn:hover, .chat-attach-btn:hover {
  box-shadow: inset 0 0 0 1px var(--v3-blue);
  background: var(--v3-blue-wash);
}
.btn-header-accent {
  background: var(--v3-ink); color: #fff; box-shadow: none;
}
.btn-header-accent:hover {
  background: #0077FF;
  transform: translateY(-1px);
  }

/* ---------- 3) 卡片：发丝边 + 纸感投影，hover 只换边色不浮夸 ---------- */
.form-card, .auth-card, .biz-type-card, .contact-card,
.nl-card, .ch-code-card, .chat-rule-card,
.dh-demand-card, .dh-card-matched, .dh-card-locked, .dh-card-stopped,
.wb-page .wb-kpi, .wb-page .wb-module, .wb-page .wb-quick,
.adm-card, .adm-panel, .adm-login-card, .adm-kpi,
.od-steps, .od-quote-row, .filter-bar {
  border: 1px solid var(--v3-line);
  border-radius: 16px;
  box-shadow: 0 1px 2px rgba(12, 21, 38, .03);
  background: #fff;
}
/* 卡片标题：去粗去蓝，回归墨色 */
.biz-type-card h3, .contact-card-title, .nl-card h3,
.chat-rule-card h3 { color: var(--v3-ink); font-weight: 700; }

/* ---------- 4) 表单：白底细边，聚焦换主色边 ---------- */
.form-input, .form-select, .form-textarea,
 
 
.chat-win-text, .chat-win-input {
  border: 1px solid var(--v3-line);
  border-radius: 10px;
  background: #fff;
  box-shadow: none;
  color: var(--v3-ink);
}
::placeholder { color: #a8b3c6; }

/* ---------- 5) 眉题 / 章节标题 / 描述：杂志式排字 ---------- */
.section-tag,
.hero-eyebrow,
.adm-hero-sub, body .adm-hero p {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .22em;
  color: var(--v3-ink-3);
  text-transform: uppercase;
}
.section-header { gap: 10px; }
.hero-icon-btn { padding: 12px 26px; font-size: 15px; }
.hero-icon-btn .icon-circle { box-shadow: none; }
.hero-icon-btn.primary { background: var(--v3-blue); }
.hero-icon-btn.primary:hover { background: var(--v3-blue-deep); }
.qm-stat + .qm-stat { border-left: 1px solid var(--v3-line); }
.qm-arrow:hover::after { transform: translateX(4px); }
table td, .wb-table td {
  border-bottom: 1px solid #f1f4f8;
  color: var(--v3-ink-2);
  padding: 13px 16px;
}
table tbody tr, .wb-table tbody tr { background: #fff; }

/* ---------- 10) chips / Tab / 状态：全部降为描边胶囊 ---------- */
.radio-chip, .checkbox-chip, .tag-option, .filter-chip,
.wb-page .wb-filter-chip, .wb-page .wb-msg-chip, .wb-page .wb-role-btn,
.dh-quick-btn {
  border-radius: var(--v6-radius-full);
  border: 1px solid var(--v3-line);
  background: #fff;
  color: var(--v3-ink-2);
  box-shadow: none;
  font-weight: 500;
}
.radio-chip:hover, .checkbox-chip:hover, .tag-option:hover,
.wb-page .wb-filter-chip:hover, .wb-page .wb-msg-chip:hover,
 .dh-quick-btn:hover {
  border-color: var(--v3-blue); color: var(--v3-blue); background: var(--v3-blue-wash);
}
.radio-chip.active, .checkbox-chip.active, .tag-option.active,
 
 .dh-quick-btn.active {
  background: var(--v3-ink); color: #fff; border-color: var(--v3-ink);
}
.tab-link {
  color: var(--v3-ink-2); background: none;
  border: none; box-shadow: none; border-radius: 0;
  font-weight: 600; letter-spacing: .03em;
}
.tab-link.active {
  color: var(--v3-ink);
  box-shadow: inset 0 -2px 0 var(--v3-blue);
}
.tag, .dh-badge, .adm-tag, .wb-status {
  border-radius: 999px; border: none;
  font-weight: 600; letter-spacing: .02em;
  font-size: 12px; padding: 3px 12px;
}
.tag-blue { background: var(--v3-blue-wash); color: var(--v3-blue-deep); }
.tag-yellow { background: #fdf6e3; color: #9a6b0a; }

/* ---------- 11) 聊天页（chat.html 私有样式重灾区，专项穿透） ---------- */
.chat-app {
  background: var(--v3-paper);
  border: none; border-radius: 0; box-shadow: none;
}
.chat-list-pane, .chat-window, .chat-win-head, .chat-list-head {
  background: #fff;
  border-color: var(--v3-line);
  box-shadow: none;
}
.chat-list-head, .chat-win-head { border-bottom: 1px solid var(--v3-line); }
.chat-item-name, .chat-peer-name { color: var(--v3-ink); font-weight: 600; }
.chat-item-last, .chat-item-time, .chat-msg-time, .chat-item-proj,
.chat-peer-meta, .chat-ctx-label { color: var(--v3-ink-3); }
.chat-msg-me .chat-msg-bubble a, .chat-msg-me .chat-file-info, .chat-msg-me .chat-file-dl { color: #fff; }
.chat-msg-avatar, .chat-peer-avatar { border-radius: 50%; box-shadow: none; }
.chat-time-divider {
  background: none; color: var(--v3-ink-3);
  font-size: 12px; letter-spacing: .08em;
}
.chat-win-input { background: #fff; border-top: 1px solid var(--v3-line); }
.chat-ctx-title { color: var(--v3-ink); }
.adm-login-card {
  border: 1px solid var(--v3-line);
  box-shadow: 0 1px 2px rgba(12, 21, 38, .03);
  border-radius: 16px;
}
.wb-page .wb-kpi-num, .wb-page .wb-kpi b, .wb-page .wb-kpi .num {
  color: var(--v3-ink);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  letter-spacing: -.02em;
}
/* 工作台：顶栏干净 + 行内动作改文字链接（少框线） */
.wb-page .wb-act {
  background: none;
  border: none;
  box-shadow: none;
  color: var(--v3-blue);
  padding: 4px 8px;
  }
.wb-page .wb-act:hover {
  color: var(--v3-blue-deep);
  text-decoration: underline;
  }

/* ---------- 14) 页脚：更深夜色 + 发丝上边线 ---------- */
.site-footer--slim {
  background: #080f1c;
  border-top: 1px solid rgba(255, 255, 255, .06);
  box-shadow: none;
}

/* ---------- 15) 弹窗：圆角 16 · 发丝头尾线 ---------- */
.dh-modal-dialog {
  border-radius: 16px;
  border: none;
  box-shadow: 0 24px 64px rgba(12, 21, 38, .18);
}
.dh-modal-header { border-bottom: 1px solid var(--v3-line); }
.dh-modal-footer { border-top: 1px solid var(--v3-line); }
.auth-modal { border-radius: 16px; border: 1px solid var(--v3-line); box-shadow: 0 24px 64px rgba(12, 21, 38, .18); }

/* ---------- 16) 全局链接与 ::selection 细节 ---------- */
a { color: inherit; }
/* ---------- 17) 滚动条：细灰滚动条（干净细节） ---------- */


/* ---------- 1) 全局去渐变/去阴影/去动画 ---------- */
body *, body *::before, body *::after {
  background-image: none;
  box-shadow: none;
  text-shadow: none;
  transition: none;
  animation: none;
}

/* 仅保留必要 hover 反馈：按钮、链接、表格行、表单输入 */
.btn,
.hero-icon-btn,
.dh-quick-btn,
.wb-page .wb-filter-chip,
.wb-page .wb-msg-chip,
.wb-page .wb-role-btn,
.radio-chip,
.checkbox-chip,
.tag-option,
.dh-filter-group select,
.form-input,
.form-select,
.form-textarea,
.chat-win-text,
a,
.qm-arrow,
.wb-act,
.wb-quick,
.dh-demand-card,
.biz-type-card,
.nl-card,
.contact-card,
.chat-item,
table tbody tr,
.wb-table tbody tr,
.wb-msg-row,
.qm-service-fab {
  transition: background-color .12s ease, color .12s ease, border-color .12s ease, transform .12s ease;
}

/* ---------- 2) 顶栏：纯白底线 ---------- */
.header,
.header.scrolled,
.header.hero-mode {
  background: #fff;
  border-bottom: 1px solid var(--v4-line);
  box-shadow: none;
  backdrop-filter: none;
}
.header-inner { min-height: 52px; }
.nav-link {
    color: var(--v4-ink-2);
    font-size: 14px;
    font-weight: 500;
    letter-spacing: .02em;
    padding: 4px 0;
    background: none;
    box-shadow: none;
    border: none;
  }
.nav-link::after {
  height: 1.5px;
  background: var(--v3-blue);
  border-radius: 0;
  display: none;
  }
.nav-link:hover, .nav-link.active {
  color: var(--v4-ink);
  border-bottom: 2px solid var(--v4-ink);
  }

/* ---------- 3) 按钮：扁平胶囊，主黑次白 ---------- */
.btn,
.hero-icon-btn,
.chat-send-btn,
.chat-auth-btn,
.chat-attach-btn,
.btn-primary,
.btn-accent,
.btn-header-accent,
.hero-icon-btn.primary,
.btn-buy-lead,
.dh-btn-submit,
#quoteModal .dh-modal-actions .btn-primary,
#quoteModal .dh-modal-actions .dh-btn-submit,
.wb-page .wb-topbar-actions .btn,
.wb-msg-foot button {
  border-radius: 999px;
  font-weight: 600;
  box-shadow: none;
  text-shadow: none;
  border: 1px solid transparent;
}
.btn-primary,
.hero-icon-btn.primary,
.btn-header-accent,
.chat-send-btn,
.chat-auth-btn,
.dh-btn-submit,
#quoteModal .dh-modal-actions .btn-primary,
#quoteModal .dh-modal-actions .dh-btn-submit,
.wb-page .wb-topbar-actions .btn {
  background: var(--v4-blue);
  color: #fff;
  border-color: var(--v4-blue);
}
.btn-primary:hover,
.hero-icon-btn.primary:hover,
.btn-header-accent:hover,
.chat-send-btn:hover,
.chat-auth-btn:hover,
.dh-btn-submit:hover,
#quoteModal .dh-modal-actions .btn-primary:hover,
#quoteModal .dh-modal-actions .dh-btn-submit:hover,
.wb-page .wb-topbar-actions .btn:hover {
  background: var(--v4-blue-deep);
  color: #fff;
  border-color: var(--v4-blue-deep);
  transform: translateY(-1px);
}
.btn-outline-primary,
.btn-ghost,
.hero-icon-btn.white,
.dh-chat-btn,
.chat-attach-btn,
.btn-outline-secondary,
.wb-msg-foot button,
body #quoteModal .dh-modal-actions .btn-outline-secondary {
  background: #fff;
  color: var(--v4-ink);
  border-color: var(--v4-line-2);
}
.btn-outline-primary:hover,
.btn-ghost:hover,
.hero-icon-btn.white:hover,
.dh-chat-btn:hover,
.chat-attach-btn:hover,
.btn-outline-secondary:hover,
.wb-msg-foot button:hover,
body #quoteModal .dh-modal-actions .btn-outline-secondary:hover {
  background: var(--v4-paper);
  border-color: var(--v4-ink);
  color: var(--v4-ink);
  transform: translateY(-1px);
}
.chat-auth-btn.authed:hover {
  background: #d8f4e9;
  border-color: #0e9f6e;
}

/* ---------- 4) 首页 Hero：白底黑字商务极简 ---------- */
.hero {
  position: relative;
  background: var(--v4-paper);
  color: var(--v4-ink);
  min-height: 480px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  overflow: hidden;
  padding: 120px 0 64px;
  border-bottom: 1px solid var(--v4-line);
}
.hero-bg-motion,
.hero::after,
.hero::before,
.hero-scroll-hint { display: none; }
.hero-content {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 980px;
  padding: 0 24px;
  display: flex;
  flex-direction: column;
  align-items: center;
  transform: none;
}
.hero-eyebrow {
  background: none;
  border: none;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  text-shadow: none;
  color: var(--v4-ink-3);
  padding: 0;
  gap: 10px;
  font-size: 13px;
  letter-spacing: .16em;
  margin-bottom: 24px;
  display: inline-flex;
  align-items: center;
  }
.hero-eyebrow-dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #ffd84d;
  box-shadow: 0 0 0 4px rgba(255,216,77,.18);
}
.hero-headline {
  color: var(--v4-ink);
  font-size: clamp(40px, 6vw, 72px);
  font-weight: 700;
  letter-spacing: -.03em;
  line-height: 1.08;
  text-shadow: none;
}
.hero-headline span {
  color: inherit;
  background: none;
  -webkit-text-fill-color: inherit;
}
.hero-capsules {
  display: inline-flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  margin: 28px 0 20px;
}
/* ---------- 6) 首页 Hero：超大紧字距标题 + 扁平 CTA ---------- */
.hero-capsule {
  background: #fff;
  border: 1px solid var(--v4-line-2);
  border-radius: 999px;
  box-shadow: none;
  backdrop-filter: blur(4px);
  color: var(--v4-ink-2);
  padding: 8px 16px;
  font-size: 13px;
  font-weight: 500;
  }
.hero-subline {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  width: 100%;
  max-width: 520px;
  margin: 0 auto;
}
/* v5.5k：hero-subline-line（v4 变体）删除 */
.hero-cta { margin-top: 40px; }

/* 首页一屏到底：hero 填满视窗，footer 贴底 */
body.home-page {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
body.home-page .hero-content {
  justify-content: center;
  margin: auto 0;
}
body.home-page .hero-headline span {
  flex-shrink: 0;
  white-space: nowrap;
}
body.home-page .hero-subline {
  max-width: 620px;
  margin: 0 auto 56px;
}
body.home-page .hero-cta {
  margin-top: 0;
  gap: 28px;
}
body.home-page .hero-icon-btn {
  flex: 0 0 auto;
  padding: 20px 40px;
  font-size: 19px;
  letter-spacing: 2px;
  gap: 18px;
}
body.home-page .hero-icon-btn .icon-circle {
  width: 36px;
  height: 36px;
  background: rgba(255, 255, 255, .18);
  border: 1.5px solid rgba(255, 255, 255, .60);
  color: #ffffff;
  /* 🟡 v389（2026-10-01 用户看实拍「这个黄色发光、不自然、不好看、死板」）：
     金黄光环回退白光环（内圈 3px + 外扩 18px），圈底/描边/箭头仍白 */
  box-shadow: 0 0 0 3px rgba(255, 255, 255, .15), 0 0 18px rgba(255, 255, 255, .35);
}

/* 🔴 六轮（用户指令「把电光去掉」）：v361~v366 的边缘电光动效整段拆除——
   @property 角度注册 / 光束关键帧 / ::before 光束层 / reduced-motion 关停块全部退役，
   相关历史沿革见 docs/CHANGELOG（本注释不写字面量，避免撞 §132.6 拆除断言）。 */
body.home-page .site-footer--slim {
  margin-top: auto;
  flex-shrink: 0;
}

/* ---------- 4.1) 首页 Hero：纯蓝白渐变封面 ----------
2026-09-19 终局：视频底图与握手底图均彻底移除（用户指令「去掉视频、彻底删掉、包括以前的握手图」），
封面=纯渐变（页眉线以下起渐变），零底图资产 */
body.home-page .hero {
  flex: 1 0 auto;
  min-height: 100vh;
  box-sizing: border-box;
  padding: 120px 0 100px;
  justify-content: center;
  border-bottom: none;
  background: #0077FF;
  color: #fff;
  }
/* 2026-09-19 用户指令：握手底图动起来（二选一·方案一 CSS Ken Burns）——
   双层封面（渐变×握手 8%）整体挂到 hero-bg-motion 层；
   初版 32s/1.08 用户反馈「看不见效果没感觉」→ 加码：14s / scale 1→1.14 / 位移 ±2%，
   专用关键帧 heroBgMoveHome（不动旧 heroBgMove，其他页在用） */
/* 2026-09-19 用户指令「首页去掉地图」：移除 hero 底图照片纹理层（航拍城市灰调视觉似地图），
   仅保留蓝→白渐变封面；Ken Burns 对纯渐变无感已停用（后续光带扫过亦移除，动态氛围由视频底图承担）。
   2026-09-19 追加：蓝白各占 50%；再三调：多停靠点平滑渐变（上蓝下白各半，中段无生硬分界）。
   2026-09-19 再追加：渐变从页眉线以下开始——顶部 72px（页头高度）保持实色，
   渐变层下移至页眉线以下铺满余下高度，首停靠点与实色同值无缝衔接。
   2026-09-24 用户指令：封面蓝白渐变的「蓝色部分」改紫 #0077FF——实色底与 9 个停靠点同步转紫，
   白色端保持 #ffffff；色相锁定 ~270°、明度 60%→100% 平缓递进，节奏与原蓝白渐变完全一致。
   2026-09-24 二次指令：封面色改为 #0077FF——实色底与 9 个停靠点同步改为 #0077FF 系，
   白端仍保持 #ffffff；蓝通道恒 255（色相锁 ~240°、明度 40%→100% 线性递进），
   按钮（.hero-icon-btn.white）当时为独立语义未动。
   🔴 2026-09-24 四次指令：查找检测需求按钮**也改蓝 #0077FF 族**（见下方按钮块）——
   两态渐变取封面停靠点族（#0077FF/#0077FF）+ 主色加深（#0077FF），紫试验全面退役。
   🔴 2026-09-24 三次指令「背景是不是有透明度？去掉透明度、以实际颜色数值看看」——
   经图层审计 + 像素级实测确认封面**本就无 alpha**（`.hero::before` 半透明叠加层早已 display:none，
   `.hero` / `.hero-bg-motion` / 页眉 alpha 均为 1，顶部实测像素精确 = #0077FF）；
   期间试做【压缩白端】变体（前 42% 恒主色）→ **用户否决「蓝色太多了」已整体回退**，
   当前口径回到下方 9 停靠点平缓渐变。**勿复活压缩白端变体。**
   🔴 2026-09-30 用户指令「①上蓝下白渐变、中间过渡非常柔和 ②蓝色数值 #0077FF ③背景不设透明度（无底图）」——
   封面实色底与 9 停靠点蓝端 #0077FF → **#0077FF**；白端仍 #ffffff；蓝通道恒 255、
   明度 50%→100% 线性递进（沿用原 70%→100% 的停靠点节奏重映射，保证柔和无生硬分界）；
   theme-color 同步 #0077FF。
   **「不透明 + 无底图」不变**（本就满足，此轮不改）：`.hero::before` 半透明叠加层早已 display:none；
   `.hero-bg-motion` 基准块的底图在本页被覆盖为纯 linear-gradient 且 opacity:1、filter:none。
   🔴 2026-10-08 用户指令（v5.33）：「蓝白渐变（蓝色向白色侵占30%）」+ PS 色标参考（白 0%→蓝色标 70%）——
   顶部实色蓝延至 30%（双锚 #0077FF 0%/30%），原 9 停靠点节奏重映射压缩进 30%→100%（p→30+0.7p 取整）；
   白端 #ffffff 不变、蓝通道恒 255。即 2026-09-24 否决的「压缩白端」变体由用户主动以 30% 档重启
   （当时否决的是 42% 档），以本条最新指令为准。 */
body.home-page .hero-bg-motion {
  display: block;
  inset: 0;
  opacity: 1;
  filter: none;
  background-color: #0077FF;
  background-image: linear-gradient(180deg,
    #0077FF 0%, #0077FF 30%, #288CFF 41%, #4DA0FF 51%,
    #6BB0FF 59%, #85BEFF 66%, #9ECBFF 73%, #B7D9FF 80%,
    #D7EAFF 89%, #ffffff 100%);
  background-size: 100% calc(100% - 72px);
  background-position: 0 72px;
  background-repeat: no-repeat;
  animation: none;
}
@keyframes heroBgMoveHome {
  0%   { transform: scale(1.02) translate(1.6%, 0.8%); }
  100% { transform: scale(1.14) translate(-1.8%, -1.4%); }
}
@media (prefers-reduced-motion: reduce) {
  body.home-page .hero-bg-motion { animation: none; }
}
/* 2026-09-19 用户指令「把那个电光扫过、去掉」：首页光带扫过（hero-bg-sheen + heroBgSheen）整体移除；
   动态氛围由 8% 透明度视频底图承担。 */
body.home-page .hero-headline,
body.home-page .hero-eyebrow,
body.home-page .hero-subline-text { color: #fff; }
body.home-page .hero-headline {
    font-size: clamp(56px, 7vw, 108px);
    letter-spacing: .04em;
    line-height: 1.08;
    flex-wrap: nowrap;
    text-shadow: 0 4px 26px rgba(0, 0, 0, .35);
    gap: clamp(18px, 2.4vw, 40px);
    margin-bottom: 52px;
  }
body.home-page .hero-eyebrow {
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.55);
  border-radius: 999px;
  padding: 10px 28px;
  color: #fff;
  font-family: inherit;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .16em;
  margin-bottom: 40px;
  box-shadow: 0 4px 18px rgba(0, 0, 0, .12);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  text-shadow: none;
}
body.home-page .hero-eyebrow-dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  background: #ffd84d;
  box-shadow: 0 0 0 4px rgba(255, 216, 77, .18);
}
body.home-page .hero-capsules {
  margin: 0 0 44px;
  gap: 14px;
  }
body.home-page .hero-capsule {
    padding: 10px 24px;
    font-size: 14px;
    letter-spacing: .04em;
    background: rgba(255, 255, 255, 0.12);
    border: 1px solid rgba(255, 255, 255, 0.55);
    color: #fff;
    box-shadow: 0 4px 14px rgba(0, 119, 255, .18);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
    transition: all .25s ease;
  }
body.home-page .hero-capsule:hover {
  background: rgba(255, 255, 255, 0.22);
  border-color: rgba(255, 255, 255, 0.80);
  color: #fff;
  transform: translateY(-2px);
  box-shadow: 0 8px 22px rgba(0, 119, 255, .25);
}
/* 🔴 2026-09-30 用户指令（v373 回退定稿）：十一轮「白底+内嵌羽化蓝核」被用户否决（不好看、太死板），
   按指令「直接返回之前的版本」回退到样张直贴 + 蓝度加权选择性白化视觉（同 v371 参数：K=0.20, w=K·t^0.9，
   t=蓝度，核心最大、白区趋 0）。资产已按原管线确定性重生成（样张包围盒裁剪 → 760x274 LANCZOS →
   4x 胶囊蒙版内缩 1.5px → putalpha → 白化），自检中心 (135,122,255)、可见像素最小亮度 133.4、
   合成白底零近黑、四角 alpha=0。
   🔴 锚号由 v371 直接推进到 v373（不回退版本号）：用户浏览器可能已把被否决版本的底图字节缓存在
   旧 url 下，换锚强制刷新。background-size 100% 100% 贴合按钮胶囊；hover 同族薄纱。
   文字/箭头/半透白圈沿用定稿。
   🔴历史沿革（… → 数学渐变 → 回退样张直贴 → 样张+选择性白化 → 白底蓝核(否决) → 回退）见 docs/CHANGELOG；
   本注释不写历史色值，避免撞 §132.4 / §134.3 的块内否定断言（铁律：否定断言勿撞注释）。 */
/* 🔴 2026-10-01 用户指令（v382b）：v382 斜向高光强化版被用户否决「不好看」→ 按指令
   「按钮返回之前的版本」回退到 v381 液态玻璃浅版（白半透平铺 + 白描边 + blur+saturation +
   顶部内高光；与 hero-capsule 气泡同族材质）。本轮只保留：文案「去发布检测 / 去查找检测」
   + 排版优化（19px / 字距 2px / padding 20px 40px / 按钮内 gap 18px / 双钮间距 28px）。
   白字 / 半透白圈 / 白箭头沿用定稿；hover=底色加深 + 描边提亮 + 上浮。
   ⚠️ 四块必须独立规则（合并选择器会让 smoke 区块切片取不到 → 假 FAIL，v381 已踩）。
   历史沿革（样张直贴→选择性白化→白底蓝核→回退→液态玻璃→高光强化(否决)→回退浅版）见 docs/CHANGELOG；
   本注释不写历史色值，避免撞 §132.4 / §134.3 的块内否定断言。 */
body.home-page .hero-icon-btn.primary {
  background: rgba(255, 255, 255, .14);
  border: 1px solid rgba(255, 255, 255, .40);
  color: #ffffff;
  text-shadow: 0 1px 10px rgba(0, 60, 140, .22);
  backdrop-filter: blur(10px) saturate(160%);
  -webkit-backdrop-filter: blur(10px) saturate(160%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), 0 8px 26px rgba(0, 40, 120, .25);
}
body.home-page .hero-icon-btn.primary:hover {
  background: rgba(255, 255, 255, .24);
  border-color: rgba(255, 255, 255, .75);
  color: #ffffff;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .45), 0 12px 32px rgba(0, 40, 120, .30);
}
body.home-page .hero-icon-btn.white {
  background: rgba(255, 255, 255, .14);
  border: 1px solid rgba(255, 255, 255, .40);
  color: #ffffff;
  text-shadow: 0 1px 10px rgba(0, 60, 140, .22);
  backdrop-filter: blur(10px) saturate(160%);
  -webkit-backdrop-filter: blur(10px) saturate(160%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), 0 8px 26px rgba(0, 40, 120, .25);
}
body.home-page .hero-icon-btn.white:hover {
  background: rgba(255, 255, 255, .24);
  border-color: rgba(255, 255, 255, .75);
  color: #ffffff;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .45), 0 12px 32px rgba(0, 40, 120, .30);
}
/* 2026-09-08 用户指令：首页页眉与 hero 背景一体、随页面上下滚动，不固定。
   fixed → absolute（钉在文档顶部、随文档滚走，不占流、布局零位移） */
body.home-page .header.hero-mode {
  position: absolute;
}

body.home-page .header.hero-mode,
body.home-page .header.hero-mode.scrolled {
  background: transparent;
  border-bottom: 1px solid rgba(255, 255, 255, .45);
  box-shadow: none;
}
body.home-page .header.hero-mode .nav-link { color: rgba(255, 255, 255, .9); }
body.home-page .header.hero-mode .nav-link:hover,
body.home-page .header.hero-mode .nav-link.active { color: #fff; border-bottom-color: #fff; }
body.home-page .header.hero-mode .btn-header-accent {
  background: transparent;
  border-color: rgba(255, 255, 255, .75);
  color: #fff;
}
body.home-page .header.hero-mode .btn-header-accent:hover {
  background: rgba(255, 255, 255, .15);
  border-color: #fff;
}

/* 矮屏适配：首页 hero 内容整体收拢，避免上下挤压/溢出（≤800px 高视口） */
@media (max-height: 820px) {
  body.home-page .hero {
    padding: 104px 0 84px;
    min-height: 100vh;
    box-sizing: border-box;
  }
  body.home-page .hero-eyebrow { margin-bottom: 32px; padding: 9px 22px; }
  body.home-page .hero-headline {
    font-size: clamp(44px, 6vw, 80px);
    gap: clamp(12px, 2vw, 28px);
    margin-bottom: 44px;
  }
  body.home-page .hero-capsules { margin: 0 0 36px; }
  body.home-page .hero-capsule { padding: 9px 20px; font-size: 14px; }
  body.home-page .hero-subline { margin: 0 auto 44px; }
  body.home-page .hero-cta { gap: 18px; }
  body.home-page .hero-icon-btn { padding: 16px 32px; font-size: 16px; letter-spacing: 1.5px; gap: 16px; }
  body.home-page .hero-icon-btn .icon-circle { width: 30px; height: 30px; }
}

/* ---------- 5) 章节标题与留白 ---------- */
.section {
  /* Sections */
 padding: 80px 0; }
.section-title {
  font-size: clamp(28px, 3.2vw, 40px);
  font-weight: 700;
  letter-spacing: -.02em;
  color: var(--v4-ink);
}
.section-tag {
  color: var(--v4-ink-3);
  font-size: 12px;
  letter-spacing: .16em;
  font-weight: 600;
}
.section-desc {
  color: var(--v4-ink-2);
  font-size: 15px;
  max-width: 560px;
}

/* ---------- 7) 大数字统计：表格数字 + 极细分隔 ---------- */
/* ---------- 6) 大数字统计：细线分隔 ---------- */
.qm-stats-row {
  gap: 0;
  align-items: stretch;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  padding: 40px 0;
  border-top: 1px solid var(--v4-line);
  border-bottom: 1px solid var(--v4-line);
  }
.qm-stat {
    padding: 0 24px;
    position: relative;
    border-left: 1px solid var(--v4-line);
  }
.qm-stat:first-child { border-left: none; }
.qm-stat__num {
    font-size: clamp(36px, 4.5vw, 56px);
    font-weight: 700;
    letter-spacing: -.03em;
    color: var(--v4-ink);
    font-variant-numeric: tabular-nums;
    line-height: 1.05;
  }
.qm-stat__num--blue { color: var(--v4-ink); }
.qm-stat__label {
  font-size: 13px;
  letter-spacing: .04em;
  color: var(--v4-ink-3);
  font-weight: 500;
  }
/* v5.5k：.qm-divider（v4 变体）删除（全站禁装饰线，0 使用方） */

/* ---------- 7) 子页横幅：白底黑字，无渐变 ---------- */
.subpage-hero {
  background: var(--v4-paper);
  color: var(--v4-ink);
  padding: 120px 0 48px;
  border-bottom: 1px solid var(--v4-line);
}
/* ================================================================
全站 v3 · 改头换面大改版（2026-08-29）
原则：只改前端风格 —— 版式 / 字体 / 配色 / 卡片 / 线条 / 箭头 / 数字
约束：纯 CSS 覆盖层，不动任何 HTML 结构、JS 逻辑、后端设计
风格基线：极简商务 · 大留白 · 发丝线 · 超大数字 · 小字距眉题 · 克制单色
================================================================ */
/* ---------- 18) 子页大横幅：告别黄蓝渐变 → 纸面式极简 hero（19 页统一生效） ---------- */
.subpage-hero h1 {
  font-family: inherit;
  color: var(--v4-ink);
  font-size: clamp(30px, 4vw, 48px);
  font-weight: 700;
  letter-spacing: -.02em;
  text-shadow: none;
  line-height: 1.25;
  }
.subpage-hero p {
  color: var(--v4-ink-2);
  font-size: 15px;
  max-width: 640px;
  }
.breadcrumb,
.breadcrumb a { color: var(--v4-ink-3); }

/* ---------- 8) 卡片：细边轻底，无阴影 ---------- */
.form-card,
.auth-card,
.biz-type-card,
.contact-card,
.nl-card,
.ch-code-card,
.chat-rule-card,
.dh-demand-card,
.dh-card-matched,
.dh-card-locked,
.dh-card-stopped,
.wb-page .wb-kpi,
.wb-page .wb-module,
.wb-page .wb-quick,
.adm-card,
.adm-panel,
.adm-login-card,
.adm-kpi,
.od-steps,
.od-quote-row,
.filter-bar,
.auth-modal,
.dh-modal-dialog {
  border: 1px solid var(--v4-line);
  border-radius: var(--v4-radius);
  background: #fff;
  box-shadow: none;
}
.dh-demand-card:hover, .biz-type-card:hover, .wb-page .wb-quick:hover, .nl-card:hover, .contact-card:hover {
  border-color: var(--v4-line-2);
  box-shadow: 0 8px 24px rgba(12, 21, 38, .06);
  transform: translateY(-1px);
  }
.biz-type-card.active,
.radio-chip.active,
.checkbox-chip.active,
.tag-option.active,


.dh-quick-btn.active {
  background: var(--v4-ink);
  color: #fff;
  border-color: var(--v4-ink);
}

/* ---------- 9) 表单：清爽白底 ---------- */
.form-input,
.form-select,
.form-textarea,
#quoteModal .dh-form-group input,
#quoteModal .dh-form-group select,
#quoteModal .dh-price-input,
#quoteModal .dh-cycle-input,
.chat-win-text,
.chat-win-input,
.dh-select {
  border: 1px solid var(--v4-line);
  border-radius: 10px;
  background: #fff;
  color: var(--v4-ink);
  box-shadow: none;
}
.form-input:focus, .form-select:focus, .form-textarea:focus, .chat-win-text:focus {
  border-color: var(--v4-ink);
  box-shadow: 0 0 0 3px rgba(0,0,0,.04);
  outline: none;
  }
.form-label {
  color: var(--v4-ink-2);
  font-weight: 600;
  font-size: 13px;
  letter-spacing: .02em;
}
.form-section-title {
  color: var(--v4-ink);
  font-weight: 700;
  font-size: 16px;
}
.form-section + .form-section,
.form-actions {
  border-top: 1px solid var(--v4-line);
}

/* ---------- 10) 表格与工单列表：清爽分隔 ---------- */
table,
.wb-table,
.adm-main .wb-table {
  border-collapse: collapse;
  width: 100%;
}
/* ---------- 9) 表格：表头小字距化，行 hover 纸色 ---------- */
table th, .wb-table th, .adm-main .wb-table th {
  background: var(--v4-paper);
  border-bottom: 1px solid var(--v4-line);
  color: var(--v4-ink-3);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .05em;
  text-transform: uppercase;
  padding: 14px 16px;
  }
table td,
.wb-table td,
.adm-main .wb-table td {
  border-bottom: 1px solid var(--v4-line);
  color: var(--v4-ink-2);
  padding: 14px 16px;
}
table tbody tr:hover, .wb-table tbody tr:hover {
  background: var(--v4-paper);
  }
.wb-proj-name,
.wb-proj-cat,
.wb-act {
  color: var(--v4-ink);
}
.wb-act {
  border-color: var(--v4-line);
  border-radius: 999px;
  padding: 4px 12px;
  font-size: 12px;
}
.wb-act:hover {
  background: var(--v4-blue);
  color: #fff;
  border-color: var(--v4-blue);
}

/* ---------- 11) 状态/标签：无边框 ---------- */
.tag,
.dh-badge,
.adm-tag,
.wb-status,
.wb-page .wb-status,
.wb-msg-name .tag {
  border-radius: 999px;
  border: none;
  background: #fff;
  color: var(--v4-ink-2);
  font-size: 12px;
  font-weight: 500;
  padding: 3px 10px;
}
.tag-blue,
.wb-page .wb-status.blue,
.wb-page .wb-msg-name .tag {
  background: var(--v4-paper);
  color: var(--v4-ink-2);
}
.wb-page .wb-status.yellow { background: var(--v4-paper); color: var(--v4-ink-2); }
.wb-page .wb-status.green { background: var(--v4-paper); color: var(--v4-ink-2); }
.wb-page .wb-status.purple { background: var(--v4-paper); color: var(--v4-ink-2); }
.wb-page .wb-status.gray { background: var(--v4-paper); color: var(--v4-ink-3); }
.dh-status-quoting {
  background: #fff;
  color: var(--v4-blue);
  border: 1px solid var(--v4-line);
  border-radius: 999px;
}

/* ---------- 12) 工作台专项穿透（覆盖内联） ---------- */
.wb-page {
  background: #fff;
}
.wb-page .wb-topbar {
  background: #fff;
  border-bottom: 1px solid var(--v3-line);
  box-shadow: none;
  border: 1px solid var(--v4-line);
  border-radius: var(--v4-radius);
  }
.wb-page .wb-avatar {
  background: var(--v4-paper);
  color: var(--v4-ink);
  border: 1px solid var(--v4-line);
}
.wb-page .wb-greeting-title,
.wb-page .wb-org { color: var(--v4-ink); }
.wb-page .wb-role-tag {
  background: #fff;
  color: var(--v4-ink-2);
  border: 1px solid var(--v4-line);
}
.wb-page .wb-role-switch {
  display: inline-flex;
  align-items: center;
  gap: 0;
  padding: 4px;
  /* 2026-09-29 v2.102r2 用户纠错回滚：上轮误改此容器 → 恢复灰底（切换胶囊灰底图保留） */
  background: #f1f3f7;
  border-radius: 14px;
}

/* 2026-09-29 v2.102r2 用户指令：账号与企业信息页返回键背后的白色圆角底框去掉
   （真身 = od-topbar 白底+边框+阴影卡片；仅 settings 页去框，order-detail 不动） */
.st-page .od-topbar {
  background: transparent;
  border: none;
  box-shadow: none;
}
.wb-page .wb-role-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 34px;
  padding: 0 22px;
  border: none;
  background: transparent;
  color: #5f6b7a;
  font-size: 14px;
  font-weight: 500;
  border-radius: var(--v6-radius-full);
  cursor: pointer;
  transition: all .2s ease;
  box-shadow: none;
}
.wb-page .wb-role-btn:hover {
  background: rgba(255,255,255,.55);
  color: #0f172a;
  border-color: transparent;
  box-shadow: none;
  transform: none;
}
.wb-page .wb-role-btn.is-active {
  background: #ffffff;
  color: #0077FF;
  border-color: transparent;
  box-shadow: 0 2px 8px rgba(0, 119, 255, 0.1);
  font-weight: 600;
}
.wb-page .wb-kpi,
.wb-page .wb-module,
.wb-page .wb-quick {
  border: 1px solid var(--v4-line);
  border-radius: var(--v4-radius);
  background: #fff;
  box-shadow: none;
}
.wb-page .wb-kpi:hover,
.wb-page .wb-module:hover,
.wb-page .wb-quick:hover {
  border-color: var(--v4-line-2);
  transform: translateY(-1px);
}
.wb-page .wb-kpi.active {
  border-color: var(--v4-ink);
  background: var(--v4-paper);
}
/* ---------- 13) 工作台细节：图标底纸化 + KPI 数字加大 ---------- */
.wb-page .wb-kpi-icon, .wb-page .wb-quick-icon, .biz-type-icon {
  background: var(--v4-paper);
  color: var(--v4-ink);
  border: 1px solid var(--v4-line);
  box-shadow: none;
  border-radius: 10px;
  }
.wb-page .wb-kpi-num { color: var(--v4-ink); font-weight: 700; }
.wb-page .wb-table th { background: var(--v4-paper); border-bottom: 1px solid var(--v4-line); }
.wb-page .wb-table td { border-bottom: 1px solid var(--v4-line); }
.wb-page .wb-table tbody tr:hover { background: var(--v4-paper); }
.wb-page .wb-msg-ic.report,
.wb-page .wb-msg-ic.chat,
.wb-page .wb-msg-ic.remind,
.wb-page .wb-msg-ic.system {
  background: var(--v4-paper);
  color: var(--v4-ink-2);
}
.wb-page .wb-msg-row:hover,
.wb-page .wb-msg-row.unread { background: var(--v4-paper); }
.wb-page .wb-msg-dot { background: var(--v4-ink); }
.wb-page .wb-proj-cat { background: var(--v4-paper); color: var(--v4-ink-2); border: none; }

/* ---------- 13) 聊天页：白底黑字 ---------- */
.chat-app,
.chat-list-pane,
.chat-window,
.chat-win-head,
.chat-list-head,
.chat-win-input {
  background: #fff;
  border-color: var(--v4-line);
  box-shadow: none;
}
.chat-item {
  border-bottom: 1px solid var(--v4-line);
  border-radius: 0;
  background: none;
  }
.chat-item:hover, .chat-item.active {
  background: var(--v4-paper);
  }
.chat-item.active { box-shadow: inset 2px 0 0 var(--v4-ink); }
.chat-msg-bubble {
  border-radius: 14px;
  border: 1px solid var(--v4-line);
  box-shadow: none;
  background: #fff;
  color: var(--v4-ink-2);
  }
.chat-msg-me .chat-msg-bubble {
  background: var(--v4-ink);
  border-color: var(--v4-ink);
  color: #fff;
}
.chat-win-context { background: var(--v4-paper); border-bottom: 1px solid var(--v4-line); }
.chat-ctx-dot { background: var(--v4-ink); }
.chat-locked, .chat-readonly-banner {
    background: var(--v4-paper);
    border: 1px dashed var(--v4-line-2);
    border-radius: var(--v4-radius);
  }

/* ---------- 14) 管理后台：白底黑字 ----------
   🔴 2026-10-04 体验优化（批3）：本段 v4 期覆盖层退役（.adm-side 深底 + active/hover 白字 +
   body .adm-hero h1 近黑标题 + .adm-hero 纸底）。admin.html 对侧栏/hero 已全量自管，
   本层以更高优先级造成「active 白字落在白侧栏上不可见」「hero 标题色被静默改写」；
   删后层叠值即 admin.html 预期（黄标选中 + #14283F 标题），无其他页面引用 .adm-*。 */
.adm-main { background: #fff; }
.adm-card,
.adm-panel,
.adm-login-card { border: 1px solid var(--v4-line); border-radius: var(--v4-radius); background: #fff; }

/* ---------- 15) 页脚：浅灰 ---------- */
.site-footer--slim,
.site-footer {
  background: var(--v4-paper-2);
  border-top: 1px solid var(--v4-line);
  color: var(--v4-ink-2);
}
.footer-copyright {
  color: var(--v4-ink-3);
  font-size: 13px;
  letter-spacing: .02em;
  }
.footer-links a {
  color: var(--v4-ink-2);
  font-size: 13px;
  }
.footer-links a:hover { color: var(--v4-ink); text-decoration: underline; }
.site-footer--slim .footer-links,
.site-footer .footer-links {
  gap: 32px;
}
.site-footer--slim .footer-links a:not(:last-child)::after,
.site-footer .footer-links a:not(:last-child)::after {
  right: -17px;
  width: 1px;
  height: 10px;
  border-radius: 0;
  background: var(--v4-line);
}

/* ---------- 16) 悬浮客服：极简 ---------- */
.qm-service-fab {
  background: transparent;
  color: #14283F;
  border: none;
  box-shadow: 0 8px 20px rgba(0, 119, 255, .12);
  overflow: hidden;
  padding: 0;
}
.qm-service-fab:hover {
  background: transparent;
  color: #14283F;
  box-shadow: 0 12px 26px rgba(0, 119, 255, .16);
}
.qm-service-pop {
  border: 1px solid var(--v4-line);
  border-radius: var(--v4-radius);
  background: #fff;
  box-shadow: 0 16px 48px rgba(0,0,0,.08);
}
.qm-service-pop-head { border-bottom: 1px solid var(--v4-line); }
.qm-service-pop-tip { color: var(--v4-ink-2); }

/* 悬浮客服头像：灰底白影用户图标，无动画 */

/* ---------- 17) 数字标签/线条/箭头工具类 ---------- */
.qm-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 1px solid var(--v4-line-2);
  color: var(--v4-ink);
  font-size: 14px;
  font-weight: 600;
}
/* 🔴 v5.5j：v4 旧 .qm-line 饰线一并清理（无使用方） */
/* ---------- 8) 箭头链接：小箭头 + 下划线动效（线条运用） ---------- */
.qm-arrow {
  color: var(--v4-ink);
  font-weight: 600;
  font-size: 14px;
  letter-spacing: .02em;
  background: none;
  border: none;
  box-shadow: none;
  padding: 4px 2px;
  }
.qm-arrow::after {
  content: '→';
  margin-left: 6px;
  display: inline-block;
  transition: transform .18s ease;
  }
.qm-arrow:hover {
  text-decoration: underline;
  text-underline-offset: 5px;
  text-decoration-thickness: 1.5px;
  color: var(--v4-blue);
  }

/* ---------- 18) 响应式增强 ---------- */
@media (max-width: 768px) {
  body .hero { padding: 100px 0 48px; }
  body .hero-headline { font-size: clamp(32px, 8vw, 48px); }
  body .hero-cta { flex-direction: column; align-items: stretch; }
  body .hero-icon-btn { width: 100%; }
  body .qm-stats-row {
    grid-template-columns: 1fr 1fr;
    gap: 24px 0;
    border-top: none;
    border-bottom: none;
  }
  body .qm-stat {
    border-left: none;
    border-bottom: 1px solid var(--v4-line);
    padding: 16px 0;
  }
  body .section { padding: 56px 0; }
  body .subpage-hero { padding: 100px 0 40px; }
  body .form-row { grid-template-columns: 1fr; }
  body .form-card,
  body .auth-card { padding: 20px; }
  body .wb-layout { grid-template-columns: 1fr; }
  body .chat-app { flex-direction: column; }
  body .chat-list-pane { width: 100%; border-right: none; border-bottom: 1px solid var(--v4-line); }
  body .dh-filter-toolbar { flex-direction: column; gap: 16px; }
  body .dh-filter-divider { display: none; }
}

/* ---------- 19) 杂项清理 ---------- */
::selection { background: rgba(0,0,0,.08); }
:focus-visible { outline: none; }
::-webkit-scrollbar-thumb { background: var(--v4-line-2); border-radius: 999px; border: 2px solid #fff; }

/* ---------- 20) 按钮配色专项覆盖 ---------- */
/* 所有发布按钮：平铺黄底白字（2026-09-05 与工作台 #primaryAction #ffbf00 统一） */
.hero-icon-btn.primary,
.btn.btn-accent.btn-lg,
a.btn[href*="publish.html"].btn-primary,
#primaryAction {
  background: #ffbf00;
  color: #fff;
  border-color: #ffbf00;
}
.hero-icon-btn.primary:hover,
.btn.btn-accent.btn-lg:hover,
a.btn[href*="publish.html"].btn-primary:hover,
#primaryAction:hover {
  background: #ffc71a;
  border-color: #ffc71a;
}

/* 参与报价按钮：橙色底白字 */
.btn.btn-warning.btn-sm,
.btn.btn-warning {
  background: #ff7a1a;
  color: #fff;
  border-color: #ff7a1a;
}
.btn.btn-warning.btn-sm:hover,
.btn.btn-warning:hover {
  background: #e66a0d;
  border-color: #e66a0d;
}
.btn.btn-warning:disabled,
.btn.btn-warning.btn-sm:disabled {
  background: #ffb27a;
  border-color: #ffb27a;
  color: #fff;
  opacity: 1;
}

/* ---------- 22) 工作台消息列表：明显分隔线 ---------- */
.wb-page .wb-msg-row {
  position: relative;
  border-bottom: none;
}
.wb-page .wb-msg-row::after {
  content: "";
  position: absolute;
  left: 16px;
  right: 16px;
  bottom: 0;
  height: 1px;
  background: var(--v4-line-2);
}
.wb-page .wb-msg-row:last-child::after {
  display: none;
}

/* ---------- 23) 发布页选项：主选卡改为独立圆角卡片，其余保持下划线 ---------- */
/* 主业务类型（测试/检验/认证/校准）：四个独立圆角卡片 */
.subpage-content .biz-type-options#bizType {
  display: flex;
  flex-wrap: nowrap;
  justify-content: space-between;
  gap: 16px;
  padding: 0;
  background: transparent;
  border: none;
  border-radius: 0;
  box-shadow: none;
  width: 100%;
  max-width: none;
}
.subpage-content .biz-type-options#bizType .biz-type-card {
  flex: 1 1 0;
  min-width: 0;
  min-height: 64px;
  padding: 18px 16px;
  margin: 0;
  background: #ffffff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  box-shadow: 0 1px 2px rgba(12, 21, 38, .04);
  color: #4b5563;
  font-size: 18px;
  font-weight: 500;
  text-align: center;
  transition: color .15s ease, background .15s ease, border-color .15s ease, box-shadow .15s ease;
  cursor: pointer;
}
.subpage-content .biz-type-options#bizType .biz-type-card:hover {
  background: #f9fafb;
  color: #111827;
  border-color: #d1d5db;
  transform: none;
  box-shadow: 0 2px 6px rgba(12, 21, 38, .06);
}
.subpage-content .biz-type-options#bizType .biz-type-card.active {
  background: var(--v4-ink);
  color: #fff;
  border-color: var(--v4-ink);
  box-shadow: 0 2px 8px rgba(10, 10, 10, .12);
  font-weight: 600;
}

{
  color: #fff;
}
.subpage-content .biz-type-options#bizType .biz-type-card .biz-type-word {
  font-size: 18px;
  font-weight: inherit;
  letter-spacing: 0;
}

/* 发布方式等其它单/多选：保持扁平下划线 */
.subpage-content .publish-mode-options {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0;
  border-bottom: 1px solid var(--v4-line);
}

/* 次级业务类型（诊断|审核|清关、耗材|仪器|试剂）：卡片按钮，无下划线 */
.subpage-content .biz-type-options--secondary {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 16px;
  padding: 0;
  background: transparent;
  border: none;
  border-bottom: none;
  border-radius: 0;
  box-shadow: none;
  max-width: none;
}
.subpage-content .biz-type-options--secondary .biz-type-card--wide {
  flex: 1 1 0;
  max-width: 320px;
  min-width: 140px;
  min-height: 64px;
  padding: 16px 24px;
  margin: 0;
  background: #ffffff;
  border: 1px solid #e5e7eb;
  border-bottom: 1px solid #e5e7eb;
  border-radius: 12px;
  box-shadow: 0 1px 2px rgba(12, 21, 38, .04);
  color: #4b5563;
  font-size: 17px;
  font-weight: 500;
  letter-spacing: 0.6px;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: color .15s ease, background .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.subpage-content .biz-type-options--secondary .biz-type-card--wide:hover {
  background: #f9fafb;
  border-color: #d1d5db;
  color: #111827;
  transform: none;
  box-shadow: 0 2px 6px rgba(12, 21, 38, .06);
}
.subpage-content .biz-type-options--secondary .biz-type-card--wide.active {
  background: var(--v4-ink);
  color: #fff;
  border-color: var(--v4-ink);
  border-bottom-color: var(--v4-ink);
  box-shadow: 0 2px 8px rgba(10, 10, 10, .12);
  font-weight: 600;
}

.subpage-content .publish-mode-options .radio-chip {
  flex: 1 1 0;
  justify-content: center;
  min-height: 0;
  padding: 14px 22px;
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  box-shadow: none;
  color: var(--v4-ink-2);
  font-size: clamp(15px, 2vw, 18px);
  font-weight: 500;
  text-align: center;
  transition: color .12s ease, border-color .12s ease;
}
.subpage-content .publish-mode-options .radio-chip:hover {
  background: transparent;
  border-color: transparent;
  border-bottom-color: #0077FF;
  color: var(--v4-ink);
  transform: none;
  box-shadow: none;
}
.subpage-content .publish-mode-options .radio-chip.active {
  background: transparent;
  color: var(--v4-blue);
  border-bottom-color: var(--v4-blue);
  font-weight: 700;
}

.subpage-content .tag-selector,
.subpage-content .qualification-selector,
.subpage-content .filter-chip-group,
.subpage-content .radio-group {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  padding: 0;
  background: transparent;
  border: none;
  border-bottom: none;
  border-radius: 0;
  box-shadow: none;
}
.subpage-content .tag-option,
.subpage-content .qualification-selector .checkbox-chip,
.subpage-content .filter-chip-group .checkbox-chip,
.subpage-content .radio-group .radio-chip {
  flex: 0 0 auto;
  padding: 8px 18px;
  margin: 0;
  background: #fff;
  border: 1px solid #e3e9f2;
  border-radius: 999px;
  box-shadow: none;
  color: var(--v4-ink-2);
  font-size: 14px;
  font-weight: 500;
  transition: all .15s ease;
}
.subpage-content .tag-option:hover,
.subpage-content .qualification-selector .checkbox-chip:hover,
.subpage-content .filter-chip-group .checkbox-chip:hover,
.subpage-content .radio-group .radio-chip:hover {
  background: #f5f9ff;
  border-color: #0077FF;
  color: var(--v4-ink);
  transform: none;
  box-shadow: none;
}
.subpage-content .tag-option.active,
.subpage-content .qualification-selector .checkbox-chip.active,
.subpage-content .radio-group .radio-chip.active,
.subpage-content .filter-chip-group .checkbox-chip.active {
  background: var(--v4-ink);
  color: #fff;
  border-color: var(--v4-ink);
  font-weight: 700;
}
.subpage-content .tag-option.active:hover,
.subpage-content .qualification-selector .checkbox-chip.active:hover,
.subpage-content .radio-group .radio-chip.active:hover,
.subpage-content .filter-chip-group .checkbox-chip.active:hover {
  background: #2a3546;
  border-color: #2a3546;
  color: #fff;
}

/* 发布表单：宽度收窄居中，避免右侧过宽 */
.subpage-content .form-card {
  max-width: 720px;
  margin-left: auto;
  margin-right: auto;
}
/* 主业务类型选卡文字：由 32px 缩小为 18px */
.subpage-content .biz-type-card .biz-type-word {
  font-size: 18px;
  font-weight: 600;
  letter-spacing: 0.5px;
}

/* 地域选择器：去除边框，改为扁平文字 */
.region-selector {
  border: none;
  background: transparent;
  padding: 0;
}
.region-provinces,
.region-city-grid {
  gap: 16px 20px;
}
.region-province,
.region-city {
  border: none;
  background: transparent;
  padding: 0;
  color: var(--v4-ink-2);
  font-weight: 500;
}
.region-province:hover,
.region-city:hover {
  border: none;
  background: transparent;
  color: var(--v4-ink);
}
.region-province.checked,
.region-city.checked {
  border: none;
  background: transparent;
  color: var(--v4-ink);
  font-weight: 700;
}
.region-cities {
  border-top: none;
  margin-top: 20px;
  padding-top: 0;
}

@media (max-width: 768px) {
  body .subpage-content .biz-type-options,
  body .subpage-content .publish-mode-options,
  body .subpage-content .tag-selector,
  body .subpage-content .qualification-selector,
  body .subpage-content .filter-chip-group,
  body .subpage-content .radio-group {
    flex-wrap: wrap;
  }
  body .subpage-content .biz-type-card,
  body .subpage-content .publish-mode-options .radio-chip {
    padding: 12px 16px;
    font-size: 15px;
  }
  body .subpage-content .biz-type-options#bizType {
    flex-wrap: wrap;
    gap: 12px;
  }
  body .subpage-content .biz-type-options#bizType .biz-type-card {
    flex: 1 1 calc(50% - 6px);
    min-height: 52px;
    padding: 14px 12px;
    font-size: 16px;
  }
  body .subpage-content .biz-type-options#bizType .biz-type-card .biz-type-word {
    font-size: 16px;
  }
}

/* ---------- 24) 登录/注册：切换项改为椭圆白底黑字小按钮 ---------- */
/* 登录方式切换（密码/验证码）与注册身份（需求/供应） */
.auth-card #loginModeChips,
.auth-card #regRole {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  border-bottom: none;
}
.auth-card #loginModeChips .radio-chip,
.auth-card #regRole .radio-chip {
  flex: 0 0 auto;
  justify-content: center;
  min-width: 84px;
  padding: 6px 16px;
  margin: 0;
  background: #fff;
  border: 1px solid var(--v4-line);
  border-radius: 9999px;
  box-shadow: none;
  color: var(--v4-ink);
  font-size: 14px;
  font-weight: 500;
  transition: border-color .12s ease, color .12s ease, font-weight .12s ease;
}
.auth-card #loginModeChips .radio-chip:hover,
.auth-card #regRole .radio-chip:hover {
  background: #fff;
  border-color: var(--v4-ink-3);
  color: var(--v4-ink);
  transform: none;
  box-shadow: none;
}
.auth-card #loginModeChips .radio-chip.active,
.auth-card #regRole .radio-chip.active {
  background: #fff;
  color: var(--v4-ink);
  border-color: var(--v4-ink);
  font-weight: 600;
}
/* 注册身份：浅灰分段控件，选中项白卡 + 阴影 */
.auth-card #regRole {
  width: 100%;
  background: #edf1f7;
  border-radius: 12px;
  padding: 4px;
  gap: 4px;
  align-items: stretch;
}
.auth-card #regRole .role-col {
  flex: 1 1 0;
  align-items: center;
}
.auth-card #regRole .radio-chip {
  width: 100%;
  min-width: auto;
  padding: 12px 0;
  margin: 0;
  background: transparent;
  border: none;
  border-radius: 10px;
  box-shadow: none;
  color: #5b6472;
  font-size: 15px;
  font-weight: 500;
  text-align: center;
  transition: background .12s ease, color .12s ease, box-shadow .12s ease;
}
.auth-card #regRole .radio-chip:hover {
  background: rgba(255, 255, 255, .5);
  color: #0f172a;
  box-shadow: none;
}
.auth-card #regRole .radio-chip.active {
  background: #fff;
  color: #0f172a;
  box-shadow: 0 1px 2px rgba(16, 24, 40, .08), 0 4px 12px -4px rgba(16, 24, 40, .12);
  font-weight: 600;
}

/* 登录/注册大 tab：用下划线，主标题文字放大 */
.auth-card .auth-tabs {
  border-bottom: 1px solid var(--v4-line);
  margin-bottom: 24px;
}
.auth-card .auth-tab {
  border-bottom: 2px solid transparent;
  color: var(--v4-ink-2);
  background: transparent;
  font-size: clamp(20px, 3vw, 26px);
  font-weight: 600;
  padding: 14px 0;
}
.auth-card .auth-tab.active {
  color: var(--v4-ink-2);
  border-bottom-color: var(--v4-blue);
  font-weight: 700;
}

/* 登录/注册卡片内「还没有账号？免费注册」：纯文字蓝色下划线链接 */
.auth-card .btn-outline-primary {
  background: transparent;
  color: var(--v4-blue);
  border: none;
  border-radius: var(--v6-radius-full);
  box-shadow: none;
  text-shadow: none;
  transform: none;
  font-size: 15px;
  font-weight: 500;
  padding: 0;
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: color .12s ease;
}
.auth-card .btn-outline-primary:hover {
  background: transparent;
  color: var(--v4-blue-deep);
  border: none;
  box-shadow: none;
  transform: none;
}

/* 登录/注册卡片内「获取验证码」：浅蓝填充 + 蓝色文字 + 胶囊大圆角 */
.auth-card .btn-code {
  background: #e8f1ff;
  color: #0077FF;
  border: none;
  border-radius: 9999px;
  box-shadow: none;
  font-weight: 500;
  padding: 10px 18px;
  transition: background .12s ease, color .12s ease;
}
.auth-card .btn-code:hover {
  background: #dbeaff;
  color: #0077FF;
  transform: none;
  box-shadow: none;
}
.auth-card .btn-code:disabled {
  background: #f1f5f9;
  color: #94a3b8;
  cursor: not-allowed;
  transform: none;
}

/* 顶部导航「登录 / 注册」按钮：文字链接，默认无下划线，悬浮才出现，无阴影 */
.header .btn-header-accent {
  display: inline-flex;
  align-items: center;
  padding: 6px 0;
  font-size: 14px;
  font-weight: 500;
  color: var(--v4-ink-2);
  background: transparent;
  border: none;
  border-bottom: 1px solid transparent;
  border-radius: var(--v6-radius-full);
  box-shadow: none;
  text-shadow: none;
  text-decoration: none;
  transform: none;
  transition: color .12s ease, border-color .12s ease;
}
.header .btn-header-accent:hover {
  background: transparent;
  color: var(--v4-ink);
  border-bottom-color: var(--v4-ink);
  transform: none;
  box-shadow: none;
  text-shadow: none;
}
/* 2026-09-06 用户拍板：去掉聚焦后的黑色描边圈（outline 即用户看到的「黑色阴影」） */
.header .btn-header-accent:focus,
.header .btn-header-accent:focus-visible {
  outline: none;
}
.header.scrolled .btn-header-accent {
  color: var(--v4-ink-2);
  background: transparent;
  border-bottom-color: transparent;
  box-shadow: none;
  text-shadow: none;
  transform: none;
}
.header.scrolled .btn-header-accent:hover {
  color: var(--v4-ink);
  border-bottom-color: var(--v4-ink);
  box-shadow: none;
  text-shadow: none;
  transform: none;
}
body.home-page .header.hero-mode .btn-header-accent,
body.home-page .header.hero-mode.scrolled .btn-header-accent {
  color: rgba(255, 255, 255, .85);
  background: transparent;
  border-bottom-color: transparent;
  box-shadow: none;
  text-shadow: none;
  transform: none;
}
body.home-page .header.hero-mode .btn-header-accent:hover,
body.home-page .header.hero-mode.scrolled .btn-header-accent:hover {
  color: #fff;
  border-bottom-color: #fff;
  box-shadow: none;
  text-shadow: none;
  transform: none;
}
/* 2026-09-07 二次拍板：「登录 / 注册」hover 也不留任何底/框/下划线——纯文字变色去干净 */
html body .header .btn-header-accent,
html body .header.scrolled .btn-header-accent,
html body .header.hero-mode .btn-header-accent,
html body .header.hero-mode.scrolled .btn-header-accent,
html body.home-page .header.hero-mode .btn-header-accent,
html body.home-page .header.hero-mode.scrolled .btn-header-accent,
html body .header .btn-header-accent:hover,
html body .header.scrolled .btn-header-accent:hover,
html body .header.hero-mode .btn-header-accent:hover,
html body .header.hero-mode.scrolled .btn-header-accent:hover,
html body.home-page .header.hero-mode .btn-header-accent:hover,
html body.home-page .header.hero-mode.scrolled .btn-header-accent:hover {
  border: none;
  border-bottom: none;
  background: transparent;
  box-shadow: none;
}
.header .btn-header-accent:hover,
.header.scrolled .btn-header-accent:hover {
  color: var(--v4-ink);
}
html body .header.hero-mode .btn-header-accent:hover, html body .header.hero-mode.scrolled .btn-header-accent:hover, html body.home-page .header.hero-mode .btn-header-accent:hover, html body.home-page .header.hero-mode.scrolled .btn-header-accent:hover {
  border: none;
  background: rgba(255, 255, 255, .12);
  color: #fff;
  }

/* ---------- 25) 聊天页/工作台：全站直角，不用圆弧 ---------- */
.chat-app .chat-rule-card,
.chat-app .chat-rule-icon,
.chat-app .chat-item,
.chat-app .chat-item-avatar,
.chat-app .chat-item-badge,
.chat-app .chat-item-locktag,
.chat-app .chat-window,
.chat-app .chat-win-inner,
.chat-app .chat-win-head,
.chat-app .chat-peer-avatar,
.chat-app .chat-auth-btn,
.chat-app .chat-ctx-label,
.chat-app .chat-msg-bubble,
.chat-app .chat-msg-image,
.chat-app .chat-msg-file,
.chat-app .chat-file-icon,
.chat-app .chat-attach-btn,
.chat-app .chat-win-text,
.chat-app .chat-send-btn,
.chat-app .chat-locked,
.chat-app .chat-locked-icon,
.chat-app .chat-locked-rule,
.chat-app .auth-modal,
.chat-app .auth-modal-icon,
.chat-app .auth-modal-note {
  border-radius: 0;
}
.wb-page .wb-topbar,
.wb-page .wb-avatar,
.wb-page .wb-role-tag,
.wb-page .wb-role-switch,
.wb-page .wb-role-btn,
.wb-page .wb-kpi,
.wb-page .wb-kpi-icon,
.wb-page .wb-module,
.wb-page .wb-filter-chip,
.wb-page .wb-msg-chip,
.wb-page .wb-quick,
.wb-page .wb-quick-icon,
.wb-page .wb-msg-name .tag,
.wb-page .wb-msg-foot button,
.wb-page .wb-rule-tip,
.wb-page .wb-status,
.wb-page .wb-proj-cat {
  border-radius: var(--v6-radius-md);
}

/* 消息提醒模块外框恢复圆弧角 */
.wb-page .wb-module.wb-module-msg {
  border-radius: 16px;
}

/* 2026-09-29 v2.103 用户指令：settings 切换胶囊灰底容器与按钮同形（椭圆胶囊） */
.st-page .wb-role-switch {
  border-radius: 999px;
}

/* ---------- 26) 需求大厅：「查看详情」改为下划线链接 ---------- */
.dh-card-actions .dh-detail-link {
  display: inline-flex;
  align-items: center;
  height: 32px;
  padding: 0 2px;
  margin: 0 4px;
  font-size: 14px;
  font-weight: 500;
  line-height: 1;
  color: var(--v4-blue);
  text-decoration: none;
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--v4-blue);
  border-radius: 0;
  box-shadow: none;
  transition: color .12s ease, border-color .12s ease;
}
.dh-card-actions .dh-detail-link:hover {
  color: var(--v4-ink);
  border-bottom-color: var(--v4-ink);
  background: transparent;
  text-decoration: none;
}

/* ---------- 27) 需求大厅：灰色状态标签与禁用按钮统一浅灰底白字 ---------- */
.dh-status-matched,
.dh-status-locked,
.dh-status-stopped {
  background: #d1d5db;
  color: #fff;
  border: 1px solid #d1d5db;
}

/* 需求大厅卡片内已选取 / 已锁定 / 停止报价等禁用按钮 */
.dh-card-actions .btn-outline-secondary,
.dh-card-actions .btn-outline-secondary:disabled,
.dh-card-actions .btn-outline-secondary.disabled {
  background: #d1d5db;
  color: #fff;
  border-color: #d1d5db;
  opacity: 1;
}
.dh-card-actions .btn-outline-secondary:hover {
  background: #9ca3af;
  border-color: #9ca3af;
  color: #fff;
}

/* 需求大厅：卡片圆角 + 聊天/买断按钮胶囊 + 弹窗圆角 16 */
/* ---------- 28) 需求大厅：可沟通状态的在线沟通按钮保持蓝色文字 ---------- */
.dh-chat-btn {
  border-radius: 999px;
  background: #fff;
  color: #0077FF;
  border: none;
  box-shadow: inset 0 0 0 1px #0077FF;
  }
.dh-chat-btn:hover {
  color: #0077FF;
  box-shadow: inset 0 0 0 1px #0077FF;
  background: #f5f9ff;
}

/* ---------- 29) 顶部导航登录态用户头像/身份下拉 ---------- */
.header .header-user {
  position: relative;
  display: inline-flex;
  align-items: center;
}
.header .header-user-toggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px 10px 4px 4px;
  background: transparent;
  border: none;
  border-radius: 24px;
  cursor: pointer;
  color: var(--v4-ink-2);
  font-size: 14px;
  font-weight: 500;
  transition: color .12s ease, background .12s ease;
}
.header .header-user-toggle:hover {
  color: var(--v4-ink);
  background: rgba(0, 119, 255, 0.04);
}
.header .header-user-avatar {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: transparent;
  border: none;
  box-shadow: none;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 600;
  flex-shrink: 0;
  overflow: hidden;
}
.header .header-user-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.header .header-user-caret {
  opacity: .6;
  transition: transform .15s ease;
}
.header .header-user.is-open .header-user-caret {
  transform: rotate(180deg);
}
.header .header-user-menu {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  min-width: 144px;
  background: #fff;
  border: 1px solid #e8ecf3;
  border-radius: 10px;
  box-shadow: 0 12px 32px rgba(0, 119, 255, 0.12);
  padding: 6px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity .15s ease, transform .15s ease, visibility .15s;
  z-index: 1000;
}
.header .header-user.is-open .header-user-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.header .header-user-menu a,
.header .header-user-menu button {
  display: block;
  width: 100%;
  text-align: left;
  padding: 9px 12px;
  border-radius: var(--v6-radius-full);
  font-size: 14px;
  color: var(--v4-ink-2);
  text-decoration: none;
  background: transparent;
  border: none;
  cursor: pointer;
  transition: background .12s ease, color .12s ease;
}
.header .header-user-menu a:hover,
.header .header-user-menu button:hover {
  background: #f5f7fa;
  color: var(--v4-ink);
}
@media (max-width: 768px) {
  html body .header .header-user-toggle { padding-right: 4px; }
}

/* ---------- 30) 聊天页「关联需求」标签改为蓝底白字 ---------- */
.chat-app .chat-ctx-label {
  background: var(--color-primary);
  color: #fff;
}



/* ========================================
   页脚两组链接（2026-08-31 P0：公司信息 / 法律文档）
   ======================================== */
.footer-links .footer-group {
  display: flex;
  align-items: center;
  gap: 28px;
}
.footer-links .footer-group-title {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--color-text-muted);
}
.footer-links .footer-links-sep {
  flex: 0 0 1px;
  width: 1px;
  height: 14px;
  background: var(--color-border);
}
@media (max-width: 768px) {
  .footer-links .footer-group {
    gap: 16px;
  }
}

/* ========================================
   首页共建板块（2026-09-02 定稿）
   默认显示；后台 site_home_co_build=0 时 main.js 隐藏（display:none）
   ======================================== */
.co-build {
  padding: 84px 0 96px;
  background: var(--color-bg-light);
  border-top: 1px solid var(--color-border);
}
.co-build-head {
  max-width: 720px;
  margin: 0 auto 52px;
  text-align: center;
}
.co-build-head h2 {
  margin: 0 0 14px;
  font-size: 32px;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--color-navy);
}
/* v5.5k：.co-build-head h2::after 黄色短横删除（0 使用方，共建区已下线） */
.co-build-head p {
  margin: 18px 0 0;
  font-size: 15px;
  line-height: 1.8;
  color: var(--color-text-secondary);
}
.co-build-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  max-width: 1080px;
  margin: 0 auto;
}
.co-build-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: 36px 32px 32px;
  background: var(--color-bg-light);
  border: 1px solid var(--color-border);
  border-radius: 14px;
  text-decoration: none;
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}
.co-build-card:hover {
  transform: translateY(-4px);
  border-color: var(--color-primary-light);
  box-shadow: 0 12px 32px rgba(0, 119, 255, 0.08);
}
.co-build-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 52px;
  margin-bottom: 20px;
  border-radius: 12px;
  color: var(--color-primary);
  background: var(--color-primary-soft);
}
.co-build-card h3 {
  margin: 0 0 10px;
  font-size: 19px;
  font-weight: 600;
  color: var(--color-text);
}
.co-build-card p {
  flex: 1;
  margin: 0 0 22px;
  font-size: 14px;
  line-height: 1.75;
  color: var(--color-text-muted);
}
.co-build-link {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-primary);
  border-bottom: 1px solid var(--color-primary-light);
  padding-bottom: 2px;
  transition: color 0.2s ease, border-color 0.2s ease;
}
.co-build-card:hover .co-build-link {
  color: var(--color-primary-dark);
  border-color: var(--color-primary-dark);
}
@media (max-width: 900px) {
  .co-build-grid {
    grid-template-columns: 1fr;
    max-width: 480px;
  }
  .co-build {
    padding: 60px 0 68px;
  }
}

/* ========================================
   首页 v5 重构（2026-09-02 P1 改版指令 · 所有页面展示层可重构，系统不动）
   7 板块：导航 / Hero / 平台价值三栏 / 业务类目 / 伙伴占位 / 共建数字化 / 页脚
   风格：简约商务 + 青春活力；清爽科技蓝主色、低饱和浅橙浅绿辅助、
   浅灰白底、轻圆角、正文深灰非纯黑、浅底色轻标签、轻量过渡
   ======================================== */

/* ---- 区块头（通用） ---- */
.hp-sec-head {
  text-align: center;
  margin-bottom: 46px;
}
.hp-sec-head h2 {
  margin: 0;
  font-size: 30px;
  font-weight: 700;
  letter-spacing: 0.01em;
  color: #0F2546;
}
/* 🔴 v5.5j（2026-10-06 用户指令③）：全站禁用装饰性渐变线条——标题下的渐变短杠属「无用的装饰」，
   美化着眼页面设计与文字层次，不靠装饰线 ⇒ 本规则整体删除（下同，不逐处复注） */

/* ---- ③ 平台价值三栏 ---- */
.hp-value {
  padding: 88px 0 84px;
  background: #ffffff;
}
.hp-value-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  max-width: 1080px;
  margin: 0 auto;
}
.hp-value-card {
  padding: 36px 32px 32px;
  background: #ffffff;
  border: 1px solid #eef2f8;
  border-radius: 20px;
  box-shadow: 0 4px 20px rgba(0, 119, 255, 0.05);
  transition: transform 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease;
}
.hp-value-card:hover {
  transform: translateY(-4px);
  border-color: #0077FF;
  box-shadow: 0 16px 40px -12px rgba(0, 119, 255, 0.12);
}
.hp-value-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  margin-bottom: 18px;
  border-radius: 14px;
  color: #0077FF;
  background: #e8f1ff;
}
.hp-value-card:nth-child(2) .hp-value-icon {
  color: #c2703d;
  background: #fdf1e6;
}
.hp-value-card:nth-child(3) .hp-value-icon {
  color: #2e8b57;
  background: #e9f6ee;
}
.hp-value-card h3 {
  margin: 0 0 10px;
  font-size: 19px;
  font-weight: 600;
  color: #14283F;
}
.hp-value-card p {
  margin: 0;
  font-size: 14px;
  line-height: 1.8;
  color: #5a6f88;
}

/* ---- ④ 业务覆盖类目（8 标签） ---- */
.hp-categories {
  padding: 80px 0;
  background: #f7f9fc;
  border-top: 1px solid #edf1f7;
}
.hp-cat-tags {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 16px;
  max-width: 920px;
  margin: 0 auto;
}
.hp-cat-tag {
  display: inline-flex;
  align-items: center;
  padding: 11px 28px;
  font-size: 15px;
  font-weight: 600;
  color: #1E3A5F;
  background: #ffffff;
  border: 1px solid #e6ecf5;
  border-radius: 999px;
  box-shadow: 0 2px 8px rgba(0, 119, 255, 0.04);
  transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}
.hp-cat-tag:hover {
  color: #0077FF;
  border-color: #0077FF;
  background: #f0f6ff;
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(0, 119, 255, 0.12);
}
.hp-cat-tip {
  margin: 26px 0 0;
  text-align: center;
  font-size: 13px;
  color: #8496ab;
}

/* ---- ④b 运行情况统计（2026-09-04 P1；后台开关默认关闭，开启后实时数字。
        UI 参考中介超市大数字统计条：白底卡片 + 蓝色大数字 + 黄色点缀，真实不修饰） ---- */
.hp-stats {
  padding: 80px 0 76px;
  background: #ffffff;
}
.hp-stats-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  max-width: 1080px;
  margin: 0 auto;
}
.hp-stat-card {
  padding: 36px 28px 30px;
  text-align: center;
  background: #ffffff;
  border: 1px solid #eef2f8;
  border-radius: 20px;
  box-shadow: 0 4px 20px rgba(0, 119, 255, 0.05);
  transition: transform 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease;
}
.hp-stat-card:hover {
  transform: translateY(-4px);
  border-color: #0077FF;
  border-top-color: #ffc400;
  box-shadow: 0 16px 40px -12px rgba(0, 119, 255, 0.12);
}
.hp-stat-num {
  font-size: 46px;
  font-weight: 700;
  line-height: 1.1;
  color: #0077FF;
  font-variant-numeric: tabular-nums;
}
.hp-stat-label {
  margin-top: 10px;
  font-size: 16px;
  font-weight: 600;
  color: #0F2546;
}
.hp-stat-sub {
  margin-top: 8px;
  font-size: 13px;
  color: #8494ab;
}
.hp-stat-sub b {
  font-weight: 600;
  color: #4a5d75;
}
.hp-stats-note {
  margin: 26px 0 0;
  text-align: center;
  font-size: 13px;
  color: #a5b1c2;
}

/* ---- ⑤ 共建（后台 site_home_co_build 开关，默认显示；内容精简为标题+一句话+联系入口） ---- */
.co-build-v5 {
  background: #f7f9fc;
  border-top: 1px solid #edf1f7;
}
.co-build-v5-head {
  max-width: 760px;
  margin: 0 auto 34px;
  text-align: center;
}
.co-build-v5-head h2 {
  margin: 0;
  font-size: 30px;
  font-weight: 700;
  letter-spacing: 0.01em;
  color: #0F2546;
}
.co-build-v5-head p {
  margin: 20px 0 0;
  font-size: 15px;
  line-height: 1.8;
  color: #5a6f88;
}
.co-build-v5-foot {
  max-width: 760px;
  margin: 0 auto;
  padding-bottom: 64px;
  text-align: center;
  font-size: 14px;
  line-height: 1.8;
  color: #5a6f88;
}
.co-build-v5-foot a {
  color: #0077FF;
  font-weight: 600;
}
.co-build-v5-foot a:hover {
  text-decoration: underline;
}

/* ---- ⑦ 页脚：版权行 + 两组链接（导航 / 法律） ---- */
.site-footer--slim .footer-links {
  gap: 24px;
}
.site-footer--slim .footer-links .footer-group {
  gap: 24px;
}
.site-footer--slim .footer-links .footer-group a {
  font-size: 13px;
}
.site-footer--slim .footer-links .footer-links-sep {
  height: 14px;
  background: #dde4ee;
}

/* ---- 响应式 ---- */
@media (max-width: 900px) {
  .hp-value-grid {
    grid-template-columns: 1fr;
    max-width: 480px;
  }
}
@media (max-width: 600px) {
  .hp-value {
    padding: 64px 0 56px;
  }
  .hp-categories,
  .hp-stats {
    padding: 56px 0;
  }
  .hp-stats-grid {
    grid-template-columns: 1fr;
    max-width: 420px;
  }
  .hp-stat-num {
    font-size: 38px;
  }
  .hp-sec-head h2 {
    font-size: 24px;
  }
  .hp-cat-tag {
    padding: 9px 20px;
    font-size: 14px;
  }
  .hero-content-v5 {
    padding: 104px 20px 56px;
  }
  body .site-footer--slim .footer-links {
    flex-wrap: wrap;
    justify-content: center;
    row-gap: 10px;
  }
}

/* ============================================================
V4 商务极简风 —— 克制留白 · 线条 · 小箭头 · 数字标签
原则：白底黑字、去渐变、去动效、无框线/细框线、突出表单表格
============================================================ */
/* ============================================================
v6 全局设计令牌层（2026-09-02 · P1 改版：全页面展示层统一基线）
主题：青春活力 · 时尚前沿 · 商务精简 · 新页面尺寸
范围：仅展示层视觉，不改动任何业务逻辑 / 接口 / 字段 / 校验
============================================================ */
/* —— 全局基础：浅灰白底 + 深灰正文 —— */
html body {
  background: var(--v6-paper);
  color: var(--v6-ink);
  font-size: 15px;
  line-height: 1.75;
  font-family: var(--v6-font);
  }
a { color: var(--v6-blue); transition: color .16s ease; }
a:hover { color: var(--v6-blue-deep); }
h1, h2, h3, h4 {
  color: var(--v6-ink);
  letter-spacing: -0.01em;
}

/* —— 新页面尺寸：内容容器统一 1280px —— */
.container { max-width: var(--v6-page-max); }

/* —— 按钮：主/次/强调/危险 统一体系（2026-09-05 全站按钮胶囊化）—— */
.btn {
  border-radius: var(--v6-radius-full);
  font-weight: 600;
  transition: transform .16s ease, box-shadow .16s ease, background-color .16s ease, color .16s ease, border-color .16s ease;
}
.btn:active { transform: translateY(0) scale(.98); }
.btn:disabled,
.btn.disabled { opacity: .55; transform: none; box-shadow: none; cursor: not-allowed; }
.btn-primary {
  background: linear-gradient(135deg, #0077FF 0%, #0077FF 100%);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
}
.btn-primary:hover {
  background: linear-gradient(135deg, #0077FF 0%, #0077FF 100%);
  border-color: transparent;
  color: #fff;
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12);
}
.btn-outline-primary {
  background: #fff;
  border: 1px solid var(--v6-blue-line);
  color: var(--v6-blue);
}
.btn-outline-primary:hover {
  background: var(--v6-blue-wash);
  border-color: var(--v6-blue);
  color: var(--v6-blue-deep);
}
.btn-accent,
.btn-header-accent {
  background: linear-gradient(135deg, #ffb020 0%, #ff7a1a 100%);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
}
.btn-accent:hover,
.btn-header-accent:hover {
  background: linear-gradient(135deg, #ffc04d 0%, #ff8a33 100%);
  border-color: transparent;
  color: #fff;
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12);
}
.btn-danger:hover { background: #cf1322; border-color: transparent; color: #fff; }
.btn-warning { background: var(--v6-orange-soft); border-color: #ffd2ac; color: #d95f00; }
.btn-gold {
  background: linear-gradient(180deg, #ffd040 0%, #ffc400 100%);
  border-color: transparent;
  color: #fff;
  text-shadow: 0 1px 2px rgba(120, 80, 0, 0.35);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
}
.btn-gold:hover {
  background: linear-gradient(180deg, #ffe066 0%, #ffd94d 100%);
  border-color: transparent;
  color: #fff;
  text-shadow: 0 1px 2px rgba(120, 80, 0, 0.35);
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12);
}
.btn-ghost,
.btn-link,
.btn-text { background: transparent; color: var(--v6-blue); border-color: transparent; }
.btn-ghost:hover,
.btn-link:hover,
.btn-text:hover { background: var(--v6-blue-wash); color: var(--v6-blue-deep); }
.btn-sm { border-radius: var(--v6-radius-full); }
.btn-lg { border-radius: var(--v6-radius-full); padding: 12px 28px; }

/* —— 表单：白底 + 发丝线 + 聚焦蓝色光环 —— */
.form-input,
.form-select,
.form-textarea {
  background: #fff;
  border: 1px solid var(--v6-line-2);
  border-radius: var(--v6-radius-sm);
  transition: border-color .16s ease, box-shadow .16s ease;
}
.form-input:hover,
.form-select:hover,
.form-textarea:hover { border-color: #b9c6da; }
.form-input:focus,
.form-select:focus,
.form-textarea:focus {
  border-color: var(--v6-blue);
  box-shadow: 0 0 0 3px rgba(0, 119, 255, .13);
  outline: none;
}
.form-input:disabled,
.form-select:disabled,
.form-textarea:disabled { background: var(--v6-paper); color: var(--v6-ink-3); }
.form-label { color: var(--v6-ink); font-weight: 600; }
.form-hint { color: var(--v6-ink-3); }
.form-group:focus-within .form-label { color: var(--v6-blue); }
.form-section { border-radius: var(--v6-radius-md); }

/* —— 卡片 / 面板：白底圆角轻阴影 —— */
.form-card,
.auth-card,
html body .contact-form-card,
.adm-card,
.chat-rule-card,
.biz-type-card,
.biz-type-card--wide,
.supermarket-card,
.supplies-offline-card,
.nl-card,
.panel,
.adm-panel {
  background: #fff;
  border-radius: var(--v6-radius-md);
  box-shadow: var(--v6-shadow-sm);
}
.panel,
.adm-panel { border: 1px solid var(--v6-line); }
.panel-head,
.adm-panel-head { border-bottom: 1px solid var(--v6-line); }
.adm-card-title,
.section-title { color: var(--v6-ink); letter-spacing: -0.01em; }
/* v5.5j：.section-title::after 渐变短杠规则删除（无 content 本就不渲染，顺手清死规则） */

/* —— 表格：表头浅灰 + 行 hover —— */
.wb-table,
.table {
  border-collapse: separate;
  border-spacing: 0;
  width: 100%;
  min-width: 760px;
}
.wb-table th,
.table th {
  background: #f2f5fa;
  color: var(--v6-ink-2);
  font-weight: 600;
  border-bottom: 1px solid var(--v6-line);
}
.wb-table td,
.table td { border-bottom: 1px solid var(--v6-line); }
.wb-table tbody tr:hover td,
.table tbody tr:hover td { background: var(--v6-blue-wash); }
.table-wrap { border-radius: var(--v6-radius-md); overflow: hidden; }

/* —— 标签 / 徽章：胶囊圆角 —— */
.tag,
.chip,
.badge,
.tag-option { border-radius: var(--v6-radius-full); }
.tag-option.selected { border-color: var(--v6-blue); color: var(--v6-blue); background: var(--v6-blue-wash); }
.adm-tag { border-radius: 8px; }

/* —— 模态框 —— */
.modal-dialog,
.modal { border-radius: var(--v6-radius-md); }
.modal-header { border-bottom: 1px solid var(--v6-line); }
.modal-footer { border-top: 1px solid var(--v6-line); }
.modal-backdrop { background: rgba(15,23,42,.5); }

/* —— 状态色：绿=成功/已认证、橙=进行/提醒、红=失败/风险 —— */
.status-ok,
.status-success { color: var(--v6-green); }
.status-warn,
.status-pending { color: var(--v6-orange); }
.status-fail,
.status-error { color: var(--v6-red); }

/* —— 滚动条（WebKit）：细窄浅色 —— */
::-webkit-scrollbar {
  /* 细滚动条 —— 现代极简 */
 width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: #c9d3e1; border-radius: 8px; }
::-webkit-scrollbar-thumb:hover { background: #aebbd0; }

/* ============================================================
   v6 页面级重构 · 工作台 workbench（2026-09-02 · #751 第一桶）
   ============================================================ */
.wb-page { max-width: var(--v6-page-max); margin-left: auto; margin-right: auto; }

/* —— Topbar：浅蓝渐变卡片 —— */
.wb-topbar {
  background: linear-gradient(120deg, #ffffff 0%, #f0f6ff 100%);
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-lg);
  box-shadow: var(--v6-shadow-md);
}
.wb-greeting-title { color: var(--v6-ink); }
.wb-avatar {
  background: linear-gradient(135deg, #0077FF 0%, #0077FF 100%);
  color: #fff;
  box-shadow: var(--v6-shadow-blue);
}
/* —— 角色切换：胶囊（2026-09-15 用户指令：激活胶囊改白色底） —— */

.wb-role-btn.is-active {
  /* 🟡 v390：选中态文字同改主蓝（原深藏青） */
  background: #fff;
  border-color: transparent;
  /* 🟡 v390（2026-10-01 用户指令：视角切换文字改主蓝；原深藏青为高优先级覆盖源，已同步改） */
  color: #0077FF;
  box-shadow: 0 2px 10px rgba(15, 23, 42, .12);
}

/* —— KPI 统计卡：左侧主题色条 + hover 上浮 —— */
.wb-kpi {
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-md);
  box-shadow: var(--v6-shadow-sm);
  position: relative;
  overflow: hidden;
}
/* 左侧选中指示条已按 2026-09-08 用户指令全站去除（选中态由边框+底色表达） */
.wb-kpi::before {
  content: none;
}
.wb-kpi:hover {
  transform: translateY(-3px);
  box-shadow: var(--v6-shadow-lg);
}

/* —— 模块卡：白底大圆角 —— */
.wb-module {
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-lg);
  box-shadow: var(--v6-shadow-md);
}
.wb-module-head { border-bottom: 1px solid var(--v6-line); }

/* —— 筛选 chip：胶囊 + 激活蓝底白字 —— */
.wb-filter-chip { border-radius: var(--v6-radius-full); }
.wb-filter-chip.active {
  background: var(--v6-blue);
  border-color: var(--v6-blue);
  color: #fff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
}

/* —— 状态徽章：胶囊化，保留语义色 —— */
.wb-status { border-radius: var(--v6-radius-full); }

/* —— 表格容器：白底卡片 —— */
.wb-table-wrap {
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-md);
  background: #fff;
  box-shadow: var(--v6-shadow-sm);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

/* —— 待办模块 —— */
.wb-todo-module {
  background: #fff;
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-lg);
  box-shadow: var(--v6-shadow-sm);
}
.wb-todo-count {
  background: linear-gradient(135deg, #ffb020 0%, #ff7a1a 100%);
  border-radius: var(--v6-radius-full);
  color: #fff;
}

/* —— 侧栏/提示 —— */
.side-note {
  background: #fff;
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-md);
  box-shadow: var(--v6-shadow-sm);
}

/* ============================================================
   v6 页面级重构 · 需求大厅 demand-hall（2026-09-02 · #751 第二桶）
   ============================================================ */

/* —— 筛选面板：白卡片化 —— */
.dh-filter-panel {
  background: #fff;
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-lg);
  box-shadow: var(--v6-shadow-md);
}
.dh-filter-toolbar { border-bottom: 1px solid var(--v6-line); }
.dh-filter-divider { background: var(--v6-line); }
.dh-filter-group select,
.dh-filter-group input[type="text"] {
  border-radius: var(--v6-radius-sm);
  border-color: var(--v6-line-2);
}
.dh-filter-group select:focus,
.dh-filter-group input[type="text"]:focus {
  border-color: var(--v6-blue);
  box-shadow: 0 0 0 3px rgba(0, 119, 255, .13);
  outline: none;
}

/* —— 快速筛选：胶囊 —— */
.dh-quick-btn { border-radius: var(--v6-radius-full); }
.dh-quick-btn.active:hover { color: #fff; }

/* —— 压正段（09-02）：V3/V4 历史层以 把 active 态染成深黑，
     此处用更高特异性 + 统一压回 v6 蓝，保证新设计真正生效 —— */
     /* 🔄v376（2026-10-01 用户指令）：胶囊选中态改白底蓝字（原 v6 蓝底白字废止） */
.wb-page .wb-filter-chip.active,
.wb-page .wb-msg-chip.active,
.wb-page .wb-role-btn.is-active {
  background: #ffffff;
  border-color: transparent;
  color: #0077FF;
  box-shadow: 0 2px 8px rgba(0, 119, 255, 0.10);
}
.dh-quick-btn.active {
  background: linear-gradient(135deg, #0077FF 0%, #0077FF 100%);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
}
.tag-option.active {
  border-color: var(--v6-blue);
  color: var(--v6-blue);
  background: var(--v6-blue-wash);
}

/* —— 需求卡片网格：卡片化 —— */
.dh-demand-card {
  background: #fff;
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-md);
  box-shadow: var(--v6-shadow-sm);
  transition: transform .18s ease, box-shadow .18s ease;
}
.dh-demand-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--v6-shadow-lg);
}
/* —— 分页：胶囊 —— */

.dh-page-btn.active {
  background: var(--v6-blue);
  border-color: var(--v6-blue);
  color: #fff;
}

/* —— 报价弹窗（复用全局 modal + 表单） —— */
.dh-quote-demand {
  background: var(--v6-blue-wash);
  border-radius: var(--v6-radius-md);
  border: 1px solid var(--v6-blue-line);
}
.dh-required { color: var(--v6-red); }

/* ============================================================
   v6 页面级重构 · 工单详情 order-detail（2026-09-02 · #751 第三桶）
   ============================================================ */
.od-page { max-width: var(--v6-page-max); margin-left: auto; margin-right: auto; }
.od-topbar {
  /* 🔴v386（2026-10-02 用户指令）：顶栏去白框，与工作台企业设置（.st-page）同款——透明底 / 无边框 / 无阴影 */
  background: transparent;
  border: none;
  box-shadow: none;
}
.od-head-title { color: var(--v6-ink); }
.od-dot { background: var(--v6-blue); }

/* —— 进度步骤条 —— */
.od-steps {
  background: #fff;
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-lg);
  box-shadow: var(--v6-shadow-sm);
}
.od-step.current .od-step-dot { background: var(--v6-blue); box-shadow: 0 0 0 4px var(--v6-blue-wash); }

/* —— 详情块卡片化 —— */
.od-section,
.od-block {
  background: #fff;
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-md);
  box-shadow: var(--v6-shadow-sm);
}
/* v5.5k：.od-section-title / .od-block-title 及其竖条覆盖对删除（0 使用方，死规则） */

/* —— 报价/参与机构卡片 —— */
.od-quote-card,
.od-agency-card {
  background: #fff;
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-md);
  box-shadow: var(--v6-shadow-sm);
  transition: transform .18s ease, box-shadow .18s ease;
}
.od-quote-card:hover,
.od-agency-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--v6-shadow-md);
}

/* ============================================================
   v6 页面级重构 · 在线沟通 chat（2026-09-02 · #751 第三桶）
   ============================================================ */
.chat-app {
  background: #fff;
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-lg);
  box-shadow: var(--v6-shadow-lg);
  overflow: hidden;
}
.chat-list-head,
.chat-win-head { border-bottom: 1px solid var(--v6-line); }
.chat-peer-name { color: var(--v6-ink); }
.chat-online { color: var(--v6-green); }
.chat-conv-item {
  border-bottom: 1px solid var(--v6-line);
  transition: background .16s ease;
}
.chat-conv-item:hover { background: var(--v6-blue-wash); }
.chat-conv-item.active {
  background: var(--v6-blue-wash);
}
.chat-auth-btn {
  background: var(--v6-blue-wash);
  color: var(--v6-blue);
  border: 1px solid var(--v6-blue-line);
  border-radius: var(--v6-radius-full);
}
.chat-auth-btn.active {
  background: linear-gradient(135deg, #0077FF 0%, #0077FF 100%);
  border-color: transparent;
  color: #fff;
}
/* 消息气泡 */
.chat-bubble.me {
  background: linear-gradient(135deg, #0077FF 0%, #0077FF 100%);
  color: #fff;
  border-radius: 16px 16px 4px 16px;
  box-shadow: 0 4px 12px rgba(0, 119, 255, .18);
}
.chat-bubble.peer {
  background: var(--v6-paper);
  color: var(--v6-ink);
  border-radius: 16px 16px 16px 4px;
  border: 1px solid var(--v6-line);
}
/* 输入区 */
.chat-input-wrap { border-top: 1px solid var(--v6-line); }

/* ============================================================
   v6 页面级重构 · 登录/注册 login（2026-09-02 · #751 第四桶）
   ============================================================ */
.auth-card {
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-lg);
  box-shadow: var(--v6-shadow-lg);
  overflow: hidden;
}
.auth-tabs { border-bottom: 1px solid var(--v6-line); }
.auth-tab { color: var(--v6-ink-2); }
.auth-tab.active {
  color: var(--v6-blue);
  font-weight: 700;
  box-shadow: inset 0 -2px 0 var(--v6-blue);
}
.auth-divider { color: var(--v6-ink-3); }
.auth-divider::before,
.auth-divider::after { background: var(--v6-line); }

/* ============================================================
   v6 页面级重构 · 发布系列 publish*（2026-09-02 · #751 第四桶）
   ============================================================ */
.biz-type-card {
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-md);
  box-shadow: var(--v6-shadow-sm);
  transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}
.biz-type-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--v6-shadow-md);
  border-color: var(--v6-blue-line);
}
.biz-type-card.active,
.biz-type-card.selected {
  border-color: var(--v6-blue);
  background: linear-gradient(160deg, #ffffff 0%, var(--v6-blue-wash) 100%);
  box-shadow: 0 0 0 2px rgba(0, 119, 255, .18), var(--v6-shadow-md);
}
.biz-type-word { color: var(--v6-ink); }
.biz-type-card.active .biz-type-word { color: var(--v6-blue); }
.biz-type-card.active::after { border-color: var(--v6-blue); background: var(--v6-blue); }

/* 发布步骤条 */
.pub-steps,
.step-bar { background: #fff; border: 1px solid var(--v6-line); border-radius: var(--v6-radius-lg); box-shadow: var(--v6-shadow-sm); }
.pub-step.done .pub-step-dot,
.step-bar .step.done .step-dot { background: var(--v6-green); }
.pub-step.current .pub-step-dot,
.step-bar .step.current .step-dot { background: var(--v6-blue); box-shadow: 0 0 0 4px var(--v6-blue-wash); }

/* 发布页侧栏/提示卡 */
.pub-tip-card,
.pub-side-card {
  background: #fff;
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-md);
  box-shadow: var(--v6-shadow-sm);
}

/* ============================================================
   v6 页面级重构 · 管理后台 admin（2026-09-02 · #751 第四桶）
   ============================================================ */
.adm-panel {
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-lg);
  box-shadow: var(--v6-shadow-md);
}
.adm-panel-head { border-bottom: 1px solid var(--v6-line); }
.adm-card-title { color: var(--v6-ink); }
.adm-toolbar { background: var(--v6-paper); border-radius: var(--v6-radius-md); border: 1px solid var(--v6-line); }
.adm-quick-item {
  background: #fff;
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-md);
  box-shadow: var(--v6-shadow-sm);
  transition: transform .16s ease, box-shadow .16s ease;
}
.adm-quick-item:hover { transform: translateY(-2px); box-shadow: var(--v6-shadow-md); }
.adm-log-item { border-bottom: 1px solid var(--v6-line); }
.adm-rule { background: var(--v6-blue-wash); border-radius: var(--v6-radius-sm); }
.adm-note { background: var(--v6-orange-soft); border-radius: var(--v6-radius-sm); }

/* ============================================================
   v6 页面级重构 · 剩余功能性页面（2026-09-02 · #751 第五桶）
   ============================================================ */

/* —— 服务超市 supermarket —— */
.supermarket-grid { gap: 20px; }
.supermarket-card {
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-lg);
  box-shadow: var(--v6-shadow-sm);
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.supermarket-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--v6-shadow-lg);
  border-color: var(--v6-blue-line);
}
.supermarket-icon {
  border-radius: var(--v6-radius-md);
  background: linear-gradient(135deg, var(--v6-blue-wash), var(--v6-orange-soft));
}
.sm-tag { border-radius: var(--v6-radius-full); }
.supermarket-notice {
  background: var(--v6-blue-wash);
  border: 1px solid var(--v6-blue-line);
  border-radius: var(--v6-radius-md);
  color: var(--v6-ink-2);
}

/* —— 渠道推广 channel —— */
.ch-stat {
  background: #fff;
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-md);
  box-shadow: var(--v6-shadow-sm);
  padding: 20px;
}
.ch-stat-num { color: var(--v6-ink); }
.ch-code-main,
.ch-share-row {
  background: #fff;
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-md);
  box-shadow: var(--v6-shadow-sm);
}
.ch-rule-list { color: var(--v6-ink-2); }

/* —— 通用次级页面标题带（about/contact/notice/terms 等） —— */
.page-head {
  background: #fff;
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-lg);
  box-shadow: var(--v6-shadow-sm);
}
.page-head h1 { color: var(--v6-ink); }
.article-body { color: var(--v6-ink-2); }
.article-body h2,
.article-body h3 { color: var(--v6-ink); }

/* —— 压正段补充（09-02）：publish 系列主/次业务类型选卡 active 态覆盖 subpage-content 旧黑层 —— */
.subpage-content .biz-type-options#bizType .biz-type-card.active,
.subpage-content .biz-type-options--secondary .biz-type-card--wide.active {
  border-color: var(--v6-blue);
  background: linear-gradient(160deg, #ffffff 0%, var(--v6-blue-wash) 100%);
  color: var(--v6-blue);
  box-shadow: 0 0 0 2px rgba(0, 119, 255, .18), var(--v6-shadow-md);
}
.subpage-content .biz-type-options#bizType .biz-type-card.active .biz-type-word,
.subpage-content .biz-type-options#bizType .biz-type-card.active .biz-type-title,
.subpage-content .biz-type-options#bizType .biz-type-card.active .biz-type-sub,
.subpage-content .biz-type-options--secondary .biz-type-card--wide.active {
  color: var(--v6-blue);
}

/* ============================================================
v6.1 设计升级 · 工单详情 order-detail（2026-09-04 · #844）
主题：高级 · 大气 · 商务 · 简约 · 实用 · 直观 · 数字化
仅展示层视觉，不改业务逻辑/接口/字段/校验
============================================================ */
/* —— 工单头部卡：更大气商务，左侧蓝黄渐变强调条 —— */
.od-head {
  background: linear-gradient(120deg, #ffffff 0%, #eef4ff 100%);
  border: 1px solid var(--v6-line);
  border-radius: var(--v6-radius-lg);
  box-shadow: var(--v6-shadow-md);
  padding: 26px 30px;
  position: relative;
  overflow: hidden;
  }
.od-head::before {
  content: none;
}
.od-head-title h2 {
  font-size: 24px;
  font-weight: 800;
  letter-spacing: -0.01em;
}
.od-head-item {
  border-left-color: #0077FF;
}
.od-head-item b {
  color: var(--v6-ink);
  font-size: 16px;
  }
/* —— 流程时间线：已完成节点填充绿色 + 打勾，更数字化 —— */

.od-step.done .od-step-dot {
  background: var(--v6-green);
  box-shadow: 0 0 0 4px var(--v6-green-soft);
  border-color: var(--v6-green);
  }
.od-step.done .od-step-dot::after {
  content: "";
  position: absolute;
  left: 3px; top: 1px;
  width: 3px; height: 6px;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.od-step.active .od-step-dot {
  background: var(--v6-blue);
  border-color: var(--v6-blue);
  box-shadow: 0 0 0 4px var(--v6-blue-wash);
}
.od-step.done::before,
.od-step.active::before { background: var(--v6-blue); }
.od-step-name { font-size: 13.5px; }
.od-step-date { font-size: 12px; }

/* —— 报价行：悬停更轻盈，选中态更醒目 —— */
.od-quote-row { transition: background-color .16s ease; }
.od-quote-row:hover { background: var(--v6-blue-wash); }
.od-quote-row.selected {
  background: var(--v6-blue-wash);
  border-radius: var(--v6-radius-md);
}
.od-quote-avatar {
  background: linear-gradient(135deg, var(--v6-blue) 0%, var(--v6-blue-deep) 100%);
  box-shadow: 0 6px 14px rgba(0, 119, 255, .18);
}

/* —— 侧栏模块（2026-09-08：顶部强调线按用户指令移除） —— */

/* —— 2026-09-05 全站按钮胶囊化（圆弧形）：覆盖前段直角/小圆角规则 —— */
.chat-app .chat-auth-btn,
.chat-app .chat-attach-btn,
.chat-app .chat-send-btn,
.wb-page .wb-role-btn,
.wb-page .dh-btn-submit {
  border-radius: var(--v6-radius-full);
}
button,
.btn,
html body [class*="btn"],
input[type="submit"],
input[type="button"] {
  border-radius: var(--v6-radius-full);
}

/* —— 2026-09-05 全站头像圆形化 —— */
.chat-app .chat-item-avatar,
.chat-app .chat-peer-avatar,
.chat-app .chat-msg-avatar,
.wb-page .wb-avatar,
.header .header-user-name {
  border-radius: 50%;
}
.header .header-user-name {
  max-width: 96px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: none;
  }

/* ========================================
   首页 v6 纲领区（2026-09-06）：以两条纲领驱动下拉区叙事
   结构：纲领宣言带 → 双路径步骤卡 + 中立原则横条 → 类目图标网格（CTA 收尾带已于 2026-09-05 移除）
   ======================================== */

/* ---- ③ 纲领宣言带（深蓝全宽；09-06 重排版：去掉 creed 口号，两列放大居中 + 金色短线点缀） ---- */
.hp-manifesto {
  position: relative;
  overflow: hidden;
  padding: 104px 0 96px;
  color: #14283F;
  text-align: center;
  /* 2026-09-08 用户指令 v2：橙色版弃用，改绿白底「留白设计感」方案；
     深绿为品牌点缀色，字级对仗 + 细圆环装饰 + 撞色短杠 */
  background: linear-gradient(180deg, #ffffff 0%, #f5faf7 55%, #ffffff 100%);
}
.hp-manifesto::before,
.hp-manifesto::after {
  content: '';
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
}
.hp-manifesto::before {
  top: -170px;
  right: -130px;
  width: 480px;
  height: 480px;
  border: 1.5px solid rgba(14, 159, 110, 0.14);
  box-shadow: inset 0 0 0 60px rgba(14, 159, 110, 0.03);
}
.hp-manifesto::after {
  bottom: -120px;
  left: -80px;
  width: 300px;
  height: 300px;
  border: 1px solid rgba(0, 119, 255, 0.08);
  box-shadow: inset 0 0 0 40px rgba(0, 119, 255, 0.02);
}
.hp-manifesto-eyebrow {
  display: inline-flex;
  align-items: center;
  margin: 0 0 46px;
  padding: 8px 24px;
  font-size: 13px;
  letter-spacing: 0.22em;
  color: #0e9f6e;
  border: 1px solid rgba(14, 159, 110, 0.32);
  border-radius: 999px;
  background: rgba(14, 159, 110, 0.06);
}
.hp-manifesto-duo {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 56px;
  max-width: 1060px;
  margin: 0 auto;
}
.hp-manifesto-lead {
  margin: 0 0 10px;
  font-size: 20px;
  letter-spacing: 0.14em;
  color: #14283F;
  font-weight: 600;
}
.hp-manifesto-word {
  margin: 0;
  font-family: var(--font-elegant);
  font-size: 64px;
  font-weight: 700;
  letter-spacing: 0.14em;
  line-height: 1.15;
  background: linear-gradient(180deg, #0b7a52 0%, #18a06c 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
/* 🔴 v5.5j：.hp-manifesto-word::after 渐变短杠（绿/金两态）按用户指令整体删除；
   强调词本体的深藏青配色保留（文字层次，非装饰线） */
.hp-manifesto-word.accent {
  background: none;
  color: #14283F;
}
.hp-manifesto-sub {
  margin: 20px 0 0;
  font-size: 14px;
  line-height: 1.9;
  color: #5f6b7a;
}
/* v5.5k：hp-manifesto-divider 竖发丝线删除（全站禁装饰线，该类现无使用方） */
/* ---- ④ 双路径步骤卡 + 中立原则横条 ---- */
.hp-paths {
  padding: 88px 0 76px;
  background: #ffffff;
}
.hp-paths-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 26px;
  max-width: 1080px;
  margin: 0 auto;
}
.hp-path-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: 40px 38px 34px;
  background: #ffffff;
  border: 1px solid #eef2f8;
  border-radius: 22px;
  box-shadow: 0 6px 26px rgba(0, 119, 255, 0.06);
  transition: transform 0.22s ease, box-shadow 0.22s ease;
}
.hp-path-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 20px 48px -14px rgba(0, 119, 255, 0.16);
}
.hp-path-tag {
  display: inline-flex;
  align-self: flex-start;
  padding: 6px 16px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: #0077FF;
  background: #e8f1ff;
  border-radius: 999px;
}
.hp-path-card.alt .hp-path-tag {
  color: var(--color-accent-deep);
  background: var(--color-accent-light);
}
.hp-path-card h3 {
  margin: 18px 0 26px;
  font-size: 26px;
  font-weight: 700;
  color: #0F2546;
}
.hp-path-steps {
  list-style: none;
  display: grid;
  gap: 22px;
  margin: 0;
  padding: 0;
}
.hp-path-steps li {
  display: flex;
  align-items: flex-start;
  gap: 16px;
}
.hp-path-steps li > b {
  flex: none;
  font-size: 26px;
  font-weight: 700;
  line-height: 1.2;
  color: #0077FF;
  font-variant-numeric: tabular-nums;
}
.hp-path-card.alt .hp-path-steps li > b {
  color: #f3e3b3;
}
.hp-path-steps h4 {
  margin: 0 0 5px;
  font-size: 16px;
  font-weight: 600;
  color: #14283F;
}
.hp-path-steps p {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.75;
  color: #5a6f88;
}
.hp-path-cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  align-self: flex-start;
  margin-top: 30px;
  padding: 12px 28px;
  font-size: 14px;
  font-weight: 600;
  color: #ffffff;
  background: #ffbf00;
  border-radius: 999px;
  transition: background 0.2s ease, color 0.2s ease;
}
.hp-path-cta:hover {
  background: #ffc71a;
  color: #ffffff;
}
.hp-path-card.alt .hp-path-cta {
  color: var(--color-accent-deep);
  background: var(--color-accent-light);
}
.hp-path-card.alt .hp-path-cta:hover {
  background: var(--color-accent);
  color: #1f2a3d;
}
.hp-principle-bar {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px 38px;
  max-width: 1080px;
  margin: 36px auto 0;
  padding: 18px 28px;
  background: #f7f9fc;
  border: 1px solid #edf1f7;
  border-radius: 999px;
  font-size: 13px;
  letter-spacing: 0.04em;
  color: #5a6f88;
}
.hp-principle-bar span {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.hp-principle-bar span::before {
  content: '';
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--color-accent);
}

/* ---- ④c 类目图标卡网格 ---- */
.hp-cat-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  max-width: 1080px;
  margin: 0 auto;
}
.hp-cat-card {
  display: block;
  padding: 30px 28px 26px;
  background: #ffffff;
  border: 1px solid #e6ecf5;
  border-radius: 18px;
  box-shadow: 0 2px 10px rgba(0, 119, 255, 0.04);
  transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}
.hp-cat-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 50px;
  height: 50px;
  margin-bottom: 16px;
  border-radius: 14px;
  color: #0077FF;
  background: #e8f1ff;
}
.hp-cat-card:nth-child(even) .hp-cat-icon {
  color: #c2703d;
  background: #fdf1e6;
}
.hp-cat-card h3 {
  margin: 0 0 6px;
  font-size: 17px;
  font-weight: 600;
  color: #14283F;
}
.hp-cat-card p {
  margin: 0;
  font-size: 13px;
  line-height: 1.7;
  color: #8496ab;
}

/* ---- ⑤ 理念 CTA 收尾带：已按用户指令移除（2026-09-05；09-06 宣言带 creed 口号同撤） ---- */

/* ---- v6 响应式 ---- */
@media (max-width: 900px) {
  .hp-manifesto-duo {
    grid-template-columns: 1fr;
    gap: 30px;
  }
  .hp-paths-grid {
    grid-template-columns: 1fr;
    max-width: 560px;
  }
  .hp-cat-cards {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 600px) {
  .hp-manifesto {
    padding: 68px 0 62px;
  }
  .hp-manifesto-word {
    font-size: 42px;
  }
  .hp-paths {
    padding: 64px 0 56px;
  }
  .hp-path-card {
    padding: 30px 24px 28px;
  }
  .hp-principle-bar {
    border-radius: 18px;
    gap: 10px 24px;
  }
  .hp-cat-cards {
    grid-template-columns: 1fr;
    max-width: 420px;
  }
}

/* ========================================================
   工作台表格（2026-09-05 v260 删旧补丁重建）：
   无吸附列、无垂直折叠、无阴影分割线；操作按钮一律单行，
   窄容器下靠名称/类别省略号自然收缩
   ======================================================== */
.wb-table { min-width: 560px; }
.wb-table td.wb-acts { white-space: nowrap; }
.wb-table td.wb-acts .wb-act { margin-right: 6px; }
.wb-table td.wb-proj-name { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wb-table th,
.wb-table td { padding: 10px 10px; }
.wb-table .wb-proj-cat { padding: 2px 6px; font-size: 11px; border-radius: 4px; }
.wb-table .wb-status { padding: 3px 8px; font-size: 11px; }
.wb-table .wb-proj-meta { font-size: 12px; }
@media (max-width: 1200px) {
  html body .wb-table th,
  html body .wb-table td { padding-left: 6px; padding-right: 6px; font-size: 12px; }
  html body .wb-table td.wb-proj-name { max-width: 170px; }
}

/* ============================================================
   v1.30 活力点缀（2026-09-08 · 用户反馈「色彩缺活力喜庆，增一点点」）
   三处克制点缀：①首页分类卡 6 色柔和图标 ②页脚蓝黄渐变细线 ③卡片 hover 同色呼应
   ============================================================ */

/* ① 首页分类卡：图标 6 色循环（原仅蓝/棕交替），hover 卡片描边同色淡染 */
.hp-cat-card:nth-child(6n+1) .hp-cat-icon { color: #0e9f6e; background: #e7f8f1; }
.hp-cat-card:nth-child(6n+2) .hp-cat-icon { color: #0ea5b7; background: #e6f8fa; }
.hp-cat-card:nth-child(6n+3) .hp-cat-icon { color: #0077FF; background: #e8f1ff; }
.hp-cat-card:nth-child(6n+4) .hp-cat-icon { color: #d99a00; background: #fff8e1; }
.hp-cat-card:nth-child(6n+5) .hp-cat-icon { color: #e05a72; background: #feebef; }
.hp-cat-card:nth-child(6n+6) .hp-cat-icon { color: #0077FF; background: #f0edff; }

.hp-cat-card:hover {
  transform: translateY(-4px);
  border-color: #ffd766;
  box-shadow: 0 14px 32px -12px rgba(217, 154, 0, 0.18);
  }
.hp-cat-card:nth-child(6n+1):hover { border-color: rgba(14, 159, 110, 0.35); box-shadow: 0 14px 32px -12px rgba(14, 159, 110, 0.16); }
.hp-cat-card:nth-child(6n+2):hover { border-color: rgba(14, 165, 183, 0.35); box-shadow: 0 14px 32px -12px rgba(14, 165, 183, 0.16); }
.hp-cat-card:nth-child(6n+3):hover { border-color: rgba(0, 119, 255, 0.35); box-shadow: 0 14px 32px -12px rgba(0, 119, 255, 0.16); }
.hp-cat-card:nth-child(6n+5):hover { border-color: rgba(224, 90, 114, 0.35); box-shadow: 0 14px 32px -12px rgba(224, 90, 114, 0.16); }
.hp-cat-card:nth-child(6n+6):hover { border-color: rgba(0, 119, 255, 0.35); box-shadow: 0 14px 32px -12px rgba(0, 119, 255, 0.16); }

/* ② 页脚蓝黄渐变细线已删（2026-09-08 用户反馈「不好看、太艳」） */

/* ③ 首页「两条路径」卡：黄 tag 微升饱和（原 #fdf1e6 底太灰） */
.hp-path-card .hp-path-tag { letter-spacing: 0.02em; }

/* ===== v1.82 工单详情页 UI/UX 设计规范（2026-09-12 P0 开发指令，权威文档 §27.42）===== */
/* ① 补齐状态标签红色系：此前 .wb-status.red 缺失，【洽谈已终止】【异常低价】等 red 标签
   落到无底色默认态；统一「浅底深字」——浅红底 + 深红字（禁高饱和大红） */
.wb-status.red { background: #fef2f2; color: #b91c1c; }
/* ② 通用折叠组件（工单详情页次要信息默认收起：行业详情 / 企业补充信息 / 更多说明；
   动效克制：仅箭头旋转与颜色过渡 200ms） */
.od2-collapse { margin-top: 12px; border: 1px solid #e6ebf2; border-radius: 8px; background: #fff; overflow: hidden; }
.od2-collapse > summary { cursor: pointer; padding: 12px 18px; font-size: 13px; font-weight: 600; color: #64748b; list-style: none; display: flex; align-items: center; gap: 8px; user-select: none; transition: color 0.2s ease; }
.od2-collapse > summary::-webkit-details-marker { display: none; }
.od2-collapse > summary::before { content: '▸'; color: #94a3b8; font-size: 12px; transition: transform 0.2s ease; }
.od2-collapse[open] > summary::before { transform: rotate(90deg); }
.od2-collapse > summary:hover { color: #0077FF; }
.od2-collapse[open] > summary { border-bottom: 1px dashed #e8edf3; }
.od2-collapse-body { padding: 14px 18px; }

/* 🔴 v1.93 体验兜底：表单实时校验标红与短提示（main.js 统一注入，全站通用） */
.form-input.qm-invalid, input.qm-invalid, textarea.qm-invalid, select.qm-invalid {
  border-color: #e5484d !important;
  box-shadow: 0 0 0 3px rgba(229, 72, 77, 0.12);
}
.qm-field-tip {
  display: block;
  margin-top: 4px;
  font-size: 12px;
  color: #e5484d;
  line-height: 1.4;
}

/* 🔴 v1.93 基础信任背书：机构详情已审核资质证书缩略图与放大灯箱（org-detail 私有） */
.org-dt-qual-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 12px; }
.org-dt-qual-card { margin: 0; border: 1px solid #e2e8f0; border-radius: 8px; overflow: hidden;
  background: #fff; cursor: zoom-in; transition: box-shadow .2s ease, transform .2s ease; }
.org-dt-qual-card:hover { box-shadow: 0 6px 18px rgba(0, 119, 255, .12); transform: translateY(-2px); }
.org-dt-qual-card img { display: block; width: 100%; height: 120px; object-fit: cover; background: #f6f8fb; }
.org-dt-qual-icon { display: flex; align-items: center; justify-content: center; height: 120px;
  background: #f0f4fa; color: #12356E; font-size: 22px; font-weight: 700; letter-spacing: 1px; }
.org-dt-qual-card figcaption { padding: 8px 10px; font-size: 12px; color: #475569; }
.org-dt-qual-card figcaption b { display: block; font-size: 13px; color: #1f2937;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.org-dt-qual-card figcaption span { display: block; margin-top: 2px; color: #64748b; }
.org-dt-qual-badge { display: inline-block; margin-top: 6px; padding: 1px 8px; border-radius: 999px;
  font-size: 11px; font-style: normal; font-weight: 600; color: #16a34a; background: #ecfdf3;
  border: 1px solid #bbf7d0; }

/* ==========================================================================
🔴 v2.48（2026-09-21 P0《IM 一次性改造·更正版》）
会话成员管理（本机构成员组）+ 会话内历史消息搜索（左上角搜索框/结果面板/命中高亮）
—— 新增组件：.qm-chat-search / .qm-search-panel / .qm-hit / .qm-mm-*（成员面板）
—— 只读查看员（role=4）不可用入口隐藏（§27.42「隐藏不置灰」）
========================================================================== */
.chat-win-inner {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 640px;
  position: relative;
  }

/* —— 左上角会话内搜索框（微信式，紧随会话对象之后） —— */
.qm-chat-search { display: flex; align-items: center; gap: 6px; flex: none;
  width: 210px; height: 32px; padding: 0 10px;
  background: #f4f6f9; border: 1px solid #e2e8f0; border-radius: 16px;
  transition: border-color .15s, background .15s; }
.qm-chat-search:focus-within { background: #fff; border-color: var(--color-primary-light); }
.qm-chat-search svg { flex: none; color: #94a3b8; }
.qm-chat-search input { flex: 1; min-width: 0; border: 0; outline: none; background: transparent;
  font-size: 13px; color: var(--color-text); }
.qm-chat-search input::placeholder { color: #9aa3ad; }
.qm-chat-search-clear { display: none; flex: none; cursor: pointer; color: #9aa3ad;
  font-size: 15px; line-height: 1; text-decoration: none; }
.qm-chat-search.is-filled .qm-chat-search-clear { display: block; }

/* —— 搜索结果面板（浮层，不挤占消息区） —— */
.qm-search-panel { position: absolute; top: 78px; left: 24px; z-index: 60;
  width: 470px; max-width: calc(100% - 48px); max-height: 420px; overflow-y: auto;
  background: #fff; border: 1px solid #e2e8f0; border-radius: 12px;
  box-shadow: 0 14px 36px rgba(15, 23, 42, .16); display: none; }
.qm-search-panel.is-open { display: block; }
.qm-search-head { position: sticky; top: 0; z-index: 1; padding: 10px 14px; background: #fff;
  border-bottom: 1px solid #eef1f6; font-size: 12px; color: #64748b; }
.qm-search-item { padding: 10px 14px; border-bottom: 1px solid #f4f6f9; cursor: pointer; }
.qm-search-item:last-child { border-bottom: 0; }
.qm-search-item:hover { background: #f7f9fc; }
.qm-search-item-top { display: flex; align-items: center; justify-content: space-between;
  gap: 8px; margin-bottom: 4px; font-size: 12px; color: #8a929b; }
.qm-search-item-text { font-size: 13px; line-height: 1.55; color: var(--color-text);
  word-break: break-all; }
.qm-search-empty { padding: 20px 14px; text-align: center; font-size: 13px; color: #8a929b; }

/* —— 命中关键词高亮 + 定位闪烁 —— */
.qm-hit { background: #fff1b8; color: #7a4b00; border-radius: 2px; padding: 0 1px; }
.chat-msg.qm-hit-flash .chat-msg-bubble { animation: qmHitFlash 1.8s ease-out 1; }
@keyframes qmHitFlash {
  0% { box-shadow: 0 0 0 3px rgba(255, 196, 0, .75); }
  100% { box-shadow: 0 0 0 0 rgba(255, 196, 0, 0); }
}

/* —— 会话成员面板（本侧成员组，供需双方名册互不可见） —— */
.qm-mm-overlay { position: fixed; inset: 0; z-index: 900; display: none; padding: 24px;
  background: rgba(15, 23, 42, .42); align-items: center; justify-content: center; }
.qm-mm-overlay.is-open { display: flex; }
.qm-mm-card { display: flex; flex-direction: column; width: 560px; max-width: 100%;
  max-height: 86vh; overflow: hidden; background: #fff; border-radius: 16px;
  box-shadow: 0 24px 60px rgba(15, 23, 42, .28); }
.qm-mm-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
  padding: 18px 22px 14px; border-bottom: 1px solid #eef1f6; }
.qm-mm-title { font-size: 16px; font-weight: 700; color: var(--color-text); }
.qm-mm-sub { margin-top: 4px; font-size: 12px; color: #8a929b; }
.qm-mm-close { flex: none; cursor: pointer; border: 0; background: transparent;
  font-size: 20px; line-height: 1; color: #94a3b8; }
.qm-mm-body { flex: 1; overflow-y: auto; padding: 6px 22px 18px; }
.qm-mm-sec { margin-top: 14px; font-size: 12px; font-weight: 600; color: #64748b; }
.qm-mm-row { display: flex; align-items: center; gap: 12px; padding: 11px 0;
  border-bottom: 1px solid #f4f6f9; }
.qm-mm-av { flex: none; width: 34px; height: 34px; border-radius: 50%; background: #eef6ff;
  color: var(--color-primary); font-size: 13px; font-weight: 700;
  display: flex; align-items: center; justify-content: center; }
.qm-mm-info { flex: 1; min-width: 0; }
.qm-mm-name { font-size: 14px; color: var(--color-text); font-weight: 600; }
.qm-mm-meta { margin-top: 2px; font-size: 12px; color: #8a929b; }
.qm-mm-tag { display: inline-block; margin-left: 6px; padding: 1px 7px; border-radius: 999px;
  font-size: 11px; font-weight: 600; color: #0077FF; background: #eef6ff; vertical-align: 1px; }
.qm-mm-tag.is-main { color: #a37400; background: #fff8e1; }
.qm-mm-tag.is-off { color: #94a3b8; background: #f1f5f9; }
.qm-mm-act { flex: none; font-size: 12px; color: #94a3b8; }
.qm-mm-act a { color: #e05252; text-decoration: none; cursor: pointer; }
.qm-mm-act a:hover { text-decoration: underline; }
.qm-mm-add { margin-top: 16px; padding: 14px; background: #f8fafd; border-radius: 12px; }
.qm-mm-add-row { display: flex; align-items: center; gap: 10px; margin-top: 10px; }
.qm-mm-add select { flex: 1; min-width: 0; height: 36px; padding: 0 10px; font-size: 13px;
  border: 1px solid #dbe3ec; border-radius: 8px; background: #fff; color: var(--color-text); }
.qm-mm-note { margin-top: 12px; padding: 10px 12px; background: #fff8e1; border: 1px solid #ffe9a8;
  border-radius: 10px; font-size: 12px; line-height: 1.6; color: #8a6a00; }
.qm-mm-empty { padding: 16px 0; text-align: center; font-size: 13px; color: #8a929b; }

/* —— 只读查看员（role=4）：发送/附件入口隐藏（隐藏不置灰） —— */
#chatWinInput.qm-role-readonly .chat-attach-btn,
#chatWinInput.qm-role-readonly .chat-send-btn { display: none; }
#chatWinInput.qm-role-readonly .chat-win-text { background: #f8fafd; }
.qm-role-note { display: none; margin: 0 24px 10px; padding: 9px 12px; border-radius: 10px;
  background: #fff8e1; border: 1px solid #ffe9a8; font-size: 12px; line-height: 1.6; color: #8a6a00; }
.qm-role-note.is-on { display: block; }

/* ==========================================================================
   🔴 v2.62 企测超市·预存额度双资金来源 · 自动在线开票（styles v344）
   · 两类额度【分区独立展示，不合并】：企测超市·预存额度（可开票/计分润）与企测超市·补偿额度
     （不可开票/不计分润/不可提现不可转让/仅抵扣解锁洽谈费）；
   · 扣费优先级：优先扣企测超市·补偿额度，补偿耗尽再扣企测超市·预存额度（后端 funds 唯一出口保证）。
   ========================================================================== */
.fc-regions { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin: 0 0 16px; }
@media (max-width: 720px) { .fc-regions { grid-template-columns: 1fr; } }
.fc-region { padding: 16px 18px; border-radius: 12px; background: #fff;
  border: 1px solid #e4eaf2; position: relative; }
.fc-region.recharge { border-left: 4px solid #0077FF; }
.fc-region.comp { border-left: 4px solid #e6a700; background: #fffdf6; }
.fc-region-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.fc-region-name { font-size: 13px; font-weight: 600; color: #334155; }
.fc-region-badge { font-size: 11px; padding: 2px 8px; border-radius: 999px; line-height: 1.7; }
.fc-region-badge.ok { background: #e8f5ee; color: #0f766e; }
.fc-region-badge.warn { background: #fff4d6; color: #946200; }
.fc-region > b { display: block; font-size: 26px; font-weight: 700; color: #0f172a;
  letter-spacing: -.5px; margin: 2px 0 6px; }
.fc-region.comp > b { color: #946200; }
.fc-region-desc { font-size: 12px; line-height: 1.75; color: #64748b; }
.fc-fund-sub { margin-top: 3px; font-size: 11.5px; line-height: 1.6; color: #8a929b; max-width: 220px; }

/* 开票模块 */
.fc-inv-block { margin: 0 0 18px; padding: 0 0 16px; border-bottom: 1px dashed #e4eaf2; }
.fc-inv-block:last-child { border-bottom: 0; padding-bottom: 0; }
.fc-inv-title { font-size: 13px; font-weight: 600; color: #334155; margin-bottom: 10px; }
.fc-inv-form { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 16px; margin-bottom: 12px; }
@media (max-width: 720px) { .fc-inv-form { grid-template-columns: 1fr; } }
.fc-inv-readonly { display: flex; align-items: center; justify-content: space-between;
  padding: 9px 12px; border-radius: 8px; background: #f6f8fb; border: 1px solid #e4eaf2;
  font-size: 13px; color: #334155; }
.fc-inv-readonly span:last-child { color: #64748b; font-size: 12px; }
.fc-inv-sum { margin-top: 10px; font-size: 13px; color: #334155; display: flex;
  align-items: center; gap: 10px; flex-wrap: wrap; }
.fc-inv-sum b { color: #0077FF; font-size: 15px; }
.fc-inv-hint { font-size: 12px; line-height: 1.7; color: #8a929b; }

/* 🔴 v6.24 PRD《资金结算与开票》：开票页按支付类型筛选（两套口径分开开票，禁止跨类型合并）
   胶囊筛选条 + 混合勾选拦截提示。浅色画布，主蓝 #0077FF 强调，不用大面积深色。 */
.fc-inv-filter { display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  margin: 0 0 10px; }
.fc-chip { display: inline-flex; align-items: center; gap: 6px; height: 30px;
  padding: 0 14px; border-radius: 999px; border: 1px solid #dbe2ea;
  background: #fff; color: #334155; font-size: 13px; line-height: 1; cursor: pointer;
  transition: border-color .16s, background .16s, color .16s; }
.fc-chip:hover { border-color: #0077FF; color: #0077FF; }
.fc-chip i { font-style: normal; font-size: 12px; color: #8a929b; }
.fc-chip.on { background: #0077FF; border-color: #0077FF; color: #fff; font-weight: 600; }
.fc-chip.on i { color: rgba(255,255,255,.86); }
.fc-inv-mixed { margin-top: 8px; padding: 9px 14px; border-radius: 12px;
  background: #FFF1F0; border: 1px solid #FBC9C4; color: #B42318;
  font-size: 13px; line-height: 1.6; }
.fc-inv-mixed b { color: #B42318; }

/* 🔴 v2.62 W7b 解锁弹窗内「两类额度分区 + 企测超市·补偿额度不可开票」预检块
   （order-detail-data.js loadFundRegionsInto 注入；分区独立展示不合并） */
.qm-fund-regions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 0 0 10px; }
@media (max-width: 720px) { .qm-fund-regions { grid-template-columns: 1fr; } }

/* 🔴 v6.24 PRD《资金结算与开票》令一：洽谈服务费二选一支付入口
   （预存余额抵扣 / 微信单次支付；两套资金链路物理隔离，卡片式单选，浅色画布） */
.qm-settle-pick { margin: 0 0 12px; }
.qm-settle-pick-title { font-size: 13.5px; font-weight: 700; color: #1f2937;
  margin: 0 0 8px; }
.qm-settle-pick-title span { font-weight: 400; font-size: 12px; color: #94a3b8;
  margin-left: 6px; }
.qm-settle-card { display: flex; align-items: flex-start; gap: 10px; position: relative;
  padding: 12px 14px; border: 1px solid #e2e8f0; border-radius: 12px; background: #fff;
  margin: 0 0 8px; cursor: pointer; transition: border-color .16s, box-shadow .16s;
  box-sizing: border-box; }
.qm-settle-card:hover { border-color: #bfd7ff; }
.qm-settle-card.on { border-color: #0077FF; box-shadow: 0 0 0 3px rgba(0,119,255,.10); }
.qm-settle-card.is-off { background: #f8fafc; cursor: not-allowed; opacity: .92; }
.qm-settle-card input { margin: 3px 0 0; flex: 0 0 auto; accent-color: #0077FF; }
.qm-settle-body { display: block; min-width: 0; }
.qm-settle-body b { display: block; font-size: 13.5px; color: #0f172a; margin: 0 0 3px; }
.qm-settle-desc { display: block; font-style: normal; font-size: 12px;
  color: #64748b; line-height: 1.7; }
.qm-settle-pill { display: inline-block; margin-top: 6px; padding: 1px 9px;
  border-radius: 999px; font-size: 11px; line-height: 18px; }
.qm-settle-pill.ok { background: #f0fdf4; color: #15803d; }
.qm-settle-pill.blue { background: #eff6ff; color: #0077FF; }
.qm-settle-offtag { display: inline-block; margin-left: 6px; padding: 0 7px;
  border-radius: 999px; background: #fee2e2; color: #b42318; font-size: 11px;
  font-style: normal; font-weight: 500; line-height: 18px; }
.qm-settle-note { display: block; margin-top: 6px; padding: 7px 10px;
  background: #fffbeb; border: 1px solid #fde68a; border-radius: 8px;
  font-size: 12px; color: #78350f; line-height: 1.7; }
@media (max-width: 720px) { .qm-settle-card { padding: 11px 12px; } }
.qm-fund-region { display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
  padding: 8px 10px; border-radius: 8px; background: #f6f8fb; border: 1px solid #e4eaf2;
  font-size: 12.5px; color: #334155; }
.qm-fund-region b { font-weight: 600; color: #0f172a; }
.qm-fund-region.is-comp { background: #fffdf6; border-color: #ffe9a8; }
.qm-fund-region.is-comp b { color: #946200; }
.qm-fund-flag { font-size: 11px; padding: 1px 7px; border-radius: 999px; line-height: 1.7; }
.qm-fund-flag.ok { background: #e8f5ee; color: #0f766e; }
.qm-fund-flag.no { background: #fff4d6; color: #946200; }
.qm-comp-tip { margin: 0 0 10px; padding: 8px 10px; border-radius: 8px;
  background: #fff8e1; border: 1px solid #ffe9a8;
  font-size: 12.5px; font-weight: 600; line-height: 1.7; color: #8a6a00; }

/* =====================================================================
   🔴 v6.12（2026-10-18 用户令②）全站弹窗「极简 · 层次分明 · 圆弧角度」统一皮肤
   —— 置于文件末尾，同特异性后到者胜，覆盖上方全部旧弹窗皮肤；
      只动视觉令牌（圆角/描边/阴影/留白/字重/配色），不动定位与尺寸布局。
   设计令牌：遮罩 .45+模糊 / 卡片 24px 圆角 / 标题 18px·700·navy /
             正文 14px·1.8 / 主按钮 蓝底白字胶囊 / 次按钮 白底灰边胶囊 / 危险 红胶囊
   ===================================================================== */
/* ---- 通用家族：.modal / .dh-modal / .auth-modal / .qm-mm ---- */
.modal-backdrop,
.dh-modal-backdrop,
.auth-modal-overlay,
.qm-mm-overlay {
  background: rgba(15, 23, 42, 0.45) !important;
  backdrop-filter: blur(6px) saturate(1.08);
  -webkit-backdrop-filter: blur(6px) saturate(1.08);
}
.modal-dialog,
.dh-modal-dialog,
.auth-modal,
.qm-mm-card,
.qm-datepicker-popup {
  border: 1px solid #eef2f7 !important;
  border-radius: 24px !important;
  box-shadow: 0 24px 64px rgba(12, 21, 38, 0.20), 0 2px 8px rgba(12, 21, 38, 0.06) !important;
  animation: qmModalIn12 0.24s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes qmModalIn12 {
  from { opacity: 0; transform: translateY(16px) scale(0.97); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
/* 标题：加粗加大、层次第一眼 */
.modal-header,
.dh-modal-header,
.qm-mm-head {
  padding: 22px 26px 16px !important;
  border-bottom: none !important;
}
.modal-header h3,
.dh-modal-header h3,
.qm-mm-title,
.auth-modal h3 {
  font-size: 18px !important;
  font-weight: 700 !important;
  letter-spacing: 0.2px;
  color: #14283F !important;
}
.qm-mm-sub, .dh-modal-footer-tip {
  font-size: 12.5px !important;
  color: #8a94a6 !important;
}
/* 正文：呼吸感留白 + 舒展行高 */
.modal .modal-body, .modal-body,
.dh-modal-body,
.auth-modal p,
.qm-mm-body {
  padding: 4px 26px 20px !important;
  font-size: 14px !important;
  line-height: 1.85 !important;
  color: #334155 !important;
}
.auth-modal p { padding: 0 4px 6px !important; }
/* 底部操作区：白底极简，去掉灰底/分隔线 */
.modal-footer,
.dh-modal-footer,
.auth-modal-actions {
  background: transparent !important;
  border-top: none !important;
  padding: 6px 26px 24px !important;
  gap: 12px !important;
}
/* 弹窗内按钮：一律胶囊（主=蓝底白字 / 次=白底灰边 / 危险=红），加粗、有投影、有hover */
.modal-footer .btn,
.modal-footer button,
.dh-modal-actions .btn,
.dh-modal-actions button,
.dh-btn-submit,
.auth-modal-actions .btn,
.auth-modal-actions button {
  border-radius: 999px !important;
  min-height: 44px;
  padding: 10px 30px !important;
  font-size: 15px !important;
  font-weight: 600 !important;
  letter-spacing: 0.3px;
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.modal-footer .btn-primary,
.modal-footer button:not(.btn-secondary):not([class*="ghost"]),
.dh-modal-actions .btn-primary,
.dh-modal-actions button:not([class*="ghost"]),
.dh-btn-submit,
.auth-modal-actions .btn-primary {
  background: linear-gradient(180deg, #1B87FF 0%, #0077FF 100%) !important;
  color: #fff !important;
  border: none !important;
  box-shadow: 0 10px 22px rgba(0, 119, 255, 0.26) !important;
}
.modal-footer .btn-primary:hover,
.dh-modal-actions .btn-primary:hover,
.dh-btn-submit:hover,
.auth-modal-actions .btn-primary:hover { transform: translateY(-1px); box-shadow: 0 14px 26px rgba(0, 119, 255, 0.32) !important; }
.modal-footer .btn-secondary,
.modal-footer .btn:not(.btn-primary),
.dh-modal-actions .btn-secondary,
.auth-modal-actions .btn:not(.btn-primary) {
  background: #fff !important;
  color: #475569 !important;
  border: 1px solid #e2e8f0 !important;
  box-shadow: none !important;
}
.modal-footer .btn-secondary:hover,
.dh-modal-actions .btn-secondary:hover,
.auth-modal-actions .btn:not(.btn-primary):hover { border-color: #cbd5e1 !important; background: #f8fafc !important; }
/* 关闭钮：大圆热区 + 悬浮反馈 */
.dh-modal-close,
.qm-mm-close {
  width: 36px !important;
  height: 36px !important;
  border-radius: 50% !important;
  background: #f1f5f9 !important;
  color: #64748b !important;
  transition: background .15s ease, color .15s ease, transform .15s ease;
}
.dh-modal-close:hover,
.qm-mm-close:hover { background: #e2e8f0 !important; color: #14283F !important; transform: rotate(90deg); }
/* 认证引导弹窗（auth-modal）：图标更圆润、内容居中呼吸感 */
.auth-modal { padding: 30px 28px 26px !important; }
.auth-modal-icon { border-radius: 50% !important; width: 56px !important; height: 56px !important; }
.auth-modal-note {
  border-radius: 8px !important;
  background: #f6f9ff !important;
  border: 1px solid #e3edff !important;
  color: #4b5b6e !important;
}
/* 撮合会话卡（qm-mm）：头部/标题同口径 */
.qm-mm-head { padding: 20px 24px 12px !important; }
.qm-mm-title { font-size: 17px !important; }
/* 日期选择器浮层：同族圆角阴影 */
.qm-datepicker-popup { border-radius: 16px !important; }

/* ============================================================================
   🔴 v6.12b（2026-10-18 用户令②）弹窗统一皮肤 · 续章：页内联弹窗收口
   —— .qm-fp-mask(找回密码) / .qm-pwd-mask(改密·证书·执业 三连) / .adm-login-overlay(后台登录)
   这三族样式写在各自 html 的页内 <style> 里，styles.css 位于 <head> 更前，
   故此处一律 !important 覆盖（important 优先于非 important，不受加载顺序影响）。
   口径与 v6.12 主段完全一致：遮罩模糊、24px 圆弧、18px·700 标题、14px·1.85 正文、胶囊按钮。
   只动视觉令牌，不动定位 / 尺寸 / 显隐逻辑（.is-open 等状态类一律不碰）。
   ============================================================================ */

/* ── 1. 遮罩：统一深色半透明 + 毛玻璃（原为 rgba(10,22,40,.45) 无模糊）── */
.qm-fp-mask,
.qm-pwd-mask {
  background: rgba(15, 23, 42, 0.45) !important;
  -webkit-backdrop-filter: blur(6px) saturate(1.08);
  backdrop-filter: blur(6px) saturate(1.08);
}

/* ── 2. 卡片：24px 圆弧 + 双阴影层次 + 入场动画（原 14px 圆角单阴影）── */
.qm-fp-card,
.qm-pwd-card {
  border: 1px solid #eef2f7 !important;
  border-radius: 24px !important;
  box-shadow: 0 24px 64px rgba(12, 21, 38, .20), 0 2px 8px rgba(12, 21, 38, .06) !important;
  animation: qmModalIn12 0.24s cubic-bezier(0.16, 1, 0.3, 1);
  padding: 30px 28px 24px !important;
}

/* ── 3. 标题：18px / 700 / 深墨，替代原 600 字重 ── */
.qm-fp-title,
.qm-pwd-title {
  font-size: 18px !important;
  font-weight: 700 !important;
  letter-spacing: .2px;
  color: #14283F !important;
  line-height: 1.5 !important;
}

/* ── 4. 正文 / 副标题：统一 14px · 1.85 行高，正色不再发灰 ── */
.qm-fp-body,
.qm-pwd-sub {
  font-size: 14px !important;
  line-height: 1.85 !important;
  color: #334155 !important;
}

/* ── 5. 底部按钮：胶囊 + 主次分明（主蓝渐变投影 / 次白底灰边）── */
.qm-fp-foot,
.qm-pwd-foot {
  gap: 12px !important;
  padding-top: 6px !important;
}
.qm-fp-foot .btn,
.qm-pwd-foot .btn {
  border-radius: 999px !important;
  min-height: 44px;
  padding: 10px 30px !important;
  font-size: 15px !important;
  font-weight: 600 !important;
  letter-spacing: .3px;
}
.qm-fp-foot .btn-primary,
.qm-pwd-foot .btn-primary,
.qm-fp-foot .btn-outline-primary,
.qm-pwd-foot .btn-outline-primary {
  transition: transform .15s ease, box-shadow .2s ease, background .2s ease;
}
.qm-fp-foot .btn-primary,
.qm-pwd-foot .btn-primary {
  background: linear-gradient(180deg, #1B87FF 0%, #0077FF 100%) !important;
  border: none !important;
  color: #fff !important;
  box-shadow: 0 10px 22px rgba(0, 119, 255, .26);
}
.qm-fp-foot .btn-primary:hover,
.qm-pwd-foot .btn-primary:hover {
  transform: translateY(-1px);
  box-shadow: 0 14px 28px rgba(0, 119, 255, .32);
}
.qm-fp-foot .btn-outline-primary,
.qm-pwd-foot .btn-outline-primary {
  background: #fff !important;
  border: 1px solid #dbe3ec !important;
  color: #334155 !important;
}
.qm-fp-foot .btn-outline-primary:hover,
.qm-pwd-foot .btn-outline-primary:hover {
  border-color: #b9c7d8 !important;
  background: #f8fafc !important;
}

/* ── 6. 分步指示 / 说明条：圆弧化，去掉生硬直角 ── */
.qm-fp-step,
.qm-fp-list li,
.qm-pwd-ok {
  border-radius: 12px !important;
}
.qm-fp-step.is-active {
  background: #E8F2FF !important;
  color: #0077FF !important;
  font-weight: 700 !important;
}

/* ── 7. 后台登录遮罩：满屏不透明浅灰 → 深色毛玻璃（原卡片与背景同色系、飘不起来）── */
.adm-login-overlay {
  background: rgba(15, 23, 42, 0.52) !important;
  -webkit-backdrop-filter: blur(10px) saturate(1.05);
  backdrop-filter: blur(10px) saturate(1.05);
}

/* ── 8. 后台登录卡：24px 圆弧 + 深投影 + 入场动画；顶部硬蓝条改柔和渐变细条 ── */
.adm-login-card {
  border: 1px solid #eef2f7 !important;
  border-radius: 24px !important;
  box-shadow: 0 32px 80px rgba(8, 16, 30, .32), 0 4px 12px rgba(8, 16, 30, .10) !important;
  animation: qmModalIn12 0.28s cubic-bezier(0.16, 1, 0.3, 1);
  padding: 38px 32px 34px !important;
}
.adm-login-card::before {
  height: 3px !important;
  background: linear-gradient(90deg, #0077FF 0%, #3DA0FF 48%, #7CC4FF 100%) !important;
}
.adm-login-card h2 {
  font-size: 22px !important;
  font-weight: 700 !important;
  letter-spacing: .2px;
  color: #14283F !important;
  line-height: 1.4 !important;
}
.adm-login-card p {
  font-size: 14px !important;
  line-height: 1.8 !important;
  color: #64748b !important;
}
.adm-login-note {
  border-radius: 14px !important;
  line-height: 1.8 !important;
}
.adm-login-card .btn {
  border-radius: 999px !important;
  min-height: 46px;
  font-size: 15px !important;
  font-weight: 600 !important;
  letter-spacing: .3px;
  background: linear-gradient(180deg, #1B87FF 0%, #0077FF 100%) !important;
  border: none !important;
  color: #fff !important;
  box-shadow: 0 10px 24px rgba(0, 119, 255, .28);
  transition: transform .15s ease, box-shadow .2s ease;
}
.adm-login-card .btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 14px 30px rgba(0, 119, 255, .34);
}

/* ============================================================================
   🔴 v6.12c（2026-10-18 用户令②）弹窗统一皮肤 · 终章：JS 动态浮层收口
   —— .qm-alert-*（chat.html 关闭洽谈会话确认框）/ .qm-lb-*（org-detail.html 资质大图预览）
   这两族原为 JS 里 style.cssText 内联硬编码，无法被样式表统一；现已改类名承载，
   令牌与 v6.12 主段完全一致：模糊遮罩 / 24px 圆弧 / 层次分明 / 胶囊按钮 / × 关闭。
   ============================================================================ */

/* ── A. 关闭洽谈会话确认框 ── */
.qm-alert-ov {
  position: fixed; inset: 0; z-index: 99999;
  background: rgba(15, 23, 42, 0.45);
  -webkit-backdrop-filter: blur(6px) saturate(1.08);
  backdrop-filter: blur(6px) saturate(1.08);
  display: flex; align-items: center; justify-content: center; padding: 20px;
}
.qm-alert-card {
  position: relative; width: 460px; max-width: 100%; background: #fff;
  border: 1px solid #eef2f7; border-radius: 24px;
  padding: 26px 26px 22px;
  box-shadow: 0 24px 64px rgba(12, 21, 38, .20), 0 2px 8px rgba(12, 21, 38, .06);
  animation: qmModalIn12 0.24s cubic-bezier(0.16, 1, 0.3, 1);
}
.qm-alert-x {
  position: absolute; top: 14px; right: 14px; width: 34px; height: 34px;
  border: none; border-radius: 50%; background: #f1f5f9; color: #64748b;
  font-size: 17px; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background .15s ease, color .15s ease, transform .15s ease;
}
.qm-alert-x:hover { background: #eef2f7; color: #14283F; transform: rotate(90deg); }
.qm-alert-title {
  margin: 0 40px 12px 0; font-size: 18px; font-weight: 700;
  letter-spacing: .2px; color: #14283F; line-height: 1.5;
}
.qm-alert-note {
  background: #FFF8EC; border: 1px solid #F5DEB3; border-radius: 14px;
  padding: 11px 14px; margin-bottom: 14px;
  font-size: 13.5px; line-height: 1.75; color: #7C2D12;
}
.qm-alert-note b { font-weight: 700; color: #6B2410; }
.qm-alert-p {
  margin: 0 0 9px; font-size: 14px; line-height: 1.85; color: #334155; font-weight: 600;
}
.qm-alert-p b { font-weight: 700; color: #0F172A; }
.qm-alert-tip {
  margin: 4px 0 0; font-size: 12.5px; color: #8A94A6; line-height: 1.75;
}
.qm-alert-actions {
  display: flex; gap: 12px; justify-content: flex-end; margin-top: 20px;
}
.qm-alert-card .btn {
  border-radius: 999px !important;
  min-height: 44px; padding: 10px 28px !important;
  font-size: 15px !important; font-weight: 600 !important; letter-spacing: .3px;
  transition: transform .15s ease, box-shadow .2s ease, background .2s ease;
}
.qm-alert-card .btn-outline-secondary {
  background: #fff !important; border: 1px solid #dbe3ec !important; color: #334155 !important;
}
.qm-alert-card .btn-outline-secondary:hover {
  border-color: #b9c7d8 !important; background: #f8fafc !important;
}
.qm-alert-card .btn-danger {
  background: #f5222d !important; border: none !important; color: #fff !important;
  box-shadow: 0 10px 22px rgba(245, 34, 45, .26);
}
.qm-alert-card .btn-danger:hover {
  background: #cf1322 !important; transform: translateY(-1px);
  box-shadow: 0 14px 28px rgba(245, 34, 45, .32);
}

/* ── B. 资质大图 / 附件预览（lightbox）── */
.qm-lb-mask {
  position: fixed; inset: 0; z-index: 99999;
  background: rgba(15, 23, 42, 0.62);
  -webkit-backdrop-filter: blur(8px) saturate(1.05);
  backdrop-filter: blur(8px) saturate(1.05);
  display: flex; align-items: center; justify-content: center;
  padding: 24px; cursor: zoom-out;
  animation: qmLbFade12 0.18s ease-out;
}
@keyframes qmLbFade12 { from { opacity: 0 } to { opacity: 1 } }
.qm-lb-box {
  background: #fff; border-radius: 20px; max-width: 860px; max-height: 86vh;
  overflow: auto; padding: 16px; text-align: center; cursor: default;
  border: 1px solid #eef2f7;
  box-shadow: 0 32px 80px rgba(8, 16, 30, .34), 0 4px 12px rgba(8, 16, 30, .10);
  animation: qmModalIn12 0.22s cubic-bezier(0.16, 1, 0.3, 1);
}
.qm-lb-tip {
  margin: 12px 0 2px; font-size: 12.5px; color: #16A34A; font-weight: 600;
  letter-spacing: .2px;
}

.qm-lb-name {
  margin: 12px 0 2px; font-size: 13.5px; color: #334155; font-weight: 600;
  letter-spacing: .2px; line-height: 1.7;
}
.qm-lb-tip--muted { color: #94A3B8; font-weight: 500; margin-top: 4px; }


/* =====================================================
   v6.48 hero 流体光斑（2026-10-22 用户三条指令，逐条对症）
   用户原话：①「不够自然、速度也慢、感受不到、要很明显」
             ②「动效能不能在页眉线以下渲染？（注：不要勉强）」
             ③「卡顿、这个的解决」

   ① 明显 + 自然：层数 3→4；位移幅度 1.7~3.2 倍；周期 9/12/15s→6.2/7.6/9.4/5.4s；
      路径由 `alternate`（到端点就反弹，看着像来回摆）改为**闭合环路**（100% 回到 0%，
      4 段关键帧），像「漂移」而不是「摆钟」；再叠一层不透明度呼吸，中段过渡带真正「活」起来。
   ② 页眉线以下：容器由 `inset:0` 改为 `top:73px`（实测 header 高度 73px，与既有
      `.hero-bg-motion` 的 `background-position:0 72px` 是同一条线），并在容器顶部加
      **同色 #0077FF 渐隐遮罩**，避免光斑在 73px 处被 overflow 硬切出直边。
   ③ 卡顿根治：旧写法 `filter: blur(48px)` 作用在 ~891px 大圆上、且动画 keyframe 里改 `scale`
      ⇒ 每帧重新做高斯模糊 + 重栅格，实测 **12.1 fps、35 帧全部 >50ms**。
      新写法**彻底去掉 filter**，柔边改由多停靠点 radial-gradient 自带（一次栅格化，之后不再变）；
      动画只走 `translate3d` + `opacity` 两个合成器属性 ⇒ 不重排、不重绘、不重栅格。
   ④ 色值纪律不变：只用 hero 同族（#0077FF / #0055CC / #6BB0FF / #B7D9FF / 白），
      不引入参考工具里的偏紫蓝；顶端 30% 实蓝锚与白端锚一像素不动。
   ⑤ prefers-reduced-motion 自动静止（保静态光斑，不出动画）。
   ===================================================== */
/* 🔴 闭合环路 4 段：100% 必须回到 0%，否则会出现「到点回弹」的摆钟感。
   只写 translate3d —— 不用 scale/rotate（那会触发重栅格，是卡顿来源之一）。 */
@keyframes qmFlowA {
  0%   { transform: translate3d(0, 0, 0); }
  25%  { transform: translate3d(15vw, 8vh, 0); }
  50%  { transform: translate3d(25vw, -4vh, 0); }
  75%  { transform: translate3d(7vw, -11vh, 0); }
  100% { transform: translate3d(0, 0, 0); }
}
@keyframes qmFlowB {
  0%   { transform: translate3d(0, 0, 0); }
  25%  { transform: translate3d(-14vw, -8vh, 0); }
  50%  { transform: translate3d(-6vw, -18vh, 0); }
  75%  { transform: translate3d(9vw, -6vh, 0); }
  100% { transform: translate3d(0, 0, 0); }
}
@keyframes qmFlowC {
  0%   { transform: translate3d(0, 0, 0); }
  25%  { transform: translate3d(-10vw, 10vh, 0); }
  50%  { transform: translate3d(-20vw, 2vh, 0); }
  75%  { transform: translate3d(-4vw, -8vh, 0); }
  100% { transform: translate3d(0, 0, 0); }
}
@keyframes qmFlowD {
  0%   { transform: translate3d(0, 0, 0); }
  33%  { transform: translate3d(13vw, -10vh, 0); }
  66%  { transform: translate3d(-9vw, -15vh, 0); }
  100% { transform: translate3d(0, 0, 0); }
}
/* 呼吸：只动 opacity，合成器属性，零开销 */
@keyframes qmGlowA { 0%, 100% { opacity: .58; } 50% { opacity: .98; } }
@keyframes qmGlowB { 0%, 100% { opacity: .52; } 50% { opacity: .88; } }
@keyframes qmGlowC { 0%, 100% { opacity: .48; } 50% { opacity: .84; } }
/* ② 页眉线以下：top:73px = 实测页眉高度；overflow 裁掉越界部分 */
body.home-page .hero-bg-blobs {
  position: absolute; left: 0; right: 0; bottom: 0; top: 73px;
  overflow: hidden; pointer-events: none;
}
/* 顶部同色渐隐：光斑被 73px 硬切会露直边，用 #0077FF 渐隐化开（该带本就是实蓝，视觉零变化） */
body.home-page .hero-bg-blobs::after {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 96px;
  background: linear-gradient(180deg, #0077FF 0%, #0077FF 34%, rgba(0, 119, 255, 0) 100%);
  pointer-events: none;
}
/* ③ 柔边靠多停靠点渐变自带，不用 filter —— 一次栅格化后不再变化 */
body.home-page .hero-bg-blobs i {
  position: absolute; display: block; border-radius: 50%;
  will-change: transform, opacity;
}
body.home-page .hero-bg-blobs i:nth-child(1) {
  width: 56vw; height: 56vw; left: 2vw; top: 2vh;
  background: radial-gradient(circle, rgba(255,255,255,.78) 0%, rgba(255,255,255,.62) 22%, rgba(255,255,255,.38) 42%, rgba(255,255,255,.18) 62%, rgba(255,255,255,.06) 80%, rgba(255,255,255,0) 100%);
  animation: qmFlowA 4.8s cubic-bezier(.42,0,.58,1) infinite, qmGlowA 2.9s ease-in-out infinite;
}
body.home-page .hero-bg-blobs i:nth-child(2) {
  width: 52vw; height: 52vw; left: -14vw; top: 22vh;
  background: radial-gradient(circle, rgba(0,85,204,.56) 0%, rgba(0,85,204,.42) 24%, rgba(0,105,230,.26) 46%, rgba(0,119,255,.13) 66%, rgba(0,119,255,.04) 82%, rgba(0,119,255,0) 100%);
  animation: qmFlowB 5.9s cubic-bezier(.42,0,.58,1) infinite, qmGlowB 3.5s ease-in-out infinite;
}
body.home-page .hero-bg-blobs i:nth-child(3) {
  width: 46vw; height: 46vw; right: -8vw; top: 4vh;
  background: radial-gradient(circle, rgba(183,217,255,.88) 0%, rgba(157,203,255,.62) 26%, rgba(107,176,255,.36) 50%, rgba(107,176,255,.14) 72%, rgba(107,176,255,0) 100%);
  animation: qmFlowC 7.1s cubic-bezier(.42,0,.58,1) infinite, qmGlowC 4.3s ease-in-out infinite;
}
body.home-page .hero-bg-blobs i:nth-child(4) {
  width: 30vw; height: 30vw; right: 16vw; bottom: 6vh;
  background: radial-gradient(circle, rgba(255,255,255,.92) 0%, rgba(255,255,255,.66) 28%, rgba(255,255,255,.34) 52%, rgba(255,255,255,.12) 74%, rgba(255,255,255,0) 100%);
  animation: qmFlowD 4.2s cubic-bezier(.42,0,.55,1) infinite, qmGlowA 2.3s ease-in-out infinite;
}
/* ==========================================================================
   v6.75d 手机适配收口（用户令「手机适配这些问题全部弄好」）；全部规则只在 ≤640px 生效。
   判据口径：独立可点控件 ≥32px（WCAG 2.5.8 的 AA 下限 24px，这里取更舒适一档）；
   段落行内链接按 WCAG 内联例外豁免；label.form-label 是纯文字标签、用户点的是下方输入框
   （实测 login/settings/contact/feedback/fee-center/publish 的 input 全部 ≥36px）⇒ 豁免；
   勾选框本体 13–16px 由外层 label 整行扩区 ⇒ 本体不动；
   英文小标 .ab-eye/.org-eye/.od-eye 是 B 系钉死的 11px 档 ⇒ 不动，.lm-kicker 10.5 → 11 对齐。
   ========================================================================== */
@media (max-width: 640px) {
  /* ① 页脚法务链接 21px → 33px（只加纵向内边距，字号/颜色/分隔符都不变） */
  .footer-links a { padding: 6px 0; }

  /* ② 动作胶囊 24px → 34px（覆盖 admin / settings / order-detail 等同名控件；
        工作台 #wbv7 的同类规则在 workbench.html 页内处理，见该页 v6.75d 块） */
  .wb-act, .wb-page .wb-act { padding: 9px 10px; }

  /* ④ 需求大厅筛选下拉 26px → 38px（右侧箭头靠 background-position 定位，不受内边距影响） */
  .dh-filter-group select { padding-top: 10px; padding-bottom: 10px; }

  /* ⑤ 账号设置身份标签 29px → 34px（settings.html 页内也有同权规则在后，必须带强制标记） */
  .st-tag-chip { padding: 8px 14px !important; }

  /* ⑥ 机构卡机构名（整卡主链接）20px → 32px */
  .org-s-name { display: inline-block; padding: 6px 0; }

  /* ⑦ 机构详情「← 返回机构库」23px → 33px */
  .org-dt-back, .org-dt-back-link { padding: 5px 0; }

  /* ⑧ 顶栏返回链接（报价比较 / 洽谈概览）23px → 33px */
  .qc-topbar a.back, .ov-topbar a.back { padding: 5px 0; }

  /* ⑨ 登录页「找回密码」25px → 35px；
        「还没有账号？免费注册」是设计定的纯文字下划线链接（.auth-card 里 padding 归零），
        只扩点击区，不加背景、不加边框、保留下划线 */
  #forgotPwdLink { padding: 5px 0; }
  .auth-card .btn-outline-primary { padding: 8px 0; }

  /* ⑩ 附件选择控件 21px → 38px */
  input[type="file"] { min-height: 38px; }

  /* ⑪ 短信通知 / PWA 通知开关的 label 24px → 32px */
  .sms-switch, .qm-pwa-notify-wrap { padding: 4px 0; }

  /* ⑪b 勾选框整行（「记住我」「本次提交为复印件」等）：label 本身只有 21–25px。
        外层 label 已经包着勾选框 ⇒ 整行可点，把行高撑到 32px 即可；勾选框本体尺寸不动。
        🔴 用 :has() 只命中「直接包着勾选框」的 label，纯文字标签（.form-label）不受影响。 */
  label:has(> input[type="checkbox"]) { display: flex; align-items: center; min-height: 32px; }

  /* ⑫ 手机档字号下限：以下为中文辅助 / 说明 / 角标类文字，实测 10.5–11.5px，低于手机可读下限 */
  .org-strip-note, .org-dt-disclaimer, .qw-scene-desc,
  .oe-lock-tag, .fc-region-badge,
  .v11-ono, .v11-ml .w, .v11-ml .nx, .v11-ml-note,
  .ov-chip.tag,
  .news-item-ym, .news-endnote { font-size: 12px !important; }

  /* ⑬ 法务页英文小标 10.5px → 11px（与全站英文小标同档） */
  .lm-kicker { font-size: 11px !important; }

  /* ⑬b 🔴 工作台（#wbv7）表格可达性的三处修复**写在 workbench.html 页内**，不落全局层：
     ① 表格容器横向放开可滑；② 操作列改自动布局；③ 动作/消息胶囊补到 ≥32px。
     理由：.wb-* 是页面专属层，全局层硬压会触发 smoke §179.2；改在页内靠「同选择器、位置在后」
     取胜，同时把三处对手声明的标记去掉 ⇒ 本页内联标记计数 625 → 615（§179.1 只降不升）。 */
}

@media (prefers-reduced-motion: reduce) {
  body.home-page .hero-bg-blobs i { animation: none; }
}
