/* ===== 中智亚信官网 · 设计系统 V3.10 =====
   色系参照 tencent.com：深靛蓝 #16345C 打底 + 主蓝 #2470E0 + 白 + 冷灰
   青绿 #3CD6BF 仅保留在 logo 中（logo 不变，界面不再大面积使用）
   对比度：深靛蓝底白字 12.6:1、主蓝白字 5.2:1（均达 WCAG AA）
   V3.8：Hero / 产品页头不再用近黑遮罩压图，改为「亮蓝渐变 + 真实照片」，
         遮罩 左侧 rgba(13,58,146,.90) → 右侧 rgba(48,130,242,.24)，
         同时把该作用域内的文字提亮一档（--on-dark 变量不动）
   V3.9：底部去蓝黑——页脚 #0E2044 → #0D2F66，CTA 渐变 #17395F→#0A1730 改为
         #17457F→#10386F，腰部数字条 #1A3A66 改为 #17457F→#0F3770 渐变；
         表格加 .t-fit / .t-nw 单行规则；联系卡改为一行式
   V3.10：去蓝黑（第二轮回）——① 首屏玻璃卡 rgba(9,20,40,.58) → 蓝族半透明渐变；
         ② 白底深色卡不用 --deep(#16304F)，改用新增 --blue-block(#1B549E)；
         ③ .chain 的 display:contents 收窄到 .chain-grid > .chain。
   V3.12：品牌区放大——logo 36→48、中文全称 15→30px、去掉英文副标、--nav-h 64→76。
   V3.13：字号阶梯按「正文 14–16 / 一级 24–36 / 二级 20–24 / 三级 16–20 / 导航按钮 14–18 /
         辅助 12–14」重排，33 个散值收敛为 9 档：58·44 / 34 / 22 / 20 / 18 / 16 / 15 / 13 / 12。
         明细见 README「一·补二」。
   容器 1200px，断点 1080 / 900 / 600；纵向留白由 --sec-y 统一控制
   无外部依赖，离线可用
*/
*,*::before,*::after{box-sizing:border-box}
:root{
  /* 主色阶：深靛蓝（白底上的文字与强调） */
  --deep:#16304F; --deep-2:#1B3A5E; --deep-3:#24507A; --deep-x:#0F2244;
  /* 深色区背景：深靛蓝（参照 tencent.com 深色区色相，已整体提亮） */
  --navy:#16345C; --navy-2:#123B72; --navy-x:#0D2F66;   /* navy-2=数字条中间调，navy-x=页脚（原 #0E2044 太暗发蓝黑） */
  /* 白底上的深色「色块」底色：不能直接用 --deep(#16304F)——那是文字色，
     铺成大面积块会读成蓝黑。这里固定为明显偏蓝的 #1B549E（白字 7.5:1） */
  --blue-block:#1B549E;
  --on-dark:#C9D9F2; --on-dark-2:#A8BDDC;

  /* ---------- 主视觉背景图上的遮罩层（可整体换调） ----------
     抽成变量的原因：遮罩同时决定「照片呈现什么色」和「白字能不能读」，
     以前把 rgba 蓝值硬写在 ::before 里，想试"不加蓝"就得逐处改数值、容易漏。
     现在只改这三个变量即可整体换调：
       · 默认（不设 body class）= 现在的亮蓝渐变
       · body.tone-natural      = 完全去掉遮罩，露出照片原色
       · body.tone-neutral      = 换成中性深灰，去蓝但保住白字可读性
     注意 .hero 与 .phero 的照片明暗不同（首页 smartline 偏亮、内页偏暗），
     两套遮罩强度必须分开给，不能共用一个值。 */
  --veil-hero:
    linear-gradient(180deg, rgba(18,76,186,0) 42%, rgba(18,76,186,.58) 100%),
    linear-gradient(96deg, rgba(13,58,146,.90) 0%, rgba(19,80,190,.78) 36%, rgba(34,108,224,.48) 64%, rgba(48,130,242,.24) 100%);
  --veil-phero:
    linear-gradient(94deg, rgba(13,58,146,.92) 0%, rgba(19,80,190,.82) 44%, rgba(34,108,224,.52) 72%, rgba(48,130,242,.28) 100%);
  --veil-phero-mkt:
    linear-gradient(94deg, rgba(11,50,128,.94) 0%, rgba(17,74,182,.86) 46%, rgba(34,108,224,.56) 74%, rgba(48,130,242,.30) 100%);
  /* 窄屏专用：手机端照片被裁成竖向、文字落点也在上半部，横向渐变失效，
     必须换成纵向压暗。原先这两条是硬编码在 @media(max-width:600px) 里的蓝色，
     直接压掉了 body.tone-* 的变量——手机端一直是蓝的，桌面端改了看不出。
     抽成变量后窄屏才能跟着档位一起换。 */
  --veil-hero-m:
    linear-gradient(180deg, rgba(16,70,172,.70) 0%, rgba(17,74,182,.66) 46%, rgba(12,54,138,.88) 100%);
  --veil-phero-m:
    linear-gradient(180deg, rgba(15,66,166,.82) 0%, rgba(17,74,182,.80) 60%, rgba(13,58,146,.90) 100%);

  /* 强调色阶：蓝（色相 216°，与腾讯蓝同族、色值不同；变量名沿用 teal* 不再改动） */
  --teal:#7FB2FF;          /* 深底上的亮蓝强调 */
  --teal-b:#3A80F0;        /* 中蓝：边框、图标、白底图形 */
  --teal-t:#1A63D8;        /* 白底上的强调文字 */
  --teal-l:#AECFFF;        /* 浅蓝：深底次要文字 */
  --teal-p:#EDF4FF;        /* 极浅蓝：标签、图标底 */
  --label:#1657C8;         /* 板块标签统一纯蓝：白底 6.4:1，不偏灰不偏青 */
  /* 中性 */
  --ink:#1A1A1A; --muted:#58626F; --faint:#8B94A2;
  --line:#E4E9F1; --line-2:#CFD7E4; --soft:#F7F9FC; --white:#fff;
  --r:10px; --r-lg:14px;
  --shadow:0 1px 2px rgba(16,48,79,.05), 0 8px 24px -12px rgba(16,48,79,.14);
  --shadow-lg:0 2px 4px rgba(16,48,79,.06), 0 18px 40px -18px rgba(16,48,79,.22);
  /* 字体：以微软雅黑为主（政企用户以 Windows 为主），非 Windows 环境回退苹方 / 思源 */
  --font:"Microsoft YaHei","微软雅黑","PingFang SC","Hiragino Sans GB","Source Han Sans SC","Noto Sans CJK SC",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif;
  --wrap:1200px;
  /* 纵向节奏：改一个值，全站松紧同步 */
  --sec-y:44px;      /* 区块上下留白 */
  --head-y:24px;     /* 标题组与内容间距 */
  --nav-h:76px;      /* 顶栏高度（logo 48 + 上下各 14） */
}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font);color:var(--ink);background:var(--white);line-height:1.7;-webkit-font-smoothing:antialiased;font-size:16px}
img,svg{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{margin:0;font-weight:600;line-height:1.34;letter-spacing:-.015em}
/* 全站段落与列表项统一两端对齐：卡片正文、区块说明、时间轴、要点清单都吃这条；
   单行段落不受影响（最后一行不拉伸），表格单元格不用 justify（窄列会产生大空隙） */
p,li{text-align:justify;text-justify:inter-ideograph}
p{margin:0}
ul{margin:0;padding:0;list-style:none}
table{border-collapse:collapse;width:100%}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
:focus-visible{outline:2px solid var(--teal-t);outline-offset:3px;border-radius:4px}

/* ---------- 顶栏 ---------- */
.nav{position:sticky;top:0;z-index:90;background:rgba(255,255,255,.92);backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid var(--line)}
.nav-in{max-width:var(--wrap);margin:0 auto;padding:0 28px;height:var(--nav-h);display:flex;align-items:center;gap:28px}
/* 品牌区：logo 48（原 36 放大 1/3）+ 中文全称 30px（原 15 放大一倍），不再放英文副标。
   30px 大字要收紧字距，中文按 .02em 会显松散，改 -.01em */
.brand{display:flex;align-items:center;gap:15px;flex:0 0 auto}
.brand-mark{width:48px;height:48px;flex:0 0 auto;display:block}
.brand-txt{display:flex;flex-direction:column;line-height:1.18}
.brand-txt b{font-size:30px;font-weight:700;letter-spacing:-.01em;color:var(--ink);white-space:nowrap}
/* 菜单靠右：品牌名换成全称后左侧变长，菜单用 margin-left:auto 顶到右侧，
   与「预约演示」按钮之间留 18px，右上角不再放咨询电话 */
.nav-menu{display:flex;align-items:center;gap:2px;margin-left:auto;margin-right:18px}
.nav-menu>li{position:relative}
.nav-menu a.nl{display:block;font-size:15px;color:var(--muted);padding:8px 13px;border-radius:8px;white-space:nowrap;transition:.16s}
.nav-menu a.nl:hover{color:var(--teal-t);background:transparent}
.nav-menu a.nl.on{color:var(--deep);font-weight:600}
.nav-menu a.nl.on::after{content:"";position:absolute;left:13px;right:13px;bottom:0;height:2px;background:var(--teal-b);border-radius:2px}
.sub{position:absolute;top:calc(100% + 4px);left:0;min-width:308px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);padding:8px;opacity:0;visibility:hidden;transform:translateY(-6px);transition:.18s}
.nav-menu li.has-sub:hover .sub,.nav-menu li.has-sub.open .sub{opacity:1;visibility:visible;transform:translateY(0)}
.sub a{display:block;padding:9px 12px;border-radius:8px;font-size:15px;color:var(--ink)}
.sub a:hover{background:var(--soft);color:var(--teal-t)}
.sub a small{display:block;font-size:13px;color:var(--faint);line-height:1.5}
.nav-right{margin-left:0;display:flex;align-items:center;gap:14px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:9px;font-size:15px;font-weight:600;padding:10px 20px;border:1px solid transparent;cursor:pointer;transition:.18s;white-space:nowrap;font-family:inherit}
/* 主按钮：品牌青绿底 + 深墨青字（6.81:1，不用白字——白字仅 1.82:1） */
.btn-p{background:#2470E0;color:#fff}
.btn-p:hover{background:#1C5FC4;box-shadow:0 6px 18px -8px rgba(36,112,224,.5)}
.btn-g{background:transparent;color:var(--deep);border-color:var(--line-2)}
.btn-g:hover{border-color:var(--teal-b);background:var(--soft)}
.btn-w{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.3)}
.btn-w:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.5)}
.btn-s{padding:8px 16px;font-size:14px}
.burger{display:none;width:40px;height:40px;border:1px solid var(--line);background:#fff;border-radius:9px;cursor:pointer;padding:0;align-items:center;justify-content:center}
.burger i{display:block;width:17px;height:1.6px;background:var(--ink);position:relative}
.burger i::before,.burger i::after{content:"";position:absolute;left:0;width:17px;height:1.6px;background:var(--ink)}
.burger i::before{top:-5.5px}.burger i::after{top:5.5px}

/* ---------- Hero（单栏大区，版式参照 tencent.com/zh-cn） ---------- */
.hero{background:#12459F url("bg/hero-smartline.jpg") center 20%/cover no-repeat;color:#fff;position:relative;overflow:hidden;isolation:isolate}
.hero::before{content:"";position:absolute;inset:0;pointer-events:none;background:var(--veil-hero)}
.hero-in{position:relative;z-index:1;max-width:var(--wrap);margin:0 auto;padding:96px 28px 34px;min-height:528px;display:flex;flex-direction:column;justify-content:flex-end}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-size:15px;line-height:1.2;letter-spacing:.04em;text-transform:uppercase;color:var(--label);margin-bottom:13px;font-weight:700}
.eyebrow::before{content:"";width:.52em;height:.52em;flex:none;border-radius:1px;background:var(--label);transform:translateY(-.03em)}
/* 首屏与产品页头不算“板块”，标签维持小一档，避免与 58px 主标题抢层级 */
.hero .eyebrow{font-size:14px;letter-spacing:.14em;font-weight:600;margin-bottom:16px;color:#CFE2FF}
.hero .eyebrow::before{width:.48em;height:.48em;border-radius:1px;background:#CFE2FF}
.hero h1{font-size:58px;line-height:1.14;letter-spacing:-.04em;margin-bottom:22px;font-weight:800;text-wrap:balance}
.hero h1 em{font-style:normal;color:#A8CDFF}
.hero-lead{font-size:17px;line-height:1.72;color:#E9F1FD;max-width:36em}
.hero-bot{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-top:38px;padding-top:22px;border-top:1px solid rgba(255,255,255,.12);flex-wrap:wrap}
.hero-link{display:inline-flex;align-items:center;gap:9px;font-size:15px;font-weight:600;color:#fff;transition:.2s;text-shadow:0 1px 4px rgba(6,30,80,.85)}
.hero-link svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:.2s}
.hero-link:hover{color:var(--teal)}
.hero-link:hover svg{transform:translateX(5px)}
.hero-note{font-size:13px;color:#CDDCF4;display:flex;align-items:center;gap:8px;text-shadow:0 1px 4px rgba(6,30,80,.9)}
.hero-note::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--teal);flex:0 0 auto}

/* 浅底上的图示（平台链路） */
.hero-fig{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:18px;box-shadow:var(--shadow)}
.hero-fig figcaption{font-size:12px;color:var(--faint);margin-top:10px;text-align:center;letter-spacing:.02em}
.chainsec{padding-top:calc(var(--sec-y) - 8px)}

/* ---------- 数字条 ---------- */
/* 与 CTA 同一深蓝色族（#17457F → #0F3770），不再用偏灰的 #1A3A66 */
.stats{background:linear-gradient(118deg,#17457F 0%,#0F3770 100%);color:#fff;border-top:1px solid rgba(255,255,255,.10)}
.stats-in{max-width:var(--wrap);margin:0 auto;padding:0 28px;display:grid;grid-template-columns:repeat(4,1fr)}
.stat{padding:22px 10px;border-right:1px solid rgba(255,255,255,.08)}
.stat:last-child{border-right:0}
.stat b{display:block;font-size:30px;font-weight:700;letter-spacing:-.02em;line-height:1.15;color:#fff}
.stat b i{font-style:normal;font-size:14px;font-weight:400;color:var(--teal-l);margin-left:3px}
.stat span{display:block;font-size:13px;color:var(--on-dark-2);margin-top:4px}

/* ---------- 区块 ---------- */
.sec{padding:var(--sec-y) 0}
.sec.soft{background:var(--soft);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
/* 小节标题区：容器放开到与下方卡片同宽，导语两端对齐；标题同样吃满宽度以保证单行 */
.sec-head{margin-bottom:var(--head-y)}
.sec-head .eyebrow{color:var(--label)}
.sec-head .eyebrow::before{background:var(--label)}
.sec-head h2{font-size:34px;line-height:1.22;letter-spacing:-.035em;font-weight:700;text-wrap:balance}
.sec-head p{margin-top:14px;color:var(--muted);font-size:16px;line-height:1.75;text-align:justify;text-justify:inter-ideograph}

/* ---------- 产品卡 ---------- */
.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.pcard{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:26px 24px 22px;display:flex;flex-direction:column;transition:.22s;position:relative;overflow:hidden}
.pcard::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--teal-b);opacity:.5;transition:.22s}
.pcard:hover{box-shadow:var(--shadow);border-color:var(--teal-b)}
.pcard:hover::before{opacity:1;background:var(--teal-b);height:3px}
.pcard-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.pcard-no{font-size:13px;font-weight:700;color:var(--teal-t);letter-spacing:.1em}
.pcard-cat{font-size:12px;color:var(--faint);letter-spacing:.16em;text-transform:uppercase}
.pcard h3{font-size:22px;margin-bottom:5px;letter-spacing:-.03em}
.pcard-fig{margin:0 0 16px;border-radius:9px;overflow:hidden;background:var(--soft);aspect-ratio:16/9;position:relative}
.pcard-fig img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .55s cubic-bezier(.22,.7,.3,1)}
.pcard:hover .pcard-fig img{transform:scale(1.045)}
.pcard-fig::after{content:"";position:absolute;inset:0;border-radius:9px;pointer-events:none;
  box-shadow:inset 0 0 0 1px rgba(16,48,79,.10);
  background:linear-gradient(180deg,rgba(22,52,92,.08) 0%,rgba(14,32,68,.30) 100%)}
.pcard .sub-t{font-size:14px;color:var(--faint);margin-bottom:13px;letter-spacing:.02em}
.pcard .tags{margin-top:auto;margin-bottom:2px}
.pcard p.desc{font-size:15px;color:var(--muted);line-height:1.75;flex:1}
.pcard .nums{display:flex;gap:15px;margin:16px 0 14px;padding-top:14px;border-top:1px dashed var(--line);flex-wrap:wrap}
.pcard .nums div b{display:block;font-size:20px;color:var(--deep);letter-spacing:-.01em;font-weight:700}
.pcard .nums div span{font-size:13px;color:var(--faint)}
.pcard .go{font-size:15px;color:var(--teal-t);font-weight:600;display:inline-flex;align-items:center;gap:6px}
.pcard .go::after{content:"→";transition:.18s}
.pcard:hover .go::after{transform:translateX(4px)}

/* ---------- 通用卡 ---------- */
.cgrid{display:grid;gap:16px}
.cgrid.c2{grid-template-columns:repeat(2,1fr)}
.cgrid.c3{grid-template-columns:repeat(3,1fr)}
.cgrid.c4{grid-template-columns:repeat(4,1fr)}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:22px 22px;transition:.2s}
.card:hover{border-color:var(--teal-b)}
.card h4{font-size:18px;margin-bottom:8px;text-wrap:balance}
.card p{font-size:15px;color:var(--muted);line-height:1.75}
.card .no{font-size:12px;color:var(--teal-t);font-weight:700;letter-spacing:.1em;margin-bottom:8px;display:block}

/* ---------- 左右分栏 ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center}
.split.rev .split-txt{order:2}
.split-txt h2{font-size:34px;margin-bottom:16px;letter-spacing:-.035em;line-height:1.24;font-weight:700}
.split-txt p{color:var(--muted);font-size:16px;line-height:1.85}
.split-txt p+p{margin-top:11px}
/* 关于页「公司概况」：正文左侧、园区实景右侧；图按 4:5 原生比例，顶部对齐 */
.about-split{display:grid;grid-template-columns:minmax(0,1fr) 384px;gap:44px;align-items:start}
.about-txt{max-width:760px}
.about-fig{margin:6px 0 0;min-width:0}
.about-fig img{width:100%;height:auto;aspect-ratio:4/5;display:block;object-fit:cover;object-position:50% 45%;border-radius:var(--r-lg);border:1px solid var(--line);box-shadow:var(--shadow)}
.about-fig figcaption{font-size:12px;color:var(--faint);margin-top:10px;letter-spacing:.02em}
.chk{margin-top:18px;display:grid;gap:9px}
.chk li{display:flex;gap:11px;font-size:15px;color:var(--ink);line-height:1.65}
.chk li::before{content:"";width:16px;height:16px;flex:0 0 auto;margin-top:3px;border-radius:50%;background:var(--teal-p) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M4.4 8.3l2.3 2.3 4.9-5' fill='none' stroke='%231A63D8' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/></svg>") center/16px no-repeat}

/* ---------- 时间轴 ---------- */
.tl{position:relative;margin-top:6px;padding-left:24px}
.tl::before{content:"";position:absolute;left:5px;top:8px;bottom:8px;width:1.5px;background:linear-gradient(var(--teal-b),var(--line))}
.tl li{position:relative;padding:0 0 24px 0}
.tl li:last-child{padding-bottom:0}
.tl li::before{content:"";position:absolute;left:-24px;top:6px;width:11px;height:11px;border-radius:50%;background:#fff;border:2.5px solid var(--teal-b)}
.tl li:last-child::before{border-color:var(--teal-b);background:var(--teal-p)}
.tl .yr{font-size:13px;font-weight:700;color:var(--teal-t);letter-spacing:.04em}
.tl h4{font-size:18px;margin:2px 0 5px}
.tl p{font-size:15px;color:var(--muted);line-height:1.75}

/* ---------- 数字底座 ---------- */
.kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.kpi div{background:#fff;padding:20px 20px}
.kpi b{display:block;font-size:28px;color:var(--deep);letter-spacing:-.02em;line-height:1.15;font-weight:700}
.kpi b i{font-style:normal;font-size:13px;color:var(--teal-t);margin-left:3px;font-weight:500}
.kpi span{display:block;font-size:13px;color:var(--muted);margin-top:5px;line-height:1.55}

/* ---------- 表格 ---------- */
.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r)}
table.t{font-size:15px;min-width:560px}
table.t th{background:var(--teal-p);color:var(--deep);font-weight:600;text-align:left;padding:11px 15px;border-bottom:1px solid var(--line);white-space:nowrap}
table.t td{padding:11px 15px;border-bottom:1px solid var(--line);color:var(--ink);vertical-align:top;line-height:1.7}
table.t tr:last-child td{border-bottom:0}
table.t td:first-child{color:var(--muted)}
/* 能力体系表（.t-fit）：首列与末列按内容宽度收缩并强制单行，中间列吸收剩余宽度。
   注意只加在 about 页这张短句表上，compliance / rd 的表末列是长句，加 nowrap 会撑破布局 */
table.t.t-fit th:first-child,table.t.t-fit td:first-child{width:132px;white-space:nowrap}
table.t.t-fit th:last-child,table.t.t-fit td:last-child{width:1%;white-space:nowrap}
/* 研发页「核心资产」表（.t-nw）：前两列按内容收缩并单行，末列长文案仍自动换行 */
table.t.t-nw th:not(:last-child),table.t.t-nw td:not(:last-child){width:1%;white-space:nowrap}


/* ---------- 标签 ---------- */
.tags{display:flex;flex-wrap:wrap;gap:7px}
.tags span{font-size:13px;color:var(--teal-t);background:var(--teal-p);border-radius:6px;padding:4px 10px}
.tags.warn span{background:#FDF2EC;color:#99603F}
/* 合规域全景：27 通用域 + 17 行业专项域，四个高频入口加重 */
.tags span.hi{background:#CFE0FF;color:#0C3F94;font-weight:600}
.domap{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:20px 22px;display:grid;gap:18px}
.domap-row{display:grid;gap:10px}
.domap-k{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.domap-k b{font-size:15px;color:var(--deep);letter-spacing:-.01em}
.domap-k span{font-size:13px;color:var(--muted)}
.domap .tags span{font-size:13px;padding:4px 9px}

/* ---------- CTA ---------- */
.cta{background:var(--navy);color:#fff;position:relative;overflow:hidden;isolation:isolate}
.cta::before{content:"";position:absolute;inset:0;z-index:-1;background:
  radial-gradient(620px 300px at 86% 14%,rgba(127,178,255,.30),transparent 70%),
  linear-gradient(140deg,#17457F,#10386F)}
.cta-in{position:relative;z-index:1;max-width:var(--wrap);margin:0 auto;padding:46px 28px;display:grid;grid-template-columns:1fr auto;gap:36px;align-items:center}
.cta h2{font-size:34px;margin-bottom:10px;letter-spacing:-.035em;line-height:1.24;font-weight:700}
.cta p{color:#C9D9F2;font-size:15px;line-height:1.8;max-width:44em}
.cta-btns{display:flex;gap:12px;flex-wrap:wrap}
/* CTA 是整幅深色色块，颜色只认自己这一套。
   3 篇文章页曾把它整块写进 <div class="legal"> 里，于是 .legal h2{color:var(--deep)}
   和 .legal a{color:var(--teal-t)} 直接压上来：深底 + #16304F 标题＋蓝字按钮，
   文字基本看不见。HTML 那边已经把 CTA 移出正文容器，这段是兜底——
   以后谁再把它塞进 .legal / .faq 这类文字容器，配色也不会被带跑。 */
.legal .cta h2,.legal .cta h3,.faq .cta h2{color:#fff}
.legal .cta p,.faq .cta p{color:#C9D9F2}
.legal .cta a,.faq .cta a{border-bottom:0;color:inherit}
.legal .cta .btn-p,.faq .cta .btn-p{color:#fff}
.legal .cta .btn-w,.faq .cta .btn-w{color:#fff}

/* ---------- 页脚 ---------- */
.ft{background:var(--navy-x);color:var(--on-dark-2);padding:46px 0 0;font-size:15px;border-top:1px solid rgba(255,255,255,.08)}
/* 四栏等宽。原来是 1.5fr 1fr 1fr 1.2fr，第一栏 1.5 是留给公司简介的；
   简介移除后各栏内容体量相当，均分比留一个宽栏更整。 */
.ft-in{max-width:var(--wrap);margin:0 auto;padding:0 28px;display:grid;grid-template-columns:repeat(4,1fr);gap:32px}
.ft h4{color:#fff;font-size:14px;margin-bottom:12px;letter-spacing:.06em}
.ft a:hover{color:var(--teal)}
/* 页脚条目是短行，两端对齐会把字距撑开（全局 p,li 是 justify）。
   窄屏下地址被 .nw 断成短行后尤其明显，这里改回左对齐。 */
.ft ul li{margin-bottom:7px;line-height:1.65;text-align:left}
.ft .nw{white-space:nowrap}
.ft-btm{max-width:var(--wrap);margin:32px auto 0;padding:16px 28px;border-top:1px solid rgba(255,255,255,.08);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:13px;color:#8DA4CA}
.ft-btm a{color:#9DB2D6}

/* ---------- 悬浮联系 ---------- */
.float{position:fixed;right:20px;bottom:24px;z-index:80;display:flex;flex-direction:column;gap:8px}
.float a,.float button{width:52px;height:52px;border-radius:12px;border:1px solid var(--line);background:#fff;box-shadow:var(--shadow);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;cursor:pointer;color:var(--deep);transition:.18s;font-family:inherit;padding:0}
.float a:hover,.float button:hover{background:var(--deep);color:var(--teal);border-color:var(--deep);transform:translateY(-2px)}
.float svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.float small{font-size:11px;letter-spacing:.02em}
/* 悬浮主按钮：青绿底 + 深墨青字 */
.float .primary{background:#2470E0;border-color:#2470E0;color:#fff}
.float .primary:hover{background:#1C5FC4;border-color:#1C5FC4;color:#fff}

/* 二维码弹层 */
.qr-pop{position:fixed;right:84px;bottom:24px;z-index:81;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:16px;width:212px;display:none}
.qr-pop.on{display:block;animation:pop .18s ease-out}
@keyframes pop{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.qr-pop .box{aspect-ratio:1;background:var(--soft);border:1px dashed var(--line-2);border-radius:8px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:12px;color:var(--faint);padding:12px;line-height:1.6}
.qr-pop p{margin-top:10px;font-size:12px;color:var(--muted);text-align:center;line-height:1.6}

/* ---------- 表单 · 在线留资 ----------
   移动端优先：输入框 16px 防 iOS 聚焦缩放；可点区域 ≥40px；错误提示占位不跳动 */
.form{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:26px;box-shadow:var(--shadow)}
.form h3{font-size:20px;margin-bottom:6px;color:var(--deep)}
.lead-sub{font-size:14px;color:var(--muted);margin-bottom:20px;line-height:1.7}
.field{margin-bottom:15px}
.field label{display:block;font-size:14px;color:var(--muted);font-weight:600;margin-bottom:6px}
.field label i{color:#D2373C;font-style:normal;font-weight:400}
.field label .opt{font-weight:400;color:var(--faint);font-size:12px;margin-left:5px}
.field input,.field select,.field textarea{width:100%;font-family:inherit;font-size:16px;color:var(--ink);background:#fff;border:1px solid var(--line-2);border-radius:8px;padding:11px 12px;transition:.16s;appearance:none}
.field input:focus,.field select:focus,.field textarea:focus{outline:0;border-color:var(--teal-b);box-shadow:0 0 0 3px rgba(58,128,240,.16)}
.field textarea{min-height:88px;resize:vertical;line-height:1.65}
.field .hint{font-size:13px;color:var(--faint);margin-top:6px;line-height:1.6;text-align:left}
.field .err{font-size:13px;color:#C42B31;margin-top:6px;line-height:1.6;text-align:left}
.field .err:empty{display:none}
.field .invalid,.lead-consent .ck input.invalid{border-color:#E08A8D;background:#FFF8F8}
.lead-consent .ck input.invalid{background:#fff;outline:2px solid #E08A8D;outline-offset:2px}
.lead-row{display:grid;grid-template-columns:1fr 1fr;gap:13px}

/* 联系方式类型：单选分段控件 */
.lead-seg{display:flex;gap:3px;background:var(--soft);border:1px solid var(--line);border-radius:9px;padding:3px;margin-bottom:9px;width:fit-content;max-width:100%}
.lead-seg label{position:relative;margin:0;flex:1 1 auto}
.lead-seg input{position:absolute;opacity:0;width:1px;height:1px}
.lead-seg span{display:block;padding:7px 15px;border-radius:7px;font-size:14px;color:var(--muted);cursor:pointer;transition:.14s;white-space:nowrap;text-align:center}
.lead-seg input:checked+span{background:#fff;color:var(--teal-t);font-weight:600;box-shadow:0 1px 3px rgba(16,40,80,.14)}
.lead-seg input:focus-visible+span{outline:2px solid var(--teal-b);outline-offset:1px}

/* 关注产品：多选 chips */
.lead-chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{position:relative;margin:0}
.chip input{position:absolute;opacity:0;width:1px;height:1px}
.chip span{display:block;padding:9px 14px;border:1px solid var(--line-2);border-radius:8px;font-size:14px;color:#3C4A5E;cursor:pointer;transition:.14s;line-height:20px}
.chip input:checked+span{background:var(--teal-p);border-color:var(--teal-b);color:var(--teal-t);font-weight:600}
.chip input:focus-visible+span{outline:2px solid var(--teal-b);outline-offset:2px}
.chip span:hover{border-color:var(--line-2);background:var(--soft)}

/* 蜜罐：不用 display:none，部分爬虫会跳过隐藏元素；移出视口但仍在 DOM 中 */
.lead-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* 同意区：两行独立勾选，默认都不勾 */
.lead-consent{margin:16px 0 4px;display:grid;gap:11px}
.lead-consent .ck{display:flex;gap:9px;align-items:flex-start;font-size:13px;color:var(--muted);line-height:1.7;cursor:pointer;font-weight:400}
.lead-consent .ck input{width:17px;height:17px;flex:0 0 auto;margin:4px 0 0;accent-color:var(--teal-t);cursor:pointer}
.lead-consent .ck a{color:var(--teal-t);border-bottom:1px solid var(--line-2)}
.lead-consent .ck a:hover{border-color:var(--teal-b)}
.lead-consent .ck i{color:#D2373C;font-style:normal}

/* 提交按钮与加载态 */
.lead-submit{width:100%;margin-top:18px;min-height:48px;font-size:16px;justify-content:center}
.lead-spin{display:none;width:15px;height:15px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;margin-left:9px;animation:spin .7s linear infinite}
.lead-submit.is-busy .lead-spin{display:inline-block}
.lead-submit[disabled]{opacity:.7;cursor:not-allowed}
@keyframes spin{to{transform:rotate(360deg)}}

/* 状态条：提交中 / 失败 */
.lead-status{display:none;margin-top:12px;font-size:13px;line-height:1.7;border-radius:9px;padding:12px 14px;border:1px solid transparent}
.lead-status.on{display:block}
.lead-status.wait{border-color:#CFE0FF;background:#F2F7FF;color:#1B4B8F}
.lead-status.bad{border-color:#F0C9CA;background:#FFF7F7;color:#8E2226}
.lead-status b{display:block;margin-bottom:3px}
.lead-status .lead-retry{display:block;margin-top:6px;color:#6B4A4A}
.lead-link{border:0;background:none;padding:0;font:inherit;color:var(--teal-t);text-decoration:underline;cursor:pointer}

/* 成功面板 */
.lead-done{text-align:center;padding:10px 2px 2px}
.lead-done-ic{width:52px;height:52px;border-radius:50%;background:#E8F1FF;color:#1B549E;display:flex;align-items:center;justify-content:center;margin:0 auto 14px}
.lead-done-ic svg{width:26px;height:26px;stroke:currentColor;fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.lead-done h3{font-size:20px;margin-bottom:10px;color:var(--deep)}
.lead-done p{font-size:15px;color:var(--muted);line-height:1.8;text-align:center}
.lead-done p b{color:var(--deep)}
.lead-done .lead-done-note{font-size:13px;color:var(--faint);margin-top:12px}
.lead-done .btn{margin-top:18px}
.form .tip{font-size:13px;color:var(--faint);line-height:1.75;margin-top:14px}
.form .tip a{color:var(--teal-t);border-bottom:1px solid var(--line-2)}

/* ---------- 长文页（隐私政策等） ----------
   原来这里是 max-width:820px（阅读栏宽）。规矩改成"一页一个宽度"以后，
   820 / 900 这类正文独享的窄栏就是页面里最先露馅的地方：
   页头玻璃卡、相关卡片都到 1144，正文只到 820，右边缘上下差出 300 多像素。
   现在正文也吃满容器，宽度只由 .wrap 上的 --wrap 决定。 */
.legal{max-width:none}

/* 正文两端对齐：本页不靠继承全站 p,li 那条，自成一套。
   理由：长文页整页右边缘必须齐，靠继承太脆弱——哪天全局规则改成 left，
   这里会静默变成左对齐，而长文页的参差最显眼。
   - 最后一行按 CSS 规范不拉伸，这是要的效果（末行短一截比强行撑满自然）
   - overflow-wrap 兜底：两端对齐后行内空间被分配完，超长英文串/URL 无处断行时会溢出
   - 标题、版本行、返回按钮排除：单行文本 justify 本无效果，但版本行里有全角空格，
     一旦换行 justify 会把那几个空格拉成巨大空隙，比不对齐更难看 */
.legal p,
.legal li{text-align:justify;text-justify:inter-ideograph;overflow-wrap:break-word}
.legal p.legal-meta,
.legal p.legal-back,
.legal h2,
.legal h3{text-align:left}

.legal-meta{font-size:13px;color:var(--faint);border-left:3px solid var(--teal-b);padding-left:12px;margin-bottom:28px;line-height:1.75}
.legal h2{font-size:22px;margin:34px 0 12px;color:var(--deep);letter-spacing:-.01em;text-wrap:balance}
.legal h3{font-size:18px;margin:20px 0 8px;color:var(--deep)}
.legal p{font-size:16px;line-height:1.85;color:#3C4A5E;margin-bottom:12px}
.legal ul{list-style:none;padding:0;margin:0 0 14px}
.legal li{position:relative;padding-left:17px;font-size:16px;line-height:1.85;color:#3C4A5E;margin-bottom:8px}
.legal li::before{content:"";position:absolute;left:0;top:12px;width:5px;height:5px;border-radius:50%;background:var(--line-2)}
.legal b{color:var(--deep);font-weight:600}
.legal a{color:var(--teal-t);border-bottom:1px solid var(--line-2)}
.legal a:hover{border-color:var(--teal-b)}
.legal-back{margin-top:34px}

/* ---------- 文内目录（TOC）+ 返回（V3.39） ----------
   长文页 8–12 节、三四千字，原来只能一路往下滚，读到第五节想回头找第二节只能
   靠浏览器搜索。现在在正文顶部给一张目录卡，各节 h2 带 id 可深链。
   两点必须写在样式里，否则目录会「跳歪」：
     ① scroll-margin-top：页头 .nav 是 sticky（桌面 77px / 移动 65px），
        直接跳锚点会让标题藏在页头底下，看起来像跳到了上一节；
     ② .legal li::before 会给目录每一项加一个圆点（继承自正文列表），
        目录是二级列表，圆点会和外层的序号叠成两层，必须关掉。 */
.legal h2[id]{scroll-margin-top:96px}

.toc{margin:0 0 30px;padding:16px 20px 12px;border:1px solid var(--line);border-radius:var(--r-lg);
     scroll-margin-top:96px;
     background:linear-gradient(180deg,#F8FBFE 0%,#FFFFFF 100%)}
.toc-h{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;
       gap:4px 14px;margin-bottom:8px;padding-bottom:9px;border-bottom:1px solid var(--line)}
.toc-h b{font-size:13px;font-weight:600;letter-spacing:.09em;color:var(--teal-t)}
.toc-h span{font-size:12.5px;color:var(--faint);letter-spacing:.01em}
.legal .toc ul{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:0 26px;margin:0;padding:0}
.legal .toc li{margin:0;padding:0}
.legal .toc li::before{display:none}
.legal .toc a{display:block;padding:7px 4px 7px 11px;font-size:14.5px;line-height:1.6;color:#3C4A5E;
              border-bottom:0;border-left:2px solid transparent;text-decoration:none;
              transition:color .16s,border-color .16s,background .16s}
.legal .toc a:hover{color:var(--teal-t);border-left-color:var(--teal-b);background:rgba(233,242,251,.6)}
.legal .toc a:focus-visible{outline:2px solid var(--teal-t);outline-offset:1px}
/* 当前所在节：左侧竖条点亮。由 site.js 用 IntersectionObserver 切换 */
.legal .toc a[aria-current="true"]{color:var(--deep);font-weight:600;border-left-color:var(--teal-t);background:rgba(233,242,251,.55)}

@media(max-width:900px){
  .legal h2[id]{scroll-margin-top:80px}
  .legal .toc ul{grid-template-columns:1fr}
  .toc{padding:14px 16px 10px;margin-bottom:24px;scroll-margin-top:80px}
}

/* 浮动「目录」按钮（仅长文页，由 site.js 在有 .toc 时注入）
   为什么需要它：目录在正文顶部，读到第五节想换一节得先滚回顶部——
   目录在首屏有用，在正文里等于不存在。右下角已被电话/微信/QQ/留言四个浮球占住，
   所以放左下角；滚过 600px 才出现，首屏不打扰。
   移动端 375 宽时它与右侧浮球分处两角，不重叠（实测左边距 24 + 44 宽 = 68 < 浮球左缘）。 */
.toc-fab{position:fixed;left:24px;bottom:26px;z-index:80;display:inline-flex;align-items:center;gap:7px;
         height:44px;padding:0 15px;border:1px solid var(--line-2);border-radius:22px;background:#fff;
         color:var(--deep);font-family:inherit;font-size:14px;font-weight:600;letter-spacing:.02em;cursor:pointer;
         box-shadow:0 6px 20px rgba(16,48,79,.14);opacity:0;transform:translateY(10px);pointer-events:none;
         transition:opacity .2s,transform .2s,color .16s,border-color .16s}
.toc-fab.on{opacity:1;transform:none;pointer-events:auto}
.toc-fab:hover{color:var(--teal-t);border-color:var(--teal-b)}
.toc-fab:focus-visible{outline:2px solid var(--teal-t);outline-offset:2px}
.toc-fab svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8;
             stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
/* 点了目录按钮回到目录时，给目录块一个短促的底色提示，否则只是「滚回去了」没有反馈 */
.toc.flash{border-color:var(--teal-b);box-shadow:0 0 0 4px rgba(58,128,240,.10)}
@media(max-width:900px){
  .toc-fab{left:14px;bottom:18px;height:40px;padding:0 13px;font-size:13.5px}
}
/* ≤600 时右侧四个浮球从竖排变横排（.float{flex-direction:row}），占住底部一整条，
   目录按钮留在地上会排成「第五个按钮」，上移到浮球之上 */
@media(max-width:600px){
  .toc-fab{bottom:76px}
}

/* 正文末尾的返回行：左边回列表，右边回顶部，两者都不抢 CTA 的位置 */
.legal-back{display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px;margin-top:30px;
            padding-top:18px;border-top:1px solid var(--line)}
.legal-back .back-a{display:inline-flex;align-items:center;gap:6px;font-size:14.5px;color:var(--teal-t);
                    border-bottom:0;text-decoration:none}
.legal-back .back-a:hover{color:var(--deep)}
.legal-back .back-a span{transition:transform .16s}
.legal-back .back-a:hover span{transform:translateX(-3px)}
.legal-back .back-top{display:inline-flex;align-items:center;gap:5px;margin-left:auto;font-size:13.5px;
                      color:var(--faint);border-bottom:0;text-decoration:none}
.legal-back .back-top:hover{color:var(--teal-t)}

/* ---------- 联系信息块 ---------- */
.info{display:grid;gap:2px;background:var(--line);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.info>div{background:#fff;padding:16px 18px;display:flex;gap:13px;align-items:flex-start}
.info>div>div{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;column-gap:12px;row-gap:3px}
.info .ic{width:32px;height:32px;flex:0 0 auto;border-radius:9px;background:var(--teal-p);display:flex;align-items:center;justify-content:center;color:var(--teal-t)}
.info .ic svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.info .k{font-size:13px;color:var(--faint);letter-spacing:.04em;flex:0 0 auto;min-width:4.2em;white-space:nowrap}
.info .v{flex:1 1 auto;min-width:0;font-size:15px;color:var(--ink);line-height:1.55;word-break:normal;overflow-wrap:anywhere}
.info .v b{font-size:16px;letter-spacing:.01em;color:var(--deep)}
.info .v a{color:var(--deep);border-bottom:1px solid var(--line-2)}
.info .v a:hover{border-color:var(--teal-b);color:var(--teal-t)}
.copy{font-size:12px;color:var(--teal-t);border:1px solid var(--line-2);background:#fff;border-radius:6px;padding:2px 8px;cursor:pointer;margin-left:8px;font-family:inherit;vertical-align:1px}
.copy:hover{color:#fff;background:var(--teal-t);border-color:var(--teal-t)}

/* ---------- Toast ---------- */
.toast{position:fixed;left:50%;bottom:40px;transform:translate(-50%,14px);background:var(--deep);color:#fff;font-size:13px;padding:11px 20px;border-radius:9px;box-shadow:var(--shadow-lg);opacity:0;pointer-events:none;transition:.22s;z-index:120;border:1px solid rgba(127,178,255,.4)}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* ---------- 产品页 ---------- */
.phero{background:#12459F url("bg/hero-bg.jpg") center 38%/cover no-repeat;color:#fff;position:relative;overflow:hidden;isolation:isolate}
/* 分产品页头底图：合规用合规场景，研发用智能制造产线，营销用数字人+门店终端 */
.phero.ph-cmp{background-image:url("bg/hero-compliance.jpg");background-position:50% 44%}
.phero.ph-mkt{background-image:url("bg/hero-marketing.jpg");background-position:50% 30%}
.phero.ph-mkt::before{background:var(--veil-phero-mkt)}
.phero.ph-mfg{background-image:url("bg/hero-manufacture.jpg");background-position:66% 30%}
/* 解决方案页头底图：全部复用站内已有图片，不新增资产体积。
   选图依据「业务场景最近」，不是随便换一张图凑区别：
     ph-sol 总览  抽象数据流，侧重视野
     ph-km  知识  大屏看板 + 图谱，知识采集与建模
     ph-arc 档案  文档 + 权限 + 流程，最贴档案全生命周期
     ph-ast 资产  产线与设备，对应设备台账与资产管理
     ph-fin 财税  书堆与财务图表，对应政策与税负分析 */
.phero.ph-sol{background-image:url("bg/hero-bg-abstract.jpg");background-position:50% 50%}
.phero.ph-km{background-image:url("bg/hero-sol-knowledge.jpg");background-position:58% 42%}
.phero.ph-arc{background-image:url("bg/hero-sol-archive.jpg");background-position:56% 40%}
.phero.ph-ast{background-image:url("bg/hero-sol-asset.jpg");background-position:60% 38%}
.phero.ph-fin{background-image:url("bg/hero-sol-finance.jpg");background-position:56% 52%}
.phero::before{content:"";position:absolute;inset:0;pointer-events:none;background:var(--veil-phero)}

/* ---------- 色调试验：主视觉去蓝 ----------
   只切换上面三个遮罩变量，照片本身与文字颜色都不动，所以三种调子随时可来回对比。
     body.tone-natural = 完全不要遮罩，照片原色直接呈现（最接近"原图色、不加蓝"）
     body.tone-neutral = 蓝色换成中性深灰，去蓝但保住白字可读性
   切换方式：给 <body> 加一个 class 即可，不影响任何其他区块（数字条、CTA、页脚仍按深蓝）。 */
body.tone-natural{--veil-hero:none;--veil-phero:none;--veil-phero-mkt:none;--veil-hero-m:none;--veil-phero-m:none}
body.tone-neutral{
  --veil-hero:
    linear-gradient(180deg, rgba(6,10,18,.06) 40%, rgba(6,10,18,.62) 100%),
    linear-gradient(96deg, rgba(6,10,18,.62) 0%, rgba(8,13,22,.46) 40%, rgba(10,16,26,.18) 72%, rgba(10,16,26,.02) 100%);
  --veil-phero:
    linear-gradient(94deg, rgba(6,10,18,.66) 0%, rgba(8,13,22,.50) 45%, rgba(10,16,26,.22) 74%, rgba(10,16,26,.04) 100%);
  --veil-phero-mkt:
    linear-gradient(94deg, rgba(6,10,18,.70) 0%, rgba(8,13,22,.54) 45%, rgba(10,16,26,.24) 74%, rgba(10,16,26,.05) 100%);
  /* 窄屏：手机端只看得到照片中间一条，深浅差异被放大，纵向渐变比桌面端再实一点 */
  --veil-hero-m:
    linear-gradient(180deg, rgba(6,10,18,.40) 0%, rgba(6,10,18,.55) 46%, rgba(6,10,18,.84) 100%);
  --veil-phero-m:
    linear-gradient(180deg, rgba(6,10,18,.60) 0%, rgba(6,10,18,.66) 60%, rgba(6,10,18,.86) 100%);
}
/* 纯原图模式下白字失去蓝色底衬，给一层极轻的硬阴影兜住可读性。
   用 0 1px 3px（几乎不扩散）而不是大范围光晕，观感上不改变照片。 */
body.tone-natural .hero h1,body.tone-natural .phero h1,
body.tone-natural .hero-lead,body.tone-natural .phero .lead,
body.tone-natural .phero .sub-t,body.tone-natural .hero-note,
body.tone-natural .phero .crumb,body.tone-natural .hero-link{text-shadow:0 1px 3px rgba(4,10,22,.55)}

/* 中性灰档原先没有文字阴影：旧的四张首屏图足够暗，白字直接压得住。
   V3.26 换成明亮的室内实拍图后，正文落在浅灰墙面上，笔画边缘发虚。
   这里加的是"近距硬影 + 极淡外扩"两层——近距影让笔画收边，外扩影
   只在浅底上才显形，深底图（产品三页）几乎看不出来，不会污染原有观感。 */
body.tone-neutral .phero h1,body.tone-neutral .hero h1,
body.tone-neutral .phero .lead,body.tone-neutral .hero .lead,
body.tone-neutral .phero .sub-t,body.tone-neutral .phero .crumb,
body.tone-neutral .phero .ptags span,body.tone-neutral .hero-note{
  text-shadow:0 1px 2px rgba(6,12,24,.46),0 0 16px rgba(6,12,24,.30)}

/* 内页右侧那块信息卡：V3.37 由「中性深灰」改为「蓝黑」。
   深灰（26,30,38 → 11,14,20）是 R>G>B 的暖灰，压在偏冷色的实拍图上会读成
   一块"脏黑"，跟整站深蓝的按钮、数字条、页脚也不搭；
   蓝黑（12,30,54 → 5,9,18）保留 R<G<B 的方向，暗到底仍带一点钢蓝，
   与首屏遮罩（6,10,18 系）、品牌蓝 #1B4F9C 同族，黑得有颜色而不是发灰。 */
body.tone-natural .phero .quick,
body.tone-neutral .phero .quick{
  background:linear-gradient(152deg,rgba(12,30,54,.90) 0%,rgba(5,9,18,.95) 100%);
  border-color:rgba(122,166,228,.26);
  box-shadow:0 18px 40px rgba(3,9,20,.45),inset 0 1px 0 rgba(150,190,255,.12)}
/* 标题行与分隔线跟着冷下来：原 #CFE3FF 在蓝黑上偏"飘"，改用钢蓝更压得住 */
body.tone-neutral .phero .quick h4,
body.tone-natural .phero .quick h4{color:#9CBBE4}
body.tone-neutral .phero .quick ul li,
body.tone-natural .phero .quick ul li{border-bottom-color:rgba(130,170,225,.18)}
body.tone-neutral .phero .quick ul li::before,
body.tone-natural .phero .quick ul li::before{background:#7FA8DC}


.phero-in{position:relative;z-index:1;max-width:var(--wrap);margin:0 auto;padding:44px 28px 42px;display:grid;grid-template-columns:1.15fr .85fr;gap:44px;align-items:center}
.phero .crumb{font-size:13px;color:#CFDDF5;margin-bottom:16px}
.phero .crumb a:hover{color:var(--teal)}
.phero h1{font-size:44px;line-height:1.18;letter-spacing:-.038em;margin-bottom:14px;font-weight:800;text-wrap:balance}
.phero .sub-t{font-size:15px;color:#D6E6FF;letter-spacing:.02em;margin-bottom:16px}
/* 文章署名行（V3.38）：GEO / E-E-A-T 要求「谁写的、按什么口径、何时更新」在页面上可见。
   只写在 JSON-LD 里，人和 AI 都看不见——所以单独做一行，放在 H1 与导语之间，
   字号比导语小一档、透明度略降，读得到但不抢视线。 */
.phero .byline{font-size:13px;color:#B9CDE9;margin:-6px 0 14px;line-height:1.6;letter-spacing:.01em}
.phero .byline span{opacity:.55;margin:0 7px}
.phero .lead{font-size:16px;color:#E9F1FD;line-height:1.8;max-width:34em}
.phero .ptags{display:flex;flex-wrap:wrap;gap:7px;margin-top:20px}
.phero .ptags span{font-size:13px;color:#DDE8F9;border:1px solid rgba(255,255,255,.28);border-radius:6px;padding:4px 10px}
/* 首屏右侧玻璃卡：原来 rgba(9,20,40,.58) 是近黑藏青，压在亮蓝图上会读成「黑块」，
   现改为同族蓝的半透明渐变（亮蓝 → 深蓝），玻璃感仍在但不发黑。
   不透明度给到 .88/.93——底图在关于页是亮天空，太透会让浅色文字糊在图上 */
.phero .quick{background:linear-gradient(152deg,rgba(32,96,186,.88) 0%,rgba(18,58,114,.93) 100%);border:1px solid rgba(255,255,255,.24);border-radius:var(--r-lg);padding:20px;backdrop-filter:blur(10px);box-shadow:0 14px 34px rgba(9,40,96,.24)}
.phero .quick h4{font-size:13px;color:#CFE3FF;letter-spacing:.1em;text-transform:uppercase;margin-bottom:12px;font-weight:600}
.phero .quick ul li{font-size:15px;color:#E9F1FE;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.16);display:flex;gap:10px;line-height:1.6}
.phero .quick ul li:last-child{border-bottom:0}
.phero .quick ul li::before{content:"";width:5px;height:5px;border-radius:50%;background:#AECFFF;flex:0 0 auto;margin-top:7px}
/* 目录形式（guides.html）：整行可点。
   原来每条只是纯文本，卡片写着「这篇讲什么」却不能跳——六篇文章的入口
   得往下滚到卡片区才看得到。改成 <a> 后，把 li 的内边距挪到 a 上，
   圆点由 a::before 画，保证整行都是热区（不是只有文字那几个字）；
   行尾加一个只在 hover 出现的 →，暗示"这一条能点"。 */
.phero .quick ul.quick-links li{padding:0}
.phero .quick ul.quick-links li::before{display:none}
.phero .quick ul.quick-links a{flex:1;display:flex;align-items:flex-start;gap:10px;padding:9px 0;color:#E9F1FE;text-decoration:none;transition:color .16s}
.phero .quick ul.quick-links a::before{content:"";width:5px;height:5px;border-radius:50%;background:#AECFFF;flex:0 0 auto;margin-top:8px;transition:background .16s}
.phero .quick ul.quick-links a::after{content:"→";margin-left:auto;opacity:0;transform:translateX(-4px);transition:.16s;color:#AECFFF}
.phero .quick ul.quick-links a:hover{color:#AECFFF}
.phero .quick ul.quick-links a:hover::after{opacity:1;transform:none}
.phero .quick ul.quick-links a:focus-visible{outline:2px solid #AECFFF;outline-offset:3px;border-radius:4px}
.phero .quick .quick-note{margin-top:10px;font-size:12.5px;line-height:1.7;color:#B9D2F5}
@media(max-width:600px){.phero .quick ul.quick-links a::after{display:none}}

/* 痛点列表 */
.pain{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.pain li{display:flex;gap:12px;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px 17px;font-size:15px;line-height:1.65;color:var(--ink)}
.pain li b{color:var(--deep);font-weight:600}
.pain li::before{content:"!";flex:0 0 auto;width:20px;height:20px;border-radius:50%;background:var(--teal-p);color:var(--teal-t);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:2px}

/* 模块地图 */
.mods{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.mods .m{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px 17px 15px;transition:.2s}
.mods .m:hover{border-color:var(--teal-b);box-shadow:var(--shadow)}
.mods .m .n{font-size:12px;color:var(--teal-t);font-weight:700;letter-spacing:.12em}
.mods .m h4{font-size:18px;margin:4px 0 5px}
.mods .m p{font-size:14px;color:var(--muted);line-height:1.6}

/* 承诺边界 */
.bound{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.bound .b{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:22px 22px}
.bound .b.yes{border-top:3px solid var(--teal-b)}
.bound .b.no{border-top:3px solid #C4CFCC}
.bound .b h4{font-size:18px;margin-bottom:12px;display:flex;align-items:center;gap:8px}
.bound .b h4 .dot{width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;color:var(--deep);font-weight:700}
.bound .b.yes .dot{background:var(--teal-b);color:#fff}
.bound .b.no .dot{background:#D3DBD9;color:#5A6B68}
.bound ul li{font-size:15px;color:var(--muted);line-height:1.75;padding-left:14px;position:relative;margin-bottom:7px}
.bound ul li::before{content:"";position:absolute;left:0;top:9px;width:5px;height:5px;border-radius:50%;background:var(--line-2)}

/* 流程链 */
/* 三行共用一套列宽：只有 .chain-grid 里的链用 display:contents 让子项直接进父级网格，三列才上下对齐。
   作用域必须收窄到子选择器——compliance / imms / rd 三页也用了 .chain，它们父级是 .wrap（普通块/flex），
   若让 .chain 全局 display:contents，子项会散成块级、失去横排，属于隐式依赖，这里显式分两套。 */
.chain-grid{display:grid;grid-template-columns:repeat(6,auto);justify-content:start;align-items:center;column-gap:10px;row-gap:14px;margin-top:18px}
.chain-grid > .chain{display:contents;margin:0}
/* 非 .chain-grid 场景（其他页面的单行链路）保持默认横排 */
.chain{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:18px}
/* 三条线各用同族不同深度的一档蓝：01 最深、02 中、03 最亮，靠明度区分而不引入第二色相。
   01 原 #14335C 偏蓝黑，提到 #17457F（与腰部数字条/CTA 同一档） */
.chain.ch1{--ch:#17457F}
.chain.ch2{--ch:#1B549E}
.chain.ch3{--ch:#2A6FC4}
.chain .cn{flex:0 0 auto;width:30px;height:30px;border-radius:9px;background:var(--ch,#123A6B);color:#fff;font-size:13px;font-weight:700;letter-spacing:.01em;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 10px rgba(20,51,92,.22)}
.chain .c{background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px 13px;font-size:14px;color:#3C4A5E;white-space:nowrap}
.chain .c.hi{background:var(--ch,#123A6B);color:#fff;border-color:transparent;font-weight:700;font-size:15px;padding:11px 18px;border-radius:9px;box-shadow:0 8px 18px rgba(20,51,92,.22);letter-spacing:.01em}
.chain .ar{color:var(--ch,#8EACD3);opacity:.45;font-size:13px}
.chain-note{margin-top:24px;border-left:3px solid var(--teal-b);padding:20px 22px}
.chain-note h4{font-size:20px;color:var(--deep);margin-bottom:9px}
.chain-note p{font-size:15px;line-height:1.8;color:var(--muted)}

/* ---------- 响应式 ---------- */
@media(max-width:1080px){
  :root{--sec-y:38px;--head-y:21px}
  .hero-in{padding:72px 28px 30px;min-height:auto}
  .hero h1{font-size:40px;letter-spacing:-.035em}
  .sec-head h2{font-size:28px}
  .split-txt h2{font-size:26px}
  .stats-in{grid-template-columns:repeat(2,1fr)}
  .stat:nth-child(2n){border-right:0}
  .stat:nth-child(-n+2){border-bottom:1px solid rgba(255,255,255,.08)}
  .pgrid{grid-template-columns:1fr}
  .cgrid.c4{grid-template-columns:repeat(2,1fr)}
  .cgrid.c3{grid-template-columns:1fr}
  .kpi{grid-template-columns:repeat(2,1fr)}
  .split{grid-template-columns:1fr;gap:28px}
  .split.rev .split-txt{order:0}
  .phero-in{grid-template-columns:1fr;gap:28px;padding:36px 28px 34px}
  .phero h1{font-size:30px}
  .mods{grid-template-columns:repeat(2,1fr)}
  /* 两列时用多列流式而不是 2×2 网格：网格的行高由行内最高一栏决定，
     产品中心只有 3 项、解决方案 5 项，同一行对齐会空出一大块；
     多列流式按高度均衡分配，四栏各自紧凑。 */
  .ft-in{display:block;column-count:2;column-gap:26px}
  .ft-in>div{break-inside:avoid;margin-bottom:24px}
  .cta-in{grid-template-columns:1fr;gap:20px}
}
/* 1080 以下：菜单还在，但 30px 全称（14 字 ≈420px）会把右侧压到贴边，
   品牌收一档到 24px / logo 42，全称仍单行 */
@media(max-width:1080px){
  .brand-mark{width:42px;height:42px}
  .brand-txt b{font-size:24px;letter-spacing:0}
}
@media(max-width:900px){
  .nav-menu{display:none;position:absolute;top:var(--nav-h);left:0;right:0;background:#fff;border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;padding:8px 14px 14px;gap:0;box-shadow:var(--shadow-lg);max-height:calc(100vh - var(--nav-h));overflow:auto}
  .nav-menu.on{display:flex}
  .nav-menu a.nl{padding:12px 10px;border-radius:8px}
  .nav-menu a.nl.on::after{display:none}
  .nav-menu a.nl.on{background:var(--soft)}
  .sub{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:0;border-radius:0;padding:0 0 6px 10px;min-width:0;display:none}
  .nav-menu li.has-sub.open .sub{display:block}
  .burger{display:flex;margin-left:auto}
  .nav-right .btn{display:none}
  .pain{grid-template-columns:1fr}
  .about-split{grid-template-columns:1fr;gap:26px}
  .about-fig img{aspect-ratio:1/1;object-position:50% 58%}
  /* 窄屏放弃列对齐，回到逐行换行，避免六列硬撑出横向滚动。
     用 .chain-grid > .chain 而非 .chain——父规则同样带 .chain-grid，权重需持平才能覆盖 */
  .chain-grid{display:block;margin-top:14px}
  .chain-grid > .chain{display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin-top:14px}
  .chain-grid > .chain:first-child{margin-top:0}
  .bound{grid-template-columns:1fr}
  .form .row{grid-template-columns:1fr}
  .float{right:12px;bottom:14px}
  .float a,.float button{width:46px;height:46px;border-radius:11px}
  .qr-pop{right:70px;bottom:14px}
}
@media(max-width:600px){
  :root{--sec-y:30px;--head-y:18px;--nav-h:64px}
  .hero{background-position:68% 42%}
  .hero::before{background:var(--veil-hero-m)}
  .hero-bot{flex-direction:column;align-items:flex-start;gap:10px}
  .phero{background-position:72% 40%}
  .phero.ph-cmp{background-position:52% 46%}
  .phero.ph-mfg{background-position:68% 46%}
  .phero.ph-mkt{background-position:54% 48%}
  .phero.ph-sol{background-position:56% 50%}
  .phero.ph-km{background-position:66% 44%}
  .phero.ph-arc{background-position:52% 46%}
  .phero.ph-ast{background-position:66% 46%}
  .phero.ph-fin{background-position:60% 48%}
  .phero::before{background:var(--veil-phero-m)}
  body{font-size:16px}
  .nav-in{gap:8px}
  .brand-mark{width:34px;height:34px}
  .brand-txt b{font-size:18px;letter-spacing:0}
  .wrap,.nav-in,.hero-in,.phero-in,.stats-in,.cta-in,.ft-in,.ft-btm{padding-left:18px;padding-right:18px}
  .hero-in{padding:52px 18px 26px}
  .hero h1{font-size:30px;line-height:1.2;letter-spacing:-.03em;margin-bottom:16px}
  .hero-lead{font-size:16px}
  .hero-bot{margin-top:26px;padding-top:18px}
  .sec-head h2{font-size:22px}
  .phero h1{font-size:28px}
  .stats-in{grid-template-columns:1fr}
  .stat{border-right:0;border-bottom:1px solid rgba(255,255,255,.08);padding:16px 4px}
  .stat:last-child{border-bottom:0}
  .cgrid.c2,.cgrid.c4,.kpi,.mods{grid-template-columns:1fr}
  .ft-in{column-count:1}
  .cta-btns .btn{width:100%}
  .float{flex-direction:row}
  .qr-pop{right:12px;bottom:74px}
  /* 联系方式行：窄屏收紧内边距与复制按钮，并隐藏「（手机 / 微信）」补注，保证仍落在一行 */
  .info>div{padding:14px 15px}
  .info>div>div{column-gap:9px}
  .info .v{font-size:15px}
  .info .v b{font-size:16px}
  .info .vx{display:none}
  .copy{font-size:12px;padding:2px 6px;margin-left:6px}
  /* 留资表单：窄屏一律单列，类型控件铺满一行，热区不小于 40px */
  .form{padding:20px 16px}
  .lead-row{grid-template-columns:1fr;gap:0}
  .lead-seg{width:100%}
  .lead-seg span{padding:9px 4px;font-size:14px}
  .lead-consent .ck{font-size:13px}
  .lead-chips .chip span{font-size:14px;padding:9px 12px}
}
/* ======================================================================
   解决方案模块（V3.18）
   ----------------------------------------------------------------------
   为什么单独加一段，而不是改现有组件将就：
   三个自有产品页回答的是「我们做了什么」，四套方案页回答的是「你要解决
   什么问题」——读者往往不是同一批人（行政治理 / 财务负责人 vs 研发或
   合规负责人）。所以在同一套设计语言内，给方案模块三样自己的东西：
   横向切换、序号水印、相关方案互推。全局组件一律不动，
   删掉这一段这五页仍然能正常显示，只是少了三处细节。
   ====================================================================== */

/* ---------- 1. 方案切换条 ----------
   四套方案是一个系列。读到一半想看另一套，不该先退回总览再点进来。 */
.solnav{background:#fff;border-bottom:1px solid var(--line)}
.solnav-in{max-width:var(--wrap);margin:0 auto;padding:0 28px;display:flex;overflow-x:auto;scrollbar-width:none}
.solnav-in::-webkit-scrollbar{display:none}
.solnav a{position:relative;display:block;padding:15px 15px 13px;font-size:15px;color:var(--muted);white-space:nowrap;border-bottom:2px solid transparent;transition:color .18s,border-color .18s}
.solnav a:hover{color:var(--deep)}
.solnav a.on{color:var(--teal-t);font-weight:600;border-bottom-color:var(--teal-b)}
/* 首项贴容器左边缘，与页头品牌、面包屑落在同一条竖线上——
   总览页取消后切换条第一个就是专题本身，留着 15px 内边距会整体右移一格。
   写成 .solnav-in a 是让特异性高过窄屏那条 .solnav a{padding:…}，不必重复声明。 */
.solnav-in a:first-child{padding-left:0}

/* ---------- 2. 方案卡的大号序号水印 ----------
   四张卡并排时，序号是最快的定位线索；但做成大字号会抢标题，
   所以压到 5.5% 透明度当背景，只在悬停时略微显影。 */
.pcard.sol{position:relative}
.pcard.sol::after{content:attr(data-no);position:absolute;right:4px;bottom:-32px;z-index:0;font-size:108px;font-weight:800;line-height:1;letter-spacing:-.07em;color:var(--teal-b);opacity:.055;pointer-events:none;transition:opacity .25s}
.pcard.sol:hover::after{opacity:.1}
.pcard.sol>*{position:relative;z-index:1}

/* ---------- 3. 总览页 2×2 ---------- */
.pgrid.pg2{grid-template-columns:repeat(2,1fr)}

/* ---------- 4. 相关方案互推 ----------
   四页之间互相给入口：既减少「看完一页就退出」，也让搜索引擎看清这五页
   属于同一组主题，而不是四篇互不相关的文章。 */
.relcard{display:block;position:relative;padding-right:54px;color:inherit}
.relcard h4{transition:color .18s}
.relcard:hover h4{color:var(--teal-t)}
.relcard .no{letter-spacing:.14em}
.relcard .arr{position:absolute;right:22px;top:24px;font-size:20px;line-height:1;color:var(--teal-t);opacity:0;transform:translateX(-4px);transition:opacity .2s,transform .2s}
.relcard:hover .arr{opacity:1;transform:translateX(0)}

@media(max-width:1080px){
  .pgrid.pg2{grid-template-columns:1fr}
  .solnav-in{padding:0 18px}
}
@media(max-width:600px){
  .pcard.sol::after{font-size:84px;bottom:-26px}
  /* 四项总宽压到 390px 以内：13px 字号 + 8px 内边距排得下，
     窄屏不必横滑也能一眼看全四套方案（横滑虽然能用，但用户往往不知道右边还有）。 */
  .solnav a{padding:12px 8px 10px;font-size:13px}
  .relcard{padding-right:44px}
  .relcard .arr{right:16px;top:20px}
}

/* ---------- 方案架构图（V3.25） ----------
   四张图是从旧站 solution/ 目录里取的功能全貌图（白底 + 彩块），
   直接铺在白底区块上会「化」掉——图框和页面边界混在一起，看着像没画完。
   所以统一放进白卡片：细边框托住边缘、轻阴影抬起一层，
   再用 --soft 底色的 figcaption 收口，读者一眼知道这是一张"图"而不是排版错位。 */
.solfig{margin:0;border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;box-shadow:var(--shadow);overflow:hidden}
.solfig>a{display:block;position:relative;background:#fff;line-height:0}
.solfig img{width:100%;height:auto}
/* 图里的模块文字在原尺寸下只有 8~9px，1200 容器里勉强能读，手机端必须点开看；
   桌面 hover 才浮出提示，触屏没有 hover，所以窄屏直接常显。 */
.solfig>a::after{content:"查看大图";position:absolute;right:12px;bottom:12px;font-size:12px;line-height:1.6;color:#fff;background:rgba(15,34,68,.74);padding:3px 11px;border-radius:20px;opacity:0;transition:opacity .18s}
.solfig>a:hover::after,.solfig>a:focus-visible::after{opacity:1}
.solfig figcaption{padding:12px 18px;border-top:1px solid var(--line);background:var(--soft);font-size:13px;color:var(--muted);text-align:center}
@media(max-width:600px){
  .solfig>a::after{opacity:1;right:10px;bottom:10px;font-size:11px;padding:2px 9px}
  .solfig figcaption{font-size:12px;padding:10px 12px;line-height:1.6}
}

@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}html{scroll-behavior:auto}}

/* ---------- 常见问题（GEO：AI 搜索优先摘取问答结构） ----------
   不再写 max-width:940px。原因见文件末尾「栏宽统一」那段：
   940 是当年为了让单条问答别太长随手定的，结果每个用到 FAQ 的页面
   都出现「标题/导语 1144 → 问答 940」的右边缘回缩。通栏块统一吃满容器。 */
.faq{max-width:none;margin:0;border-top:1px solid var(--line)}
.faq-item{padding:22px 0 20px;border-bottom:1px solid var(--line)}
.faq-q{margin:0;font-size:17.5px;font-weight:700;color:var(--ink);letter-spacing:-.01em;line-height:1.55;display:flex;gap:10px}
.faq-q::before{content:"Q";flex:none;color:var(--teal-b);font-weight:800}
.faq-a{margin:10px 0 0 22px;color:var(--muted);font-size:15.5px;line-height:1.8;text-align:justify;text-justify:inter-ideograph}
@media(max-width:640px){
  .faq-q{font-size:16.5px}
  .faq-a{font-size:15px;margin-left:0}
}

/* ---------- 政策与实操指南（V3.29）：三栏卡片 + 文章互推 ---------- */
.cards3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.gcard{display:flex;flex-direction:column;text-decoration:none;color:inherit;padding:26px 24px}
.gcard h3{font-size:20px;margin:2px 0 10px;letter-spacing:-.015em;line-height:1.4}
.gcard p{font-size:15px;color:var(--muted);line-height:1.75;margin:0;flex:1;text-align:justify;text-justify:inter-ideograph}
.gmore{margin-top:16px;font-size:14px;font-weight:600;color:var(--teal-t)}
.gcard:hover{border-color:var(--teal-b)}
@media(max-width:900px){.cards3{grid-template-columns:1fr}}

/* ---------- 首屏图移动端优化（V3.33）：<=720px 改用 960×540 版本，体积降 60% ---------- */
@media (max-width:720px){
  .hero{background-image:url("bg/hero-smartline-960.jpg")}
  .phero{background-image:url("bg/hero-bg-960.jpg")}
  .phero.ph-cmp{background-image:url("bg/hero-compliance-960.jpg")}
  .phero.ph-mkt{background-image:url("bg/hero-marketing-960.jpg")}
  .phero.ph-mfg{background-image:url("bg/hero-manufacture-960.jpg")}
  .phero.ph-km{background-image:url("bg/hero-sol-knowledge-960.jpg")}
  .phero.ph-arc{background-image:url("bg/hero-sol-archive-960.jpg")}
  .phero.ph-ast{background-image:url("bg/hero-sol-asset-960.jpg")}
  .phero.ph-fin{background-image:url("bg/hero-sol-finance-960.jpg")}
}

/* ======================================================================
   栏宽统一（V3.35）
   ----------------------------------------------------------------------
   症状：同一页从上往下看，右边缘会「退回来」，像几个版式拼在一起——
     指南总览页：三栏卡片 1144 / 「为什么写这些」正文 820 / FAQ 940
     文章页：    页头玻璃卡与相关卡片 1144 / 正文 900 / FAQ 940
   原因不是哪个组件写错，而是各块都自带 max-width，谁也没跟谁对齐：
     .legal 820、文章页内联 900、.faq 940、卡片没有上限。
   定规矩只留一句：页内任何内容块的宽度 = .wrap 的内容宽（1200 − 28×2 = 1144），
   不再有"长文优先窄栏"的特例。改宽度只动 --wrap 一个变量，全站一起走。
   只有两种情况不算破例，因为它们本来就不是"块"的边界：
     · 通栏色块（首屏、数字条、CTA、页脚）铺满视口；
     · 首屏导语、CTA 说明这类一两行的引言，按 34–44em 限在"一句话的长度"内。
   ====================================================================== */

/* 这条规则现在是空的——上面已经把 .legal / .faq 的上限全部拆掉。
   留着这个注释是提醒：以后想给某个块加 max-width，先想清楚它是不是真的
   该比别的块窄；同类错位已经踩过两次（guides.html 三个宽度、文章页上下不同宽）。 */

