/* 涌源官网 · 全站样式
 * 字体：标题用思源宋体（衬线，按站内用字裁剪后随站打包），正文用系统黑体，西文与数字用 Inter（只覆盖拉丁字符）。
 * 版式比例参照 Apple：大标题、短段落、充足留白；标题与正文的层级、说明文字的位置参照 Claude 官网。
 * 颜色只用 0920 汇报的主体色：#0E2841 / #394E9A / #639BD3 / #F4F7FB / #6B7280 / #CBD5E1。
 * 不使用胶囊按钮；按钮、标签、切换项全部是小圆角矩形或纯文字加下划线。 */

/* 宋体 YY Serif 的 @font-face 由 build.py 内联在各页头部（分首页用字与其余用字两段，按需下载） */
@font-face {
  font-family: "YY Inter"; src: url(../fonts/yy-inter.woff2) format("woff2");
  font-weight: 300 700; font-style: normal; font-display: swap;
  unicode-range: U+0020-007E, U+00A0-00BF, U+00D7, U+2009, U+2212, U+2030;
}

:root {
  --navy: #0E2841;
  --blue: #394E9A;
  --blue-d: #2E4186;
  --sky: #639BD3;
  --mist: #F4F7FB;
  --grey: #6B7280;
  --line: #CBD5E1;
  --paper: #FFFFFF;
  --deep: #0B2036;

  /* 语义色：深色区块里整组重定义 */
  --bg: var(--paper);
  --ink: #0E2841;
  --text: #34445A;
  --muted: #5D6A7C;
  --hair: #E3E9F1;
  --hair-2: #D3DCE8;
  --link: #394E9A;
  --accent: #639BD3;
  --tint: #EAF1FA;
  --field: #FFFFFF;

  --serif: "YY Serif", "Noto Serif SC", "Source Han Serif SC", "Songti SC", "STSong", serif;
  --sans: "YY Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans SC", sans-serif;

  --fs-hero: clamp(38px, 3.9vw + 10px, 68px);
  --fs-h2: clamp(29px, 2.3vw + 11px, 46px);
  --fs-h3: clamp(19px, .45vw + 14px, 22px);
  --fs-lead: clamp(17px, .42vw + 12.5px, 21px);
  --fs-body: 17px;
  --fs-small: 15px;
  --fs-note: 13px;

  --gut: clamp(20px, 4vw, 48px);
  --max: 1200px;
  --sec: clamp(84px, 6.5vw + 28px, 132px);
  --r-lg: 22px;
  --r: 14px;
  --r-sm: 8px;
  --r-xs: 4px;
  --hd: 64px;
  --ease: cubic-bezier(.16, 1, .3, 1);
  --ease-io: cubic-bezier(.65, 0, .35, 1);
  color-scheme: light;
}

/* 深色区块：只重定义语义色，组件自动跟随 */
.tone-deep, [data-tone="dark"], .deep {
  --bg: var(--deep);
  --ink: #F3F6FB;
  --text: #D3DDEA;
  --muted: #A3B2C6;
  --hair: rgba(226, 234, 245, .13);
  --hair-2: rgba(226, 234, 245, .22);
  --link: #A9CBF0;
  --accent: #8EBDEB;
  --tint: rgba(142, 189, 235, .12);
  --field: rgba(255, 255, 255, .04);
  color: var(--text);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--hd) + 24px); }
body {
  margin: 0; background: var(--paper); color: var(--text);
  font-family: var(--sans); font-size: var(--fs-body); line-height: 1.8; letter-spacing: .01em;
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility; font-feature-settings: "kern";
}
img, video, svg { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
h1, h2, h3, h4, p, ul, ol, figure, dl, dd { margin: 0; }
ul, ol { padding: 0; list-style: none; }
h1, h2, h3, h4 { color: var(--ink); text-wrap: balance; }
p, li, dd { text-wrap: pretty; }
strong { font-weight: 600; color: var(--ink); }
.num, .tnum { font-variant-numeric: tabular-nums; }
[hidden] { display: none !important; }
.sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* 浏览器自带部件也按品牌色处理 */
::selection { background: rgba(57, 78, 154, .18); color: var(--navy); }
.tone-deep ::selection, [data-tone="dark"] ::selection { background: rgba(142, 189, 235, .3); color: #FFFFFF; }
:focus-visible { outline: 2px solid var(--sky); outline-offset: 3px; border-radius: var(--r-xs); }
html { scrollbar-color: #C3CEDC transparent; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: #C9D3E0; border: 3px solid var(--paper); border-radius: 8px; }
::-webkit-scrollbar-track { background: transparent; }
input, textarea, select { caret-color: var(--blue); accent-color: var(--blue); }

/* ---------------------------------------------------------------- 版心与区块 */
.wrap { width: min(100% - 2 * var(--gut), var(--max)); margin-inline: auto; }
.wrap-narrow { width: min(100% - 2 * var(--gut), 880px); margin-inline: auto; }
.sec { position: relative; padding-block: var(--sec); background: var(--bg); color: var(--text); }
.sec.tone-mist { --bg: var(--mist); --field: #FFFFFF; }
.sec.tight-top { padding-top: calc(var(--sec) * .45); }
.sec.tight-bot { padding-bottom: calc(var(--sec) * .45); }
.tone-deep { background: var(--bg); color: var(--text); }

/* ---------------------------------------------------------------- 文字层级 */
.kw { display: inline-block; }
.h-hero, .h2, .h-serif { font-family: var(--serif); font-weight: 700; letter-spacing: .015em; }
.h-hero { font-size: var(--fs-hero); line-height: 1.16; }
.h2 { font-size: var(--fs-h2); line-height: 1.26; }
.h3 { font-size: var(--fs-h3); line-height: 1.45; font-weight: 600; letter-spacing: .01em; }
.h4 { font-size: 17px; line-height: 1.5; font-weight: 600; }
.lead { font-size: var(--fs-lead); line-height: 1.75; color: var(--muted); }
.body { font-size: var(--fs-body); line-height: 1.8; }
.small { font-size: var(--fs-small); line-height: 1.75; }
.muted { color: var(--muted); }
.ink { color: var(--ink); }
/* 说明文字：紧贴在它解释的画面下方，左对齐，小一号、灰一级 */
.note { font-size: var(--fs-note); line-height: 1.7; color: var(--muted); letter-spacing: .02em; }
.ph { color: var(--muted); border-bottom: 1px dashed var(--hair-2); }

/* 区块标题：居中式（首页大段落）与左右式（内页） */
.shead { display: grid; gap: 18px; margin-bottom: clamp(48px, 5vw, 76px); }
.shead.center { justify-items: center; text-align: center; }
.shead.center .lead { max-width: 34em; text-wrap: balance; }
.shead.split { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); column-gap: clamp(32px, 6vw, 96px); align-items: end; }
.shead.split .lead { max-width: 30em; padding-bottom: .3em; }
.shead .h2 { max-width: 16em; }
@media (max-width: 860px) { .shead.split { grid-template-columns: minmax(0, 1fr); } }

/* ---------------------------------------------------------------- 按钮与链接（不做胶囊） */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  height: 46px; padding: 0 22px; border-radius: var(--r-sm);
  background: var(--blue); color: #FFFFFF; font-size: 15px; font-weight: 500; letter-spacing: .04em; white-space: nowrap;
  transition: background-color .25s var(--ease), box-shadow .25s var(--ease), transform .2s var(--ease);
}
.btn:hover { background: var(--blue-d); }
.btn:active { transform: translateY(1px); }
.btn.line { background: transparent; color: var(--ink); box-shadow: inset 0 0 0 1px var(--hair-2); }
.btn.line:hover { box-shadow: inset 0 0 0 1px var(--ink); background: transparent; }
.tone-deep .btn:not(.line), [data-tone="dark"] .btn:not(.line) { background: #FFFFFF; color: var(--navy); }
.tone-deep .btn:not(.line):hover, [data-tone="dark"] .btn:not(.line):hover { background: #E4ECF7; }
.btn .ic { width: 18px; height: 18px; }
.btns { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 28px; }

.lnk {
  display: inline-flex; align-items: center; gap: 6px;
  color: var(--link); font-size: 16px; font-weight: 500; letter-spacing: .02em;
  text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 5px; text-decoration-thickness: 1px;
  transition: text-decoration-color .25s var(--ease), color .25s var(--ease);
}
.lnk .ic { width: 16px; height: 16px; stroke-width: 1.8; transition: transform .3s var(--ease); }
.lnk:hover { text-decoration-color: currentColor; }
.lnk:hover .ic { transform: translateX(3px); }
.lnks { display: flex; flex-wrap: wrap; gap: 10px 32px; }

/* 状态标记：小圆点 + 文字，不做底色胶囊 */
.status { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: var(--muted); letter-spacing: .04em; }
.status i { width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }
.status.dev i { background: transparent; box-shadow: inset 0 0 0 1.5px var(--accent); }

/* ---------------------------------------------------------------- 图标：线稿 + 一个强调点 */
.ic { width: 24px; height: 24px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; overflow: visible; }
.ic .d { fill: var(--accent); stroke: none; }
.ic .hf { fill: var(--bg); }
.ic .dash { stroke-dasharray: 1.6 2.4; }
.ic-lg { width: 36px; height: 36px; stroke-width: 1.25; color: var(--ink); }
.ic-md { width: 28px; height: 28px; stroke-width: 1.35; color: var(--ink); }
/* 进入视口时线条画出，强调点最后出现 */
.js .draw .ic:not(.lnk .ic):not(.chev) path:not(.dash):not(.d) { stroke-dasharray: 1 1; stroke-dashoffset: 1; transition: stroke-dashoffset 1.1s var(--ease-io); }
.js .draw .ic:not(.lnk .ic):not(.chev) .d, .js .draw .ic:not(.lnk .ic):not(.chev) .dash { opacity: 0; transition: opacity .5s ease; }
.js .draw.on .ic:not(.lnk .ic):not(.chev) path:not(.dash):not(.d) { stroke-dashoffset: 0; }
.js .draw.on .ic:not(.lnk .ic):not(.chev) .d, .js .draw.on .ic:not(.lnk .ic):not(.chev) .dash { opacity: 1; transition-delay: .75s; }

/* ---------------------------------------------------------------- 顶部导航 */
.hd { position: fixed; z-index: 50; inset: 0 0 auto 0; height: var(--hd); }
.hd-bar { position: absolute; inset: 0; color: var(--navy); }
.hd-bar::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: #FFFFFF; box-shadow: 0 1px 0 rgba(14, 40, 65, .08);
  transition: opacity .35s var(--ease);
}
.hd-clear .hd-bar::before { opacity: 0; }
.hd-bar { transition: color .35s var(--ease); }
.hd-dark .hd-bar { color: #FFFFFF; }
.hd-dark .hd-bar .lg-mark .lg-c { opacity: 0; }
.hd-dark .hd-bar .lg-mark .lg-l { opacity: 1; }
.hd-dark .hd-bar .hd-top:hover { color: #BFD8F3; }
.fly-open .hd-bar, .menu-open .hd-bar { color: var(--navy); }
.fly-open .hd-bar .lg-mark .lg-c, .menu-open .hd-bar .lg-mark .lg-c { opacity: 1; }
.fly-open .hd-bar .lg-mark .lg-l, .menu-open .hd-bar .lg-mark .lg-l { opacity: 0; }
.hd-in { height: 100%; display: flex; align-items: center; gap: 44px; }
.hd-logo { display: inline-flex; align-items: center; gap: 10px; height: 100%; flex: none; }
.lg-mark { position: relative; width: 27px; height: 30px; flex: none; }
.hd-logo { gap: 6px; }
.lg-mark img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; transition: opacity .5s var(--ease); }
.lg-mark .lg-l { opacity: 0; }
.lg-word {
  width: 44px; height: 26px; flex: none; background-color: var(--navy);
  -webkit-mask: url(../brand/word.png) center / contain no-repeat; mask: url(../brand/word.png) center / contain no-repeat;
  transition: background-color .5s var(--ease);
}
.hd-nav { height: 100%; }
.hd-nav > ul { display: flex; height: 100%; gap: 6px; }
.hd-nav li { height: 100%; display: flex; align-items: center; }
.hd-top {
  position: relative; display: inline-flex; align-items: center; gap: 4px; height: 100%; padding: 0 14px;
  font-size: 15px; letter-spacing: .04em; color: inherit; transition: color .25s var(--ease), opacity .25s;
}
.hd-top .ic { width: 14px; height: 14px; stroke-width: 1.8; opacity: .6; transition: transform .35s var(--ease); }
.hd-top::after {
  content: ""; position: absolute; left: 14px; right: 14px; bottom: 15px; height: 1.5px; background: currentColor;
  transform: scaleX(0); transform-origin: left; transition: transform .45s var(--ease);
}
.hd-top.is-cur::after { transform: scaleX(1); }
.hd-top[aria-expanded="true"] .ic { transform: rotate(180deg); }
.hd-top:hover, .hd-top.hov { color: var(--blue); }
.hd-right { margin-left: auto; display: flex; align-items: center; gap: 18px; }
.hd-cta {
  display: inline-flex; align-items: center; height: 34px; padding: 0 15px; border-radius: 6px;
  background: var(--blue); color: #FFFFFF; font-size: 14px; letter-spacing: .05em;
  transition: background-color .3s var(--ease), color .3s var(--ease);
}
.hd-cta:hover { background: var(--blue-d); }
.hd-burger { display: none; position: relative; width: 40px; height: 40px; margin-right: -8px; }
.hd-burger i { position: absolute; left: 11px; right: 11px; height: 1.5px; background: currentColor; transition: transform .45s var(--ease), top .45s var(--ease); }
.hd-burger i:first-child { top: 16px; }
.hd-burger i:last-child { top: 23px; }
.menu-open .hd-burger i:first-child { top: 19.5px; transform: rotate(45deg); }
.menu-open .hd-burger i:last-child { top: 19.5px; transform: rotate(-45deg); }

/* 深色背景下的导航：由脚本复制一层，按深色区块与导航条的重叠范围裁切，交界线扫过时颜色逐行变换 */
.fly-open .hd-bar::before, .menu-open .hd-bar::before { opacity: 1; }

/* 下拉：整宽面板，左边一句话，右边条目（线稿图标 + 名称 + 一句说明） */
.fly {
  position: absolute; left: 0; right: 0; top: var(--hd); background: #FFFFFF; color: var(--text);
  box-shadow: 0 1px 0 rgba(14, 40, 65, .06), 0 24px 48px -24px rgba(14, 40, 65, .18);
  clip-path: inset(0 0 100% 0); visibility: hidden;
  transition: clip-path .5s var(--ease), visibility 0s linear .5s;
}
.fly.open { clip-path: inset(0 0 0 0); visibility: visible; transition: clip-path .55s var(--ease), visibility 0s; }
.fly-in { display: grid; grid-template-columns: minmax(0, 300px) minmax(0, 1fr); gap: 64px; padding-block: 40px 48px; }
.fly-intro .h-serif { font-size: 24px; line-height: 1.35; color: var(--ink); }
.fly-intro p { margin-top: 10px; font-size: 14px; line-height: 1.7; color: var(--muted); }
.fly-list { display: grid; grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr)); gap: 8px 28px; }
.fly-item { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 4px 14px; padding: 14px 12px 14px 0; border-radius: var(--r-sm); }
.fly-item .ic { grid-row: span 2; margin-top: 2px; width: 26px; height: 26px; stroke-width: 1.35; color: var(--ink); }
.fly-item b { font-weight: 600; font-size: 15.5px; color: var(--ink); letter-spacing: .02em; transition: color .25s var(--ease); }
.fly-item span { font-size: 13.5px; line-height: 1.6; color: var(--muted); }
.fly-item:hover b { color: var(--blue); }
.fly-item .tag { display: inline-block; margin-left: 8px; font-size: 12px; font-weight: 400; color: var(--muted); letter-spacing: .04em; }
.fly .fly-in > * { opacity: 0; transform: translateY(-6px); transition: opacity .3s ease, transform .5s var(--ease); }
.fly.open .fly-in > * { opacity: 1; transform: none; transition-delay: .08s; }
.fly.open .fly-in > *:nth-child(2) { transition-delay: .14s; }
.scrim {
  position: fixed; inset: 0; z-index: 40; background: rgba(9, 27, 46, .16); opacity: 0; visibility: hidden;
  transition: opacity .4s var(--ease), visibility 0s linear .4s;
}
.fly-open .scrim { opacity: 1; visibility: visible; transition: opacity .4s var(--ease), visibility 0s; }

/* 手机菜单 */
.sheet {
  position: fixed; z-index: 45; inset: var(--hd) 0 0 0; background: #FFFFFF; overflow-y: auto; overscroll-behavior: contain;
  padding: 8px var(--gut) calc(40px + env(safe-area-inset-bottom, 0px));
  clip-path: inset(0 0 100% 0); visibility: hidden; transition: clip-path .5s var(--ease), visibility 0s linear .5s;
}
.menu-open .sheet { clip-path: inset(0 0 0 0); visibility: visible; transition: clip-path .55s var(--ease), visibility 0s; }
.sheet details { border-bottom: 1px solid var(--hair); }
.sheet summary, .sheet .sheet-a {
  display: flex; align-items: center; justify-content: space-between; min-height: 60px;
  font-size: 18px; color: var(--ink); list-style: none; cursor: pointer;
}
.sheet summary::-webkit-details-marker { display: none; }
.sheet summary .ic { width: 18px; height: 18px; transition: transform .35s var(--ease); }
.sheet details[open] summary .ic { transform: rotate(180deg); }
.sheet .sheet-a { border-bottom: 1px solid var(--hair); }
.sheet .fly-item { padding: 10px 0; }
.sheet .sheet-list { padding-bottom: 14px; display: grid; gap: 2px; }
.sheet .btn { width: 100%; margin-top: 28px; }

@media (max-width: 980px) {
  .hd-nav, .hd-cta { display: none; }
  .hd-burger { display: block; }
  .fly { display: none; }
}

/* ---------------------------------------------------------------- 载入动效（每次会话第一次打开时播放） */
.yy-intro { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; pointer-events: none; }
.yy-intro-bg { position: absolute; inset: 0; background: #FFFFFF; }
.yy-seen .yy-intro, .no-intro .yy-intro { display: none; }
.yy-logo { position: relative; display: flex; align-items: center; gap: 24px; transform-origin: 0 0; will-change: transform; }
.yy-mark { width: 108px; height: 120px; overflow: visible; }
.yy-mark .yy-line { fill: none; stroke: var(--blue); stroke-width: 7; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 1 1.2; stroke-dashoffset: 1.02; }
.yy-mark .yy-fill { fill: none; stroke: url(#yyPat); stroke-width: 112; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 1 1.2; stroke-dashoffset: 1.02; }
.yy-mark image { transition: opacity .8s var(--ease); }
.yy-word {
  width: 176px; height: 103px; background-color: var(--navy);
  -webkit-mask: url(../brand/word.png) left center / contain no-repeat, linear-gradient(90deg, #000 42%, transparent 58%) 100% 0 / 260% 100% no-repeat;
  -webkit-mask-composite: source-in;
  mask: url(../brand/word.png) left center / contain no-repeat, linear-gradient(90deg, #000 42%, transparent 58%) 100% 0 / 260% 100% no-repeat;
  mask-composite: intersect;
  transition: background-color .8s var(--ease);
}
.yy-mark .yy-line { display: none; }
.yy-intro.play .yy-fill { animation: yyDraw 1.3s var(--ease-io) .2s forwards; }
.yy-intro.play .yy-word { animation: yyWipe 1s var(--ease) 1.25s forwards; }
/* 描边铺满后换成原图（两者重合），之后的深浅变换只做两张图的交叉淡化 */
.yy-mark .yy-mc, .yy-mark .yy-ml { opacity: 0; }
.yy-intro.full .yy-mark .yy-mc { opacity: 1; transition: none; }
.yy-intro.full .yy-fill { visibility: hidden; }
.yy-intro.flying .yy-intro-bg { opacity: 0; transition: opacity .9s var(--ease) .1s; }
.yy-intro.flying.to-dark .yy-mark .yy-mc { opacity: 0; transition: opacity .8s var(--ease); }
.yy-intro.flying.to-dark .yy-mark .yy-ml { opacity: 1; transition: opacity .8s var(--ease); }
.yy-intro.flying.to-dark .yy-word { background-color: #FFFFFF; }
@keyframes yyDraw { to { stroke-dashoffset: 0; } }
@keyframes yyFade { to { opacity: 0; } }
@keyframes yyWipe { to { -webkit-mask-position: left center, 0 0; mask-position: left center, 0 0; } }
.intro-hold .hd { opacity: 0; }
.hd { transition: opacity .3s ease; }

/* ---------------------------------------------------------------- 首屏 Banner */
.hero { position: relative; min-height: 100vh; min-height: 100lvh; display: grid; align-items: end; overflow: hidden; color: #FFFFFF; background: var(--deep); }
.hero.short { min-height: 78vh; min-height: 78lvh; }
.hero-media { position: absolute; inset: 0; }
.hero-media img { width: 100%; height: 100%; object-fit: cover; object-position: var(--pos, 60% 50%); transform: scale(1.06); transition: transform 14s cubic-bezier(.2, .6, .2, 1); }
.ready .hero-media img { transform: scale(1); }
.hero-media::after {
  content: ""; position: absolute; inset: 0;
  background:
    linear-gradient(90deg, rgba(8, 24, 41, .82) 0%, rgba(8, 24, 41, .58) 38%, rgba(8, 24, 41, .12) 72%, rgba(8, 24, 41, 0) 100%),
    linear-gradient(0deg, rgba(8, 24, 41, .55) 0%, rgba(8, 24, 41, 0) 42%);
}
.hero-in { position: relative; padding-block: calc(var(--hd) + 80px) clamp(72px, 9vh, 112px); }
.hero .h-hero { color: #FFFFFF; max-width: 12.5em; }
.hero .lead { color: rgba(236, 242, 250, .86); max-width: 30em; margin-top: 22px; }
.hero .btns { margin-top: 40px; }
.hero .btn.line { color: #FFFFFF; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .45); }
.hero .btn.line:hover { box-shadow: inset 0 0 0 1px #FFFFFF; }
.hero .lnk { color: #FFFFFF; }
.hero-crumb { display: flex; align-items: center; gap: 10px; margin-bottom: 18px; font-size: 14px; letter-spacing: .06em; color: rgba(236, 242, 250, .72); }
.hero-crumb a:hover { color: #FFFFFF; }
.hero-crumb .ic { width: 12px; height: 12px; stroke-width: 2; opacity: .6; }
/* 首屏文字逐行显现：只在首屏用一次 */
.js .hero-in .rise { opacity: 0; transform: translateY(18px); }
.ready .hero-in .rise { opacity: 1; transform: none; transition: opacity .9s ease, transform 1.1s var(--ease); }
.ready .hero-in .rise:nth-child(2) { transition-delay: .1s; }
.ready .hero-in .rise:nth-child(3) { transition-delay: .2s; }
.ready .hero-in .rise:nth-child(4) { transition-delay: .3s; }

/* ---------------------------------------------------------------- 大段陈述（首页“关于”） */
.statement { font-family: var(--serif); font-weight: 700; font-size: clamp(25px, 1.9vw + 10px, 40px); line-height: 1.6; letter-spacing: .02em; color: var(--ink); max-width: 25em; }
.statement em { font-style: normal; color: var(--blue); }
.statement .soft { color: #8A97A9; }
.facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; margin-top: clamp(56px, 6vw, 88px); border-top: 1px solid var(--hair); }
.fact { padding: 26px 28px 0 0; }
.fact + .fact { padding-left: 28px; border-left: 1px solid var(--hair); }
.fact b { display: block; font-family: var(--sans); font-weight: 500; font-size: clamp(30px, 2.2vw + 8px, 42px); line-height: 1.2; color: var(--ink); letter-spacing: -.01em; font-variant-numeric: tabular-nums; }
.fact b small { font-size: .5em; font-weight: 500; margin-left: 4px; letter-spacing: .02em; color: var(--ink); }
.fact span { display: block; margin-top: 8px; font-size: 15px; color: var(--muted); }
@media (max-width: 760px) {
  .facts { grid-template-columns: minmax(0, 1fr); }
  .fact, .fact + .fact { padding: 22px 0; border-left: 0; border-bottom: 1px solid var(--hair); }
}

/* ---------------------------------------------------------------- 产品大卡（首页） */
.ptiles { display: grid; gap: 24px; }
.ptile {
  position: relative; display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); align-items: center; gap: clamp(32px, 4vw, 64px);
  padding: clamp(36px, 4.4vw, 64px); border-radius: var(--r-lg); background: var(--mist); overflow: hidden;
}
.ptile.deep { background: var(--deep); }
.ptile-copy { display: grid; gap: 16px; align-content: start; }
.ptile-copy .ic-lg { margin-bottom: 8px; }
.ptile-name { font-family: var(--serif); font-weight: 700; font-size: clamp(26px, 1.6vw + 12px, 36px); line-height: 1.3; letter-spacing: .02em; color: var(--ink); }
.ptile-line { font-size: var(--fs-lead); line-height: 1.7; color: var(--muted); max-width: 22em; }
.ptile-points { display: grid; gap: 10px; margin-top: 6px; }
.ptile-points li { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 10px; font-size: 15.5px; line-height: 1.65; color: var(--text); }
.ptile-points li::before { content: ""; width: 5px; height: 5px; margin: .7em 0 0 5px; border-radius: 50%; background: var(--accent); }
.ptile .lnks { margin-top: 14px; }
.ptile-vis { min-width: 0; }
@media (max-width: 900px) { .ptile { grid-template-columns: minmax(0, 1fr); } }

/* 产品界面截图的窗口外框 */
.shot { position: relative; border-radius: 12px; overflow: hidden; background: #FFFFFF; box-shadow: 0 0 0 1px rgba(14, 40, 65, .08), 0 30px 60px -30px rgba(14, 40, 65, .35); }
.shot-bar { display: flex; align-items: center; gap: 7px; height: 30px; padding: 0 12px; background: #F1F4F8; border-bottom: 1px solid #E3E8EF; }
.shot-bar i { width: 9px; height: 9px; border-radius: 50%; background: #D6DCE5; }
.shot-bar span { margin-left: 10px; font-size: 11.5px; color: #7C8796; letter-spacing: .03em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.shot img { width: 100%; }
.deep .shot, .tone-deep .shot { box-shadow: 0 0 0 1px rgba(255, 255, 255, .1), 0 30px 60px -30px rgba(0, 0, 0, .6); }
.shot-cap { margin-top: 14px; }

/* ---------------------------------------------------------------- 方案切换（首页）：左列表，右半幅方形三维 */
.solx { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(36px, 5vw, 88px); align-items: center; }
.solx-list { display: grid; border-top: 1px solid var(--hair); }
.solx-item { border-bottom: 1px solid var(--hair); }
.solx-btn { display: grid; grid-template-columns: 30px minmax(0, 1fr) 18px; align-items: center; gap: 16px; width: 100%; padding: 20px 0; text-align: left; color: var(--muted); transition: color .3s var(--ease); }
.solx-btn .ic { width: 26px; height: 26px; stroke-width: 1.35; }
.solx-btn .t { font-family: var(--serif); font-weight: 700; font-size: clamp(20px, .8vw + 13px, 25px); letter-spacing: .03em; }
.solx-btn .ic.chev { width: 16px; height: 16px; stroke-width: 1.8; opacity: 0; transform: translateX(-6px); transition: opacity .3s, transform .4s var(--ease); }
.solx-btn:hover { color: var(--ink); }
.solx-item.on .solx-btn { color: var(--ink); }
.solx-item.on .solx-btn .ic.chev { opacity: .7; transform: none; }
.solx-body { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .55s var(--ease); }
.solx-body > div { overflow: hidden; }
.solx-body p { padding: 0 0 6px 46px; color: var(--text); font-size: 16px; line-height: 1.75; max-width: 30em; }
.solx-body .lnk { margin: 6px 0 22px 46px; font-size: 15px; }
.solx-item.on .solx-body { grid-template-rows: 1fr; }
.solx-vis { position: relative; }
@media (max-width: 900px) { .solx { grid-template-columns: minmax(0, 1fr); } .solx-vis { order: -1; } }

/* ---------------------------------------------------------------- 半幅方形三维（三种风格都保留，可切换） */
.sq3d { position: relative; width: 100%; max-width: 640px; justify-self: center; }
.sq3d-frame { position: relative; aspect-ratio: 1 / 1; max-width: 100%; border-radius: var(--r-lg); overflow: hidden; background: linear-gradient(180deg, #F4F7FB, #FFFFFF); isolation: isolate; }
.sq3d-frame > img, .sq3d-frame > video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: opacity .7s var(--ease); }
.sq3d-frame > .off { opacity: 0; }
.sq3d-foot { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-top: 16px; }
.sq3d-foot .note { max-width: 30em; }
.sq3d-styles { display: flex; gap: 16px; flex: none; }
.sq3d-styles button { position: relative; padding: 2px 0 6px; font-size: 13px; color: var(--muted); letter-spacing: .04em; transition: color .25s; }
.sq3d-styles button::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1.5px; background: var(--ink); transform: scaleX(0); transition: transform .4s var(--ease); }
.sq3d-styles button[aria-pressed="true"] { color: var(--ink); }
.sq3d-styles button[aria-pressed="true"]::after { transform: scaleX(1); }
.sq3d-pause { position: absolute; right: 14px; bottom: 14px; z-index: 2; width: 34px; height: 34px; border-radius: 8px; display: grid; place-items: center; color: var(--navy); background: rgba(255, 255, 255, .72); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); opacity: 0; transition: opacity .3s; }
.sq3d-pause .ic { width: 14px; height: 14px; stroke-width: 2; }
.sq3d:hover .sq3d-pause, .sq3d-pause:focus-visible { opacity: 1; }
.sq3d-pause .i-play { display: none; }
.sq3d.paused .sq3d-pause .i-play { display: block; }
.sq3d.paused .sq3d-pause .i-pause { display: none; }
@media (max-width: 560px) { .sq3d-foot { flex-direction: column; } }

/* ---------------------------------------------------------------- 一套方法：五步流程，线随滚动画出 */
.flow { position: relative; display: grid; grid-template-columns: repeat(var(--n, 5), minmax(0, 1fr)); gap: 0; }
.flow::before { content: ""; position: absolute; left: 0; right: 0; top: 27px; height: 1px; background: var(--hair-2); }
.flow::after { content: ""; position: absolute; left: 0; right: 0; top: 27px; height: 1px; background: var(--accent); transform: scaleX(0); transform-origin: left; transition: transform 2.2s var(--ease-io); }
.flow.on::after { transform: scaleX(1); }
.flow-step { position: relative; padding-right: 24px; }
.flow-node { position: relative; z-index: 1; width: 56px; height: 56px; display: grid; place-items: center; border-radius: 50%; background: var(--bg); box-shadow: inset 0 0 0 1px var(--hair-2); color: var(--ink); }
.flow-node .ic { width: 26px; height: 26px; stroke-width: 1.35; }
.flow-step h3 { margin-top: 26px; font-size: 19px; line-height: 1.4; font-weight: 600; }
.flow-step p { margin-top: 10px; font-size: 15px; line-height: 1.75; color: var(--muted); max-width: 15em; }
@media (max-width: 900px) {
  .flow { grid-template-columns: minmax(0, 1fr); gap: 34px; }
  .flow::before, .flow::after { left: 27px; right: auto; top: 0; bottom: 0; width: 1px; height: auto; }
  .flow::after { transform: scaleY(0); transform-origin: top; }
  .flow.on::after { transform: scaleY(1); }
  .flow-step { display: grid; grid-template-columns: 56px minmax(0, 1fr); column-gap: 22px; padding: 0; }
  .flow-step h3 { margin-top: 12px; }
  .flow-step p { grid-column: 2; margin-top: 4px; max-width: none; }
}

/* ---------------------------------------------------------------- 成效：按场景一行一句，数字放大 */
.outs { border-top: 1px solid var(--hair); }
.out { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 5fr) minmax(0, 4fr); gap: 24px; align-items: baseline; padding: 30px 0; border-bottom: 1px solid var(--hair); }
.out-k { font-size: 15px; color: var(--muted); letter-spacing: .04em; }
.out-v { font-family: var(--sans); font-weight: 500; font-size: clamp(26px, 1.6vw + 10px, 36px); line-height: 1.25; color: var(--ink); font-variant-numeric: tabular-nums; letter-spacing: -.005em; }
.out-v small { font-size: .52em; margin-left: 6px; color: var(--ink); font-weight: 500; letter-spacing: .02em; }
.out-d { font-size: 15.5px; line-height: 1.75; color: var(--muted); }
@media (max-width: 800px) { .out { grid-template-columns: minmax(0, 1fr); gap: 8px; } }

/* ---------------------------------------------------------------- 合作伙伴 */
.partners { display: grid; grid-template-columns: repeat(var(--cols, 6), minmax(0, 1fr)); border-top: 1px solid var(--hair); border-left: 1px solid var(--hair); }
.partner { display: grid; place-items: center; height: 112px; padding: 22px; border-right: 1px solid var(--hair); border-bottom: 1px solid var(--hair); }
.partner img { height: auto; max-width: 100%; filter: grayscale(1); opacity: .62; transition: filter .4s, opacity .4s; }
.partner:hover img { filter: none; opacity: 1; }
.partner span { font-size: 15px; color: var(--muted); letter-spacing: .06em; text-align: center; }
@media (max-width: 900px) { .partners { --cols: 3 !important; } }
@media (max-width: 520px) { .partners { --cols: 2 !important; } }

/* ---------------------------------------------------------------- 页尾邀约 */
.cta { text-align: center; }
.cta .h2 { max-width: 15em; margin-inline: auto; }
.cta .lead { max-width: 28em; margin: 18px auto 0; }
.cta .btns { justify-content: center; margin-top: 40px; }
.related { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px 36px; margin-top: 64px; padding-top: 28px; border-top: 1px solid var(--hair); }
.related span { font-size: 14px; color: var(--muted); letter-spacing: .04em; }

/* ---------------------------------------------------------------- 页脚 */
.ft { --bg: var(--deep); background: var(--bg); color: #A3B2C6; padding: 88px 0 calc(36px + env(safe-area-inset-bottom, 0px)); font-size: 14px; }
.ft-top { display: grid; grid-template-columns: minmax(0, 1.5fr) repeat(4, minmax(0, 1fr)); gap: 40px; }
.ft-brand .hd-logo { height: auto; }
.ft-brand .lg-mark .lg-c { opacity: 0; }
.ft-brand .lg-mark .lg-l { opacity: 1; }
.ft-brand .lg-word { background-color: #FFFFFF; }
.ft-brand p { margin-top: 18px; max-width: 18em; line-height: 1.8; color: #A3B2C6; }
.ft h4 { font-size: 14px; font-weight: 500; color: #F3F6FB; letter-spacing: .06em; margin-bottom: 16px; }
.ft-col li + li { margin-top: 10px; }
.ft-col a { transition: color .25s; }
.ft-col a:hover { color: #FFFFFF; }
.ft-bot { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px 24px; margin-top: 72px; padding-top: 24px; border-top: 1px solid rgba(226, 234, 245, .12); font-size: 13px; color: #8193AA; }
@media (max-width: 900px) { .ft-top { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ft-brand { grid-column: 1 / -1; } }

/* ---------------------------------------------------------------- 内页通用模块 */
/* 难点：编辑式清单（左侧衬线短句，右侧说明，细线分隔） */
.pains { border-top: 1px solid var(--hair); }
.pain { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 24px clamp(32px, 5vw, 80px); padding: 34px 0 36px; border-bottom: 1px solid var(--hair); }
.pain h3 { font-family: var(--serif); font-weight: 700; font-size: clamp(21px, .9vw + 13px, 27px); line-height: 1.45; letter-spacing: .02em; }
.pain p { font-size: 16.5px; line-height: 1.85; color: var(--text); max-width: 34em; padding-top: .25em; }
@media (max-width: 760px) { .pain { grid-template-columns: minmax(0, 1fr); gap: 10px; } }

/* 做法：左文字清单 + 右半幅方形 */
.how { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(36px, 5vw, 96px); align-items: center; }
.how.flip > .how-vis { order: -1; }
.how-list { display: grid; gap: 30px; }
.how-li { display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 6px 18px; }
.how-li .ic { grid-row: span 2; width: 28px; height: 28px; stroke-width: 1.35; color: var(--ink); margin-top: 1px; }
.how-li h3 { font-size: 18px; line-height: 1.5; font-weight: 600; }
.how-li p { font-size: 15.5px; line-height: 1.8; color: var(--muted); max-width: 30em; }
@media (max-width: 900px) { .how { grid-template-columns: minmax(0, 1fr); } .how.flip > .how-vis { order: 0; } }

/* 小标题 + 正文成对排列（两列） */
.pairs { display: grid; grid-template-columns: repeat(var(--cols, 2), minmax(0, 1fr)); gap: 44px clamp(32px, 5vw, 80px); }
.pair { display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 6px 18px; align-content: start; }
.pair.noic { grid-template-columns: minmax(0, 1fr); }
.pair .ic { grid-row: span 2; width: 28px; height: 28px; stroke-width: 1.35; color: var(--ink); }
.pair h3 { font-size: 18px; line-height: 1.5; font-weight: 600; }
.pair p { font-size: 15.5px; line-height: 1.8; color: var(--muted); }
@media (max-width: 760px) { .pairs { --cols: 1 !important; } }

/* 常见问题：按需展开 */
.faq { border-top: 1px solid var(--hair); }
.faq details { border-bottom: 1px solid var(--hair); }
.faq summary { display: grid; grid-template-columns: minmax(0, 1fr) 22px; align-items: center; gap: 24px; padding: 26px 0; cursor: pointer; list-style: none; font-size: 18px; line-height: 1.55; color: var(--ink); font-weight: 500; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary .ic { width: 20px; height: 20px; stroke-width: 1.5; color: var(--muted); transition: transform .45s var(--ease); }
.faq details[open] summary .ic { transform: rotate(45deg); }
.faq .faq-a { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .5s var(--ease); }
.faq .faq-a > div { overflow: hidden; }
.faq details[open] .faq-a { grid-template-rows: 1fr; }
.faq details.pre .faq-a, .faq details.closing .faq-a { grid-template-rows: 0fr; }
.faq .faq-a p { padding: 0 48px 28px 0; font-size: 16px; line-height: 1.85; color: var(--text); max-width: 46em; }

/* 时间标尺：分层控制、实施路径等 */
.ruler { position: relative; }
.ruler-row { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 9fr); gap: 28px; padding: 26px 0; border-bottom: 1px solid var(--hair); align-items: center; }
.ruler-row:first-child { border-top: 1px solid var(--hair); }
.ruler-k b { display: block; font-family: var(--serif); font-weight: 700; font-size: 21px; line-height: 1.4; color: var(--ink); letter-spacing: .03em; }
.ruler-k span { display: block; margin-top: 4px; font-size: 14px; color: var(--muted); }
.ruler-v { position: relative; }
.ruler-v p { font-size: 15.5px; line-height: 1.75; color: var(--text); margin-top: 14px; }
.ticks { position: relative; height: 34px; }
.ticks::before { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 1px; background: var(--hair-2); }
.ticks i { position: absolute; top: 50%; width: 1px; height: 7px; margin-top: -3.5px; background: var(--muted); opacity: .45; }
.ticks i.mj { height: 14px; margin-top: -7px; opacity: .8; }
.ticks.lab { margin-bottom: 22px; }
.ticks i.on { width: 7px; height: 7px; margin: -3.5px 0 0 -3px; border-radius: 50%; background: var(--accent); opacity: 1; }
.ticks .bar { position: absolute; top: 50%; height: 4px; margin-top: -2px; background: var(--accent); border-radius: 2px; transform-origin: left; transform: scaleX(0); transition: transform 1.4s var(--ease-io); }
.on .ticks .bar, .ticks.on .bar { transform: scaleX(1); }
.ticks em { position: absolute; top: 100%; transform: translateX(-50%); font-style: normal; font-size: 12px; color: var(--muted); white-space: nowrap; }
@media (max-width: 760px) { .ruler-row { grid-template-columns: minmax(0, 1fr); gap: 10px; } }

/* 泳道（合作方式里的三类客户） */
.lanes { display: grid; gap: 16px; }
.lane { display: grid; grid-template-columns: minmax(0, 2.6fr) repeat(3, minmax(0, 3fr)); border-radius: var(--r); background: var(--mist); overflow: hidden; }
.tone-mist .lane { background: #FFFFFF; }
.lane > div { padding: 26px 26px 28px; }
.lane > div + div { border-left: 1px solid var(--hair); }
.lane-k { display: grid; gap: 10px; align-content: start; }
.lane-k .ic { width: 28px; height: 28px; stroke-width: 1.35; color: var(--ink); }
.lane-k b { font-family: var(--serif); font-size: 21px; line-height: 1.4; color: var(--ink); letter-spacing: .03em; }
.lane small { display: block; font-size: 12.5px; color: var(--muted); letter-spacing: .08em; margin-bottom: 8px; }
.lane p { font-size: 15px; line-height: 1.75; color: var(--text); }
.lane .big { font-size: 22px; font-weight: 500; color: var(--ink); line-height: 1.4; font-variant-numeric: tabular-nums; }
@media (max-width: 900px) { .lane { grid-template-columns: minmax(0, 1fr); } .lane > div + div { border-left: 0; border-top: 1px solid var(--hair); } }

/* 编号步骤（顺序本身有意义时才用编号） */
.seq { display: grid; grid-template-columns: repeat(var(--n, 6), minmax(0, 1fr)); border-top: 1px solid var(--hair-2); }
.seq li { position: relative; padding: 24px 22px 0 0; }
.seq li::before { content: ""; position: absolute; left: 0; top: -4px; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }
.seq .n { display: block; font-size: 13px; color: var(--muted); letter-spacing: .06em; font-variant-numeric: tabular-nums; }
.seq b { display: block; margin-top: 8px; font-size: 18px; color: var(--ink); font-weight: 600; }
.seq p { margin-top: 8px; font-size: 14.5px; line-height: 1.75; color: var(--muted); }
@media (max-width: 900px) { .seq { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 28px; } }
@media (max-width: 520px) { .seq { grid-template-columns: minmax(0, 1fr); } }

/* 两栏图文（产品功能） */
.feat { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: clamp(36px, 5vw, 88px); align-items: center; }
.feat + .feat { margin-top: clamp(88px, 9vw, 140px); }
.feat.flip .feat-vis { order: -1; }
.feat-copy { display: grid; gap: 16px; align-content: start; }
.feat-copy .ic-lg { margin-bottom: 6px; }
.feat-copy .h3 { font-family: var(--serif); font-weight: 700; font-size: clamp(24px, 1.1vw + 13px, 31px); line-height: 1.35; letter-spacing: .02em; }
.feat-copy p { font-size: 16.5px; line-height: 1.85; color: var(--text); }
.feat-copy ul { display: grid; gap: 10px; margin-top: 4px; }
.feat-copy li { display: grid; grid-template-columns: 16px minmax(0, 1fr); gap: 8px; font-size: 15.5px; line-height: 1.7; color: var(--muted); }
.feat-copy li::before { content: ""; width: 5px; height: 5px; margin: .72em 0 0 3px; border-radius: 50%; background: var(--accent); }
.feat-vis { min-width: 0; }
@media (max-width: 900px) { .feat { grid-template-columns: minmax(0, 1fr); } .feat.flip .feat-vis { order: 0; } }

/* 产品页二级导航：固定在主导航下方；往下滚动后主导航收起，二级导航上移到顶 */
.psub { position: fixed; z-index: 45; left: 0; right: 0; top: var(--hd); height: 52px; background: #FFFFFF; box-shadow: 0 1px 0 rgba(14, 40, 65, .08); transition: transform .45s var(--ease); }
.psub-in { height: 100%; display: flex; align-items: center; gap: 28px; }
.psub-name { font-family: var(--serif); font-weight: 700; font-size: 18px; color: var(--ink); letter-spacing: .03em; white-space: nowrap; }
.psub nav { display: flex; gap: 24px; margin-left: auto; overflow-x: auto; scrollbar-width: none; }
.psub nav a { font-size: 13.5px; color: var(--muted); white-space: nowrap; transition: color .25s; }
.psub nav a:hover, .psub nav a.on { color: var(--ink); }
.psub .btn { height: 32px; padding: 0 14px; font-size: 13.5px; border-radius: 6px; }
.psub.dk { background: rgba(9, 27, 46, .8); box-shadow: 0 1px 0 rgba(255, 255, 255, .07); }
.psub.dk .psub-name { color: #FFFFFF; }
.psub.dk nav a { color: #A3B2C6; }
.psub.dk nav a:hover, .psub.dk nav a.on { color: #FFFFFF; }
.psub.dk .btn { background: #FFFFFF; color: var(--navy); }
.psub-on .hd { transform: translateY(-100%); }
.psub-on .psub { transform: translateY(calc(-1 * var(--hd))); }
.fly-open .psub, .menu-open .psub { transform: none; }
.hd { transition: transform .45s var(--ease), opacity .3s ease; }
.psub + .phero { padding-top: calc(var(--hd) + 52px + clamp(56px, 7vw, 104px)); }
@media (max-width: 760px) { .psub nav { display: none; } .psub .btn { margin-left: auto; } }

/* 产品首屏（白底，Apple 式居中） */
.phero { padding: calc(var(--hd) + clamp(64px, 8vw, 120px)) 0 0; text-align: center; background: var(--bg); }
.phero .status { justify-content: center; margin-bottom: 22px; }
.phero .h-hero { max-width: 14em; margin-inline: auto; }
.phero .lead { max-width: 32em; margin: 22px auto 0; }
.phero .btns { justify-content: center; margin-top: 36px; }
.phero-vis { margin-top: clamp(56px, 6vw, 88px); }
.phero-vis .shot { max-width: 1080px; margin-inline: auto; }

/* 横向页面一览 */
.gallery { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(300px, 34%); gap: 24px; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 18px; scrollbar-width: thin; }
.gallery > figure { scroll-snap-align: start; }
.gallery figcaption { margin-top: 14px; }
.gallery figcaption b { display: block; font-size: 16px; font-weight: 600; color: var(--ink); }
.gallery figcaption span { display: block; margin-top: 4px; font-size: 14px; line-height: 1.7; color: var(--muted); }
@media (max-width: 700px) { .gallery { grid-auto-columns: 82%; } }

/* 规格表（定义列表，细线分隔） */
.spec { display: grid; grid-template-columns: repeat(var(--cols, 2), minmax(0, 1fr)); column-gap: clamp(32px, 5vw, 80px); }
.spec > div { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 5fr); gap: 20px; padding: 20px 0; border-top: 1px solid var(--hair); }
.spec dt { font-size: 14.5px; color: var(--muted); letter-spacing: .03em; }
.spec dd { font-size: 15.5px; line-height: 1.75; color: var(--text); }
@media (max-width: 760px) { .spec { --cols: 1 !important; } }

/* 线框示意图（技术页、智能体页）：SVG 内的颜色跟随语义色 */
.diag { width: 100%; height: auto; overflow: visible; }
.diag text { font-family: var(--sans); fill: var(--text); font-size: 14px; letter-spacing: .02em; }
.diag .t-ink { fill: var(--ink); font-weight: 600; }
.diag .t-mut { fill: var(--muted); font-size: 12.5px; }
.diag .t-serif { font-family: var(--serif); font-weight: 700; fill: var(--ink); }
.diag .ln { fill: none; stroke: var(--hair-2); stroke-width: 1; }
.diag .ln-ink { fill: none; stroke: var(--ink); stroke-width: 1.25; }
.diag .ln-acc { fill: none; stroke: var(--accent); stroke-width: 1.5; }
.diag .box { fill: var(--field); stroke: var(--hair-2); stroke-width: 1; }
.diag .box-acc { fill: var(--tint); stroke: var(--accent); stroke-width: 1; }
.diag .dot { fill: var(--accent); }
.diag .flowline { fill: none; stroke: var(--accent); stroke-width: 1.5; stroke-dasharray: 2 6; animation: flowDash 2.4s linear infinite; }
@keyframes flowDash { to { stroke-dashoffset: -16; } }
.diag-wrap { overflow-x: auto; }
.diag-wrap .diag { min-width: 720px; }

/* 团队 */
.team { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--hair); }
.person { padding: 28px 28px 8px 0; }
.person + .person { padding-left: 28px; border-left: 1px solid var(--hair); }
.person b { display: block; font-family: var(--serif); font-size: 22px; color: var(--ink); letter-spacing: .06em; }
.person span { display: block; margin-top: 4px; font-size: 14px; color: var(--muted); letter-spacing: .04em; }
.person p { margin-top: 16px; font-size: 15px; line-height: 1.8; color: var(--text); }
@media (max-width: 980px) { .team { grid-template-columns: repeat(2, minmax(0, 1fr)); } .person:nth-child(3) { padding-left: 0; border-left: 0; } }
@media (max-width: 560px) { .team { grid-template-columns: minmax(0, 1fr); } .person, .person + .person { padding: 24px 0; border-left: 0; border-bottom: 1px solid var(--hair); } }

/* 表单 */
.form { display: grid; gap: 20px; }
.field { display: grid; gap: 8px; }
.field label { font-size: 14px; color: var(--ink); font-weight: 500; letter-spacing: .03em; }
.field label i { font-style: normal; color: var(--muted); font-weight: 400; margin-left: 6px; font-size: 13px; }
.field input, .field textarea, .field select {
  width: 100%; min-height: 48px; padding: 12px 14px; border-radius: var(--r-sm); border: 1px solid var(--hair-2); background: var(--field);
  font: inherit; font-size: 15.5px; color: var(--ink); transition: border-color .25s, box-shadow .25s;
}
.field textarea { min-height: 120px; resize: vertical; line-height: 1.7; }
.field input:hover, .field textarea:hover, .field select:hover { border-color: #B8C5D6; }
.field input:focus, .field textarea:focus, .field select:focus { outline: none; border-color: var(--blue); box-shadow: 0 0 0 3px rgba(57, 78, 154, .14); }
.field input::placeholder, .field textarea::placeholder { color: #8C97A6; }
.field.err input, .field.err textarea { border-color: #B4473C; }
.field .msg { font-size: 13px; color: #B4473C; min-height: 0; }
.choices { display: flex; flex-wrap: wrap; gap: 10px; }
.choices label { position: relative; display: inline-flex; align-items: center; height: 40px; padding: 0 14px; border-radius: 6px; box-shadow: inset 0 0 0 1px var(--hair-2); font-size: 14.5px; font-weight: 400; color: var(--text); cursor: pointer; transition: box-shadow .25s, color .25s, background-color .25s; }
.choices input { position: absolute; opacity: 0; pointer-events: none; }
.choices label:has(input:checked) { box-shadow: inset 0 0 0 1.5px var(--blue); color: var(--blue); background: var(--tint); }
.choices label:has(input:focus-visible) { outline: 2px solid var(--sky); outline-offset: 2px; }
.form .btn { justify-self: start; min-width: 160px; }
.form .btn[disabled] { opacity: .55; cursor: default; }
.form-done { display: none; padding: 26px 28px; border-radius: var(--r); background: var(--tint); color: var(--ink); line-height: 1.8; }
.form.sent .form-done { display: block; }
.form.sent .form-fields { display: none; }

/* 联系方式清单 */
.contacts { display: grid; gap: 0; border-top: 1px solid var(--hair); }
.contact { display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 4px 16px; padding: 22px 0; border-bottom: 1px solid var(--hair); }
.contact .ic { grid-row: span 2; width: 22px; height: 22px; color: var(--ink); margin-top: 2px; }
.contact b { font-size: 14px; color: var(--muted); font-weight: 400; letter-spacing: .04em; }
.contact span { font-size: 17px; color: var(--ink); }

/* 二栏布局 */
.cols { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(36px, 5vw, 96px); }
.cols.c-5-7 { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
.cols.c-7-5 { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
@media (max-width: 900px) { .cols, .cols.c-5-7, .cols.c-7-5 { grid-template-columns: minmax(0, 1fr); } }

/* 对照（两种调度方式等）：两列，各自一条细线标题 */
.versus { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px; }
.vs { padding: 34px 34px 36px; border-radius: var(--r-lg); background: var(--mist); }
.vs.acc { background: var(--deep); color: #D3DDEA; --ink: #F3F6FB; --text: #D3DDEA; --muted: #A3B2C6; --hair: rgba(226, 234, 245, .13); --accent: #8EBDEB; }
.vs h3 { font-family: var(--serif); font-size: 22px; letter-spacing: .03em; }
.vs ul { display: grid; gap: 0; margin-top: 18px; border-top: 1px solid var(--hair); }
.vs li { display: grid; grid-template-columns: 74px minmax(0, 1fr); gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--hair); font-size: 15px; line-height: 1.7; color: var(--text); }
.vs li span { color: var(--muted); font-size: 13.5px; letter-spacing: .04em; }
@media (max-width: 860px) { .versus { grid-template-columns: minmax(0, 1fr); } }

/* 进入视口时画面从细框里展开（只用于大画面，文字不做入场） */
.js .rv { clip-path: inset(6% 4% 6% 4% round var(--r-lg)); opacity: .001; transform: scale(.985); transition: clip-path 1.2s var(--ease), opacity .9s ease, transform 1.4s var(--ease); }
.js .rv.on { clip-path: inset(0 0 0 0 round 0); opacity: 1; transform: none; }

/* 404 */
.nf { min-height: 100svh; display: grid; place-items: center; text-align: center; padding: var(--hd) var(--gut) 40px; }
.nf .h-hero { font-size: clamp(34px, 4vw, 54px); }
.nf .btns { justify-content: center; margin-top: 32px; }

@media (max-width: 640px) {
  body { font-size: 16px; }
  .hero-in { padding-bottom: 56px; }
  .hero .btns { gap: 14px 20px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; transition-delay: 0s !important; scroll-behavior: auto !important; }
  .hero-media img { transform: none !important; }
}

/* ---------------------------------------------------------------- 补充组件 */
.fly-item .tag { font-style: normal; }
.sq3d.single .sq3d-styles, .sq3d.novid .sq3d-pause { display: none; }
.field legend { padding: 0; margin-bottom: 8px; font-size: 14px; color: var(--ink); font-weight: 500; letter-spacing: .03em; }

/* 技术：五层结构，进入视口后自下而上依次点亮 */
.stack { display: grid; grid-template-columns: minmax(0, 1fr) 250px; gap: 20px; }
.stack-layers { display: grid; gap: 10px; }
.layer { display: grid; grid-template-columns: 28px 112px minmax(0, 1fr); align-items: center; gap: 18px; padding: 22px 26px; border-radius: var(--r); background: var(--mist); }
.js .layer { opacity: .3; transform: translateY(10px); transition: opacity .8s ease calc(var(--i) * .16s), transform 1s var(--ease) calc(var(--i) * .16s); }
.js .stack.on .layer { opacity: 1; transform: none; }
.layer .ic { width: 26px; height: 26px; stroke-width: 1.35; color: var(--ink); }
.layer b { font-family: var(--serif); font-size: 20px; color: var(--ink); letter-spacing: .04em; }
.layer p { font-size: 15px; color: var(--text); line-height: 1.7; }
.stack-base { padding: 26px 26px 28px; border-radius: var(--r); box-shadow: inset 0 0 0 1px var(--hair-2); }
.stack-base b { font-family: var(--serif); font-size: 20px; color: var(--ink); letter-spacing: .04em; }
.stack-base ul { display: grid; gap: 14px; margin-top: 20px; }
.stack-base li { display: grid; grid-template-columns: 14px minmax(0, 1fr); font-size: 15px; color: var(--text); }
.stack-base li::before { content: ""; width: 5px; height: 5px; margin-top: .72em; border-radius: 50%; background: var(--accent); }
@media (max-width: 900px) { .stack { grid-template-columns: minmax(0, 1fr); } .layer { grid-template-columns: 28px minmax(0, 1fr); } .layer p { grid-column: 2; } }

/* 技术：逐省建模的特征矩阵（实心、半实心、空心三种点） */
.matrix { border-top: 1px solid var(--hair-2); overflow-x: auto; }
.mx-row { display: grid; grid-template-columns: minmax(180px, 2.2fr) repeat(4, minmax(84px, 1fr)); align-items: center; min-width: 600px; padding: 20px 0; border-bottom: 1px solid var(--hair); }
.mx-head span { font-size: 13.5px; color: var(--muted); letter-spacing: .04em; }
.mx-row > span:first-child { font-size: 17px; color: var(--ink); font-weight: 500; }
.mx-row > span em { display: block; margin-top: 2px; font-style: normal; font-size: 13.5px; font-weight: 400; color: var(--muted); }
.mx-row i { width: 14px; height: 14px; border-radius: 50%; box-shadow: inset 0 0 0 1.5px var(--accent); }
.mx-row i.on { background: var(--accent); box-shadow: none; }
.mx-row i.half { background: linear-gradient(90deg, var(--accent) 50%, transparent 50%); }

/* 关于：三个转变 */
.shifts { border-top: 1px solid var(--hair); }
.shift { display: grid; grid-template-columns: minmax(0, 1fr) minmax(80px, 160px) minmax(0, 1.2fr); align-items: center; padding: 30px 0; border-bottom: 1px solid var(--hair); }
.shift span { font-family: var(--serif); font-weight: 700; font-size: clamp(19px, .9vw + 12px, 25px); color: #8A97A9; letter-spacing: .03em; }
.shift b { font-family: var(--serif); font-size: clamp(22px, 1.4vw + 12px, 32px); color: var(--ink); letter-spacing: .03em; }
.shift i { position: relative; height: 1px; margin: 0 28px; background: var(--hair-2); }
.shift i::before { content: ""; position: absolute; inset: 0; background: var(--accent); transform: scaleX(0); transform-origin: left; transition: transform 1.2s var(--ease-io); }
.shift i::after { content: ""; position: absolute; right: 0; top: -4px; width: 8px; height: 8px; border-top: 1.5px solid var(--accent); border-right: 1.5px solid var(--accent); transform: rotate(45deg); opacity: 0; transition: opacity .4s ease .9s; }
.shifts.on .shift i::before { transform: scaleX(1); }
.shifts.on .shift i::after { opacity: 1; }
.shifts.on .shift:nth-child(2) i::before { transition-delay: .15s; }
.shifts.on .shift:nth-child(3) i::before { transition-delay: .3s; }
@media (max-width: 640px) { .shift { grid-template-columns: minmax(0, 1fr) 56px minmax(0, 1.2fr); } .shift i { margin: 0 12px; } }

/* 合作：收益核算公式 */
.formula { display: flex; flex-wrap: wrap; align-items: baseline; gap: 10px 22px; font-family: var(--serif); font-weight: 700; font-size: clamp(26px, 2vw + 12px, 46px); line-height: 1.35; color: var(--ink); letter-spacing: .03em; }
.formula i { font-style: normal; font-family: var(--sans); font-weight: 300; color: var(--accent); }

/* ---------------------------------------------------------------- 等轴测线稿图标（与三维同视角） */
:root { --iso0: #F6F8FB; --iso1: #FFFFFF; --iso2: #EBF1F8; --iso3: #DCE5F0; --isoa: #CFE1F5; --iso-ln: #0E2841; }
.tone-deep, [data-tone="dark"], .deep { --iso0: rgba(255, 255, 255, .03); --iso1: rgba(255, 255, 255, .09); --iso2: rgba(255, 255, 255, .05); --iso3: rgba(255, 255, 255, .02); --isoa: rgba(142, 189, 235, .28); --iso-ln: #E6EDF7; }
.iso { width: 48px; height: 48px; flex: none; overflow: visible; }
.iso path { stroke: var(--iso-ln); stroke-width: 1.1; stroke-linejoin: round; stroke-linecap: round; }
.iso .f0 { fill: var(--iso0); } .iso .f1 { fill: var(--iso1); } .iso .f2 { fill: var(--iso2); } .iso .f3 { fill: var(--iso3); } .iso .fa { fill: var(--isoa); }
.iso .ns { stroke: none; }
.iso .ln { fill: none; }
.iso .acc { stroke: var(--accent); stroke-width: 1.5; }
.iso .dash { stroke-dasharray: 2 2.6; }
.iso .d { fill: var(--accent); stroke: none; }

/* ======================================================================== 第二版 */
/* ---------------------------------------------------------------- 品牌锁定版：标志 — 涌源 — 竖线 — 两行英文 */
:root { --logo-ink: #0E2841; }
.hd-logo { gap: 0; }
.hd-logo .lg-mark { width: 26px; height: 29px; }
.lg-cn { width: 46px; height: 16px; margin-left: 9px; flex: none; background-color: var(--logo-ink); -webkit-mask: url(../brand/word_cn.png) center / contain no-repeat; mask: url(../brand/word_cn.png) center / contain no-repeat; transition: background-color .5s var(--ease); }
.lg-rule { width: 1px; height: 22px; margin: 0 10px; flex: none; background: var(--logo-ink); opacity: .45; transition: background-color .5s var(--ease); }
.lg-en { display: grid; gap: 1px; color: var(--logo-ink); font-family: var(--sans); font-size: 8.6px; line-height: 1.12; letter-spacing: .16em; text-transform: uppercase; font-weight: 500; white-space: nowrap; transition: color .5s var(--ease); }
.lg-en b { font-weight: 500; }
.lg-word { display: none; }
.ft-logo { --logo-ink: #FFFFFF; height: auto; }
.ft-logo .lg-mark .lg-c { opacity: 0; } .ft-logo .lg-mark .lg-l { opacity: 1; }

/* ---------------------------------------------------------------- 不做按钮的可点击链接 */
.go {
  position: relative; display: inline-flex; align-items: center; gap: 10px; padding: 4px 0 7px;
  color: var(--ink); font-size: 16px; font-weight: 500; letter-spacing: .04em;
  background: linear-gradient(currentColor, currentColor) 0 100% / 100% 1px no-repeat, linear-gradient(var(--accent), var(--accent)) 0 100% / 0 2px no-repeat;
  transition: background-size .5s var(--ease), color .3s var(--ease);
}
.go .ic { width: 18px; height: 18px; stroke-width: 1.5; transition: transform .45s var(--ease); }
.go:hover { color: var(--link); background-size: 100% 1px, 100% 2px; }
.go:hover .ic { transform: translateX(5px); }
.go.big { font-size: 18px; margin-top: 26px; }
.go.inv { color: #FFFFFF; margin-top: 18px; }
.links { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 40px; }
.hero-links { display: flex; flex-wrap: wrap; gap: 14px 40px; margin-top: 40px; }
.hero .go { color: #FFFFFF; font-size: 17px; }
.hero .go:hover { color: #FFFFFF; }
.hd-cta { height: auto; padding: 4px 0 6px 18px; border-radius: 0; background: none; color: inherit; font-size: 14px; letter-spacing: .06em; gap: 8px; position: relative; display: inline-flex; align-items: center; }
.hd-cta::before { content: ""; position: absolute; left: 0; top: 50%; width: 1px; height: 18px; margin-top: -9px; background: currentColor; opacity: .3; }
.hd-cta .ic { width: 15px; height: 15px; stroke-width: 1.6; transition: transform .4s var(--ease); }
.hd-cta:hover { background: none; color: var(--blue); }
.hd-cta:hover .ic { transform: translateX(4px); }

/* 页尾邀约：整块可点 */
.cta-band { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 18px 40px; padding: clamp(36px, 4vw, 56px) 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--hair-2); color: var(--ink); }
.cta-band .cta-t { font-family: var(--serif); font-weight: 700; font-size: clamp(28px, 2.4vw + 10px, 48px); line-height: 1.25; letter-spacing: .02em; }
.cta-band .cta-l { grid-column: 1; font-size: var(--fs-lead); color: var(--muted); }
.cta-band .cta-go { grid-row: 1 / span 2; grid-column: 2; display: inline-flex; align-items: center; gap: 14px; font-size: 18px; font-weight: 500; letter-spacing: .06em; color: var(--ink); white-space: nowrap; }
.cta-band .cta-go .ic { width: 40px; height: 40px; stroke-width: 1.1; transition: transform .5s var(--ease); }
.cta-band:hover .cta-go { color: var(--link); }
.cta-band:hover .cta-go .ic { transform: translateX(8px); }
.cta { text-align: left; }
@media (max-width: 700px) { .cta-band { grid-template-columns: minmax(0, 1fr); } .cta-band .cta-go { grid-row: auto; grid-column: 1; } }
.related { justify-content: flex-start; margin-top: 28px; padding-top: 0; border-top: 0; }

/* ---------------------------------------------------------------- 瑞士式结构：分节标尺、左对齐标题 */
.srule { display: flex; align-items: baseline; gap: 18px; margin-bottom: clamp(28px, 3vw, 44px); padding-top: 12px; border-top: 1px solid var(--ink); font-size: 13px; letter-spacing: .12em; color: var(--ink); }
.srule-n { font-family: var(--sans); font-weight: 600; font-variant-numeric: tabular-nums; }
.srule-t { color: var(--muted); }
.shead.center { justify-items: start; text-align: left; }
.shead .h2 { max-width: 15em; }

/* ---------------------------------------------------------------- 装饰框：细线外框 + 四角定位标 + 图注 */
.frame { position: relative; margin: 0; padding: 22px; }
.frame::before { content: ""; position: absolute; inset: 0; border: 1px solid var(--hair); pointer-events: none; }
.frame::after {
  content: ""; position: absolute; inset: -1px; pointer-events: none; --c: var(--ink); --l: 14px; --t: 1.5px;
  background:
    linear-gradient(var(--c), var(--c)) 0 0 / var(--l) var(--t) no-repeat, linear-gradient(var(--c), var(--c)) 0 0 / var(--t) var(--l) no-repeat,
    linear-gradient(var(--c), var(--c)) 100% 0 / var(--l) var(--t) no-repeat, linear-gradient(var(--c), var(--c)) 100% 0 / var(--t) var(--l) no-repeat,
    linear-gradient(var(--c), var(--c)) 0 100% / var(--l) var(--t) no-repeat, linear-gradient(var(--c), var(--c)) 0 100% / var(--t) var(--l) no-repeat,
    linear-gradient(var(--c), var(--c)) 100% 100% / var(--l) var(--t) no-repeat, linear-gradient(var(--c), var(--c)) 100% 100% / var(--t) var(--l) no-repeat;
}
.frame-cap { position: absolute; left: 22px; top: -9px; z-index: 1; padding: 0 8px; background: var(--bg); font-size: 12.5px; letter-spacing: .08em; color: var(--muted); }
.frame-cap b { color: var(--ink); font-weight: 600; margin-right: 8px; font-variant-numeric: tabular-nums; }
.frame-in { position: relative; }
.frame.flush { padding: 0; }
.tone-mist .frame-cap { background: var(--mist); }
@media (max-width: 760px) { .frame:not(.flush) > .frame-cap { position: relative; top: auto; left: auto; display: table; margin: -31px 0 8px; } }   /* 手机上图题换行时占位，不压住图中内容 */

/* ---------------------------------------------------------------- 同组切换条 */
.subnav { position: relative; z-index: 20; background: var(--paper); border-bottom: 1px solid var(--hair); }
.subnav-in { display: flex; align-items: center; gap: 28px; min-height: 64px; }
.subnav-t { font-size: 13px; letter-spacing: .12em; color: var(--muted); white-space: nowrap; }
.subnav-tabs { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; }
.subnav-tabs a { position: relative; display: inline-flex; align-items: center; gap: 10px; padding: 14px 14px 16px; font-size: 15px; color: var(--muted); white-space: nowrap; transition: color .25s; }
.subnav-tabs a::after { content: ""; position: absolute; left: 14px; right: 14px; bottom: 0; height: 2px; background: var(--ink); transform: scaleX(0); transition: transform .45s var(--ease); }
.subnav-tabs a:hover { color: var(--ink); }
.subnav-tabs a.on { color: var(--ink); font-weight: 500; }
.subnav-tabs a.on::after { transform: scaleX(1); }
.iso.mini { width: 26px; height: 26px; }
.iso.mini path { stroke-width: 1.5; }

/* ---------------------------------------------------------------- 下拉面板第二版 */
.fly-body { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px 32px; }
.fly-plat .fly-body { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); }
.fly-comp .fly-body { grid-template-columns: minmax(0, 1fr); }
.fly-col { display: grid; align-content: start; gap: 2px; }
.fly-span { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 28px; }
.fly-comp .fly-span { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.fly-gt { margin: 4px 0 4px; padding-bottom: 8px; border-bottom: 1px solid var(--hair); font-size: 12.5px; letter-spacing: .14em; color: var(--muted); }
.fly-item { grid-template-columns: 44px minmax(0, 1fr); gap: 2px 14px; padding: 12px 10px 12px 0; }
.fly-item .iso { grid-row: span 3; width: 44px; height: 44px; margin-top: -2px; }
.fly-subs { grid-column: 2; display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 4px; }
.fly-subs i { font-style: normal; font-size: 12.5px; color: var(--ink); opacity: .72; padding-left: 10px; position: relative; }
.fly-subs i::before { content: ""; position: absolute; left: 0; top: .62em; width: 4px; height: 4px; border-radius: 50%; background: var(--accent); }
.fly-item:hover .iso .d { fill: var(--blue); }
.sheet .fly-item .iso { width: 34px; height: 34px; }
.sheet .go.big { display: inline-flex; }

/* ---------------------------------------------------------------- 产品真实界面窗口（静态片段按容器宽度缩放） */
.uiview { position: relative; aspect-ratio: var(--uw) / var(--uh); overflow: hidden; background: #FFFFFF; }
.uiscale { position: absolute; left: 0; top: 0; width: calc(var(--uw) * 1px); height: calc(var(--uh) * 1px); transform-origin: 0 0; transform: scale(var(--k, .5)); }
.uiscale .uix { pointer-events: none; user-select: text; }

/* ---------------------------------------------------------------- 关于我们：浅底线稿首屏 */
.hero-art { padding: calc(var(--hd) + clamp(56px, 7vw, 104px)) 0 clamp(56px, 6vw, 96px); background: var(--mist); }
.hero-art-in { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(32px, 5vw, 88px); align-items: center; }
.hero-art .hero-crumb { color: var(--muted); }
.hero-art .hero-crumb a:hover { color: var(--ink); }
.hero-art-fig { margin: 0; position: relative; }
.hero-art-fig img { width: 100%; height: auto; }
.hero-art .lead { margin-top: 22px; max-width: 26em; }
@media (max-width: 900px) { .hero-art-in { grid-template-columns: minmax(0, 1fr); } }

/* ---------------------------------------------------------------- 难点清单：带等轴测图标 */
.pain.withic { grid-template-columns: 56px minmax(0, 5fr) minmax(0, 7fr); align-items: start; }
.pain.withic .iso { width: 48px; height: 48px; margin-top: -4px; }
@media (max-width: 760px) { .pain.withic { grid-template-columns: 48px minmax(0, 1fr); } .pain.withic p { grid-column: 2; } }
.pair .iso, .how-li .iso { grid-row: span 2; width: 46px; height: 46px; margin-top: -6px; }
.pair { grid-template-columns: 46px minmax(0, 1fr); }
.flow-node .iso { width: 40px; height: 40px; }
.ptile-copy .iso { width: 64px; height: 64px; margin-bottom: 4px; }
.feat-copy .iso { width: 64px; height: 64px; }

/* ---------------------------------------------------------------- 合作伙伴：彩色标识、可点开官网 */
.clients { display: grid; grid-template-columns: repeat(var(--cols, 4), minmax(0, 1fr)); gap: 16px; }
.client { position: relative; display: grid; grid-template-rows: 1fr auto; gap: 18px; padding: 30px 26px 22px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); transition: box-shadow .35s var(--ease), transform .45s var(--ease); }
.client-logo { display: grid; place-items: center; min-height: 92px; }
.client-logo img { max-width: 78%; max-height: 72px; width: auto; height: auto; }
.client-word { font-family: var(--serif); font-weight: 700; font-size: 26px; letter-spacing: .14em; color: var(--navy); white-space: nowrap; }   /* 暂无标识的合作伙伴：标识位显示文字名称 */
.logoband-row .client-word { font-size: 19px; letter-spacing: .1em; }
.client-meta { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding-top: 14px; border-top: 1px solid var(--hair); }
.client-meta b { font-size: 15px; font-weight: 500; color: var(--ink); }
.client-meta span { font-size: 12.5px; color: var(--muted); letter-spacing: .06em; white-space: nowrap; }
.client .ic { position: absolute; right: 18px; top: 16px; width: 16px; height: 16px; color: var(--muted); opacity: 0; transform: translate(-4px, 4px); transition: opacity .3s, transform .45s var(--ease); }
.client:hover { box-shadow: inset 0 0 0 1px var(--ink), 0 18px 40px -26px rgba(14, 40, 65, .35); transform: translateY(-3px); }
.client:hover .ic { opacity: 1; transform: none; }
@media (max-width: 900px) { .clients { --cols: 2 !important; } }
@media (max-width: 480px) { .clients { --cols: 1 !important; } }

/* ---------------------------------------------------------------- 图表（静态 SVG） */
.chart { width: 100%; height: auto; overflow: visible; font-family: var(--sans); }
.chart text { font-size: 12.5px; letter-spacing: .02em; font-variant-numeric: tabular-nums; }
.chart .c-lab { fill: var(--muted); }
.chart .c-sub { font-size: 11.5px; fill: var(--muted); }
.chart .c-val { fill: var(--ink); font-weight: 600; }
.chart .c-in { fill: #FFFFFF; font-size: 12px; }
.chart .c-key { fill: var(--ink); font-weight: 600; font-size: 12.5px; }
.chart .c-key2 { fill: var(--link); font-weight: 600; font-size: 12.5px; }
.chart .c-ax { stroke: var(--ink); stroke-width: 1; opacity: .5; }
.chart .c-grid { stroke: var(--hair-2); stroke-width: 1; stroke-dasharray: 2 3; }
.chart .c-bar { fill: var(--blue); }
.chart .c-bar2 { fill: var(--navy); }
.chart .c-bar3 { fill: var(--line); }
.chart .c-neg { fill: #B9C3D1; }
.chart .c-dot { fill: var(--blue); } .chart .c-dot0 { fill: var(--hair-2); }
.chart .c-band { fill: var(--tint); stroke: none; }
.chart .c-band2 { fill: var(--sky); opacity: .55; }
.chart .c-track { fill: var(--mist); stroke: var(--hair); }
.chart .c-zone { fill: rgba(99, 155, 211, .10); } .chart .c-zone2 { fill: rgba(57, 78, 154, .08); }
.chart .c-line { fill: none; stroke: var(--navy); stroke-width: 2; stroke-linejoin: round; }
.chart .c-line2 { fill: none; stroke: var(--sky); stroke-width: 2; stroke-linejoin: round; }
.chart .c-dash { fill: none; stroke: var(--muted); stroke-width: 1.5; stroke-dasharray: 4 4; }
.chart .c-area { fill: rgba(99, 155, 211, .22); stroke: var(--sky); stroke-width: 1.5; }
.chart .c-s1 { fill: var(--navy); } .chart .c-s2 { fill: var(--blue); } .chart .c-s3 { fill: var(--sky); } .chart .c-s4 { fill: var(--line); }
.tone-deep .chart .c-bar, .deep .chart .c-bar { fill: #8EBDEB; }
.tone-deep .chart .c-bar2, .deep .chart .c-bar2, .tone-deep .chart .c-line, .deep .chart .c-line, .tone-deep .chart .c-s1 { fill: none; }
.tone-deep .chart .c-line { stroke: #FFFFFF; }
.tone-deep .chart .c-s1 { fill: #FFFFFF; }
.chart-cap { margin-top: 12px; }

/* ---------------------------------------------------------------- 应用案例：列表与详情 */
.cfilter { display: flex; flex-wrap: wrap; gap: 4px 6px; margin-bottom: 28px; border-bottom: 1px solid var(--hair); }
.cfilter button { position: relative; padding: 10px 14px 14px; font-size: 15px; color: var(--muted); }
.cfilter button::after { content: ""; position: absolute; left: 14px; right: 14px; bottom: -1px; height: 2px; background: var(--ink); transform: scaleX(0); transition: transform .4s var(--ease); }
.cfilter button[aria-pressed="true"] { color: var(--ink); font-weight: 500; }
.cfilter button[aria-pressed="true"]::after { transform: scaleX(1); }
.cfilter button em { font-style: normal; font-size: 12px; margin-left: 6px; color: var(--muted); font-variant-numeric: tabular-nums; }
.cgrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.ccard { position: relative; display: grid; grid-template-rows: auto 1fr; border-radius: var(--r); overflow: hidden; background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); transition: box-shadow .35s var(--ease), transform .45s var(--ease); }
.ccard:hover { transform: translateY(-3px); box-shadow: inset 0 0 0 1px var(--ink), 0 22px 44px -28px rgba(14, 40, 65, .35); }
.ccard-top { position: relative; aspect-ratio: 16 / 9; overflow: hidden; background: var(--deep); }
.ccard-top img { width: 100%; height: 100%; object-fit: cover; opacity: .9; transition: transform 1.2s var(--ease); }
.ccard:hover .ccard-top img { transform: scale(1.04); }
.ccard-top .iso { position: absolute; left: 18px; bottom: 14px; width: 54px; height: 54px; --iso-ln: #FFFFFF; --iso0: rgba(255,255,255,.06); --iso1: rgba(255,255,255,.16); --iso2: rgba(255,255,255,.08); --iso3: rgba(255,255,255,.03); --isoa: rgba(142,189,235,.4); }
.ccard-tag { position: absolute; left: 18px; top: 16px; padding: 3px 9px; border-radius: 4px; background: rgba(255,255,255,.92); color: var(--navy); font-size: 12px; letter-spacing: .06em; }
.ccard-tag.ex { background: rgba(14, 40, 65, .78); color: #FFFFFF; }
.ccard-body { display: grid; align-content: start; gap: 8px; padding: 22px 22px 24px; }
.ccard-body b { font-size: 18px; color: var(--ink); font-weight: 600; }
.ccard-body span { font-size: 14.5px; color: var(--muted); }
.ccard-metric { display: flex; align-items: baseline; gap: 8px; margin-top: 10px; padding-top: 14px; border-top: 1px solid var(--hair); }
.ccard-metric strong { font-size: 26px; font-weight: 500; color: var(--ink); font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.ccard-metric small { font-size: 13px; color: var(--muted); }
.ccard-go { position: absolute; right: 18px; bottom: 22px; width: 18px; height: 18px; color: var(--ink); opacity: .35; transition: opacity .3s, transform .45s var(--ease); }
.ccard:hover .ccard-go { opacity: 1; transform: translateX(4px); }
.ccard[hidden] { display: none; }
.cgrid.one { grid-template-columns: minmax(0, 1fr); }
.cgrid.one .ccard { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); grid-template-rows: none; }
.cgrid.one .ccard-top { aspect-ratio: auto; min-height: 300px; }
@media (max-width: 980px) { .cgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .cgrid { grid-template-columns: minmax(0, 1fr); } .cgrid.one .ccard { grid-template-columns: minmax(0, 1fr); } }

.chero { padding: calc(var(--hd) + clamp(48px, 6vw, 88px)) 0 clamp(48px, 5vw, 72px); background: var(--deep); color: #FFFFFF; position: relative; overflow: hidden; }
.chero-bg { position: absolute; inset: 0; opacity: .32; }
.chero-bg img { width: 100%; height: 100%; object-fit: cover; }
.chero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(8,24,41,.94) 0%, rgba(8,24,41,.78) 55%, rgba(8,24,41,.55) 100%); }
.chero .wrap { position: relative; z-index: 1; }
.chero .hero-crumb { color: rgba(236,242,250,.7); }
.chero h1 { color: #FFFFFF; max-width: 14em; }
.chero .lead { color: rgba(236,242,250,.85); max-width: 34em; margin-top: 18px; }
.cmetrics { display: grid; grid-template-columns: repeat(var(--n, 3), minmax(0, 1fr)); margin-top: clamp(36px, 4vw, 56px); border-top: 1px solid rgba(255,255,255,.22); }
.cmetric { padding: 22px 24px 4px 0; }
.cmetric + .cmetric { padding-left: 24px; border-left: 1px solid rgba(255,255,255,.14); }
.cmetric b { display: block; font-size: clamp(30px, 2vw + 12px, 44px); font-weight: 500; line-height: 1.15; color: #FFFFFF; font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.cmetric b small { font-size: .42em; margin-left: 6px; font-weight: 500; letter-spacing: .02em; }
.cmetric span { display: block; margin-top: 8px; font-size: 14.5px; color: rgba(236,242,250,.86); }
.cmetric em { display: block; font-style: normal; margin-top: 2px; font-size: 12.5px; color: rgba(236,242,250,.55); }
@media (max-width: 760px) { .cmetrics { grid-template-columns: minmax(0, 1fr); } .cmetric, .cmetric + .cmetric { padding: 18px 0; border-left: 0; border-bottom: 1px solid rgba(255,255,255,.12); } }
.cparams { display: flex; flex-wrap: wrap; gap: 0; border-top: 1px solid var(--hair); border-bottom: 1px solid var(--hair); }
.cparam { flex: 1 1 220px; padding: 18px 24px 18px 0; }
.cparam + .cparam { padding-left: 24px; border-left: 1px solid var(--hair); }
.cparam dt { font-size: 12.5px; letter-spacing: .1em; color: var(--muted); }
.cparam dd { margin-top: 6px; font-size: 15.5px; color: var(--ink); line-height: 1.6; }
.csteps { display: grid; grid-template-columns: repeat(var(--n, 4), minmax(0, 1fr)); gap: 0; counter-reset: cs; }
.csteps li { position: relative; padding: 24px 22px 0 0; border-top: 1px solid var(--ink); }
.csteps li + li { padding-left: 22px; }
.csteps li::before { counter-increment: cs; content: counter(cs); display: block; font-size: 13px; font-weight: 600; color: var(--ink); letter-spacing: .08em; font-variant-numeric: tabular-nums; }
.csteps b { display: block; margin-top: 10px; font-size: 17px; color: var(--ink); font-weight: 600; }
.csteps p { margin-top: 8px; font-size: 15px; line-height: 1.75; color: var(--muted); }
@media (max-width: 900px) { .csteps { grid-template-columns: minmax(0, 1fr); gap: 22px; } .csteps li + li { padding-left: 0; } }
.cresults { display: grid; gap: 12px; }
.cresults li { display: grid; grid-template-columns: 18px minmax(0, 1fr); font-size: 16px; line-height: 1.8; color: var(--text); }
.cresults li::before { content: ""; width: 6px; height: 6px; margin: .8em 0 0 2px; border-radius: 50%; background: var(--accent); }
.ccaps { display: flex; flex-wrap: wrap; gap: 8px 10px; }
.ccaps span { display: inline-flex; align-items: center; gap: 8px; padding: 7px 12px; border-radius: 4px; box-shadow: inset 0 0 0 1px var(--hair-2); font-size: 14px; color: var(--ink); }
.cex { margin-top: 18px; padding: 14px 18px; border-left: 2px solid var(--accent); background: var(--tint); font-size: 14px; line-height: 1.7; color: var(--text); max-width: 46em; }

/* ---------------------------------------------------------------- 一笔交易怎么做：左侧文字逐步滚动，右侧图表吸附并按步骤变化 */
.tstory { position: relative; background: var(--mist); padding-block: var(--sec); --tsd: .9s; }
.tstory-in { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(32px, 4vw, 72px); }
.tstory-head { padding-bottom: 6vh; }
.tstory-head .lead { margin-top: 18px; max-width: 26em; }
.tstory-step { min-height: 64vh; display: grid; align-content: center; gap: 12px; padding: 0 0 12vh; opacity: .3; transition: opacity .6s var(--ease); }
.tstory-step.on { opacity: 1; }
.tstory-n { font-size: 13px; font-weight: 600; letter-spacing: .1em; color: var(--ink); padding-top: 12px; border-top: 1px solid var(--ink); width: 100%; font-variant-numeric: tabular-nums; }
.tstory-step h3 { font-family: var(--serif); font-weight: 700; font-size: clamp(24px, 1.2vw + 14px, 32px); line-height: 1.3; letter-spacing: .02em; }
.tstory-step p { font-size: 16.5px; line-height: 1.85; color: var(--text); max-width: 28em; }
.tstory-vis { position: relative; }
.tstory-stick { position: sticky; top: calc(var(--hd) + 24px); }
.tstory-dots { display: flex; gap: 0; margin-bottom: 14px; border-bottom: 1px solid var(--hair-2); }
.tstory-dots li { flex: 1; position: relative; padding: 0 0 10px; font-size: 12.5px; color: var(--muted); letter-spacing: .04em; transition: color .4s; }
.tstory-dots li::after { content: ""; position: absolute; left: 0; right: 4px; bottom: -1px; height: 2px; background: var(--ink); transform: scaleX(0); transform-origin: left; transition: transform .6s var(--ease); }
.tstory[data-step="1"] .tstory-dots li:nth-child(-n+1), .tstory[data-step="2"] .tstory-dots li:nth-child(-n+2), .tstory[data-step="3"] .tstory-dots li:nth-child(-n+3),
.tstory[data-step="4"] .tstory-dots li:nth-child(-n+4), .tstory[data-step="5"] .tstory-dots li:nth-child(-n+5), .tstory[data-step="6"] .tstory-dots li:nth-child(-n+6) { color: var(--ink); }
.tstory[data-step="1"] .tstory-dots li:nth-child(-n+1)::after, .tstory[data-step="2"] .tstory-dots li:nth-child(-n+2)::after, .tstory[data-step="3"] .tstory-dots li:nth-child(-n+3)::after,
.tstory[data-step="4"] .tstory-dots li:nth-child(-n+4)::after, .tstory[data-step="5"] .tstory-dots li:nth-child(-n+5)::after, .tstory[data-step="6"] .tstory-dots li:nth-child(-n+6)::after { transform: scaleX(1); }
.tstory-svg { width: 100%; height: auto; display: block; background: #FFFFFF; border-radius: var(--r); box-shadow: inset 0 0 0 1px var(--hair); font-family: var(--sans); }
.tstory-svg text { font-size: 12.5px; fill: var(--muted); font-variant-numeric: tabular-nums; }
.ts-grid { stroke: var(--hair); stroke-width: 1; }
.ts-base { stroke: var(--ink); stroke-width: 1; opacity: .35; }
.ts-tick { font-size: 11.5px; }
.ts-unit { font-size: 11.5px; }
.ts-lab { font-weight: 600; fill: var(--ink) !important; font-size: 13px !important; }
.ts-lab.rt, .ts-lab.lim { fill: var(--blue) !important; }
.ts-note { font-size: 12px !important; }
.ts-chip rect { fill: var(--mist); stroke: var(--hair-2); }
.ts-chip text { fill: var(--ink) !important; font-size: 12.5px !important; }
.ts-arrow { fill: none; stroke: var(--muted); stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
.ts-band { fill: rgba(99, 155, 211, .16); }
.ts-da { fill: none; stroke: var(--navy); stroke-width: 2.2; stroke-linejoin: round; stroke-dasharray: 1; stroke-dashoffset: 1; }
.ts-rt { fill: none; stroke: var(--sky); stroke-width: 2.2; stroke-linejoin: round; stroke-dasharray: 1; stroke-dashoffset: 1; }
.ts-sp { opacity: 0; }
.ts-sp.up { fill: rgba(99, 155, 211, .45); } .ts-sp.dn { fill: rgba(107, 114, 128, .28); }
.ts-pick { fill: var(--blue); opacity: 0; }
.ts-corr { fill: rgba(99, 155, 211, .08); stroke: var(--hair-2); stroke-dasharray: 3 4; }
.ts-adj { transform-box: fill-box; transform-origin: 50% 50%; transform: scaleY(0); }
.ts-adj.up { fill: var(--blue); } .ts-adj.dn { fill: var(--line); }
.ts-limit { stroke: var(--blue); stroke-width: 1.5; stroke-dasharray: 6 5; }
.ts-x path { stroke: #B4473C; stroke-width: 2; stroke-linecap: round; }
.ts-focus { fill: rgba(57, 78, 154, .06); stroke: var(--blue); stroke-width: 1; stroke-dasharray: 3 4; }
.ts-panel rect { fill: #FFFFFF; stroke: var(--ink); stroke-width: 1; }
.ts-ptitle { fill: var(--ink) !important; font-weight: 600; font-size: 13px !important; }
.ts-chk circle { fill: var(--hair-2); transition: fill .4s ease calc(var(--i) * .22s + .3s); }
.ts-chk text { fill: var(--ink) !important; font-size: 12.5px !important; }
.ts-lead { stroke: var(--blue); stroke-width: 1; stroke-dasharray: 2 3; }
.ts-pnl.pos { fill: var(--blue); } .ts-pnl.neg { fill: #B9C3D1; }
.ts-pnl { transform-box: fill-box; transform-origin: 50% 100%; transform: scaleY(0); }
.ts-pnl.neg { transform-origin: 50% 0; }
.ts-cum { fill: none; stroke: var(--navy); stroke-width: 2; stroke-dasharray: 1; stroke-dashoffset: 1; }
/* 图层显隐：当前步骤及之前的图层可见；第 6 步收起计划层，换成结算层 */
.ts-l { opacity: 0; transition: opacity .7s var(--ease); }
.tstory[data-step="1"] .s1, .tstory[data-step="2"] :is(.s1, .s2), .tstory[data-step="3"] :is(.s1, .s2, .s3), .tstory[data-step="4"] :is(.s1, .s2, .s3, .s4),
.tstory[data-step="5"] :is(.s1, .s2, .s3, .s4, .s5), .tstory[data-step="6"] :is(.s1, .s2, .s4, .s6) { opacity: 1; }
.tstory[data-step="6"] .s1 .ts-chip, .tstory[data-step="6"] .s1 .ts-arrow, .tstory[data-step="6"] .s1 .ts-note { opacity: 0; }
.tstory:not([data-step="1"]) .s1 .ts-chip { opacity: .35; transition: opacity .6s; }
.tstory .ts-da { transition: stroke-dashoffset 1.6s var(--ease-io); }
.tstory[data-step] .ts-da { stroke-dashoffset: 0; }
.tstory[data-step="2"] .ts-rt, .tstory[data-step="3"] .ts-rt, .tstory[data-step="4"] .ts-rt, .tstory[data-step="5"] .ts-rt, .tstory[data-step="6"] .ts-rt { stroke-dashoffset: 0; transition: stroke-dashoffset 1.6s var(--ease-io); }
.tstory .ts-sp { transition: opacity .5s ease calc(var(--i) * .03s + .6s); }
.tstory:not([data-step="1"]) .ts-sp { opacity: .35; }
.tstory:not([data-step="1"]) .ts-sp.pick { opacity: 1; }
.tstory .ts-pick { transition: opacity .4s ease calc(var(--i) * .04s + 1s); }
.tstory:not([data-step="1"]) .ts-pick { opacity: 1; }
.tstory .ts-adj { transition: transform .9s var(--ease) calc(var(--i) * .03s); }
.tstory[data-step="3"] .ts-adj, .tstory[data-step="4"] .ts-adj, .tstory[data-step="5"] .ts-adj { transform: scaleY(1); }
.tstory[data-step="4"] .ts-adj.blk, .tstory[data-step="5"] .ts-adj.blk { fill: #D5DCE6; }
.tstory[data-step="5"] .ts-chk circle { fill: var(--blue); }
.tstory .ts-pnl { transition: transform .9s var(--ease) calc(var(--i) * .03s + .2s); }
.tstory[data-step="6"] .ts-pnl { transform: scaleY(1); }
.tstory[data-step="6"] .ts-cum { stroke-dashoffset: 0; transition: stroke-dashoffset 1.8s var(--ease-io) .6s; }
.tstory[data-step="6"] .s4 .ts-x { opacity: 0; }
@media (max-width: 900px) {
  .tstory-in { grid-template-columns: minmax(0, 1fr); }
  .tstory-vis { order: -1; position: sticky; top: var(--hd); z-index: 2; background: var(--mist); padding-bottom: 8px; }
  .tstory-stick { position: static; }
  .tstory-dots { display: none; }
  .tstory-step { min-height: 46vh; }
}

/* ---------------------------------------------------------------- 载入动效第二版：标志描线 → 丝带铺满 → “涌源”显出 → 竖线生长 → 两行英文落位 → 飞入导航 */
.yy-logo { gap: 0; }
.yy-mark { width: 94px; height: 104px; }
.yy-word { display: none; }
.yy-cn {
  width: 164px; height: 57px; margin-left: 32px; flex: none; background-color: var(--navy);
  -webkit-mask: url(../brand/word_cn.png) left center / contain no-repeat, linear-gradient(90deg, #000 42%, transparent 58%) 100% 0 / 260% 100% no-repeat;
  -webkit-mask-composite: source-in;
  mask: url(../brand/word_cn.png) left center / contain no-repeat, linear-gradient(90deg, #000 42%, transparent 58%) 100% 0 / 260% 100% no-repeat;
  mask-composite: intersect;
  transition: background-color .8s var(--ease);
}
.yy-rule { width: 2px; height: 79px; margin: 0 34px; flex: none; background: var(--navy); opacity: .45; transform: scaleY(0); transition: background-color .8s var(--ease); }
.yy-en { display: grid; gap: 4px; color: var(--navy); font-family: var(--sans); font-size: 31px; line-height: 1.12; font-weight: 500; text-transform: uppercase; white-space: nowrap; transition: color .8s var(--ease); }
.yy-en b { font-weight: 500; letter-spacing: .34em; opacity: 0; transform: translateX(-14px); }
.yy-intro.play .yy-cn { animation: yyWipe 1s var(--ease) 1.05s forwards; }
.yy-rule { visibility: hidden; }
.yy-intro.play .yy-en b { animation: yyEn 1s var(--ease) 1.62s forwards; }
.yy-intro.play .yy-en b + b { animation-delay: 1.76s; }
.yy-intro.flying.to-dark .yy-cn, .yy-intro.flying.to-dark .yy-rule { background-color: #FFFFFF; }
.yy-intro.flying.to-dark .yy-en { color: #FFFFFF; }
@keyframes yyGrow { to { transform: scaleY(1); } }
@keyframes yyEn { to { opacity: 1; transform: none; letter-spacing: .16em; } }
@keyframes yyWipe { to { -webkit-mask-position: left center, 0 0; mask-position: left center, 0 0; } }

/* ---------------------------------------------------------------- 首页第二版 */
.about-row { align-items: end; }
.about-side .body { color: var(--text); max-width: 26em; }
.caps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; margin-top: clamp(48px, 5vw, 76px); border-top: 1px solid var(--hair); }
.cap { display: grid; gap: 10px; align-content: start; padding: 26px 26px 6px 0; }
.cap + .cap { padding-left: 26px; border-left: 1px solid var(--hair); }
.cap .iso { width: 52px; height: 52px; margin-bottom: 4px; }
.cap b { font-size: 18px; font-weight: 600; color: var(--ink); }
.cap span { font-size: 15px; line-height: 1.75; color: var(--muted); }
@media (max-width: 900px) { .caps { grid-template-columns: repeat(2, minmax(0, 1fr)); } .cap:nth-child(3) { padding-left: 0; border-left: 0; } }
@media (max-width: 520px) { .caps { grid-template-columns: minmax(0, 1fr); } .cap, .cap + .cap { padding: 22px 0; border-left: 0; border-bottom: 1px solid var(--hair); } }

.bzs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.bz { display: grid; grid-template-rows: auto 1fr; border-radius: var(--r-lg); background: #FFFFFF; overflow: hidden; box-shadow: inset 0 0 0 1px var(--hair); }
.bz-art { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: linear-gradient(180deg, #F4F7FB, #FFFFFF); }
.bz-art img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.04); transition: transform 1.4s var(--ease); }
.bz:hover .bz-art img { transform: scale(1.0); }
.bz-body { display: grid; align-content: start; gap: 12px; padding: 26px 28px 30px; }
.bz-body > .iso { width: 50px; height: 50px; }
.bz-name { font-family: var(--serif); font-weight: 700; font-size: 26px; letter-spacing: .03em; }
.bz-desc { font-size: 15.5px; line-height: 1.8; color: var(--text); }
.bz-tags { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 2px 0 6px; }
.bz-tags span { position: relative; padding-left: 12px; font-size: 14px; color: var(--ink); }
.bz-tags span::before { content: ""; position: absolute; left: 0; top: .62em; width: 5px; height: 5px; border-radius: 50%; background: var(--accent); }
.bz-subs { display: grid; margin: 4px 0 2px; border-top: 1px solid var(--hair); }
.bz-subs a { display: grid; grid-template-columns: 30px minmax(0, 1fr) 16px; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--hair); }
.bz-subs b { display: block; font-size: 15.5px; font-weight: 600; color: var(--ink); }
.bz-subs em { display: block; font-style: normal; font-size: 13px; color: var(--muted); margin-top: 2px; }
.bz-subs .ic { width: 16px; height: 16px; color: var(--muted); transition: transform .4s var(--ease), color .3s; }
.bz-subs a:hover b { color: var(--blue); } .bz-subs a:hover .ic { transform: translateX(4px); color: var(--ink); }
.bz .go { justify-self: start; margin-top: 8px; }
@media (max-width: 980px) { .bzs { grid-template-columns: minmax(0, 1fr); } .bz { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); grid-template-rows: none; } .bz-art { aspect-ratio: auto; } }
@media (max-width: 640px) { .bz { grid-template-columns: minmax(0, 1fr); } .bz-art { aspect-ratio: 16 / 10; } }

.ptabs-bar { display: flex; gap: 2px; border-bottom: 1px solid var(--hair-2); overflow-x: auto; scrollbar-width: none; }
.ptabs-bar button { position: relative; display: inline-flex; align-items: center; gap: 10px; padding: 14px 18px 18px; font-size: 16px; color: var(--muted); white-space: nowrap; transition: color .3s; }
.ptabs-bar button::after { content: ""; position: absolute; left: 18px; right: 18px; bottom: -1px; height: 2px; background: var(--ink); transform: scaleX(0); transition: transform .45s var(--ease); }
.ptabs-bar button[aria-selected="true"] { color: var(--ink); font-weight: 500; }
.ptabs-bar button[aria-selected="true"]::after { transform: scaleX(1); }
.ptabs-bar button:hover { color: var(--ink); }
.pp { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: clamp(32px, 4vw, 64px); align-items: center; padding-top: clamp(32px, 4vw, 52px); }
.pp-name { font-family: var(--serif); font-weight: 700; font-size: clamp(24px, 1vw + 16px, 32px); letter-spacing: .03em; }
.pp-copy p { margin-top: 14px; font-size: 16px; line-height: 1.85; color: var(--text); }
.pp-pts { display: grid; gap: 0; margin: 22px 0 26px; border-top: 1px solid var(--hair); }
.pp-pts li { display: grid; grid-template-columns: 30px minmax(0, 1fr); align-items: center; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--hair); font-size: 15px; color: var(--ink); }
.pp-vis { min-width: 0; }
.agent-art { max-width: 620px; margin-inline: auto; padding: 18px; border-radius: var(--r-lg); background: var(--deep); --ink: #F3F6FB; --text: #D3DDEA; --muted: #A3B2C6; --hair-2: rgba(226,234,245,.22); --accent: #8EBDEB; --field: rgba(255,255,255,.04); --tint: rgba(142,189,235,.12); --iso-ln: #E6EDF7; --iso0: rgba(255,255,255,.03); --iso1: rgba(255,255,255,.09); --iso2: rgba(255,255,255,.05); --iso3: rgba(255,255,255,.02); --isoa: rgba(142,189,235,.28); }
@media (max-width: 900px) { .pp { grid-template-columns: minmax(0, 1fr); } }

/* ---------------------------------------------------------------- 数据资产地图（方块示意，不用真实地图） */
.atlas { border-radius: var(--r-lg); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); overflow: hidden; font-size: 14px; }
.at-head { display: flex; align-items: center; gap: 18px; padding: 12px 18px; background: var(--deep); color: #FFFFFF; }
.at-name { display: inline-flex; align-items: center; gap: 10px; font-weight: 600; letter-spacing: .04em; --iso-ln: #FFFFFF; --iso0: rgba(255,255,255,.04); --iso1: rgba(255,255,255,.12); --iso2: rgba(255,255,255,.06); --iso3: rgba(255,255,255,.02); --isoa: rgba(142,189,235,.35); --accent: #8EBDEB; }
.at-views { display: flex; gap: 4px; margin-left: auto; }
.at-views button { padding: 6px 12px; border-radius: 4px; font-size: 13px; color: rgba(255,255,255,.7); transition: background-color .3s, color .3s; }
.at-views button[aria-selected="true"] { background: rgba(255,255,255,.14); color: #FFFFFF; }
.at-stamp { font-size: 12px; color: rgba(255,255,255,.6); white-space: nowrap; }
.at-body { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 4fr) minmax(0, 3.4fr); }
.at-left, .at-right { padding: 20px; }
.at-left { border-right: 1px solid var(--hair); }
.at-right { border-left: 1px solid var(--hair); min-height: 360px; }
.at-over { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.at-over div { padding: 12px; border-radius: 8px; background: var(--mist); }
.at-over b { display: block; font-size: 22px; font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.at-over b small { font-size: .55em; margin-left: 3px; }
.at-over span { display: block; margin-top: 2px; font-size: 12.5px; color: var(--muted); }
.at-legend { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 4px 10px; margin: 18px 0 10px; font-size: 12.5px; color: var(--muted); }
.at-legend i { height: 8px; border-radius: 4px; background: linear-gradient(90deg, #DCE7F4, #394E9A); }
.at-legend em { font-style: normal; grid-column: 2; display: inline; }
.at-legend em + em { justify-self: end; margin-top: -18px; }
.at-map { padding: 20px; display: grid; align-content: center; gap: 12px; background: linear-gradient(180deg, #F7F9FC, #FFFFFF); }
.at-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); grid-template-rows: repeat(7, 46px); gap: 6px; }
.at-tile { grid-column: calc(var(--c) + 1); grid-row: calc(var(--r) + 1); display: grid; align-content: center; justify-items: center; border-radius: 8px; background: #E9EFF7; color: var(--navy); transition: transform .35s var(--ease), box-shadow .3s; }
.at-tile b { font-family: var(--serif); font-size: 17px; line-height: 1; }
.at-tile span { font-size: 11.5px; margin-top: 3px; font-variant-numeric: tabular-nums; opacity: .8; }
.at-tile[data-lvl="1"] { background: #DCE7F4; } .at-tile[data-lvl="2"] { background: #B9CEE9; } .at-tile[data-lvl="3"] { background: #8EAEDC; color: #FFFFFF; } .at-tile[data-lvl="4"] { background: #5F7DC4; color: #FFFFFF; } .at-tile[data-lvl="5"] { background: #394E9A; color: #FFFFFF; }
.at-tile[data-lvl="0"] { background: #F1F4F8; color: #9AA6B6; }
.at-tile:hover, .at-tile.on { transform: translateY(-2px); box-shadow: 0 0 0 2px var(--navy); }
.at-rank h4, .at-prof h4 { font-size: 15px; color: var(--ink); margin-bottom: 12px; }
.at-rank ol { display: grid; gap: 8px; }
.at-rank li { display: grid; grid-template-columns: 24px 40px minmax(0, 1fr) 30px; align-items: center; gap: 8px; font-size: 13px; color: var(--muted); }
.at-rank li b { color: var(--ink); font-weight: 500; }
.at-rank li i { height: 6px; border-radius: 3px; background: linear-gradient(90deg, var(--blue) calc(var(--v) * 1%), var(--hair) 0); }
.at-rank li em { font-style: normal; color: var(--ink); text-align: right; font-variant-numeric: tabular-nums; }
.at-scores { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-bottom: 14px; }
.at-score { padding: 12px; border-radius: 8px; background: var(--mist); }
.at-score b { display: block; font-size: 24px; font-weight: 600; color: var(--ink); }
.at-score span { font-size: 12px; color: var(--muted); }
.at-score.muted b { color: #9AA6B6; }
.at-bar { display: grid; grid-template-columns: 76px minmax(0, 1fr) 44px; align-items: center; gap: 8px; margin: 6px 0; font-size: 12.5px; color: var(--muted); }
.at-bar i { height: 6px; border-radius: 3px; background: linear-gradient(90deg, var(--blue) calc(var(--v) * 1%), var(--hair) 0); }
.at-bar em { font-style: normal; color: var(--ink); text-align: right; font-variant-numeric: tabular-nums; }
.at-cats { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.at-cats li { padding: 3px 8px; border-radius: 4px; font-size: 12px; }
.at-cats li.ok { background: rgba(57, 78, 154, .1); color: var(--blue); }
.at-cats li.no { background: var(--mist); color: #9AA6B6; text-decoration: line-through; }
.at-drill { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--hair); }
.at-drill p { font-size: 12.5px; color: var(--ink); margin-bottom: 6px; }
.atlas.picked .at-rank { display: none; }
.atlas.compact .at-body { grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); }
.atlas.compact .at-left { display: none; }
@media (max-width: 900px) { .at-body, .atlas.compact .at-body { grid-template-columns: minmax(0, 1fr); } .at-left, .at-right { border: 0; } .at-stamp { display: none; } }

/* ---------------------------------------------------------------- 三维分步叙事：场景作后景，文字作前景 */
.story { position: relative; background: linear-gradient(180deg, #F4F7FB 0%, #FFFFFF 100%); }
.story-bg { position: sticky; top: 0; height: 100vh; height: 100svh; margin-bottom: -100vh; margin-bottom: -100svh; overflow: hidden; }
.story-stage { position: absolute; inset: 0; }
.story-stage > img, .story-stage > video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 62% 50%; transition: opacity .8s var(--ease); }
.story-stage > video { opacity: 0; }
.story.playing .story-stage > video { opacity: 1; }
/* 方形占位：放在右侧，左侧留给文字 */
.story[data-mode="square"] .story-stage { left: auto; right: max(var(--gut), calc((100vw - var(--max)) / 2)); top: 50%; bottom: auto; width: min(58vw, 80vh, 720px); aspect-ratio: 1; transform: translateY(-46%); }
.story[data-mode="square"] .story-stage > img, .story[data-mode="square"] .story-stage > video { object-fit: contain; -webkit-mask: radial-gradient(closest-side, #000 76%, transparent 100%); mask: radial-gradient(closest-side, #000 76%, transparent 100%); }
.story-bg::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(90deg, rgba(244, 247, 251, .96) 0%, rgba(244, 247, 251, .82) 26%, rgba(244, 247, 251, 0) 52%); }
.story-ui { position: absolute; z-index: 2; right: max(var(--gut), calc((100vw - var(--max)) / 2)); bottom: 28px; display: flex; align-items: center; gap: 28px; }
.story-dots { display: flex; gap: 8px; }
.story-dots li { width: 26px; height: 2px; background: var(--hair-2); transition: background-color .5s; }
.story[data-step="1"] .story-dots li:nth-child(-n+1), .story[data-step="2"] .story-dots li:nth-child(-n+2), .story[data-step="3"] .story-dots li:nth-child(-n+3), .story[data-step="4"] .story-dots li:nth-child(-n+4), .story[data-step="5"] .story-dots li:nth-child(-n+5) { background: var(--ink); }
.story-sty { display: flex; gap: 14px; }
.story-sty button { position: relative; padding: 2px 0 6px; font-size: 13px; color: var(--muted); }
.story-sty button::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1.5px; background: var(--ink); transform: scaleX(0); transition: transform .4s var(--ease); }
.story-sty button[aria-pressed="true"] { color: var(--ink); }
.story-sty button[aria-pressed="true"]::after { transform: scaleX(1); }
.story-fg { position: relative; z-index: 3; padding-bottom: 20vh; }
.story-head { min-height: 70vh; display: grid; align-content: center; max-width: 30em; padding-top: 10vh; }
.story-head .lead { margin-top: 18px; }
.story-step { min-height: 92vh; display: grid; align-items: center; }
.story-card { max-width: 400px; padding: 26px 28px 28px; border-radius: var(--r); background: rgba(255, 255, 255, .78); -webkit-backdrop-filter: blur(14px) saturate(1.4); backdrop-filter: blur(14px) saturate(1.4); box-shadow: inset 0 0 0 1px rgba(14, 40, 65, .08); opacity: .45; transform: translateY(14px); transition: opacity .7s var(--ease), transform .9s var(--ease); }
.story-step.on .story-card { opacity: 1; transform: none; }
.story-n { display: block; padding-bottom: 10px; margin-bottom: 12px; border-bottom: 1px solid var(--ink); font-size: 13px; font-weight: 600; letter-spacing: .1em; color: var(--ink); font-variant-numeric: tabular-nums; }
.story-card h3 { font-family: var(--serif); font-weight: 700; font-size: clamp(22px, 1vw + 14px, 28px); letter-spacing: .03em; line-height: 1.35; }
.story-card p { margin-top: 10px; font-size: 15.5px; line-height: 1.85; color: var(--text); }
.story-tags { position: absolute; inset: 0; pointer-events: none; }
.story-tag { position: absolute; left: 0; top: 0; transform: translate(-50%, -100%); padding: 6px 10px; border-radius: 6px; background: rgba(255, 255, 255, .92); box-shadow: 0 6px 18px -10px rgba(14, 40, 65, .45), inset 0 0 0 1px rgba(14, 40, 65, .08); font-size: 12.5px; color: var(--ink); white-space: nowrap; transition: opacity .4s; }
.story-tag::after { content: ""; position: absolute; left: calc(50% + var(--dx, 0px)); bottom: -8px; width: 1px; height: 8px; background: var(--ink); opacity: .4; }
.story-tag em { font-style: normal; color: var(--blue); font-weight: 600; margin-left: 6px; font-variant-numeric: tabular-nums; }
@media (max-width: 760px) {
  .story-bg { height: 56vh; margin-bottom: 0; position: sticky; z-index: 1; }
  .story-bg::after { background: linear-gradient(0deg, rgba(244,247,251,.9), rgba(244,247,251,0) 30%); }
  .story[data-mode="square"] .story-stage { width: min(92vw, 52vh); right: 50%; transform: translate(50%, -50%); }
  .story-head { min-height: auto; padding: 40px 0 10px; }
  .story-step { min-height: 60vh; }
  .story-ui { bottom: 10px; right: var(--gut); }
}

/* ---------------------------------------------------------------- 业务页（第二版）：图文说明栏、行业切换 */
.explain { display: grid; gap: 16px; align-content: start; padding-top: 6px; }
.explain .h3 { font-family: var(--serif); font-weight: 700; font-size: clamp(21px, .6vw + 15px, 26px); letter-spacing: .03em; color: var(--ink); }
.explain p { font-size: 16.5px; line-height: 1.9; color: var(--text); max-width: 34em; }
.ind { padding-top: clamp(28px, 3.4vw, 44px); }
.ind-hero { position: relative; border-radius: var(--r); overflow: hidden; aspect-ratio: 21 / 8; background: var(--deep); }
.ind-hero img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ind-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(8, 24, 42, .86) 0%, rgba(8, 24, 42, .6) 40%, rgba(8, 24, 42, 0) 74%); }
.ind-cap { position: absolute; z-index: 1; left: clamp(24px, 3.4vw, 52px); bottom: clamp(24px, 3vw, 44px); max-width: min(30em, 56%); }
.ind-cap h3 { font-size: clamp(28px, 1.6vw + 14px, 40px); color: #F3F6FB; letter-spacing: .06em; }
.ind-cap p { margin-top: 12px; font-size: 15.5px; line-height: 1.85; color: rgba(243, 246, 251, .86); }
.ind-body { margin-top: clamp(28px, 3vw, 44px); }
.ind-rule { display: flex; align-items: center; gap: 12px; margin-top: 28px; padding: 16px 20px; border-radius: var(--r-sm); background: var(--paper); box-shadow: inset 0 0 0 1px var(--hair); font-size: 15px; line-height: 1.7; color: var(--text); }
.ind-rule .mini { flex: none; }
@media (max-width: 760px) {
  .ind-hero { aspect-ratio: auto; min-height: 380px; }
  .ind-hero::after { background: linear-gradient(0deg, rgba(8, 24, 42, .9) 0%, rgba(8, 24, 42, .55) 60%, rgba(8, 24, 42, .1) 100%); }
  .ind-cap { max-width: none; right: 24px; }
}

/* ---------------------------------------------------------------- 产品页（第二版）：标题即切换条 */
.phero2 { padding: calc(var(--hd) + 52px + clamp(40px, 5vw, 76px)) 0 clamp(64px, 6vw, 104px); background: var(--bg); }
.pt-switch { display: flex; align-items: flex-end; gap: clamp(18px, 2.6vw, 46px); margin-top: 18px; padding-bottom: 18px; border-bottom: 1px solid var(--hair-2); overflow-x: auto; scrollbar-width: none; }
.pt-switch::-webkit-scrollbar { display: none; }
.pt-switch > * { position: relative; flex: none; font-family: var(--serif); font-weight: 700; font-size: clamp(22px, 1.45vw + 12px, 40px); line-height: 1.2; letter-spacing: .03em; white-space: nowrap; }
.pt-switch a { color: #A0ABBA; transition: color .3s var(--ease); }
.pt-switch a:hover { color: var(--ink); }
.pt-switch .pt-on { color: var(--ink); }
.pt-switch .pt-on::after { content: ""; position: absolute; left: 0; right: 0; bottom: -19px; height: 2px; background: var(--ink); }
.pt-switch em { margin-left: 6px; font-family: var(--sans); font-style: normal; font-weight: 500; font-size: 12px; letter-spacing: .06em; color: var(--accent); vertical-align: super; }
.pt-row { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(32px, 5vw, 88px); align-items: center; margin-top: clamp(30px, 3vw, 44px); }
.pt-copy .lead { max-width: 33em; }
.pt-copy .hero-links { margin-top: 28px; }
.pt-art { margin: 0; display: flex; justify-content: flex-end; }
.pt-art .spot { width: auto; max-width: 100%; max-height: clamp(180px, 17vw, 250px); }
.pt-vis { margin-top: clamp(44px, 5vw, 76px); }
.pt-vis:empty { display: none; }
.phero2 .hero-links .go { color: var(--ink); }
.psub-sw { display: flex; gap: 18px; margin-left: 28px; padding-left: 24px; border-left: 1px solid var(--hair-2); }
.psub-sw a { font-size: 13px; color: var(--muted); white-space: nowrap; transition: color .25s; }
.psub-sw a:hover { color: var(--ink); }
@media (max-width: 1180px) { .psub-sw { display: none; } }
@media (max-width: 760px) {
  .pt-row { grid-template-columns: minmax(0, 1fr); }
  .pt-art { justify-content: flex-start; }
  .pt-switch { gap: 22px; }
}

/* 界面片段的组合：主窗口 + 叠放小窗口、上下排列 */
.uistack { position: relative; padding: 0 0 9% 15%; }
.uistack-inset { position: absolute; z-index: 2; left: 0; bottom: 0; width: 25%; filter: drop-shadow(0 18px 36px rgba(14, 40, 65, .16)); }
.uicol { display: grid; gap: 18px; }
.uicol .w60 { width: 64%; margin-left: auto; }
@media (max-width: 760px) {
  .uistack { padding: 0; }
  .uistack-inset { position: static; width: 58%; margin-top: 14px; filter: none; }
  .uicol .w60 { width: 100%; }
}

/* 产品平台总览：产品卡 */
.pcards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.pcard { display: grid; grid-template-rows: auto 1fr; gap: 28px; padding: clamp(26px, 3vw, 40px); border-radius: var(--r-lg); background: var(--mist); box-shadow: inset 0 0 0 1px transparent; transition: box-shadow .35s var(--ease), transform .45s var(--ease); overflow: hidden; }
.pcard:hover { box-shadow: inset 0 0 0 1px var(--hair-2); transform: translateY(-3px); }
.pcard-copy { display: grid; gap: 12px; align-content: start; }
.pcard-name { font-family: var(--serif); font-weight: 700; font-size: clamp(22px, .8vw + 14px, 28px); letter-spacing: .03em; color: var(--ink); }
.pcard-name .tag { margin-left: 10px; font-family: var(--sans); font-style: normal; font-weight: 500; font-size: 12px; color: var(--accent); vertical-align: middle; letter-spacing: .06em; }
.pcard-copy p { font-size: 15.5px; line-height: 1.85; color: var(--text); max-width: 32em; }
.pcard-copy .go { justify-self: start; margin-top: 4px; }
.pcard-vis { min-width: 0; display: grid; align-items: end; }
.pcard-vis .agent-art { max-width: 380px; padding: 12px; }
.pcard-vis .spot { max-height: 230px; width: auto; margin-inline: auto; }
.pcard-vis figure { margin: 0; }
@media (max-width: 900px) { .pcards { grid-template-columns: minmax(0, 1fr); } }
/* 10-15：五款产品时最后一张横跨两列，文字在左、界面在右，避免单独一张占一行 */
@media (min-width: 901px) { .pcards > .pcard:last-child:nth-child(odd) { grid-column: 1 / -1; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); grid-template-rows: none; align-items: center; gap: clamp(28px, 4vw, 56px); } }
.stack.with-art { grid-template-columns: 230px minmax(0, 1fr) 250px; align-items: center; }
.stack-art { margin: 0; }
.stack-art .spot { max-height: 380px; width: auto; max-width: 100%; }
@media (max-width: 1100px) { .stack.with-art { grid-template-columns: minmax(0, 1fr) 250px; } .stack-art { display: none; } }
@media (max-width: 760px) { .stack.with-art { grid-template-columns: minmax(0, 1fr); } }
.agent-art.big { max-width: 640px; padding: 24px; }

/* 数据资产地图：两侧视角卡 */
.vcard { display: grid; gap: 14px; align-content: start; padding: clamp(26px, 3vw, 40px); border-radius: var(--r); background: rgba(255, 255, 255, .035); box-shadow: inset 0 0 0 1px rgba(226, 234, 245, .14); }
.vcard .h3 { font-family: var(--serif); font-weight: 700; font-size: 24px; letter-spacing: .04em; }
.vcard p { font-size: 15.5px; line-height: 1.8; color: var(--text); }
.vlist { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 18px; margin-top: 8px; border-top: 1px solid var(--hair-2); }
.vlist li { padding: 12px 0; border-bottom: 1px solid var(--hair-2); font-size: 15px; color: var(--ink); }
.feat.flip { grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); }
@media (max-width: 900px) { .feat.flip { grid-template-columns: minmax(0, 1fr); } }
.phero2 .hero-crumb, .phero2 .hero-crumb a { color: var(--muted); }
.phero2 .hero-crumb a:hover { color: var(--ink); }
.phero2 .hero-crumb .ic { color: var(--line); }
.pcard-vis { align-items: end; justify-items: center; min-height: 240px; }
.pcard-vis > figure, .pcard-vis > .agent-art { width: 100%; max-width: 520px; }

/* ---------------------------------------------------------------- 应用案例（第二版） */
.cfeat { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); border-radius: var(--r-lg); overflow: hidden; background: var(--deep); color: #FFFFFF; transition: transform .45s var(--ease); }
.cfeat:hover { transform: translateY(-3px); }
.cfeat-img { position: relative; min-height: 360px; }
.cfeat-img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cfeat-copy { display: grid; gap: 12px; align-content: center; padding: clamp(28px, 4vw, 56px); --ink: #F3F6FB; --text: #D3DDEA; --muted: #A3B2C6; }
.cfeat-tag { font-size: 13px; letter-spacing: .08em; color: #8EBDEB; }
.cfeat-copy h3 { font-size: clamp(26px, 1.4vw + 14px, 36px); color: #FFFFFF; letter-spacing: .04em; }
.cfeat-sub { font-size: 17px; color: #E6EDF7; }
.cfeat-lead { font-size: 15px; line-height: 1.85; color: #C3CFDF; max-width: 34em; }
.cf-ms { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 12px 0 8px; border-top: 1px solid rgba(255, 255, 255, .18); }
.cf-m { padding: 16px 14px 0 0; }
.cf-m + .cf-m { padding-left: 14px; border-left: 1px solid rgba(255, 255, 255, .12); }
.cf-m b { display: block; font-size: clamp(22px, 1vw + 12px, 30px); font-weight: 500; color: #FFFFFF; font-variant-numeric: tabular-nums; }
.cf-m b small { font-size: .45em; margin-left: 4px; }
.cf-m span { display: block; margin-top: 4px; font-size: 13px; color: #A3B2C6; }
.cfeat .go { justify-self: start; color: #FFFFFF; }
@media (max-width: 900px) { .cfeat { grid-template-columns: minmax(0, 1fr); } .cfeat-img { min-height: 220px; } }
.chero-tag { display: flex; align-items: center; gap: 10px; margin-top: 18px; font-size: 14px; letter-spacing: .06em; color: #8EBDEB; --iso-ln: #E6EDF7; --iso0: rgba(255,255,255,.04); --iso1: rgba(255,255,255,.1); --iso2: rgba(255,255,255,.06); --iso3: rgba(255,255,255,.02); --isoa: rgba(142,189,235,.3); }
.chero-sub { margin-top: 10px; font-size: clamp(18px, .6vw + 13px, 22px); color: #E6EDF7; letter-spacing: .02em; }
.chero h1 { margin-top: 14px; }
.cfigs { display: grid; gap: 24px; min-width: 0; }
.cmeta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 40px; padding-top: 32px; border-top: 1px solid var(--hair); }
.cmeta .h3 { font-size: 15px; font-weight: 600; color: var(--muted); letter-spacing: .06em; margin-bottom: 14px; }
.ccaps a { display: inline-flex; align-items: center; gap: 6px; padding: 7px 10px 7px 12px; border-radius: 4px; box-shadow: inset 0 0 0 1px var(--hair-2); font-size: 14px; color: var(--link); transition: box-shadow .25s, color .25s; }
.ccaps a .ic { width: 14px; height: 14px; }
.ccaps a:hover { box-shadow: inset 0 0 0 1px var(--link); }
.cpn { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; border-top: 1px solid var(--hair); }
.cpn a { display: grid; gap: 6px; padding: 26px 0; }
.cpn a + a { text-align: right; }
.cpn span { font-size: 13px; color: var(--muted); letter-spacing: .06em; }
.cpn b { font-size: 16px; font-weight: 500; color: var(--ink); line-height: 1.6; transition: color .25s; }
.cpn a:hover b { color: var(--link); }
@media (max-width: 760px) { .cmeta, .cpn { grid-template-columns: minmax(0, 1fr); } .cpn a + a { text-align: left; } }
.go.submit { justify-self: start; font-size: 17px; }
.client.join { background: transparent; box-shadow: inset 0 0 0 1px var(--hair-2); }
.client.join .join-t { display: inline-flex; align-items: center; gap: 10px; font-size: 16px; font-weight: 500; color: var(--ink); letter-spacing: .04em; }
.client.join .join-t .ic { position: static; width: 20px; height: 20px; opacity: 1; transform: none; color: var(--accent); }
.client.join:hover .join-t { color: var(--link); }
.story-head .srule { margin-bottom: clamp(22px, 2.6vw, 36px); }

/* 首屏下方的合作伙伴标识带 */
.logoband { background: var(--paper); border-bottom: 1px solid var(--hair); }
.logoband-in { display: flex; align-items: center; gap: clamp(20px, 3vw, 48px); min-height: 104px; padding-block: 18px; }
.logoband-t { flex: none; font-size: 13px; letter-spacing: .12em; color: var(--muted); }
.logoband-row { flex: 1; min-width: 0; display: flex; align-items: center; justify-content: space-between; gap: clamp(16px, 2vw, 32px); overflow-x: auto; scrollbar-width: none; }
.logoband-row::-webkit-scrollbar { display: none; }
.logoband-row a, .logoband-row span { flex: none; display: grid; place-items: center; height: 56px; transition: transform .4s var(--ease), opacity .3s; }
.logoband-row img { max-height: 38px; max-width: 116px; width: auto; height: auto; }
.logoband-row a:hover { transform: translateY(-2px); }
.logoband .lnk { flex: none; }
@media (max-width: 760px) { .logoband-in { flex-wrap: wrap; } .logoband-row { flex-basis: 100%; order: 2; justify-content: flex-start; } }

/* ---------------------------------------------------------------- 整幅图片带与配图卡片 */
.band { position: relative; display: grid; align-items: end; min-height: clamp(380px, 40vw, 600px); overflow: hidden; background: var(--deep); isolation: isolate; }
.band picture, .band img { position: absolute; inset: 0; width: 100%; height: 100%; }
.band img { object-fit: cover; transform: scale(1.08); transition: transform 2.8s var(--ease); }
.band.on img { transform: scale(1); }
.band::after { content: ""; position: absolute; inset: 0; z-index: 0; background: linear-gradient(0deg, rgba(8, 24, 42, .82) 0%, rgba(8, 24, 42, .38) 46%, rgba(8, 24, 42, .08) 100%); }
.band-in { position: relative; z-index: 1; padding-block: clamp(40px, 5vw, 76px); }
.band-t { max-width: 19em; font-family: var(--serif); font-weight: 700; font-size: clamp(26px, 1.9vw + 12px, 44px); line-height: 1.4; letter-spacing: .03em; color: #FFFFFF; text-wrap: balance; }
.band-c { max-width: 36em; margin-top: 16px; font-size: 16px; line-height: 1.8; color: rgba(236, 242, 250, .82); }
.scards { display: grid; grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr)); gap: 20px; }
.scard { display: grid; grid-template-rows: auto 1fr; border-radius: var(--r); overflow: hidden; background: var(--paper); box-shadow: inset 0 0 0 1px var(--hair); }
.tone-mist .scard { background: #FFFFFF; }
.scard .photo { width: 100%; height: auto; object-fit: cover; display: block; transition: transform 1.2s var(--ease); }
.scard:hover .photo { transform: scale(1.03); }
.scard-b { display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 4px 12px; align-content: start; padding: 22px 22px 26px; }
.scard-b .iso { grid-row: span 2; margin-top: 1px; }
.scard-b h3 { font-size: 17px; font-weight: 600; color: var(--ink); }
.scard-b p { font-size: 15px; line-height: 1.75; color: var(--muted); }
@media (max-width: 980px) { .scards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .scards { grid-template-columns: minmax(0, 1fr); } }
.ind-gal { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; margin-top: clamp(28px, 3vw, 40px); }
.ind-gal figure { margin: 0; display: grid; gap: 12px; }
.ind-gal .photo { width: 100%; height: auto; object-fit: cover; border-radius: var(--r); display: block; }
.ind-gal figcaption b { display: block; font-size: 15.5px; font-weight: 600; color: var(--ink); }
.ind-gal figcaption span { display: block; margin-top: 4px; font-size: 14.5px; line-height: 1.7; color: var(--muted); }
@media (max-width: 620px) { .ind-gal { grid-template-columns: minmax(0, 1fr); } }
.hd-cta { white-space: nowrap; }
@media (max-width: 420px) { .hd-cta { font-size: 13px; padding-left: 12px; } .hd-cta .ic { display: none; } }
/* 手机上界面片段太小：给片段一个最小显示宽度，横向滑动查看 */
.uiview.pan { aspect-ratio: auto; overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
.uiview.pan .uiscale .uix { pointer-events: auto; }
.scard-b > svg:first-child { grid-row: span 2; width: 26px; height: 26px; margin-top: 1px; }
.scard-b > svg.ic { stroke-width: 1.5; color: var(--ink); }

/* ---------------------------------------------------------------- 关于我们首屏：品牌飘带动态图形 */
.ribbon-art { display: block; width: 100%; height: auto; max-width: 100%; overflow: visible; }
.hero-art-fig .ribbon-art { opacity: 0; transform: translateY(14px); transition: opacity 1.6s var(--ease) .3s, transform 1.8s var(--ease) .3s; }
.ready .hero-art-fig .ribbon-art { opacity: 1; transform: none; }
.ind-body.noart { grid-template-columns: minmax(0, 1fr); }
@media (max-width: 980px) { .ind-body .pairs[style*="--cols:4"] { --cols: 2 !important; } }
@media (max-width: 560px) { .ind-body .pairs[style*="--cols:4"] { --cols: 1 !important; } }
/* 行业面板里的分步三维：跳出版心铺满整屏宽 */
.ind .story { width: 100vw; margin-left: calc(50% - 50vw); margin-top: clamp(40px, 5vw, 72px); }
.ind .story .story-head { min-height: 52vh; }
.client-desc { margin-top: -6px; font-size: 13.5px; line-height: 1.7; color: var(--muted); }
.client { grid-template-rows: auto auto 1fr; }   /* 标识区固定高度在上，名称行在同一行卡片里对齐，介绍多出的高度留在底部（10-11 六家时介绍行数不同） */
.client-logo img { max-height: 64px; }
/* 三维分步叙事：前景文字层不挡住后景上的风格切换与画面，只有卡片接收鼠标 */
.story-fg { pointer-events: none; }
.story-fg .story-card, .story-fg .story-head { pointer-events: auto; }
.story-ui { z-index: 4; }

/* ---------------------------------------------------------------- 写实图背景卡与底色卡 */
.icards { display: grid; grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr)); gap: 16px; }
.icard { position: relative; display: grid; align-items: end; min-height: clamp(300px, 26vw, 400px); border-radius: var(--r); overflow: hidden; background: var(--deep); isolation: isolate;
  --ink: #F3F6FB; --text: #D3DDEA; --iso-ln: #E6EDF7; --iso0: rgba(255,255,255,.05); --iso1: rgba(255,255,255,.12); --iso2: rgba(255,255,255,.07); --iso3: rgba(255,255,255,.03); --isoa: rgba(142,189,235,.35); --accent: #8EBDEB; }
.icard-bg { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; transform: scale(1.03); transition: transform 1.4s var(--ease); }
.icard::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(0deg, rgba(8, 24, 42, .92) 0%, rgba(8, 24, 42, .62) 42%, rgba(8, 24, 42, .12) 100%); }
.icard:hover .icard-bg { transform: scale(1.07); }
.icard-in { display: grid; gap: 10px; padding: clamp(22px, 2.2vw, 30px); }
.icard-in h3 { font-size: 18px; font-weight: 600; color: #FFFFFF; letter-spacing: .02em; }
.icard-in p { font-size: 14.5px; line-height: 1.75; color: rgba(236, 242, 250, .84); }
.tcards { display: grid; grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr)); gap: 16px; }
.tcard { position: relative; border-radius: var(--r); overflow: hidden; background: var(--paper); box-shadow: inset 0 0 0 1px var(--hair); isolation: isolate; }
.tcard-bg { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; opacity: .42; filter: saturate(.85); transition: opacity .8s var(--ease), transform 1.4s var(--ease); }
.tcard::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(255, 255, 255, .18) 0%, rgba(255, 255, 255, .78) 46%, rgba(255, 255, 255, .96) 72%, #FFFFFF 100%); }
.tone-mist .tcard::after { background: linear-gradient(180deg, rgba(244, 247, 251, .16) 0%, rgba(244, 247, 251, .78) 46%, rgba(244, 247, 251, .96) 72%, #F4F7FB 100%); }
.tcard:hover .tcard-bg { opacity: .55; transform: scale(1.04); }
.tcard-in { display: grid; gap: 10px; align-content: end; min-height: 280px; padding: clamp(24px, 2.4vw, 32px); }
.tcard-in .iso { margin-bottom: 8px; }
.tcard-in h3 { font-size: 18px; font-weight: 600; color: var(--ink); }
.tcard-in p { font-size: 15px; line-height: 1.8; color: var(--text); }
@media (max-width: 980px) { .icards, .tcards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .icards, .tcards { grid-template-columns: minmax(0, 1fr); } .icard { min-height: 280px; } }
/* 行业面板：三维静帧（浅色画面，文字放左侧留白处） */
.ind-hero.is3d { background: linear-gradient(180deg, #F4F7FB 0%, #FFFFFF 100%); box-shadow: inset 0 0 0 1px var(--hair); }
.ind-hero.is3d::after { display: none; }
.ind-hero.is3d .still { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 62% 50%; }
.ind-hero.is3d .ind-cap { max-width: min(26em, 40%); top: 50%; bottom: auto; transform: translateY(-50%); }
.ind-hero.is3d .ind-cap h3 { color: var(--ink); }
.ind-hero.is3d .ind-cap p { color: var(--text); }
.ind-gal.is3d .still { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; border-radius: var(--r); background: linear-gradient(180deg, #F4F7FB, #FFFFFF); box-shadow: inset 0 0 0 1px var(--hair); display: block; }
@media (max-width: 760px) {
  .ind-hero.is3d { min-height: 0; aspect-ratio: auto; display: grid; }
  .ind-hero.is3d .still { position: relative; aspect-ratio: 16 / 9; height: auto; }
  .ind-hero.is3d .ind-cap { position: relative; transform: none; top: auto; left: auto; right: auto; max-width: none; padding: 20px; }
}
.ind-hero.is3d { aspect-ratio: 2 / 1; }
.ind-hero.is3d .still { object-position: 62% 64%; }
.ind-gal.is3d .still { aspect-ratio: 4 / 3; object-position: 88% 55%; }

/* 两个下拉面板之间切换时直接换内容，不做收起再展开 */
.fly-swap .fly, .fly-swap .fly.open { transition: none; }
.fly-swap .fly.open .fly-in > * { transition: opacity .25s ease; transform: none; transition-delay: 0s; }

/* ---------------------------------------------------------------- 第三轮：区块过渡、页尾预约、标注防抖 */
.sec.tone-mist { background: linear-gradient(180deg, var(--paper) 0, var(--mist) 160px, var(--mist) calc(100% - 160px), var(--paper) 100%); }
.sec.tone-deep { background: var(--paper); padding-block: clamp(20px, 2.4vw, 40px); }
.sec.tone-deep > .wrap { background: var(--deep); border-radius: 28px; padding: calc(var(--sec) * .78) clamp(28px, 4.6vw, 80px); max-width: calc(var(--max) + 2 * clamp(28px, 4.6vw, 80px)); box-shadow: 0 40px 90px -60px rgba(8, 24, 42, .6); }
@media (max-width: 760px) { .sec.tone-deep > .wrap { border-radius: 20px; margin-inline: 12px; padding-inline: 22px; } }
.book { padding-block: clamp(48px, 5vw, 80px); background: var(--paper); }
.book-in { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px 28px; padding: clamp(26px, 3vw, 40px) 0; border-top: 1px solid var(--hair-2); border-bottom: 1px solid var(--hair-2); color: var(--ink); }
.book-t { font-family: var(--serif); font-weight: 700; font-size: clamp(26px, 1.6vw + 12px, 38px); letter-spacing: .04em; }
.book-d { font-size: 15px; color: var(--muted); letter-spacing: .04em; }
.book-in .ic { width: 30px; height: 30px; stroke-width: 1.3; transition: transform .45s var(--ease); }
.book-in:hover .ic { transform: translateX(8px); }
.book-in:hover .book-t { color: var(--link); }
@media (max-width: 560px) { .book-in { grid-template-columns: minmax(0, 1fr) auto; } .book-d { grid-column: 1 / -1; grid-row: 2; } }
.story-tag { will-change: transform; }
.story-tag em { display: inline-block; min-width: 3.1em; text-align: right; font-variant-numeric: tabular-nums; }
/* 首页公司概况：正文式介绍与“源网荷储”愿景条 */
.intro-text { font-family: var(--serif); font-weight: 700; font-size: clamp(22px, 1.3vw + 11px, 32px); line-height: 1.75; letter-spacing: .02em; color: var(--ink); max-width: 27em; }
.vision { display: flex; align-items: center; gap: clamp(10px, 1.6vw, 22px); margin-top: clamp(40px, 4vw, 64px); padding: clamp(22px, 2.4vw, 30px) clamp(22px, 3vw, 40px); border-radius: var(--r); background: linear-gradient(90deg, var(--mist), #FFFFFF); box-shadow: inset 0 0 0 1px var(--hair); }
.vision span { display: grid; place-items: center; width: clamp(44px, 4vw, 60px); height: clamp(44px, 4vw, 60px); border-radius: 50%; background: #FFFFFF; box-shadow: inset 0 0 0 1.5px var(--blue); font-family: var(--serif); font-weight: 700; font-size: clamp(18px, 1vw + 10px, 24px); color: var(--navy); }
.vision i { flex: 1; height: 2px; max-width: 160px; background: linear-gradient(90deg, var(--blue), var(--sky)); transform: scaleX(0); transform-origin: left; transition: transform 1.2s var(--ease-io); }
.vision.on i { transform: scaleX(1); }
.vision.on i:nth-of-type(2) { transition-delay: .25s; } .vision.on i:nth-of-type(3) { transition-delay: .5s; }
.vision em { margin-left: auto; font-style: normal; font-size: 15px; letter-spacing: .2em; color: var(--muted); }
@media (max-width: 560px) { .vision em { display: none; } }
.chart .c-key-line { stroke: var(--navy); stroke-width: 2; stroke-dasharray: 6 4; }

/* 能源OS：操作系统式的分层图 */
.os-stack { display: grid; grid-template-columns: minmax(0, 1fr) 260px; gap: 20px; margin-top: clamp(40px, 4vw, 64px); }
.os-rows { display: grid; gap: 10px; }
.os-row { display: grid; grid-template-columns: 132px minmax(0, 1fr); align-items: center; gap: 18px; padding: 16px 18px; border-radius: var(--r); background: linear-gradient(90deg, var(--mist), #FFFFFF); box-shadow: inset 0 0 0 1px var(--hair); }
.os-row:first-child { background: linear-gradient(90deg, #E8F0FA, #FFFFFF); }
.os-row:last-child { background: linear-gradient(90deg, #E2EAF5, #F4F7FB); box-shadow: inset 0 0 0 1px var(--hair-2); }
.js .os-row { opacity: .25; transform: translateY(10px); transition: opacity .8s ease calc(var(--i) * .15s), transform 1s var(--ease) calc(var(--i) * .15s); }
.js .os-stack.on .os-row { opacity: 1; transform: none; }
.os-k { font-family: var(--serif); font-size: 18px; color: var(--ink); letter-spacing: .04em; }
.os-cells { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.os-cell { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: var(--r-sm); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); font-size: 14.5px; color: var(--ink); }
.os-side { display: grid; gap: 10px; }
.os-io { display: grid; align-content: center; gap: 6px; padding: 22px 24px; border-radius: var(--r); background: var(--deep); color: #E6EDF7; }
.os-io b { font-family: var(--serif); font-size: clamp(30px, 1.6vw + 16px, 44px); line-height: 1; color: #FFFFFF; letter-spacing: .04em; }
.os-io span { font-size: 14px; line-height: 1.7; color: #A9B8CB; }
@media (max-width: 980px) { .os-stack { grid-template-columns: minmax(0, 1fr); } .os-side { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px) { .os-row { grid-template-columns: minmax(0, 1fr); } .os-cells { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* 能源OS：行业切换条（三维缩略图 + 名称），比普通标签更醒目 */
.ind-switch { gap: 14px; border-bottom: 0; padding-bottom: 4px; }
.ind-switch button { flex: 1; display: grid; grid-template-columns: 112px minmax(0, 1fr); align-items: center; gap: 14px; padding: 10px 16px 10px 10px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); text-align: left; white-space: normal; transition: box-shadow .3s var(--ease), transform .4s var(--ease); }
.ind-switch button::after { display: none; }
.ind-switch button[aria-selected="true"] { box-shadow: inset 0 0 0 2px var(--navy), 0 18px 40px -28px rgba(14, 40, 65, .45); transform: translateY(-2px); }
.ind-switch button:hover { box-shadow: inset 0 0 0 1px var(--navy); }
.ind-thumb { width: 112px; aspect-ratio: 16 / 9; object-fit: cover; object-position: 66% 55%; border-radius: var(--r-sm); background: var(--mist); }
.ind-tab-t b { display: block; font-family: var(--serif); font-size: 21px; color: var(--ink); letter-spacing: .06em; }
.ind-tab-t em { display: block; margin-top: 4px; font-style: normal; font-size: 13px; line-height: 1.5; color: var(--muted); }
@media (max-width: 860px) { .ind-switch button { grid-template-columns: minmax(0, 1fr); } .ind-thumb { width: 100%; } .ind-tab-t em { display: none; } }
.ov-panel .frame { margin: 0; }

/* 产品平台：决策引擎结构图 */
.eng { position: relative; }
.eng-cols { display: grid; grid-template-columns: repeat(var(--n, 6), minmax(0, 1fr)); gap: 12px; }
.eng-col { position: relative; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair-2); padding: 14px 12px 12px; }
.eng-col:not(:last-child)::after { content: ""; position: absolute; right: -11px; top: 30px; width: 10px; height: 10px; border-top: 1.5px solid var(--accent); border-right: 1.5px solid var(--accent); transform: rotate(45deg); }
.js .eng-col { opacity: .2; transform: translateY(8px); transition: opacity .7s ease calc(var(--i) * .12s), transform .9s var(--ease) calc(var(--i) * .12s); }
.js .eng.on .eng-col { opacity: 1; transform: none; }
.eng-h { display: flex; align-items: center; gap: 8px; padding-bottom: 10px; margin-bottom: 10px; border-bottom: 1px solid var(--hair); }
.eng-h b { font-family: var(--serif); font-size: 16px; color: var(--ink); letter-spacing: .04em; }
.eng-col ul { display: grid; gap: 6px; }
.eng-col li { padding: 8px 10px; border-radius: var(--r-xs); background: var(--mist); font-size: 13.5px; color: var(--ink); line-height: 1.45; }
.eng-col:nth-child(3) li, .eng-col:nth-child(5) li { background: var(--tint); }
.eng-loop { position: relative; display: flex; align-items: center; justify-content: center; height: 46px; margin: 6px 4% 0; }
.eng-loop i { position: absolute; left: 0; right: 0; top: 50%; height: 22px; margin-top: -22px; border: 1.5px dashed var(--accent); border-top: 0; border-radius: 0 0 14px 14px; }
.eng-loop span { position: relative; padding: 2px 12px; background: var(--bg); font-size: 13px; color: var(--muted); letter-spacing: .04em; }
.eng-base { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; margin-top: 8px; padding: 14px 18px; border-radius: var(--r); background: var(--deep); color: #E6EDF7; }
.eng-base b { font-family: var(--serif); margin-right: 8px; letter-spacing: .06em; }
.eng-base span { padding: 4px 10px; border-radius: var(--r-xs); background: rgba(255, 255, 255, .08); font-size: 13.5px; }
@media (max-width: 1100px) { .eng-cols { grid-template-columns: repeat(3, minmax(0, 1fr)); } .eng-col:nth-child(3)::after { display: none; } }
@media (max-width: 620px) { .eng-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); } .eng-col::after { display: none; } }
/* 电价预测建模：特征 → 模型组 → 输出 */
.pm { display: grid; grid-template-columns: minmax(0, 1fr) 28px minmax(0, 1fr) 28px minmax(0, 1fr); align-items: stretch; margin-top: 40px; }
.pm-col { display: grid; gap: 8px; align-content: start; padding: 16px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair-2); }
.pm-col.m { background: linear-gradient(180deg, var(--tint), #FFFFFF); }
.pm-col.o { background: var(--deep); --ink: #F3F6FB; --muted: #A9B8CB; }
.pm-t { font-family: var(--serif); font-size: 17px; color: var(--ink); padding-bottom: 6px; letter-spacing: .06em; }
.pm-b { display: grid; gap: 2px; padding: 10px 12px; border-radius: var(--r-xs); background: rgba(244, 247, 251, .9); }
.pm-col.o .pm-b { background: rgba(255, 255, 255, .07); }
.pm-b b { font-size: 14.5px; color: var(--ink); }
.pm-b span { font-size: 13px; color: var(--muted); }
.pm-arrow { align-self: center; justify-self: center; width: 12px; height: 12px; border-top: 2px solid var(--accent); border-right: 2px solid var(--accent); transform: rotate(45deg); }
@media (max-width: 860px) { .pm { grid-template-columns: minmax(0, 1fr); gap: 10px; } .pm-arrow { transform: rotate(135deg); } }
/* 部署与数据安全 */
.dm { display: grid; gap: 22px; }
.dm-modes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.dm-mode { display: grid; gap: 8px; padding: 20px 22px; border-radius: var(--r); background: rgba(255, 255, 255, .05); box-shadow: inset 0 0 0 1px rgba(226, 234, 245, .14); }
.dm-mode b { font-size: 17px; color: #FFFFFF; }
.dm-mode p { font-size: 14px; line-height: 1.75; color: #A9B8CB; }
.dm-sec { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.dm-sec li { display: grid; gap: 6px; padding: 16px; border-radius: var(--r-sm); background: rgba(255, 255, 255, .06); }
.dm-sec b { font-size: 15px; color: #FFFFFF; }
.dm-sec span { font-size: 13px; line-height: 1.65; color: #A9B8CB; }
@media (max-width: 980px) { .dm-modes { grid-template-columns: minmax(0, 1fr); } .dm-sec { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* 数据飞轮 */
.fly2 { max-width: 560px; margin-inline: auto; display: block; }
.fly-notes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; border-top: 1px solid var(--hair); }
.fly-notes li { display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 2px 12px; padding: 16px 0; border-bottom: 1px solid var(--hair); }
.fly-notes span { grid-row: span 2; font-size: 13px; font-weight: 600; color: var(--accent); font-variant-numeric: tabular-nums; padding-top: 3px; }
.fly-notes b { font-size: 16px; color: var(--ink); }
.fly-notes p { font-size: 14px; line-height: 1.7; color: var(--muted); }

/* ---------------------------------------------------------------- 产品页第三版：灰色小字切换、页底产品切换、多屏组合 */
.pt-mini { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 24px; font-size: 14px; letter-spacing: .02em; color: var(--muted); }
.pt-mini a { color: var(--muted); transition: color .25s; }
.pt-mini a:hover { color: var(--ink); }
.pt-mini .pt-home { padding-right: 24px; border-right: 1px solid var(--hair-2); }
.pt-mini .pt-on { position: relative; color: var(--ink); font-weight: 600; }
.pt-mini .pt-on::after { content: ""; position: absolute; left: 0; right: 0; bottom: -7px; height: 1.5px; background: var(--ink); }
.pt-h1 { margin-top: clamp(26px, 2.6vw, 38px); font-family: var(--serif); font-weight: 700; font-size: clamp(34px, 2.6vw + 12px, 56px); line-height: 1.18; letter-spacing: .03em; color: var(--ink); text-wrap: balance; }
.pt-h1 .pt-tag { margin-left: 12px; font-family: var(--sans); font-style: normal; font-weight: 500; font-size: 13px; letter-spacing: .06em; color: var(--accent); vertical-align: super; }
.phero2 .pt-row { margin-top: clamp(18px, 2vw, 28px); }
.uiwall { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: clamp(14px, 1.6vw, 22px); align-items: start; }
.uiwall-side { display: grid; gap: clamp(14px, 1.6vw, 22px); }
.uiwall figure { margin: 0; }
@media (max-width: 760px) {
  .uiwall { grid-template-columns: minmax(0, 1fr); }
  .uiwall-side { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .uiwall-side > :nth-child(n+3) { display: none; }
}
.agent-art.light { background: linear-gradient(160deg, #FFFFFF 0%, var(--mist) 100%); box-shadow: inset 0 0 0 1px var(--hair); --ink: #0E2841; --text: #34445A; --muted: #5D6A7C; --hair-2: #D3DCE8; --accent: #639BD3; --field: #FFFFFF; --tint: #EAF1FA; --iso-ln: #0E2841; --iso0: #F6F8FB; --iso1: #FFFFFF; --iso2: #EBF1F8; --iso3: #DCE5F0; --isoa: #CFE1F5; }
.mx-legend { display: flex; flex-wrap: wrap; gap: 8px 26px; margin-top: 18px; font-size: 13.5px; color: var(--muted); }
.mx-legend span { display: inline-flex; align-items: center; gap: 8px; }
.mx-legend i { width: 12px; height: 12px; border-radius: 50%; box-shadow: inset 0 0 0 1.5px var(--accent); }
.mx-legend i.on { background: var(--accent); box-shadow: none; }
.mx-legend i.half { background: linear-gradient(90deg, var(--accent) 50%, transparent 50%); }
.psw { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px; }
.psw-card { position: relative; display: grid; grid-template-rows: auto auto auto 1fr auto; gap: 12px; padding: 26px 24px 24px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); transition: box-shadow .3s var(--ease), transform .45s var(--ease); }
a.psw-card:hover { box-shadow: inset 0 0 0 1px var(--hair-2), 0 16px 34px rgba(14, 40, 65, .08); transform: translateY(-3px); }
.psw-n { font-family: var(--serif); font-weight: 700; font-size: clamp(19px, .5vw + 14px, 22px); letter-spacing: .03em; color: var(--ink); }
.psw-n em { margin-left: 8px; font-family: var(--sans); font-style: normal; font-weight: 500; font-size: 12px; letter-spacing: .06em; color: var(--accent); vertical-align: middle; }
.psw-t { min-height: 3.2em; font-size: 14.5px; line-height: 1.6; color: var(--text); }
.psw-card ul { display: grid; gap: 0; border-top: 1px solid var(--hair); }
.psw-card li { padding: 9px 0; border-bottom: 1px solid var(--hair); font-size: 13.5px; color: var(--ink); }
.psw-go { display: inline-flex; align-items: center; gap: 6px; margin-top: 6px; font-size: 14px; color: var(--link); }
.psw-go .ic { width: 15px; height: 15px; transition: transform .3s var(--ease); }
a.psw-card:hover .psw-go .ic { transform: translateX(3px); }
.psw-card.on { background: var(--tint); box-shadow: inset 0 0 0 1.5px var(--accent); }
.psw-card.on .psw-go { color: var(--muted); }
@media (max-width: 1280px) { .psw { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 1080px) { .psw { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .psw { grid-template-columns: minmax(0, 1fr); } }
/* 图表补充：暖色价格线、负荷增减面积、编号点 */
.chart .c-warm { fill: none; stroke: #D9822B; stroke-width: 2; stroke-linejoin: round; }
.chart .c-thin { stroke-width: 1.5; stroke-dasharray: 4 3; }
.chart .c-warm-t { fill: #C26F1C; font-weight: 600; font-size: 12.5px; }
.chart .c-gain { fill: rgba(99, 155, 211, .38); stroke: none; }
.chart .c-cut { fill: rgba(14, 40, 65, .28); stroke: none; }
.chart .c-pin { fill: var(--navy); }
.chart .c-line-k { stroke: var(--navy); stroke-width: 2.5; }
.chart .c-dash-k { stroke: var(--muted); stroke-width: 1.5; stroke-dasharray: 4 4; }
.chart .c-warm-k { stroke: #D9822B; stroke-width: 2; }

/* ---------------------------------------------------------------- 案例第三版：卡片（图标 + 类别 + 平均指标）、服务对象、详情首屏 */
.ccard { position: relative; display: grid; grid-template-rows: auto 1fr auto; gap: 18px; padding: 24px 24px 22px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); overflow: hidden; transition: box-shadow .35s var(--ease), transform .45s var(--ease); }
.ccard::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px; background: var(--cc, var(--blue)); }
.ccard[data-biz="storage"] { --cc: var(--sky); }
.ccard[data-biz="eos"] { --cc: var(--navy); }
.ccard[data-biz="product"] { --cc: #8FA3BF; }
.ccard:hover { transform: translateY(-3px); box-shadow: inset 0 0 0 1px var(--hair-2), 0 22px 44px -28px rgba(14, 40, 65, .35); }
.cc-head { display: flex; align-items: center; gap: 12px; padding-right: 28px; }
.cc-head .iso { width: 44px; height: 44px; }
.cc-cat { padding: 4px 10px; border-radius: 4px; background: var(--tint); color: var(--link); font-size: 12.5px; letter-spacing: .04em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cc-body { display: grid; gap: 6px; align-content: start; }
.cc-body b { font-size: 18px; font-weight: 600; color: var(--ink); letter-spacing: .01em; }
.cc-body span { font-size: 14.5px; line-height: 1.6; color: var(--muted); }
.cc-ms { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.cc-m { padding: 12px 12px 11px; border-radius: var(--r-sm); background: var(--mist); }
.cc-m strong { display: block; font-size: 21px; font-weight: 600; line-height: 1.2; color: var(--ink); font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.cc-m strong small { display: inline-block; margin-left: 4px; font-size: 12px; font-weight: 500; letter-spacing: 0; color: var(--muted); }
.cc-m span { display: block; margin-top: 4px; font-size: 12.5px; line-height: 1.45; color: var(--muted); }
.ccard .ccard-go { position: absolute; right: 20px; top: 34px; bottom: auto; width: 18px; height: 18px; color: var(--ink); opacity: .3; transition: opacity .3s, transform .45s var(--ease); }
.ccard:hover .ccard-go { opacity: 1; transform: translateX(4px); }
.cgrid.one { grid-template-columns: minmax(0, 560px); }
.cgrid.one .ccard { grid-template-columns: none; grid-template-rows: auto 1fr auto; }
.svcs { display: grid; gap: clamp(28px, 3vw, 44px); }
.svc { position: relative; display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: center; }
.svc-bg { grid-column: 1 / 2; grid-row: 1; border-radius: var(--r-lg); overflow: hidden; aspect-ratio: 16 / 10; background: var(--mist); }
.svc-bg img { width: 100%; height: 100%; object-fit: cover; }
.svc-card { grid-column: 2 / 3; grid-row: 1; position: relative; z-index: 1; margin-left: -18%; display: grid; gap: 12px; align-content: start; padding: clamp(24px, 2.6vw, 36px); border-radius: var(--r); background: #FFFFFF; box-shadow: 0 30px 60px -36px rgba(14, 40, 65, .45), inset 0 0 0 1px var(--hair); }
.svc.flip { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
.svc.flip .svc-bg { grid-column: 2 / 3; }
.svc.flip .svc-card { grid-column: 1 / 2; margin-left: 0; margin-right: -18%; }
.svc-name { font-family: var(--serif); font-weight: 700; font-size: clamp(21px, .7vw + 15px, 26px); letter-spacing: .03em; color: var(--ink); }
.svc-card > p { font-size: 15px; line-height: 1.8; color: var(--text); }
.svc-dl { display: grid; gap: 0; border-top: 1px solid var(--hair); }
.svc-dl div { display: grid; grid-template-columns: 70px minmax(0, 1fr); gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--hair); }
.svc-dl dt { font-size: 13px; color: var(--muted); }
.svc-dl dd { font-size: 14px; line-height: 1.6; color: var(--ink); }
.svc-avg { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 10px; padding: 12px 14px; border-radius: var(--r-sm); background: var(--tint); }
.svc-avg strong { font-size: 26px; font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; }
.svc-avg strong small { margin-left: 4px; font-size: 13px; font-weight: 500; color: var(--muted); }
.svc-avg span { font-size: 13.5px; color: var(--text); }
.svc-links { display: grid; gap: 0; }
.svc-links a { display: grid; grid-template-columns: 30px minmax(0, 1fr) 16px; align-items: center; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--hair); transition: color .25s; }
.svc-links a span { display: grid; gap: 1px; min-width: 0; }
.svc-links a b { font-size: 14px; font-weight: 600; color: var(--ink); }
.svc-links a em { font-style: normal; font-size: 12.5px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.svc-links a .ic { width: 14px; height: 14px; color: var(--muted); transition: transform .3s var(--ease); }
.svc-links a:hover .ic { transform: translateX(3px); color: var(--ink); }
.svc-more { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; color: var(--link); }
.svc-more .ic { width: 15px; height: 15px; }
@media (max-width: 900px) {
  .svc, .svc.flip { grid-template-columns: minmax(0, 1fr); }
  .svc-bg, .svc.flip .svc-bg { grid-column: 1; grid-row: 1; aspect-ratio: 16 / 9; }
  .svc-card, .svc.flip .svc-card { grid-column: 1; grid-row: 2; margin: -48px 14px 0; }
}
.chero-bg { display: none; }
.chero { background: radial-gradient(120% 140% at 88% 30%, #1B3B60 0%, #0B2036 55%, #081829 100%); }
.chero::after { display: none; }
.chero-art { position: absolute; right: max(4vw, calc((100vw - var(--max)) / 2 - 40px)); top: calc(var(--hd) + 36px); width: clamp(160px, 18vw, 260px); opacity: .5; pointer-events: none; --iso-ln: #CFE1F5; --iso0: rgba(255,255,255,.03); --iso1: rgba(142,189,235,.14); --iso2: rgba(255,255,255,.06); --iso3: rgba(255,255,255,.02); --isoa: rgba(142,189,235,.32); }
.chero-art .iso { width: 100%; height: auto; }
@media (max-width: 900px) { .chero-art { display: none; } }
.cfigs-wide { display: grid; gap: 28px; margin-top: clamp(32px, 3vw, 48px); }
.cfigs { display: grid; gap: 24px; }
.cols.c3 { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 2vw, 28px); }
@media (max-width: 900px) { .cols.c3 { grid-template-columns: minmax(0, 1fr); } }
.uistack.wide-inset .uistack-inset { width: 42%; }
/* 交易托管结构 */
.hm { display: grid; grid-template-columns: minmax(0, 3fr) 28px minmax(0, 5fr) 28px minmax(0, 4fr); align-items: stretch; }
.hm-t { display: block; margin-bottom: 12px; font-family: var(--serif); font-size: 16px; letter-spacing: .04em; color: var(--ink); }
.hm-in, .hm-core, .hm-steps { padding: 18px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair-2); }
.hm-in ul { display: grid; gap: 8px; }
.hm-in li { padding: 10px 12px; border-radius: var(--r-xs); background: var(--mist); font-size: 14px; color: var(--ink); }
.hm-core { background: linear-gradient(180deg, #FFFFFF, var(--tint)); }
.hm-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.hm-c { display: grid; gap: 4px; padding: 14px; border-radius: var(--r-sm); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.hm-c b { font-size: 15px; color: var(--ink); }
.hm-c span { font-size: 13px; line-height: 1.55; color: var(--muted); }
.hm-rule { margin-top: 10px; padding: 10px 12px; border-radius: var(--r-xs); background: var(--deep); color: #E6EDF7; font-size: 13px; line-height: 1.6; }
.hm-steps ol { display: grid; gap: 0; }
.hm-steps li { display: grid; grid-template-columns: 46px minmax(0, 1fr); column-gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--hair); }
.hm-steps li em { grid-row: span 2; align-self: start; padding: 3px 0; border-radius: 4px; background: var(--tint); color: var(--link); font-style: normal; font-size: 12.5px; font-weight: 600; text-align: center; }
.hm-steps li b { font-size: 14.5px; color: var(--ink); }
.hm-steps li span { font-size: 13px; line-height: 1.55; color: var(--muted); }
.hm-back { margin-top: 10px; font-size: 13px; color: var(--link); }
.hm-back::before { content: "↺ "; }
.hm-name { font-family: var(--serif); }
@media (max-width: 1000px) { .hm { grid-template-columns: minmax(0, 1fr); gap: 10px; } .hm .pm-arrow { transform: rotate(135deg); } }

/* ---------------------------------------------------------------- 能源OS 第三版：架构、能源与OS、两种范式、两级排产、节律、实施、时间尺度 */
.ea { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 18px; }
.ea-t { margin-bottom: 14px; font-family: var(--serif); font-weight: 700; font-size: 17px; letter-spacing: .04em; color: var(--ink); }
.ea-l, .ea-r { padding: clamp(18px, 2vw, 26px); border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair-2); }
.ea-rows { display: grid; gap: 22px; }
.ea-row { position: relative; display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: center; gap: 12px; }
.ea-row + .ea-row::before { content: ""; position: absolute; left: calc(76px + 12px + 50%); top: -18px; width: 10px; height: 10px; margin-left: -5px; border-top: 1.5px solid var(--accent); border-left: 1.5px solid var(--accent); transform: rotate(45deg); }
.ea-k { font-size: 13.5px; color: var(--muted); letter-spacing: .06em; }
.ea-cells { display: grid; grid-template-columns: repeat(var(--n), minmax(0, 1fr)); gap: 8px; }
.ea-cell { display: flex; align-items: center; gap: 8px; min-height: 48px; padding: 8px 12px; border-radius: var(--r-sm); background: var(--mist); font-size: 14px; color: var(--ink); }
.ea-cell .iso { width: 26px; height: 26px; }
.ea-agents .ea-cell { background: var(--tint); }
.ea-engines .ea-cell { background: #E2ECF8; font-weight: 500; }
.ea-base .ea-cell { background: var(--deep); color: #E6EDF7; --iso-ln: #E6EDF7; --iso0: rgba(255,255,255,.04); --iso1: rgba(255,255,255,.12); --iso2: rgba(255,255,255,.06); --iso3: rgba(255,255,255,.02); --isoa: rgba(142,189,235,.35); }
.ea-mods { display: grid; gap: 0; counter-reset: em; }
.ea-mods li { display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--hair); }
.ea-mods li .iso { width: 26px; height: 26px; }
.ea-mods b { font-size: 14.5px; font-weight: 500; color: var(--ink); }
.ea-mods em { font-style: normal; padding: 2px 8px; border-radius: 4px; background: #FBEBDD; color: #B25E14; font-size: 12px; white-space: nowrap; }
.ea-vision { grid-column: 1 / -1; padding: 12px 16px; border-radius: var(--r-sm); background: var(--tint); text-align: center; font-size: 14.5px; color: var(--ink); letter-spacing: .04em; }
@media (max-width: 960px) { .ea { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 560px) { .ea-row { grid-template-columns: minmax(0, 1fr); } .ea-row + .ea-row::before { left: 50%; } .ea-cells { grid-template-columns: minmax(0, 1fr); } }
.ew { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; margin-bottom: 18px; }
.ew-c { position: relative; overflow: hidden; display: grid; gap: 12px; align-content: start; padding: clamp(22px, 2.6vw, 34px); border-radius: var(--r); }
.ew-c b { font-family: var(--serif); font-weight: 700; font-size: clamp(34px, 2.4vw + 14px, 52px); line-height: 1; letter-spacing: .04em; }
.ew-c p { font-size: 15px; line-height: 1.85; max-width: 34em; }
.ew-c ul { display: flex; flex-wrap: wrap; gap: 8px; }
.ew-c li { padding: 5px 12px; border-radius: 4px; font-size: 13.5px; }
.ew-e { background: linear-gradient(135deg, #E9F2FC 0%, #F7FAFE 100%); box-shadow: inset 0 0 0 1px var(--hair); }
.ew-e b { color: var(--blue); } .ew-e p { color: var(--text); } .ew-e li { background: #FFFFFF; color: var(--ink); box-shadow: inset 0 0 0 1px var(--hair); }
.ew-o { background: linear-gradient(135deg, #0E2841 0%, #173A5E 100%); color: #E6EDF7; }
.ew-o b { color: #FFFFFF; } .ew-o p { color: rgba(230, 237, 247, .86); } .ew-o li { background: rgba(255, 255, 255, .1); color: #FFFFFF; }
@media (max-width: 760px) { .ew { grid-template-columns: minmax(0, 1fr); } }
.pd { display: grid; gap: 14px; }
.pd-k { display: none; }
.pd-cols { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.pd-col { display: grid; grid-template-rows: auto auto auto; gap: 8px; }
.pd-a, .pd-b { display: grid; gap: 4px; padding: 14px; border-radius: var(--r-sm); }
.pd-a { background: var(--mist); box-shadow: inset 0 0 0 1px var(--hair); }
.pd-a b { font-size: 14.5px; color: var(--muted); } .pd-a span { font-size: 13px; color: var(--muted); line-height: 1.55; }
.pd-b { background: var(--deep); }
.pd-b b { font-size: 14.5px; color: #FFFFFF; } .pd-b span { font-size: 13px; color: rgba(230, 237, 247, .82); line-height: 1.55; }
.pd-x { position: relative; padding: 4px 0 4px 18px; font-size: 12.5px; line-height: 1.5; color: #B25E14; }
.pd-x::before { content: ""; position: absolute; left: 4px; top: 4px; bottom: 4px; width: 2px; background: #E3A464; }
.pd-x::after { content: ""; position: absolute; left: 1px; bottom: 0; border: 4px solid transparent; border-top: 6px solid #E3A464; }
.pd-c { padding: 12px 16px; border-radius: var(--r-sm); background: var(--tint); font-size: 14.5px; color: var(--ink); }
@media (max-width: 900px) { .pd-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 520px) { .pd-cols { grid-template-columns: minmax(0, 1fr); } }
.tl { display: grid; gap: 14px; }
.tl-top { padding: 12px 16px; border-radius: var(--r-sm); background: var(--deep); color: #E6EDF7; font-size: 14.5px; letter-spacing: .03em; text-align: center; }
.tl-two { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 220px) minmax(0, 1fr); gap: 14px; align-items: stretch; }
.tl-box { display: grid; gap: 10px; align-content: start; padding: 18px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1.5px var(--tlc, var(--blue)); }
.tl-id { --tlc: #D9822B; }
.tl-h { display: grid; gap: 4px; }
.tl-h b { font-family: var(--serif); font-size: 18px; color: var(--ink); letter-spacing: .04em; }
.tl-h em { font-style: normal; font-size: 13px; color: var(--tlc, var(--blue)); }
.tl-n { font-size: 13.5px; color: var(--muted); }
.tl-io { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 8px; }
.tl-io > span, .tl-out > span { font-size: 12.5px; color: var(--muted); padding-top: 4px; }
.tl-io ul { display: flex; flex-wrap: wrap; gap: 6px; }
.tl-io li { padding: 4px 9px; border-radius: 4px; background: var(--mist); font-size: 12.5px; color: var(--ink); }
.tl-out { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 8px; padding: 10px 12px; border-radius: var(--r-sm); background: var(--tint); }
.tl-out b { font-size: 14px; color: var(--ink); }
.tl-id .tl-out { background: #FBEBDD; }
.tl-mid { display: grid; align-content: center; gap: 6px; padding: 12px; border-radius: var(--r); background: var(--mist); text-align: center; }
.tl-mid span { font-size: 12.5px; color: var(--muted); }
.tl-days, .tl-hours { display: flex; align-items: flex-end; justify-content: center; gap: 3px; height: 64px; }
.tl-days i { width: 14px; height: var(--h); border-radius: 2px; background: #B9CDE6; }
.tl-days i.on { background: var(--blue); }
.tl-hours i { width: 5px; height: var(--h); border-radius: 1px; background: #E8B07A; }
.tl-lib { padding: 16px 18px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair-2); }
.tl-lt { margin-bottom: 12px; font-size: 14px; color: var(--muted); letter-spacing: .04em; }
.tl-ress { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; }
.tl-res { display: grid; gap: 4px; justify-items: start; padding: 12px; border-radius: var(--r-sm); background: var(--mist); }
.tl-res .iso { width: 30px; height: 30px; }
.tl-res b { font-size: 14px; color: var(--ink); } .tl-res span { font-size: 12.5px; color: var(--muted); }
@media (max-width: 1000px) { .tl-two { grid-template-columns: minmax(0, 1fr); } .tl-ress { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 520px) { .tl-ress { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.rh { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 18px; }
.rh-l, .rh-r { padding: clamp(18px, 2vw, 26px); border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair-2); }
.rh-k { margin-bottom: 12px; font-family: var(--serif); font-weight: 700; font-size: 16px; letter-spacing: .04em; color: var(--ink); }
.rh-sys { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 6px; }
.rh-sys span { padding: 8px 6px; border-radius: 4px; background: var(--mist); text-align: center; font-size: 13px; color: var(--ink); }
.rh-down { display: block; width: 12px; height: 12px; margin: 8px auto; border-right: 2px solid var(--accent); border-bottom: 2px solid var(--accent); transform: rotate(45deg); }
.rh-base { padding: 10px 14px; border-radius: var(--r-sm); background: var(--deep); color: #E6EDF7; font-size: 13.5px; text-align: center; }
.rh-steps { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; }
.rh-steps li { position: relative; display: grid; gap: 4px; padding: 10px; border-radius: var(--r-sm); background: var(--tint); }
.rh-steps em { font-style: normal; font-size: 12.5px; font-weight: 600; color: var(--link); }
.rh-steps b { font-size: 13.5px; font-weight: 500; color: var(--ink); }
.rh-plan { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin-top: 14px; padding: 10px 14px; border-radius: var(--r-sm); background: #FBEBDD; }
.rh-plan b { margin-right: 6px; font-size: 13.5px; color: #8A4A12; }
.rh-plan span { padding: 3px 9px; border-radius: 4px; background: #FFFFFF; font-size: 12.5px; color: var(--ink); }
.rh-t { display: grid; grid-template-columns: 34px minmax(0, 1fr); column-gap: 10px; row-gap: 2px; padding: 14px 0; border-bottom: 1px solid var(--hair); }
.rh-t .iso { grid-row: span 2; width: 30px; height: 30px; }
.rh-t b { font-size: 15px; color: var(--ink); } .rh-t span { font-size: 13.5px; line-height: 1.6; color: var(--muted); }
@media (max-width: 960px) { .rh { grid-template-columns: minmax(0, 1fr); } .rh-sys { grid-template-columns: repeat(3, minmax(0, 1fr)); } .rh-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.stg { display: grid; gap: 14px; }
.stg-steps { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.stg-steps li { position: relative; display: grid; gap: 8px; align-content: start; padding: 18px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair-2); }
.stg-steps li:not(:last-child)::after { content: ""; position: absolute; right: -9px; top: 28px; width: 8px; height: 8px; border-top: 1.5px solid var(--accent); border-right: 1.5px solid var(--accent); transform: rotate(45deg); }
.stg-steps span { font-family: var(--serif); font-weight: 700; font-size: 30px; line-height: 1; color: var(--blue); }
.stg-steps b { font-family: var(--serif); font-size: 17px; color: var(--ink); letter-spacing: .04em; }
.stg-steps p { font-size: 13.5px; line-height: 1.7; color: var(--muted); }
.stg-pipe { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 0; border-radius: var(--r-sm); overflow: hidden; }
.stg-pipe span { padding: 10px 6px; text-align: center; font-size: 13px; color: #FFFFFF; background: var(--blue); }
.stg-pipe span:nth-child(2n) { background: var(--blue-d); }
@media (max-width: 900px) { .stg-steps { grid-template-columns: minmax(0, 1fr); } .stg-steps li::after { display: none; } .stg-pipe { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.ts { position: relative; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; padding-top: 30px; }
.ts::before { content: ""; position: absolute; left: 0; right: 0; top: 8px; height: 2px; background: linear-gradient(90deg, var(--sky), var(--navy)); }
.ts li { position: relative; display: grid; gap: 6px; align-content: start; }
.ts li i { position: absolute; left: 0; top: -28px; width: 14px; height: 14px; border-radius: 50%; background: #FFFFFF; box-shadow: inset 0 0 0 3px var(--blue); }
.ts em { font-style: normal; font-size: 13px; color: var(--muted); letter-spacing: .04em; }
.ts b { font-size: 16px; color: var(--ink); }
.ts span { font-size: 13.5px; line-height: 1.7; color: var(--text); }
@media (max-width: 900px) { .ts { grid-template-columns: minmax(0, 1fr); padding-top: 0; padding-left: 26px; } .ts::before { left: 6px; right: auto; top: 0; bottom: 0; width: 2px; height: auto; background: linear-gradient(180deg, var(--sky), var(--navy)); } .ts li i { left: -26px; top: 2px; } }
/* 储能分层控制（PPT 版式） */
.lc { display: grid; gap: 16px; }
.lc-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.lc-kpi { display: grid; gap: 4px; padding: 18px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair-2); }
.lc-kpi strong { font-size: clamp(24px, 1.2vw + 14px, 32px); font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.lc-kpi strong small { margin-left: 4px; font-size: 13px; font-weight: 500; color: var(--muted); }
.lc-kpi b { font-size: 14.5px; color: var(--ink); } .lc-kpi span { font-size: 12.5px; line-height: 1.5; color: var(--muted); }
.lc-main { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 16px; padding: clamp(18px, 2vw, 28px); border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair-2); }
.lc-t { margin-bottom: 14px; font-size: 15px; font-weight: 600; color: var(--ink); }
.lc-t::before { content: ""; display: inline-block; width: 7px; height: 7px; margin-right: 8px; border-radius: 50%; background: var(--blue); vertical-align: middle; }
.lc-row { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 10px; margin-bottom: 10px; }
.lc-tag { display: grid; gap: 2px; align-content: center; padding: 12px 14px; border-radius: var(--r-sm); color: #FFFFFF; }
.lc-r1 .lc-tag { background: var(--navy); } .lc-r2 .lc-tag { background: var(--blue); } .lc-r3 .lc-tag { background: var(--sky); }
.lc-tag em { font-style: normal; font-size: 12px; opacity: .8; } .lc-tag b { font-size: 16px; } .lc-tag span { font-size: 12px; opacity: .85; }
.lc-row p { display: flex; align-items: center; padding: 12px 14px; border-radius: var(--r-sm); background: #EEF3F9; font-size: 14px; line-height: 1.7; color: var(--text); }
.lc-note { margin-top: 4px; padding: 10px 14px; border-radius: var(--r-sm); background: var(--tint); font-size: 13.5px; color: var(--ink); }
.lc-prio { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 12px; }
.lc-prio b { margin-right: 6px; font-size: 13.5px; color: var(--muted); }
.lc-prio span { padding: 4px 10px; border-radius: 4px; background: var(--mist); box-shadow: inset 0 0 0 1px var(--hair); font-size: 13px; color: var(--ink); }
.lc-prio span:first-of-type { background: var(--deep); color: #FFFFFF; box-shadow: none; }
.lc-prio i { width: 7px; height: 7px; border-top: 1.5px solid var(--muted); border-right: 1.5px solid var(--muted); transform: rotate(45deg); }
.lc-bars { display: grid; gap: 10px; }
.lc-bar { display: grid; grid-template-columns: 112px minmax(0, 1fr); align-items: center; gap: 10px; }
.lc-bl { font-size: 13px; color: var(--text); text-align: right; }
.lc-bt { position: relative; display: flex; align-items: center; gap: 8px; min-width: 0; }
.lc-bt i { position: relative; display: flex; align-items: center; height: 24px; border-radius: 3px; background: #A9BBD3; }
.lc-bt b { font-size: 13px; color: var(--ink); font-variant-numeric: tabular-nums; }
.lc-bar.ub i { background: #C9D2DE; }
.lc-bar.no i { background: #E3A464; } .lc-bar.no i em { padding-left: 8px; font-style: normal; font-size: 11.5px; color: #FFFFFF; white-space: nowrap; }
.lc-bar.rec i { background: var(--navy); } .lc-bar.rec .lc-bl, .lc-bar.rec b { font-weight: 700; color: var(--ink); }
.lc-bar.low i { background: #C9D2DE; }
.lc-out { font-style: normal; font-size: 12px; color: #B53A2E; white-space: nowrap; }
.lc-concl { margin-top: 14px; font-size: 14.5px; font-weight: 600; color: var(--ink); }
@media (max-width: 960px) { .lc-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } .lc-main { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 520px) { .lc-row { grid-template-columns: minmax(0, 1fr); } .lc-bar { grid-template-columns: 88px minmax(0, 1fr); } .lc-out { display: none; } }
/* 能源OS 调度案例块 */
.dcase { margin-top: clamp(36px, 4vw, 56px); padding: clamp(20px, 2.4vw, 32px); border-radius: var(--r-lg); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair-2); }
.dcase:first-of-type { margin-top: 0; }
.dcase-h { display: grid; gap: 10px; margin-bottom: 20px; }
.dcase-tag { justify-self: start; padding: 4px 10px; border-radius: 4px; background: var(--tint); color: var(--link); font-size: 12.5px; letter-spacing: .06em; }
.dcase-h .h-serif { font-size: clamp(21px, .8vw + 15px, 27px); letter-spacing: .03em; }
.cmks { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-top: 6px; }
.cmk { padding: 14px 16px; border-radius: var(--r-sm); background: var(--mist); }
.cmk strong { display: block; font-size: clamp(22px, 1vw + 14px, 30px); font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.cmk strong small { margin-left: 4px; font-size: 12.5px; font-weight: 500; color: var(--muted); }
.cmk span { display: block; margin-top: 4px; font-size: 13px; color: var(--muted); }
.dcase-b { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: clamp(20px, 2.4vw, 36px); align-items: start; }
.dcase-figs { display: grid; gap: 18px; }
.dcase-logic { display: grid; gap: 14px; }
.dcase-logic .seq { --n: 1 !important; grid-template-columns: minmax(0, 1fr); }
.dcase-t { font-size: 15px; font-weight: 600; color: var(--ink); }
.dcase-n { margin-top: 18px; font-size: 14.5px; line-height: 1.8; color: var(--text); }
.wkbar { display: flex; border-radius: var(--r-sm); overflow: hidden; }
.wkbar i { flex: 0 0 var(--w); padding: 9px 10px; font-style: normal; font-size: 13px; color: #FFFFFF; background: var(--navy); white-space: nowrap; }
.wkbar i:nth-child(2) { background: var(--blue); } .wkbar i:nth-child(3) { background: var(--sky); }
@media (max-width: 960px) { .dcase-b { grid-template-columns: minmax(0, 1fr); } }
/* 行业切换放大、行业补充内容 */
.ind-switch.big { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; padding: 0; border: 0; margin-bottom: 24px; }
.ind-switch.big button { display: grid; grid-template-columns: 112px minmax(0, 1fr); align-items: center; gap: 14px; padding: 10px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); text-align: left; transition: box-shadow .3s var(--ease), background-color .3s; }
.ind-switch.big button[aria-selected="true"] { background: var(--deep); box-shadow: none; }
.ind-switch.big button[aria-selected="true"] .ind-tab-t b { color: #FFFFFF; }
.ind-switch.big button[aria-selected="true"] .ind-tab-t em { color: rgba(230, 237, 247, .78); }
.ind-switch.big .ind-thumb { width: 112px; height: 70px; object-fit: cover; border-radius: var(--r-sm); }
.ind-switch.big .ind-tab-t b { display: block; font-size: 20px; color: var(--ink); }
.ind-switch.big .ind-tab-t em { display: block; margin-top: 4px; font-style: normal; font-size: 13px; color: var(--muted); }
@media (max-width: 760px) { .ind-switch.big { grid-template-columns: minmax(0, 1fr); } }
.ind-x { margin-top: 28px; padding: clamp(18px, 2vw, 26px); border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.ind-xt { margin-bottom: 14px; font-size: 15px; font-weight: 600; color: var(--ink); }
.tbl-wrap { overflow-x: auto; }
.ind-tbl { width: 100%; min-width: 560px; border-collapse: collapse; font-size: 14px; }
.ind-tbl th, .ind-tbl td { padding: 11px 12px; border-bottom: 1px solid var(--hair); text-align: left; }
.ind-tbl thead th { font-size: 12.5px; font-weight: 500; color: var(--muted); }
.ind-tbl tbody th { font-weight: 600; color: var(--ink); white-space: nowrap; }
.ind-tbl td { color: var(--text); font-variant-numeric: tabular-nums; }
.ind-chips { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 16px; }
.ind-chip { display: grid; gap: 4px; padding: 12px; border-radius: var(--r-sm); background: var(--mist); }
.ind-chip b { font-size: 14px; color: var(--ink); } .ind-chip span { font-size: 13px; line-height: 1.55; color: var(--muted); }
@media (max-width: 760px) { .ind-chips { grid-template-columns: minmax(0, 1fr); } }
/* 案例详情：解决方案步骤卡与方案结构 */
.csteps { gap: 12px; }
.csteps li, .csteps li + li { padding: 20px 20px 22px; border-top: 0; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.csteps li::before { display: block; font-family: var(--serif); font-weight: 700; font-size: 34px; line-height: 1; color: var(--blue); letter-spacing: 0; }   /* 10-11：编号不用圆圈，用较大的实心衬线数字 */
.csteps li:not(:last-child)::after { content: ""; position: absolute; right: -9px; top: 33px; width: 8px; height: 8px; border-top: 1.5px solid var(--accent); border-right: 1.5px solid var(--accent); transform: rotate(45deg); }
@media (max-width: 900px) { .csteps li::after { display: none; } }
.sol { display: grid; gap: 12px; margin-bottom: 18px; padding: clamp(18px, 2vw, 26px); border-radius: var(--r-lg); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair-2); }
.sol-t { font-family: var(--serif); font-weight: 700; font-size: 18px; letter-spacing: .04em; color: var(--ink); }
.sol-cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.sol-c { display: grid; gap: 10px; align-content: start; padding: 18px; border-radius: var(--r); background: var(--mist); }
.sol-c > b { font-size: 17px; color: var(--ink); }
.sol-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.sol-tags span { padding: 3px 9px; border-radius: 4px; background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); font-size: 12.5px; color: var(--link); }
.sol-c ul { display: grid; gap: 6px; }
.sol-c li { position: relative; padding-left: 14px; font-size: 13.5px; line-height: 1.6; color: var(--text); }
.sol-c li::before { content: ""; position: absolute; left: 0; top: .7em; width: 5px; height: 5px; border-radius: 50%; background: var(--accent); }
.sol-base { display: flex; flex-wrap: wrap; gap: 8px; padding: 12px 14px; border-radius: var(--r-sm); background: var(--deep); }
.sol-base span { padding: 5px 10px; border-radius: 4px; background: rgba(255, 255, 255, .1); color: #E6EDF7; font-size: 13px; }
.sol-flow { display: grid; grid-template-columns: minmax(0, 1fr) 24px minmax(0, 1fr) 24px minmax(0, 1fr); align-items: stretch; }
.sol-flow > div { display: grid; gap: 6px; align-content: start; padding: 18px; border-radius: var(--r); background: var(--mist); }
.sol-flow em { font-family: var(--serif); font-style: normal; font-weight: 700; font-size: 32px; line-height: 1; color: var(--blue); }
.sol-flow b { font-size: 16px; color: var(--ink); } .sol-flow span { font-size: 13.5px; line-height: 1.65; color: var(--text); }
.sol-flow > i { align-self: center; justify-self: center; width: 10px; height: 10px; border-top: 2px solid var(--accent); border-right: 2px solid var(--accent); transform: rotate(45deg); }
@media (max-width: 860px) { .sol-cols, .sol-flow { grid-template-columns: minmax(0, 1fr); } .sol-flow > i { transform: rotate(135deg); margin: 4px 0; } }
@media (min-width: 1180px) { #cgrid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* ---------------------------------------------------------------- 关于我们第三版 */
.svc4 { position: relative; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: clamp(40px, 4vw, 64px); }
.svc4-c { position: absolute; left: 50%; top: 50%; z-index: 2; width: 168px; height: 168px; margin: -84px 0 0 -84px; display: grid; place-content: center; gap: 6px; border-radius: 50%; background: var(--deep); color: #FFFFFF; text-align: center; box-shadow: 0 0 0 10px #FFFFFF; }
.svc4-c b { font-family: var(--serif); font-size: 18px; letter-spacing: .06em; } .svc4-c span { font-size: 13px; color: rgba(230, 237, 247, .78); }
.svc4-i { display: grid; gap: 10px; align-content: start; padding: 24px 28px; border-radius: var(--r); background: var(--mist); }
.svc4-i:nth-child(2), .svc4-i:nth-child(4) { padding-right: 110px; }
.svc4-i:nth-child(3), .svc4-i:nth-child(5) { padding-left: 110px; }
.svc4-i:nth-child(2) { border-bottom-right-radius: 96px; } .svc4-i:nth-child(3) { border-bottom-left-radius: 96px; }
.svc4-i:nth-child(4) { border-top-right-radius: 96px; } .svc4-i:nth-child(5) { border-top-left-radius: 96px; }
.svc4-i b { font-size: 17px; color: var(--ink); }
.svc4-i ul { display: grid; gap: 4px; } .svc4-i li { font-size: 14px; color: var(--text); }
.svc4-i li::before { content: "· "; color: var(--accent); }
@media (max-width: 760px) { .svc4 { grid-template-columns: minmax(0, 1fr); } .svc4-c { position: static; margin: 0 auto 4px; width: auto; height: auto; padding: 14px 20px; border-radius: var(--r); box-shadow: none; order: -1; }
  .svc4-i, .svc4-i:nth-child(n) { padding: 20px; border-radius: var(--r); } }
.shifts2 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.shift2 { display: grid; gap: 10px; align-content: start; padding: 24px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.shift2 b { font-family: var(--serif); font-size: 19px; letter-spacing: .03em; color: var(--ink); }
.shift2 p { font-size: 14.5px; line-height: 1.8; color: var(--text); }
@media (max-width: 860px) { .shifts2 { grid-template-columns: minmax(0, 1fr); } }
.dir-t { font-family: var(--serif); font-size: 21px; margin-bottom: 12px; }
.steps3 { display: grid; gap: 0; margin-top: 24px; border-top: 1px solid var(--hair-2); }
.steps3 li { display: grid; grid-template-columns: 96px minmax(0, 1fr); column-gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--hair-2); }
.steps3 em { grid-row: span 2; font-style: normal; font-size: 13.5px; font-weight: 600; color: var(--link); font-variant-numeric: tabular-nums; }
.steps3 b { font-size: 16px; color: var(--ink); } .steps3 p { font-size: 14px; line-height: 1.7; color: var(--text); }
.mlays { display: grid; gap: 8px; }
.mlay { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; align-items: center; gap: 14px; padding: 16px 18px; border-radius: var(--r); color: #FFFFFF; background: hsl(214 52% calc(18% + var(--i) * 9%)); margin-left: calc((3 - var(--i)) * 0px); }
.mlay em { font-style: normal; font-size: 14px; font-weight: 700; letter-spacing: .04em; opacity: .85; }
.mlay b { display: block; font-size: 16px; } .mlay span { display: block; margin-top: 2px; font-size: 13px; color: rgba(255, 255, 255, .78); }
.mlay strong { color: #FFFFFF; text-align: right; font-size: clamp(18px, .9vw + 12px, 24px); font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.mlay strong small { display: block; font-size: 12px; font-weight: 400; color: rgba(255, 255, 255, .75); }
.mlay-src { margin-top: 4px; font-size: 12px; color: var(--muted); }
@media (max-width: 560px) { .mlay { grid-template-columns: 36px minmax(0, 1fr); } .mlay strong { grid-column: 2; text-align: left; } }
.tgrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.tcard2 { display: grid; grid-template-rows: auto 1fr auto; gap: 18px; padding: clamp(20px, 2.4vw, 32px); border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair-2); }
.tcard2-k { font-size: 13px; letter-spacing: .12em; color: var(--muted); }
.tcard2-logos { display: flex; flex-wrap: wrap; align-items: center; gap: 18px 26px; }
.tl-logo { height: 52px; width: auto; max-width: 100%; object-fit: contain; }
.tl-logo.w { height: 38px; max-width: 200px; }
.tcard2-c { padding-top: 16px; border-top: 1px solid var(--hair); font-size: 15.5px; font-weight: 600; line-height: 1.6; color: var(--ink); }
.tfields { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 18px; padding: 16px 18px; border-radius: var(--r); background: var(--mist); }
.tfields b { margin-right: 8px; font-size: 14px; color: var(--muted); }
.tfields span { padding: 5px 11px; border-radius: 4px; background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); font-size: 13.5px; color: var(--ink); }
@media (max-width: 860px) { .tgrid { grid-template-columns: minmax(0, 1fr); } .tl-logo { height: 44px; } .tl-logo.w { height: 32px; } }
.mods { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.mod { display: grid; grid-template-rows: auto auto 1fr auto; gap: 10px; padding: 22px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.mod b { font-size: 17px; color: var(--ink); } .mod p { font-size: 14px; line-height: 1.75; color: var(--text); }
.mod span { padding-top: 10px; border-top: 1px solid var(--hair); font-size: 13px; color: var(--muted); }
@media (max-width: 1000px) { .mods { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .mods { grid-template-columns: minmax(0, 1fr); } }
.roles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.role { display: grid; gap: 10px; align-content: start; padding: 24px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.role.lead { box-shadow: inset 0 0 0 1.5px var(--blue); }
.role b { font-size: 18px; color: var(--ink); }
.role ul { display: grid; gap: 6px; } .role li { position: relative; padding-left: 14px; font-size: 14.5px; line-height: 1.6; color: var(--text); }
.role li::before { content: ""; position: absolute; left: 0; top: .65em; width: 5px; height: 5px; border-radius: 50%; background: var(--accent); }
@media (max-width: 860px) { .roles { grid-template-columns: minmax(0, 1fr); } }
.prs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: 36px; }
.pr { display: grid; gap: 6px; padding: 18px; border-radius: var(--r); background: rgba(255, 255, 255, .06); box-shadow: inset 0 0 0 1px rgba(226, 234, 245, .14); }
.pr b { font-size: 16px; color: #FFFFFF; } .pr span { font-size: 13.5px; line-height: 1.6; color: rgba(230, 237, 247, .8); }
.accept { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 16px; margin-top: 14px; padding: 18px 20px; border-radius: var(--r); background: rgba(255, 255, 255, .06); }
.accept > b { font-size: 15px; color: #FFFFFF; }
.accept dl { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.accept dt { font-size: 13px; color: #8EBDEB; } .accept dd { margin-top: 4px; font-size: 14px; line-height: 1.6; color: rgba(230, 237, 247, .88); }
@media (max-width: 860px) { .prs { grid-template-columns: repeat(2, minmax(0, 1fr)); } .accept, .accept dl { grid-template-columns: minmax(0, 1fr); } }
.phs { display: grid; gap: 0; }
.phs-axis, .phs-row { display: grid; grid-template-columns: 110px minmax(0, 1fr) minmax(0, 300px); align-items: center; gap: 16px; }
.phs-axis > div { position: relative; height: 26px; }
.phs-axis em { position: absolute; top: 4px; font-style: normal; font-size: 12px; color: var(--muted); white-space: nowrap; }
.phs-row { padding: 12px 0; border-top: 1px solid var(--hair); }
.phs-row b { font-size: 15px; color: var(--ink); }
.phs-track { position: relative; height: 14px; border-radius: 7px; background: var(--mist); }
.phs-track i { position: absolute; top: 0; height: 14px; border-radius: 7px; background: var(--blue); }
.phs-row:nth-child(n+5) .phs-track i { background: var(--sky); }
.phs-row:last-child .phs-track i { background: var(--navy); }
.phs-row span { font-size: 13.5px; line-height: 1.6; color: var(--text); }
@media (max-width: 860px) { .phs-axis { display: none; } .phs-row { grid-template-columns: minmax(0, 1fr); gap: 6px; } }
.jobs-g + .jobs-g { margin-top: 36px; }
.jobs-g .h3 { margin-bottom: 14px; }
.jobs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.jobs li { position: relative; display: grid; gap: 6px; align-content: start; padding: 20px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.jobs b { font-size: 17px; color: var(--ink); } .jobs em { font-style: normal; font-size: 13px; color: var(--link); }
.jobs p { font-size: 14px; line-height: 1.7; color: var(--text); }
.job-tag { position: absolute; right: 16px; top: 18px; padding: 2px 8px; border-radius: 4px; background: var(--tint); color: var(--link); font-size: 12px; }
.jobs-g + .spec, .jobs-g ~ .spec { margin-top: 36px; }
@media (max-width: 860px) { .jobs { grid-template-columns: minmax(0, 1fr); } }

/* ================================================================ 10-07 用户：不用颜色过深的背景方块，全部改为浅色；深色页面上的 logo 文字与竖线改为白色 */
.hd-dark .hd-bar { --logo-ink: #FFFFFF; }
.fly-open .hd-bar, .menu-open .hd-bar { --logo-ink: #0E2841; }
/* 原深色区块 → 浅色面板 */
.sec.tone-tint { background: var(--paper); padding-block: clamp(20px, 2.4vw, 40px); }
.sec.tone-tint > .wrap { background: linear-gradient(180deg, #F4F8FD 0%, #EAF1FA 100%); border-radius: 28px; padding: calc(var(--sec) * .78) clamp(28px, 4.6vw, 80px); max-width: calc(var(--max) + 2 * clamp(28px, 4.6vw, 80px)); box-shadow: inset 0 0 0 1px var(--hair); }
@media (max-width: 760px) { .sec.tone-tint > .wrap { border-radius: 20px; margin-inline: 12px; padding-inline: 22px; } }
.tone-tint .flow-node { background: #FFFFFF; }
/* 页脚 */
.ft { --bg: var(--mist); background: var(--mist); color: var(--muted); border-top: 1px solid var(--hair); }
.ft h4 { color: var(--ink); }
.ft-col a:hover { color: var(--ink); }
.ft-brand p { color: var(--muted); }
.ft-bot { border-top-color: var(--hair-2); color: var(--muted); }
.ft-logo { --logo-ink: #0E2841; }
.ft-logo .lg-mark .lg-c, .ft-brand .lg-mark .lg-c { opacity: 1; }
.ft-logo .lg-mark .lg-l, .ft-brand .lg-mark .lg-l { opacity: 0; }
.ft .go.inv { color: var(--ink); }
/* 案例详情首屏 */
.chero { background: linear-gradient(135deg, #F5F9FD 0%, #E7F0FA 100%); color: var(--ink); }
.chero .hero-crumb, .chero .hero-crumb a { color: var(--muted); }
.chero h1 { color: var(--ink); }
.chero .lead { color: var(--text); }
.chero-sub { color: var(--blue); }
.chero-tag { color: var(--link); --iso-ln: #0E2841; --iso0: #F6F8FB; --iso1: #FFFFFF; --iso2: #EBF1F8; --iso3: #DCE5F0; --isoa: #CFE1F5; }
.chero-art { opacity: .85; --iso-ln: #394E9A; --iso0: #F6F8FB; --iso1: #FFFFFF; --iso2: #E3ECF8; --iso3: #D3E0F1; --isoa: #BFD5EF; }
.cmetrics { border-top-color: var(--hair-2); }
.cmetric + .cmetric { border-left-color: var(--hair-2); }
.cmetric b { color: var(--ink); }
.cmetric span { color: var(--text); }
.cmetric em { color: var(--muted); }
@media (max-width: 760px) { .cmetric, .cmetric + .cmetric { border-bottom-color: var(--hair); } }
/* 图片卡：图片提亮，下部浅色渐变，深色文字 */
.icard { background: var(--mist); }
.icard-bg { filter: brightness(1.18) saturate(.9); }
.icard::after { background: linear-gradient(0deg, rgba(246, 249, 253, .97) 0%, rgba(246, 249, 253, .9) 40%, rgba(246, 249, 253, .25) 72%, rgba(246, 249, 253, 0) 100%); }
.icard-in { --iso-ln: #0E2841; --iso0: #F6F8FB; --iso1: #FFFFFF; --iso2: #EBF1F8; --iso3: #DCE5F0; --isoa: #CFE1F5; }
.icard-in h3 { color: var(--ink); }
.icard-in p { color: var(--text); }
/* 智能体环图、数据资产地图表头 */
.agent-art { background: linear-gradient(160deg, #FFFFFF 0%, var(--mist) 100%); box-shadow: inset 0 0 0 1px var(--hair); --ink: #0E2841; --text: #34445A; --muted: #5D6A7C; --hair-2: #D3DCE8; --accent: #639BD3; --field: #FFFFFF; --tint: #EAF1FA; --iso-ln: #0E2841; --iso0: #F6F8FB; --iso1: #FFFFFF; --iso2: #EBF1F8; --iso3: #DCE5F0; --isoa: #CFE1F5; }
.at-head { background: var(--tint); color: var(--ink); box-shadow: inset 0 -1px 0 var(--hair); }
.at-name { --iso-ln: #0E2841; --iso0: #F6F8FB; --iso1: #FFFFFF; --iso2: #EBF1F8; --iso3: #DCE5F0; --isoa: #CFE1F5; --accent: #639BD3; }
.at-views button { color: var(--muted); }
.at-views button[aria-selected="true"] { background: #FFFFFF; color: var(--ink); box-shadow: inset 0 0 0 1px var(--hair-2); }
/* 结构图里的深色条与块 */
.eng-base { background: #E6EEF9; color: var(--ink); }
.eng-base span { background: #FFFFFF; color: var(--ink); box-shadow: inset 0 0 0 1px var(--hair); }
.pm-col.o { background: linear-gradient(180deg, #E6EEF9, #F3F7FC); --ink: #0E2841; --muted: #5D6A7C; }
.pm-col.o .pm-b { background: #FFFFFF; }
.dm-mode { background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.dm-mode b, .dm-sec b { color: var(--ink); }
.dm-mode p, .dm-sec span { color: var(--text); }
.dm-sec li { background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.hm-rule { background: var(--tint); color: var(--ink); }
.ea-base .ea-cell { background: #DFE9F7; color: var(--ink); --iso-ln: #0E2841; --iso0: #F6F8FB; --iso1: #FFFFFF; --iso2: #EBF1F8; --iso3: #DCE5F0; --isoa: #CFE1F5; }
.ew-o { background: linear-gradient(135deg, #EEF1FB 0%, #E2E8F8 100%); color: var(--text); box-shadow: inset 0 0 0 1px var(--hair); }
.ew-o b { color: var(--blue-d); }
.ew-o p { color: var(--text); }
.ew-o li { background: #FFFFFF; color: var(--ink); box-shadow: inset 0 0 0 1px var(--hair); }
.pd-b { background: #E4EDF9; box-shadow: inset 3px 0 0 var(--blue); }
.pd-b b { color: var(--ink); }
.pd-b span { color: var(--text); }
.tl-top, .rh-base { background: var(--tint); color: var(--ink); }

.lc-tag { color: var(--ink); box-shadow: inset 4px 0 0 var(--lcc, var(--blue)); }
.lc-r1 .lc-tag { background: #D9E5F6; --lcc: var(--navy); }
.lc-r2 .lc-tag { background: #E3ECF9; --lcc: var(--blue); }
.lc-r3 .lc-tag { background: #EDF3FB; --lcc: var(--sky); }
.lc-tag em, .lc-tag span { opacity: 1; color: var(--muted); }
.lc-prio span:first-of-type { background: var(--tint); color: var(--blue); box-shadow: inset 0 0 0 1px #C9D9EF; }
.lc-bar.rec i { background: var(--blue); }
.wkbar i { background: var(--blue); }
.wkbar i:nth-child(2) { background: var(--sky); }
.wkbar i:nth-child(3) { background: #A9C6E8; color: var(--ink); }
.ind-switch.big button[aria-selected="true"] { background: var(--tint); box-shadow: inset 0 0 0 1.5px var(--blue); }
.ind-switch.big button[aria-selected="true"] .ind-tab-t b { color: var(--ink); }
.ind-switch.big button[aria-selected="true"] .ind-tab-t em { color: var(--muted); }
.ind-hero { background: var(--mist); }
.sol-base { background: var(--tint); }
.sol-base span { background: #FFFFFF; color: var(--ink); box-shadow: inset 0 0 0 1px var(--hair); }
.svc4-c { background: #FFFFFF; color: var(--ink); box-shadow: 0 0 0 10px #FFFFFF, inset 0 0 0 2px var(--blue); }
.svc4-c b { color: var(--blue-d); }
.svc4-c span { color: var(--muted); }
.mlay { color: var(--ink); background: hsl(214 64% calc(86% + var(--i) * 3.2%)); box-shadow: inset 4px 0 0 var(--blue); }
.mlay em { color: var(--blue); opacity: 1; }
.mlay span { color: var(--text); }
.mlay strong { color: var(--blue-d); }
.mlay strong small { color: var(--muted); }
.phs-row:last-child .phs-track i { background: var(--blue); }
.pr { background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.pr b { color: var(--ink); }
.pr span { color: var(--text); }
.accept { background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.accept > b { color: var(--ink); }
.accept dt { color: var(--link); }
.accept dd { color: var(--text); }
.vcard { background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.stg-pipe { box-shadow: inset 0 0 0 1px #C9D9EF; }
.stg-pipe span { background: #E3ECF8; color: var(--blue-d); }
.stg-pipe span:nth-child(2n) { background: #EDF3FB; }
.stg-pipe span + span { box-shadow: inset 1px 0 0 #C9D9EF; }
.icard { --ink: #0E2841; --text: #34445A; --accent: #639BD3; --iso-ln: #0E2841; --iso0: #F6F8FB; --iso1: #FFFFFF; --iso2: #EBF1F8; --iso3: #DCE5F0; --isoa: #CFE1F5; }

/* ================================================================ 10-07 第四轮：导航下拉统一底板、三维标注、行业切换吸顶、去掉箭头/圆点/色条 */
.fly-sheet { position: absolute; left: 0; right: 0; top: 0; height: var(--hd); background: #FFFFFF; opacity: 0; pointer-events: none;
  box-shadow: 0 30px 60px -36px rgba(14, 40, 65, .28); transition: height .5s var(--ease), opacity .22s ease; }
.fly-sheet::before { content: ""; position: absolute; left: 0; right: 0; top: var(--hd); height: 1px; background: var(--hair); opacity: .8; }
.fly-open .fly-sheet { opacity: 1; height: calc(var(--hd) + var(--fly-h, 0px)); }
.fly-open .hd-bar::before { box-shadow: none; }
.fly { background: transparent; box-shadow: none; clip-path: none; opacity: 0; visibility: hidden; transition: opacity .18s ease, visibility 0s linear .18s; }
.fly.open { clip-path: none; opacity: 1; visibility: visible; transition: opacity .32s ease .1s, visibility 0s; }
.fly .fly-in > * { transform: translateY(-4px); }
.fly-swap .fly, .fly-swap .fly.open { transition: opacity .32s ease .1s, visibility 0s; }
/* 三维标注：宽度随内容，白底深字更醒目，底部一条细引线和落点 */
.story-tag { padding: 7px 12px; border-radius: 8px; background: #FFFFFF; font-size: 13.5px; font-weight: 600; letter-spacing: .02em; color: var(--ink);
  box-shadow: 0 10px 26px -12px rgba(14, 40, 65, .45), inset 0 0 0 1px rgba(57, 78, 154, .22); }
.story-tag::after { bottom: -10px; height: 10px; background: var(--blue); opacity: .55; }
.story-tag::before { content: ""; position: absolute; left: calc(50% + var(--dx, 0px)); bottom: -14px; width: 7px; height: 7px; margin-left: -3.5px; border-radius: 50%; background: #FFFFFF; box-shadow: inset 0 0 0 2px var(--blue); }
.story-tag em { min-width: 0; margin-left: 8px; }
.story-tag em:empty { display: none; }
/* 行业切换：选中态不再上移（避免顶部框线被裁）；滚过原位置后吸顶收成细条 */
.ind-switch.big { overflow: visible; }
.ind-switch.big button[aria-selected="true"] { transform: none; }
.ind-sentinel { height: 1px; }
.ind-switch.big.stuck { position: sticky; top: calc(var(--hd) + 12px); z-index: 30; width: max-content; max-width: 100%; margin-inline: auto; display: flex; gap: 4px; padding: 5px;
  border-radius: 999px; background: rgba(255, 255, 255, .94); box-shadow: 0 14px 34px -18px rgba(14, 40, 65, .4), inset 0 0 0 1px var(--hair); backdrop-filter: saturate(1.4) blur(10px); -webkit-backdrop-filter: saturate(1.4) blur(10px); }
.ind-switch.big.stuck button { display: block; padding: 8px 18px; border-radius: 999px; background: transparent; box-shadow: none; }
.ind-switch.big.stuck button[aria-selected="true"] { background: var(--tint); box-shadow: inset 0 0 0 1px #C9D9EF; }
.ind-switch.big.stuck .ind-thumb, .ind-switch.big.stuck .ind-tab-t em { display: none; }
.ind-switch.big.stuck .ind-tab-t b { font-size: 15px; }
.ind-switch.big { position: sticky; top: calc(var(--hd) + 12px); z-index: 30; }
/* 去掉标题前的实心圆点、卡片左侧色条与三角箭头，改为直接的连线过渡 */
.lc-t::before, .hm-back::before { content: none; display: none; }
.pd-b, .lc-tag, .mlay { box-shadow: none; }
.eng-col:not(:last-child)::after, .stg-steps li:not(:last-child)::after, .csteps li:not(:last-child)::after, .ea-row + .ea-row::before, .pd-x::after, .pd-x::before { content: none; display: none; }
.eng-cols, .csteps { position: relative; }
.eng-cols::before, .csteps::before { content: ""; position: absolute; left: 4%; right: 4%; top: 28px; height: 1.5px; background: linear-gradient(90deg, #C9D9EF, var(--accent)); }
.csteps::before { top: 35px; }
.eng-col, .csteps li { position: relative; z-index: 1; }
.pm-arrow, .hm .pm-arrow { width: 100%; height: 1.5px; border: 0; transform: none; background: linear-gradient(90deg, #C9D9EF, var(--accent)); }
@media (max-width: 860px) { .pm-arrow, .hm .pm-arrow { width: 1.5px; height: 18px; transform: none; margin: 0 auto; } .eng-cols::before, .csteps::before { display: none; } }
/* ---------------------------------------------------------------- 第四轮组件：储能分层控制 */
.lc2 { display: grid; gap: 16px; }
.lc2-cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.lc2-c { display: grid; gap: 8px; align-content: start; padding: clamp(20px, 2.2vw, 30px); border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.lc2-k { font-size: 12.5px; letter-spacing: .1em; color: var(--muted); }
.lc2-t { font-family: var(--serif); font-weight: 700; font-size: clamp(26px, 1.4vw + 16px, 36px); line-height: 1.15; color: var(--ink); letter-spacing: .02em; }
.lc2-n { font-size: 16px; font-weight: 600; color: var(--blue); }
.lc2-c .tk { width: 100%; height: auto; margin: 6px 0 4px; }
.tk .tk-bg { fill: var(--mist); } .tk .tk-on { fill: var(--blue); } .tk .tk-l { fill: #B9CDE6; }
.lc2-c p { font-size: 14px; line-height: 1.75; color: var(--text); }
.lc2-row { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 16px; align-items: stretch; }
.lc2-chart, .lc2-side { display: grid; align-content: start; gap: 14px; padding: clamp(20px, 2.2vw, 30px); border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.lc2-h { font-size: 14px; font-weight: 600; color: var(--ink); letter-spacing: .02em; }
.lc2-bars { display: grid; gap: 10px; }
.lc2-bars li { display: grid; grid-template-columns: 104px minmax(0, 1fr) 62px; align-items: center; gap: 12px; font-size: 13.5px; color: var(--text); }
.lc2-bars li > span { text-align: right; }
.lc2-bars i { display: block; width: var(--w); height: 18px; border-radius: 4px; background: #C3D3EA; }
.lc2-bars b { font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; }
.lc2-bars .rec i { background: var(--blue); } .lc2-bars .rec > span, .lc2-bars .rec b { color: var(--ink); font-weight: 700; }
.lc2-bars .ub i { background: #DDE5F0; }
/* 候选方案（10-11）：方案名下面一行小字写清做了什么；不调度为 0、理论最优为 100%；项目原来的运行方式用中性灰 */
.lc2-bars.cand-bars { gap: 12px; }
.lc2-bars.cand-bars li { grid-template-columns: minmax(0, 15.5em) minmax(0, 1fr) 54px; }
.cand-bars li > span { display: grid; gap: 2px; text-align: right; }
.cand-bars li > span b { font-size: 13.5px; font-weight: 600; color: var(--ink); }
.cand-bars li > span small { font-size: 12px; line-height: 1.5; color: var(--muted); text-wrap: balance; }
.cand-bars li > em { font-style: normal; font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; }
.cand-bars .base > em { color: var(--muted); font-weight: 500; }
.cand-bars .old i { background: #D6DBE3; }
.cand-bars .rec > span b, .cand-bars .rec > em { color: var(--blue); font-weight: 700; }
@media (max-width: 640px) { .lc2-bars.cand-bars li { grid-template-columns: minmax(0, 1fr) 46px; } .cand-bars li > span { grid-column: 1 / -1; text-align: left; } }
.lc2-note { font-size: 13.5px; line-height: 1.7; color: var(--muted); }
.lc2-kpis { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.lc2-kpis div { display: grid; gap: 4px; padding: 14px 16px; border-radius: var(--r-sm); background: var(--mist); }
.lc2-kpis strong { font-size: clamp(22px, 1vw + 14px, 28px); font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.lc2-kpis span { font-size: 12.5px; line-height: 1.5; color: var(--muted); }
.lc2-prio { display: flex; flex-wrap: wrap; gap: 6px; }
.lc2-prio span { display: inline-flex; align-items: center; gap: 6px; padding: 5px 11px 5px 6px; border-radius: 999px; background: var(--mist); font-size: 13px; color: var(--ink); }
.lc2-prio em { font-family: var(--serif); font-style: normal; font-weight: 700; font-size: 20px; line-height: 1; color: var(--blue); }
.lc2-foot { font-size: 13.5px; color: var(--muted); }
@media (max-width: 900px) { .lc2-cols, .lc2-row { grid-template-columns: minmax(0, 1fr); } }
/* 能源OS 调度案例：三张卡，只讲逻辑，配精致示意图 */
.dcs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.dc { display: grid; grid-template-rows: auto auto 1fr auto; gap: 10px; padding: clamp(20px, 2.2vw, 28px); border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.dc-k { justify-self: start; padding: 3px 10px; border-radius: 999px; background: var(--tint); color: var(--link); font-size: 12.5px; letter-spacing: .06em; }
.dc-t { font-family: var(--serif); font-weight: 700; font-size: 20px; color: var(--ink); letter-spacing: .03em; }
.dc-fig { margin: 4px -6px; }
.dc p { font-size: 14px; line-height: 1.8; color: var(--text); }
.mini { width: 100%; height: auto; font-family: var(--sans); }
.mini text { font-size: 13px; }
.mini .mn-lab { fill: var(--muted); } .mini .mn-ax { fill: var(--muted); font-size: 12px; } .mini .mn-k { fill: var(--ink); font-weight: 600; }
.mini .mn-area { fill: rgba(217, 130, 43, .08); }
.mini .mn-warm { fill: none; stroke: #D9822B; stroke-width: 2; }
.mini .mn-line { fill: none; stroke: var(--blue); stroke-width: 2.4; stroke-linecap: round; }
.mini .mn-dash { fill: none; stroke: #9AA8BA; stroke-width: 1.5; stroke-dasharray: 4 4; }
.mini .mn-gain { fill: rgba(99, 155, 211, .32); } .mini .mn-cut { fill: rgba(217, 130, 43, .16); }
.mini .mn-t1 { fill: #DCE7F5; } .mini .mn-t2 { fill: #A9C3E6; } .mini .mn-t3 { fill: var(--blue); }
.mini .mn-axis { stroke: #C9D9EF; stroke-width: 2; }
.mini .mn-ring { fill: rgba(99, 155, 211, .1); } .mini .mn-dot { fill: #FFFFFF; stroke: var(--blue); stroke-width: 2.5; }
@media (max-width: 1000px) { .dcs { grid-template-columns: minmax(0, 1fr); } }
/* 能源OS 计划与执行 */
.px { display: grid; gap: clamp(28px, 3vw, 44px); }
.px-flow { padding: clamp(16px, 2vw, 28px) clamp(16px, 2vw, 28px) 6px; border-radius: var(--r-lg); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); overflow-x: auto; }
.pf { width: 100%; min-width: 760px; height: auto; font-family: var(--sans); }
.pf .pf-line { stroke: #C9D9EF; stroke-width: 2; }
.pf .pf-dot { fill: #FFFFFF; stroke: var(--blue); stroke-width: 2.5; }
.pf .pf-da { fill: rgba(57, 78, 154, .08); } .pf .pf-id { fill: rgba(217, 130, 43, .1); }
.pf text { font-size: 14px; }
.pf .pf-span { fill: var(--muted); font-size: 13.5px; } .pf .pf-b { fill: var(--ink); font-weight: 600; }
.pf .pf-k { fill: var(--ink); font-weight: 600; font-size: 15px; } .pf .pf-d { fill: var(--muted); font-size: 13.5px; }
.px-cols { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(28px, 4vw, 64px); }
.px-h { margin-bottom: 14px; font-size: 14px; font-weight: 600; color: var(--ink); letter-spacing: .04em; }
.px-tiers { display: grid; gap: 0; border-top: 1px solid var(--hair-2); }
.px-t { display: grid; grid-template-columns: 34px minmax(0, 1fr); column-gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--hair-2); }
.px-t .iso { grid-row: span 2; width: 30px; height: 30px; }
.px-t b { font-size: 15.5px; color: var(--ink); } .px-t p { font-size: 14px; line-height: 1.7; color: var(--text); }
.px-res { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--hair-2); }
.px-r { display: grid; grid-template-columns: 34px minmax(0, 1fr); column-gap: 12px; padding: 14px 12px 14px 0; border-bottom: 1px solid var(--hair-2); }
.px-r .iso { grid-row: span 2; width: 30px; height: 30px; }
.px-r b { font-size: 15px; color: var(--ink); } .px-r span { font-size: 13.5px; color: var(--muted); }
@media (max-width: 900px) { .px-cols { grid-template-columns: minmax(0, 1fr); } .px-res { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* 实施路径：大号序号，一条细线贯穿 */
.st5 { position: relative; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0 28px; padding-top: 22px; }
.st5::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 2px; background: linear-gradient(90deg, #C9D9EF, var(--blue)); }
.st5 li { display: grid; gap: 8px; align-content: start; }
.st5-n { font-family: var(--serif); font-weight: 700; font-size: clamp(30px, 1.6vw + 18px, 44px); line-height: 1; color: #C3D3EA; }
.st5 b { font-size: 17px; color: var(--ink); }
.st5 p { font-size: 14px; line-height: 1.75; color: var(--text); }
@media (max-width: 900px) { .st5 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 20px; } }
@media (max-width: 520px) { .st5 { grid-template-columns: minmax(0, 1fr); } }
/* 交易智能体首屏：长方形运行面板 */
.ac { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 4fr) minmax(0, 4.4fr); gap: 16px; padding: 16px; border-radius: var(--r-lg); background: linear-gradient(160deg, #FFFFFF 0%, var(--mist) 100%); box-shadow: inset 0 0 0 1px var(--hair), 0 40px 80px -60px rgba(14, 40, 65, .35); }
.ac > div { min-width: 0; padding: 16px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.ac-loop { display: grid; place-items: center; }
.ac-loop .diag { width: 100%; height: auto; }
.ac-h { margin-bottom: 10px; font-size: 13.5px; font-weight: 600; color: var(--ink); letter-spacing: .04em; }
.ac-agents { display: grid; gap: 8px; }
.ac-agents li { position: relative; display: grid; grid-template-columns: 30px minmax(0, 1fr); align-items: center; gap: 10px; padding: 10px 12px 14px; border-radius: var(--r-sm); background: var(--mist); overflow: hidden; }
.ac-agents .iso { width: 28px; height: 28px; }
.ac-agents b { display: block; font-size: 14px; color: var(--ink); } .ac-agents span { display: block; font-size: 12.5px; color: var(--muted); }
.ac-agents i { position: absolute; left: 12px; right: 12px; bottom: 6px; height: 3px; border-radius: 2px; background: #DCE6F3; }
.ac-agents i::after { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: var(--p); border-radius: 2px; background: var(--blue); }
.js .ac-agents i::after { animation: acGrow 2.4s var(--ease) both; }
@keyframes acGrow { from { width: 0; } }
.ac-chart { width: 100%; height: auto; }
.ac-chart .ac-band { fill: rgba(99, 155, 211, .12); } .ac-chart .ac-t { fill: #DCE6F3; } .ac-chart .ac-c { fill: var(--blue); }
.ac-chart .ac-ax { fill: var(--muted); font-size: 11px; }
.ac-log { display: grid; gap: 0; }
.ac-log li { display: grid; grid-template-columns: 44px 38px minmax(0, 1fr); gap: 8px; padding: 7px 0; border-bottom: 1px solid var(--hair); font-size: 12.5px; color: var(--text); }
.ac-log time { color: var(--muted); font-variant-numeric: tabular-nums; } .ac-log em { font-style: normal; color: var(--blue); font-weight: 600; }
@media (max-width: 1000px) { .ac { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } .ac-loop { display: none; } }
@media (max-width: 640px) { .ac { grid-template-columns: minmax(0, 1fr); } }
/* 多窗口前后景：主窗在后，左下与右上各叠一个小窗 */
.uistack.trio { padding: 7% 10% 9% 15%; }
.uistack-inset2 { position: absolute; z-index: 2; right: 0; top: 0; width: 30%; filter: drop-shadow(0 18px 36px rgba(14, 40, 65, .16)); }
.uistack.tall .uistack-inset { width: 19%; }
@media (max-width: 760px) { .uistack.trio { padding: 0; } .uistack-inset2 { position: static; width: 70%; margin: 14px 0 0 auto; filter: none; } }
.pd2 { display: grid; gap: 8px; overflow-x: auto; }
.pd2-row { display: grid; grid-template-columns: 132px repeat(4, minmax(150px, 1fr)); align-items: stretch; gap: 8px; min-width: 760px; }
.pd2-row > * { padding: 14px 16px; border-radius: var(--r-sm); font-size: 14.5px; line-height: 1.6; }
.pd2-head > * { padding-block: 4px; font-size: 13px; letter-spacing: .08em; color: var(--muted); }
.pd2-row > b { display: flex; align-items: center; font-size: 15px; color: var(--ink); }
.pd2-a > span { background: var(--mist); color: var(--muted); }
.pd2-b > span { background: #E4EDF9; color: var(--ink); font-weight: 500; }
.pd2-b > b { color: var(--blue); }
.ea-mods em { background: var(--tint); color: var(--link); }
.tprods { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.tprod { position: relative; display: grid; grid-template-columns: 48px minmax(0, 1fr); column-gap: 14px; row-gap: 4px; padding: 20px 44px 20px 20px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); transition: box-shadow .3s var(--ease), transform .4s var(--ease); }
.tprod .iso { grid-row: span 2; width: 46px; height: 46px; }
.tprod b { font-size: 17px; color: var(--ink); } .tprod span { font-size: 14px; line-height: 1.6; color: var(--text); }
.tprod > .ic { position: absolute; right: 18px; top: 22px; width: 16px; height: 16px; color: var(--muted); transition: transform .3s var(--ease), color .3s; }
.tprod:hover { box-shadow: inset 0 0 0 1px var(--hair-2), 0 16px 34px -24px rgba(14, 40, 65, .35); transform: translateY(-2px); }
.tprod:hover > .ic { transform: translateX(3px); color: var(--ink); }
@media (max-width: 900px) { .tprods { grid-template-columns: minmax(0, 1fr); } }
.tscn { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: repeat(5, auto); gap: 0 16px; }
.tscn-c { grid-row: span 5; display: grid; grid-template-rows: subgrid; row-gap: 8px; align-content: start; padding: 26px 26px 22px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.tscn-c > .iso { width: 48px; height: 48px; margin-bottom: 4px; }
.tscn-k { font-size: 13px; letter-spacing: .08em; color: var(--muted); }
.tscn-c .h3 { margin: 0; }
.tscn-l { font-size: 15px; line-height: 1.8; color: var(--text); }
.tscn-d { display: grid; align-content: start; margin-top: 6px; border-top: 1px solid var(--hair); }
.tscn-d div { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--hair); font-size: 14px; line-height: 1.7; }
.tscn-d dt { color: var(--muted); }
.tscn-d dd { color: var(--ink); }
@media (max-width: 980px) { .tscn { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; gap: 12px; } .tscn-c { grid-row: auto; grid-template-rows: none; } }
.tscn-g { margin: 0 0 12px; font-size: 13.5px; font-weight: 600; letter-spacing: .06em; color: var(--muted); }   /* 用电侧 / 发电侧 */
.tscn + .tscn-g { margin-top: 28px; }
.tscn-c.tscn-wide { grid-row: auto; grid-template-rows: none; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 8px clamp(28px, 4vw, 56px); align-items: start; }
.tscn-w-l { display: grid; gap: 8px; align-content: start; }
.tscn-w-l > .iso { width: 48px; height: 48px; margin-bottom: 4px; }
.tscn-wide .tscn-d { margin-top: 0; }
@media (max-width: 980px) { .tscn-c.tscn-wide { grid-template-columns: minmax(0, 1fr); } }
.uistack.i2-narrow .uistack-inset2 { width: 21%; }
.uistack.i1-narrow .uistack-inset { width: 19%; }
/* 数据资产地图第四版 */
.akpis { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px; }   /* 10-12：加交易政策后为五张 */
.akpis.sm { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.akpis.k3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }   /* 10-15：客户价值评估页负荷预测精度三张，下方一行数据来源备注 */
.kpi-note { margin: 14px 0 clamp(36px, 4vw, 56px); }
.akpi { display: grid; gap: 4px; align-content: start; padding: 20px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.akpi strong { font-size: clamp(28px, 1.6vw + 16px, 40px); font-weight: 600; line-height: 1.1; color: var(--ink); font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.akpi strong small { margin-left: 4px; font-size: 14px; font-weight: 500; color: var(--muted); }
.akpi b { margin-top: 4px; font-size: 15px; color: var(--ink); } .akpi span { font-size: 13px; line-height: 1.6; color: var(--muted); }
.akpi.sm { padding: 16px; } .akpi.sm strong { font-size: clamp(24px, 1vw + 16px, 30px); }
.acaps { display: flex; flex-wrap: wrap; gap: 8px 10px; margin-top: 18px; }
.acaps span { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px 8px 10px; border-radius: 999px; background: var(--mist); font-size: 14px; color: var(--ink); }
.acaps .iso { width: 24px; height: 24px; }
.vcards2 { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
.vcard2 { display: grid; gap: 8px; align-content: start; padding: 22px 20px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.vcard2 .h3 { font-size: 17px; color: var(--ink); } .vcard2 p { font-size: 13.5px; line-height: 1.65; color: var(--muted); }
.vcard2 ul { display: grid; gap: 0; margin-top: 6px; border-top: 1px solid var(--hair); }
.vcard2 li { padding: 8px 0; border-bottom: 1px solid var(--hair); font-size: 13.5px; color: var(--ink); }
.inset-card { padding: 10px 12px 4px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.inset-card .frame { margin: 0; }
@media (max-width: 1100px) { .vcards2 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .akpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } .akpis:not(.sm) > :nth-child(5):last-child { grid-column: 1 / -1; } }
@media (max-width: 640px) { .vcards2, .akpis, .akpis.sm { grid-template-columns: minmax(0, 1fr); } }
.ind-switch.big.stuck button { flex: none; white-space: nowrap; }
.pd2-a > span { background: rgba(255, 255, 255, .75); box-shadow: inset 0 0 0 1px var(--hair); }
/* 交易全流程（时间轴式） */
.hf { display: grid; gap: 16px; }
.hf-in { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.hf-in b { margin-right: 6px; font-size: 13.5px; color: var(--muted); letter-spacing: .06em; }
.hf-in span { padding: 6px 12px; border-radius: 999px; background: var(--mist); font-size: 13.5px; color: var(--ink); }
.hf .pf { min-width: 760px; }
.hf-core { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--hair-2); }
.hf-core > div { display: grid; gap: 4px; padding: 16px 18px 4px 0; }
.hf-core b { font-family: var(--serif); font-size: 18px; color: var(--ink); letter-spacing: .04em; }
.hf-core span { font-size: 14px; line-height: 1.7; color: var(--text); }
@media (max-width: 900px) { .hf-core { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* 四类服务（四栏） */
.sv4s { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0 28px; margin-top: clamp(40px, 4vw, 64px); border-top: 1px solid var(--hair-2); }
.sv4 { display: grid; gap: 10px; align-content: start; padding-top: 22px; }
.sv4 b { font-size: 17px; color: var(--ink); }
.sv4 ul { display: grid; gap: 6px; } .sv4 li { font-size: 14.5px; color: var(--text); }
@media (max-width: 900px) { .sv4s { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 20px; } }
@media (max-width: 520px) { .sv4s { grid-template-columns: minmax(0, 1fr); } }
/* 方案结构与能源OS 架构：去掉重框，改为细线分隔 */
.sol { padding: 0; background: transparent; box-shadow: none; }
.sol-cols { gap: 0 28px; border-top: 1px solid var(--hair-2); }
.sol-c { padding: 20px 0 0; background: transparent; border-radius: 0; }
.sol-base { margin-top: 8px; }
.ea-l, .ea-r { background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.ea-cell { background: var(--mist); }
.sv4-h { margin-top: clamp(48px, 5vw, 80px); font-family: var(--serif); font-size: clamp(20px, .8vw + 14px, 26px); color: var(--ink); }
.sv4-h + .sv4s { margin-top: 20px; }
/* 关于我们首屏：三维循环短片，底色与首屏一致 */
.hero-art-fig .about-vid { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; background: var(--mist); }
.js .hero-art-fig .about-vid { opacity: 0; transition: opacity 1.2s var(--ease) .2s; }
.js.ready .hero-art-fig .about-vid { opacity: 1; }
/* 关于我们首屏静帧：入场淡入上移，之后极缓慢地浮动 */
.hero-art-fig .about-img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; background: var(--mist); }
.js .hero-art-fig .about-img { opacity: 0; transform: translateY(14px); transition: opacity 1.2s var(--ease) .2s, transform 1.4s var(--ease) .2s; }
.js.ready .hero-art-fig .about-img { opacity: 1; transform: none; animation: aboutFloat 10s ease-in-out 1.8s infinite; }
@keyframes aboutFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
@media (prefers-reduced-motion: reduce) { .js.ready .hero-art-fig .about-img { animation: none; } }

/* ================================================================ 第五轮（10-07 晚）
   术语小字注释；圆角框任何一侧不加色条；并列卡片的图标、标题与正文起点对齐；三维叙事背景随叙事结束滚走；
   团队标识表；交易智能体运行面板去掉进度条 */
.gl { font-size: .8em; font-weight: 400; letter-spacing: 0; color: var(--muted); }

.ccard::before { display: none; }
.mlay, .pd-b, .lc-tag { box-shadow: none; }
.cex { border-left: 0; }

/* 图片卡与底色卡：内容从同一高度起排（不再按底部对齐），同一排卡片的图标、标题、正文起点一致 */
.icard { align-items: start; }
.icard-in { padding-top: clamp(150px, 13vw, 196px); }
.tcard-in { align-content: start; min-height: 0; padding-top: clamp(92px, 8vw, 124px); }
@media (max-width: 560px) { .icard-in { padding-top: 132px; } .tcard-in { padding-top: 72px; } }

/* 案例卡：图标行、标题行、指标行在同一排卡片间对齐；指标单位单独一行，数值不折行 */
@supports (grid-template-rows: subgrid) {
  .cgrid > .ccard { grid-row: span 3; grid-template-rows: subgrid; row-gap: 18px; }
  .cgrid.one > .ccard { grid-row: auto; grid-template-rows: none; }
}
.cc-ms { align-self: stretch; }
.cc-m strong { white-space: nowrap; }
.cc-m strong small { display: block; margin: 4px 0 0; }

/* 三维叙事：背景放在与叙事等高的容器里吸顶，叙事结束时随内容滚走，不再盖住后面的内容 */
.story-bg { position: absolute; inset: 0; height: auto; margin-bottom: 0; overflow: visible; }
.story-bg::after { content: none; }
.story-pin { position: sticky; top: 0; height: 100vh; height: 100svh; overflow: hidden; }
.story-pin::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(90deg, rgba(244, 247, 251, .96) 0%, rgba(244, 247, 251, .82) 26%, rgba(244, 247, 251, 0) 52%); }
@media (max-width: 760px) {
  .story-bg { position: sticky; top: 0; inset: auto; height: 56vh; z-index: 1; }
  .story-pin { position: relative; height: 100%; }
  .story-pin::after { background: linear-gradient(0deg, rgba(244,247,251,.9), rgba(244,247,251,0) 30%); }
}

/* 团队：四组背景，每组一行（左侧组名与说明，右侧等分的标识格） */
.tw { display: grid; border-radius: var(--r-lg); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); overflow: hidden; }
.tw-row { display: grid; grid-template-columns: minmax(0, 300px) minmax(0, 1fr); }
.tw-row + .tw-row { border-top: 1px solid var(--hair); }
.tw-k { display: grid; align-content: center; gap: 8px; padding: clamp(22px, 2.4vw, 32px); border-right: 1px solid var(--hair); }
.tw-k b { font-size: 17px; font-weight: 600; color: var(--ink); letter-spacing: .02em; }
.tw-k p { font-size: 14px; line-height: 1.7; color: var(--muted); }
.tw-logos { display: grid; }
.tw-line { display: grid; grid-template-columns: repeat(var(--n), minmax(0, 1fr)); }
.tw-line + .tw-line { border-top: 1px solid var(--hair); }
.tw-cell { display: grid; place-items: center; min-height: 112px; padding: 18px 14px; }
.tw-cell + .tw-cell { border-left: 1px solid var(--hair); }
.tw-cell img { height: auto; max-width: 86%; max-height: 68px; object-fit: contain; }
@media (max-width: 900px) {
  .tw-row { grid-template-columns: minmax(0, 1fr); }
  .tw-k { border-right: 0; border-bottom: 1px solid var(--hair); }
}
@media (max-width: 640px) {
  .tw-line[data-n="5"], .tw-line[data-n="4"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tw-line[data-n="5"] .tw-cell:first-child { grid-column: span 2; }
  .tw-line[data-n="5"] .tw-cell:nth-child(2), .tw-line[data-n="5"] .tw-cell:nth-child(4),
  .tw-line[data-n="4"] .tw-cell:nth-child(odd) { border-left: 0; }
  .tw-line[data-n="5"] .tw-cell:nth-child(n+2), .tw-line[data-n="4"] .tw-cell:nth-child(n+3) { border-top: 1px solid var(--hair); }
  .tw-cell { min-height: 92px; }
}

/* 交易智能体运行面板：三栏等高；左栏运行闭环 + 当前运行；中栏五个智能体与状态；右栏持仓与运行记录 */
.ac > div { display: flex; flex-direction: column; }
.ac-loop { place-items: initial; }
.ac-fig { display: grid; place-items: center; padding: 2px 0 6px; }
.ac-fig .diag { width: 100%; max-width: 360px; height: auto; }
.ac-fig .t-ink { font-size: 19px; }
.ac-kv { margin-top: auto; display: grid; }
.ac-kv div { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 9px 0; border-top: 1px solid var(--hair); font-size: 13px; }
.ac-kv span { color: var(--muted); } .ac-kv b { font-weight: 600; color: var(--ink); }
.ac-mid .ac-agents { flex: 1; grid-auto-rows: 1fr; }
.ac-agents li { grid-template-columns: 30px minmax(0, 1fr) auto; padding: 10px 12px; }
.ac-st { font-style: normal; font-size: 12px; font-weight: 600; line-height: 1; padding: 6px 9px; border-radius: 999px; background: #FFFFFF; color: var(--muted); white-space: nowrap; }
.ac-st.done { color: var(--blue); }
.ac-st.run { color: #FFFFFF; background: var(--blue); }
.ac-right .ac-log { flex: 1; align-content: start; }
.ac-fig .t-serif { font-size: 21px; }
.formula .gl { display: block; margin-top: 2px; }
/* 界面片段里卡片单侧的色条（产品原样式）在官网展示时去掉 */
.uix [style*="3px 0 0 0 inset"], .uix [style*="0 2px 0 0 inset"] { box-shadow: none !important; }
/* 储能分层控制右栏：决策优先级纵向排列，填满右栏高度 */
.lc2-side { grid-template-rows: auto auto 1fr; }
.lc2-prio { display: grid; grid-auto-rows: 1fr; gap: 0; }
.lc2-prio span { position: relative; display: flex; align-items: center; gap: 12px; padding: 8px 0; border-radius: 0; background: none; font-size: 14px; }
.lc2-prio span + span { border-top: 1px solid var(--hair); }
.lc2-prio em { width: 18px; text-align: center; flex: none; }
.lc2-chart { grid-template-rows: auto 1fr auto; }
.lc2-chart .lc2-bars { display: grid; grid-auto-rows: 1fr; align-content: stretch; }
.lc2-chart .lc2-bars li { align-self: center; }
/* 标志组合不画“涌源”与英文之间的竖线（10-07）：保留原间距，载入动效落位时与导航标志对齐 */
.lg-rule, .yy-rule { background: transparent !important; opacity: 0 !important; }
/* 载入标志按导航标志精确换算（缩放比 = 29 / 104），落位时两者重合，不出现重影 */
.yy-cn { width: 164.97px; height: 57.38px; margin-left: 31.52px; }
.yy-rule { width: 3.586px; margin: 0 35.862px; }
.yy-en { font-size: 30.84px; gap: 3.586px; }
/* 首页产品区：交易智能体运行面板 + 策略说明小窗（前后景） */
.an { display: grid; gap: 10px; padding: 14px 16px 16px; background: #FFFFFF; font-size: 12.5px; line-height: 1.6; color: var(--text); }
.an-k { font-size: 12px; font-weight: 600; letter-spacing: .06em; color: var(--blue); }
.an-t { font-size: 13.5px; font-weight: 600; line-height: 1.6; color: var(--ink); }
.an-l { display: grid; gap: 6px; }
.an-l li { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 8px; padding-top: 6px; border-top: 1px solid var(--hair); }
.an-l b { font-weight: 600; color: var(--ink); }
.an-q { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: var(--r-sm); background: var(--mist); }
.an-q span { flex: none; padding: 2px 7px; border-radius: 999px; background: var(--blue); color: #FFFFFF; font-size: 11px; }
.an-q em { font-style: normal; color: var(--ink); }
.uistack.ac-stack { padding: 0 0 12% 0; }
.uistack.ac-stack .uistack-inset { left: auto; right: -2%; bottom: 0; width: 38%; }
.uistack.ac-stack .ac { box-shadow: inset 0 0 0 1px var(--hair); }
@media (max-width: 1180px) { .uistack.ac-stack .ac { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } .uistack.ac-stack .ac-loop { display: none; } }
@media (max-width: 760px) { .uistack.ac-stack { padding: 0; } .uistack.ac-stack .uistack-inset { width: 100%; } }
/* 首页交易智能体：两栏后景 + 策略说明（左下）+ 持仓与运行记录（右上） */
.ac.ac2 { grid-template-columns: minmax(0, 4fr) minmax(0, 5fr); }
.uistack.ac-stack { padding: 9% 18% 13% 6%; }
.uistack.ac-stack .uistack-inset { left: 0; right: auto; bottom: 0; width: 40%; }
.uistack.ac-stack .uistack-inset2 { width: 36%; }
.ac-side { padding: 12px 14px 8px; }
.ac-side .ac-h { margin-bottom: 6px; }
.ac-side .ac-log li { grid-template-columns: 40px 32px minmax(0, 1fr); padding: 5px 0; font-size: 11.5px; }
.ac-side .ac-log li:nth-child(n+4) { display: none; }
@media (max-width: 1180px) { .uistack.ac-stack .ac { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } .uistack.ac-stack .ac-loop { display: flex; } }
@media (max-width: 760px) { .uistack.ac-stack { padding: 0; } .uistack.ac-stack .uistack-inset, .uistack.ac-stack .uistack-inset2 { width: 100%; } .uistack.ac-stack .ac { grid-template-columns: minmax(0, 1fr); } }
/* 首页产品区的前后景：主窗更大，右上小窗放大到可读 */
.pp-vis .uistack.trio:not(.ac-stack) { padding: 5% 6% 8% 8%; }
.pp-vis .uistack.trio.i2-narrow .uistack-inset2 { width: 28%; }
.pp-vis .uistack.trio.wide-inset .uistack-inset { width: 40%; }
@media (max-width: 760px) { .pp-vis .uistack.trio:not(.ac-stack) { padding: 0; } .pp-vis .uistack.trio .uistack-inset, .pp-vis .uistack.trio .uistack-inset2 { width: 100%; } }
/* 公司概况：宣传语、关键句、说明三级层次，关键词加重 */
.stmt { display: grid; gap: clamp(14px, 1.4vw, 22px); max-width: 52em; }
.stmt-h { font-family: var(--serif); font-weight: 700; font-size: clamp(38px, 3.2vw + 12px, 64px); line-height: 1.2; letter-spacing: .04em; color: var(--ink); }
.stmt-key { font-family: var(--serif); font-weight: 700; font-size: clamp(21px, 1.2vw + 11px, 30px); line-height: 1.55; letter-spacing: .02em; color: var(--ink); }
.stmt-key em { font-style: normal; color: var(--blue); }
.stmt-body { max-width: 44em; font-size: clamp(16px, .3vw + 14px, 18px); line-height: 1.9; color: var(--muted); }
.stmt-body b { font-weight: 600; color: var(--ink); }
.intro-text { color: #5D6A7C; }
.intro-text strong { font-weight: 700; color: var(--ink); }
.intro-text em { font-style: normal; color: var(--blue); }
/* 首页公司概况：关键句 + 说明（关键词加重） */
.intro-k { display: grid; gap: clamp(14px, 1.4vw, 22px); max-width: 34em; }
.intro-brand { --s: 2.4; display: flex; align-items: center; }   /* 首页公司概况的大号标志：导航标志按同一比例放大（10-11） */
.intro-brand .ib-mark { width: calc(26px * var(--s)); height: calc(29px * var(--s)); object-fit: contain; flex: none; }
.intro-brand .ib-cn { width: calc(46px * var(--s)); height: calc(16px * var(--s)); margin-left: calc(9px * var(--s)); object-fit: contain; object-position: left center; flex: none; }
.intro-brand .ib-en { display: grid; gap: calc(1px * var(--s)); margin-left: calc(21px * var(--s)); color: var(--navy); font-family: var(--sans); font-size: calc(8.6px * var(--s)); line-height: 1.12; letter-spacing: .16em; text-transform: uppercase; font-weight: 500; white-space: nowrap; }
.intro-brand .ib-en b { font-weight: 500; }
@media (max-width: 760px) { .intro-brand { --s: 1.6; } }
.intro-lead { font-family: var(--serif); font-weight: 700; font-size: clamp(28px, 1.9vw + 12px, 44px); line-height: 1.35; letter-spacing: .03em; color: var(--ink); }
.intro-lead em { font-style: normal; color: var(--blue); }
.intro-sub { font-size: clamp(16px, .35vw + 14px, 19px); line-height: 1.9; color: var(--muted); }
.intro-sub b { font-weight: 600; color: var(--ink); }
.intro-lead { text-wrap: balance; }
.intro-lead em { white-space: nowrap; }
.stmt-key { text-wrap: pretty; }
.intro-lead { text-wrap: wrap; }
.intro-lead .nw { display: inline-block; white-space: nowrap; }
/* “涌源”文字标改用图片（深色、白色两张按背景切换），不再用底色加遮罩，避免显卡合成时在文字右侧露出细缝（10-07） */
.lg-cn, .yy-cn { position: relative; background: none !important; -webkit-mask: none !important; mask: none !important; }
.lg-cn img, .yy-cn img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; object-position: left center; transition: opacity .5s var(--ease); }
.lg-cn .wc-w, .yy-cn .wc-w { opacity: 0; }
.hd-dark .hd-bar .lg-cn .wc-n { opacity: 0; }
.hd-dark .hd-bar .lg-cn .wc-w { opacity: 1; }
.fly-open .hd-bar .lg-cn .wc-n, .menu-open .hd-bar .lg-cn .wc-n { opacity: 1; }
.fly-open .hd-bar .lg-cn .wc-w, .menu-open .hd-bar .lg-cn .wc-w { opacity: 0; }
/* 载入动效：“涌源”从左到右显出（矩形裁切） */
.yy-cn { clip-path: inset(0 100% 0 0); }
.yy-intro.play .yy-cn { animation: yyClip 1s var(--ease) 1.05s forwards; }
.yy-intro.flying.to-dark .yy-cn .wc-n { opacity: 0; transition: opacity .8s var(--ease); }
.yy-intro.flying.to-dark .yy-cn .wc-w { opacity: 1; transition: opacity .8s var(--ease); }
@keyframes yyClip { to { clip-path: inset(0 0 0 0); } }
/* 关于我们首屏三维：图片四边柔和过渡到首屏底色，不露出图片方框的边界（10-07） */
.hero-art-fig .about-img, .hero-art-fig .about-vid {
  background: transparent;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 9%, #000 91%, transparent 100%), linear-gradient(180deg, transparent 0, #000 9%, #000 91%, transparent 100%);
  -webkit-mask-composite: source-in;
  mask-image: linear-gradient(90deg, transparent 0, #000 9%, #000 91%, transparent 100%), linear-gradient(180deg, transparent 0, #000 9%, #000 91%, transparent 100%);
  mask-composite: intersect;
}
.chart .c-in2 { fill: var(--ink); font-size: 12px; }
/* 三维标注：显隐用淡入淡出，不闪 */
.story-tag { transition: opacity .3s ease; backface-visibility: hidden; }

/* ================================================================ 手机端（≤760px）专门排版（10-08）
   图表用手机版重绘；三维叙事改为静帧列表；横向时间轴、对照表与宽表格改竖排；产品界面只放主窗口、点开放大；
   大图卡片压缩；案例卡与产品切换左右滑动；合作伙伴两列 */
.ch-m, .tl-m, .pd2-m, .zones-m, .zones-m-n { display: none; }
@media (max-width: 760px) {
  .ch-d { display: none; }
  .ch-m { display: block; }

  /* 三维叙事（手机）：标题在前；同一段视频吸在导航条下方连续播放，各步文字在下方逐段滚过 */
  .story { background: none; }
  .story-ui { display: none !important; }
  .story-fg { padding-bottom: 0; pointer-events: auto; }
  .story-head { min-height: 0; padding: 0 0 20px; max-width: none; }
  .ind .story { width: auto; margin-left: 0; margin-top: 28px; }
  .ind .story .story-head { min-height: 0; }
  .story-bg { inset: auto; position: sticky; top: var(--hd); z-index: 4; height: min(75vw, 40svh); margin: 0; overflow: hidden; background: #F4F7FB; box-shadow: 0 1px 0 rgba(14, 40, 65, .07); }
  .story-pin { position: relative; top: auto; height: 100%; }
  .story-pin::after { content: none; }
  .story-stage > img, .story-stage > video { object-position: 70% 50%; }
  .ind .story-bg { top: calc(var(--hd) + 70px); height: min(66vw, 34svh); overflow: visible; background: none; box-shadow: none; }   /* 行业切换条吸顶时让出位置 */
  .ind .story-pin { border-radius: 14px; overflow: hidden; background: #F4F7FB; }
  .ind .story-bg.is-stuck::before { content: ""; position: absolute; left: calc(-1 * var(--gut)); right: calc(-1 * var(--gut)); bottom: 100%; height: 72px; background: var(--mist); }   /* 吸顶后遮住视频上方滚过的文字；左右按页边距伸出（原 24px 比手机页边距多 4px，会出现横向滚动） */
  .story-step { display: block; min-height: 36svh; padding-top: 26px; }
  .story-step:last-child { min-height: 28svh; padding-bottom: 32px; }   /* 最后一段留出播完的距离，读完后视频随之离开 */
  .story-card { max-width: none; padding: 0; border-radius: 0; background: none; -webkit-backdrop-filter: none; backdrop-filter: none; box-shadow: none; opacity: .5; transform: none; }
  .story-step.on .story-card { opacity: 1; }
  .story-n { padding-bottom: 8px; margin-bottom: 10px; font-size: 12px; }
  .story-card h3 { font-size: 19px; }
  .story-card p { margin-top: 8px; font-size: 15px; line-height: 1.8; }
  .story-tag { padding: 4px 8px; border-radius: 6px; font-size: 11.5px; }
  .story-tag::after { bottom: -7px; height: 7px; }
  .story-tag::before { bottom: -11px; width: 6px; height: 6px; margin-left: -3px; }

  /* 横向时间轴、对照表、部署分区：竖排 */
  .px-flow, .pd2, .dm-zones { display: none !important; }
  .tl-m { display: grid; margin: 4px 0 12px; }
  .tl-m li { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 2px 12px; padding: 12px 0; border-top: 1px solid var(--hair); }
  .tl-m li:last-child { border-bottom: 1px solid var(--hair); }
  .tl-m em { grid-row: span 2; font-style: normal; font-size: 13px; font-weight: 600; line-height: 1.5; color: var(--blue); }
  .tl-m b { font-size: 15px; font-weight: 600; line-height: 1.5; color: var(--ink); }
  .tl-m span { font-size: 13px; line-height: 1.6; color: var(--muted); }
  .pd2-m { display: grid; gap: 10px; }
  .pd2-mi { padding: 14px 16px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
  .pd2-mi b { display: block; margin-bottom: 6px; font-size: 15px; color: var(--ink); }
  .pd2-mi p { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 8px; padding: 4px 0; font-size: 14px; line-height: 1.6; color: var(--muted); }
  .pd2-mi p.on { color: var(--ink); }
  .pd2-mi em { font-style: normal; font-size: 12.5px; color: var(--muted); }
  .pd2-mi p.on em { font-weight: 600; color: var(--blue); }
  .zones-m { display: grid; gap: 8px; margin-top: 14px; counter-reset: z; }
  .zones-m li { display: grid; gap: 2px; padding: 12px 16px; border-radius: var(--r-sm); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
  .zones-m li:nth-child(2) { box-shadow: inset 0 0 0 1.5px var(--blue); }
  .zones-m b { font-size: 15px; color: var(--ink); } .zones-m span { font-size: 13px; color: var(--muted); }
  .zones-m-n { display: block; margin-top: 8px; font-size: 13px; color: var(--muted); }

  /* 钢铁四类企业：每行一张卡 */
  .ind-tbl { min-width: 0; }
  .ind-tbl thead { display: none; }
  .ind-tbl, .ind-tbl tbody, .ind-tbl tr, .ind-tbl th, .ind-tbl td { display: block; width: 100%; }
  .ind-tbl tr { padding: 10px 0; border-top: 1px solid var(--hair); }
  .ind-tbl tbody th { padding: 0 0 4px; border: 0; font-size: 15px; white-space: normal; }
  .ind-tbl td { display: flex; justify-content: space-between; gap: 16px; padding: 3px 0; border: 0; font-size: 13.5px; text-align: right; }
  .ind-tbl td::before { content: attr(data-l); flex: none; color: var(--muted); text-align: left; }

  /* 产品界面：只放主窗口，点开全屏查看 */
  .uistack { padding: 0 !important; }
  .uistack-inset, .uistack-inset2 { display: none !important; }
  .shot { cursor: zoom-in; }
  .shot::after { content: "点开放大"; position: absolute; z-index: 3; right: 8px; bottom: 8px; padding: 4px 9px; border-radius: 999px; background: rgba(255, 255, 255, .94); box-shadow: inset 0 0 0 1px var(--hair); font-size: 11.5px; line-height: 1.2; color: var(--ink); pointer-events: none; }
  .zoom-open { overflow: hidden; }
  .zoom { position: fixed; inset: 0; z-index: 300; background: #F4F7FB; }
  .zoom-in { height: 100%; overflow: auto; padding: 64px 12px 48px; -webkit-overflow-scrolling: touch; }
  .zoom-in .shot { margin: 0; }
  .zoom-in .shot::after { content: none; }
  .zoom-x { position: fixed; top: 12px; right: 12px; z-index: 2; height: 38px; padding: 0 16px; border-radius: 999px; background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair), 0 10px 24px -14px rgba(14, 40, 65, .5); font-size: 14px; color: var(--ink); }
  .zoom-tip { position: fixed; left: 0; right: 0; bottom: 14px; text-align: center; font-size: 12px; color: var(--muted); pointer-events: none; }

  /* 大图卡片压缩：图片缩成顶部窄条，底色卡去掉背景图 */
  .icards, .tcards { gap: 10px; }
  .icard { display: block; min-height: 0; background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
  .icard-bg { position: relative; inset: auto; z-index: 0; display: block; height: 108px; transform: none; }
  .icard::after { content: none; }
  .icard-in { gap: 6px; padding: 14px 16px 16px !important; }
  .tcard { background: #FFFFFF; }
  .tcard-bg, .tcard::after { display: none; }
  .tcard-in { gap: 6px; padding: 16px !important; }
  .tcard-in .iso { margin-bottom: 0; }
  .scard .photo { aspect-ratio: 16 / 9 !important; }

  /* 合作伙伴：两列，只放标识、名称与合作层级 */
  .clients { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 10px; }
  .client { gap: 10px; padding: 16px 14px 14px; }
  .client-logo { min-height: 64px; }
  .client-logo img { max-height: 46px; }
  .client-meta { flex-wrap: wrap; gap: 2px 8px; padding-top: 10px; }
  .client-desc { display: none; }

  /* 案例卡与产品切换：左右滑动 */
  .cgrid:not(#cgrid), .psw { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 12px; margin-inline: calc(-1 * var(--gut)); padding: 2px var(--gut) 12px; scrollbar-width: none; }
  .cgrid:not(#cgrid)::-webkit-scrollbar, .psw::-webkit-scrollbar { display: none; }
  .cgrid:not(#cgrid) > *, .psw > * { flex: 0 0 84%; scroll-snap-align: start; }

  /* 数据飞轮只留文字列表 */
  .fly2 { display: none; }
  /* 点按区域 */
  .lnk { min-height: 40px; display: inline-flex; align-items: center; }
}
@media (max-width: 760px) {
  /* 手机上收紧各节的上下留白 */
  :root { --sec: 60px; }
  .shead { margin-bottom: 28px; }
  .shead .lead { margin-top: 12px; }
  .sec.tone-tint > .wrap { padding: 36px 18px; border-radius: 20px; }
  /* 调度案例小示意图：字放大 */
  .mini .mn-lab, .mini .mn-ax { font-size: 15px; }
  .mini .mn-k { font-size: 16px; }
}
@media (max-width: 760px) {
  .cmetrics { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 0 16px; }
  .sol-flow > i { display: none; }
}
@media (max-width: 760px) { .agent-art .diag .t-ink { font-size: 19px; } .agent-art .diag .t-serif { font-size: 21px; } }
/* 三维叙事的标题单独成块（手机上排在吸顶视频之前），不带叙事区的底部留白 */
.story-fg.story-top { padding-bottom: 0; }
/* 手机内容精简（约为电脑版的七成）：次要说明、明细清单、与上下文重复的内容和互链清单在手机上不显示 */
@media (max-width: 760px) {
  .m-hide { display: none !important; }
  .pp-pts, .bz-tags { display: none !important; }                 /* 首页产品要点、业务标签 */
  .psw-card ul, .vcard2 ul, .svc-card dl, .svc-card > p { display: none; }   /* 产品互链、数据视角与服务对象的明细说明 */
  .m-brief .pair p { display: none; }                               /* 研究方向只列名称 */
  .scard .photo, .scard picture { display: none; }                  /* 服务对象、适用场景：去掉配图，排成紧凑列表 */
  .scards { gap: 10px; }
  .scard-b { padding: 16px 18px 18px; }
  .lc2-c p, .lc2-side, .lc2-note { display: none; }                 /* 储能分层控制：留三层名称与收益对比 */
  .ew-c ul, .ea, .px-cols, .dc > p, .ind-hero.is3d .still { display: none !important; }   /* 能源OS：标签清单、架构图、落地与资源清单、调度小图说明；行业静帧不重复显示（三维视频紧随其后） */
  .m-brief .icard-in p, .shift2 p, .layer p, .dm-sec, .sol { display: none; }   /* 资源说明、发展方向说明、分层说明、安全清单、案例方案示意 */
  .eng-col ul, .eng-base { display: none; }                         /* 流程图只留各环节名称 */
  .eng-col { padding: 12px 12px; } .eng-col .eng-h { padding-bottom: 0; margin-bottom: 0; border-bottom: 0; }
  .explain p + p { display: none; }                                 /* 图旁说明只留第一段 */
  .cgrid:not(#cgrid):not(.m4) > :nth-child(n+4), .cgrid.m4 > :nth-child(n+5) { display: none; }   /* 案例卡最多三张（首页四张，含功率预测案例），其余在案例页查看 */
  .cpn-sub { display: none; }
  .ac-right .ac-log, .ac-right .ac-h ~ .ac-h { display: none; }    /* 智能体运行记录（连同小标题） */
}

/* 手机端第二轮（10-12）：控制篇幅、去掉与上下文重复的内容；滚动淡入在手机上不用裁切与缩放，只做透明度与轻微上移，滚动更顺 */
@media (max-width: 760px) {
  .logoband { display: none; }                                         /* 首页标识带：与下方“合作伙伴”一节重复 */
  #about .icards { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 10px; }   /* 公司概况：四个方向改为两列小卡，只留名称（下方业务体系有详细介绍） */
  #about .icard-bg { height: 84px; }
  #about .icard-in { padding: 12px 14px 14px !important; }
  #about .icard-in p { display: none; }
  .tcard-in p { display: none; }                                       /* 业务页“关键问题”：只留问题名称 */
  .pm-b span, .mx-row, .mx-legend { display: none; }                   /* 电价预测建模：特征、模型与输出只留名称，定价结构对照不显示 */
  .ind-x:has(.ind-tbl) { display: none; }                              /* 能源OS：四类企业对照表 */
  .dcs > .dc:nth-child(n+2) { display: none; }                         /* 能源OS 调度案例：只留第一个 */
  .svc-bg { display: none; }                                           /* 应用案例页服务对象：去掉配图 */
  .pairs.m-brief { --cols: 2 !important; gap: 0 16px; }                /* 招聘页研究方向：两列名称清单 */
  .pairs.m-brief .pair { padding: 14px 0; border-top: 1px solid var(--hair); }
  .pairs.m-brief .pair h3 { font-size: 15.5px; }
  .layer { padding: 14px 18px; } .layer b { font-size: 17px; }       /* 智能体分工：三层只留名称，排成紧凑的分层图 */
  .ac .ac-mid { display: none; }                                      /* 智能体运行面板：五个智能体列表与“多智能体协同”一节重复，手机上不显示 */
  .hero-crumb a, .pt-mini a { display: inline-flex; align-items: center; min-height: 40px; }   /* 面包屑与产品小导航：点按区域不小于 40 像素 */
  .ind-switch.big.stuck, .sq3d-pause { -webkit-backdrop-filter: none; backdrop-filter: none; }   /* 吸顶切换条叠在三维视频上：去掉毛玻璃模糊，滚动不掉帧 */
  .ind-switch.big.stuck { background: rgba(255, 255, 255, .97); }
  .js .rv { clip-path: none !important; transform: translate3d(0, 14px, 0); transition: opacity .7s ease, transform .9s var(--ease); }
  .js .rv.on { transform: none; }
}

/* ---------------------------------------------------------------- 10-08 修改意见 */
/* 界面截图不再带窗口标题栏 */
.shot-bar { display: none; }
/* 团队组成：四组背景各一句说明，不放标识 */
.tb { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0 32px; border-top: 1px solid var(--hair); }
.tb-i { padding: 24px 0 4px; }
.tb-i b { display: block; font-family: var(--serif); font-weight: 700; font-size: 19px; letter-spacing: .03em; color: var(--ink); }
.tb-i p { margin-top: 10px; font-size: 15px; line-height: 1.8; color: var(--text); }
@media (max-width: 900px) { .tb { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 24px; } }
@media (max-width: 560px) { .tb { grid-template-columns: minmax(0, 1fr); } }
/* 方案咨询卡：第三行为咨询内容 */
.ccard.consult .cc-note { align-self: start; padding: 14px 16px; border-radius: 10px; background: var(--mist); font-size: 14px; line-height: 1.75; color: var(--text); }
/* 能源OS 行业页签：方案性质标签 */
.ind-cap .ind-mode { display: inline-block; margin-top: 8px; padding: 3px 10px; border-radius: 999px; background: var(--tint); color: var(--blue); font-size: 13px; font-weight: 600; letter-spacing: .02em; }
/* 数据资产地图：四类数据侧 */
.vcards2 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1100px) { .vcards2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .vcards2 { grid-template-columns: minmax(0, 1fr); } }
.vcard2 .h3 { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; }
.vcard2 .vc-n { padding: 2px 9px; border-radius: 999px; background: var(--tint); color: var(--blue); font-family: var(--sans); font-size: 12.5px; font-weight: 600; letter-spacing: .02em; }
/* 交易智能体：五个智能体不标运行状态 */
.ac-agents li { grid-template-columns: 30px minmax(0, 1fr); }
/* 数据资产地图：已接入的市场区域（全部列出） */
.aregions { display: grid; gap: 16px; margin-top: 28px; padding: 24px 26px 26px; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); }
.aregions .ar-t { font-size: 15px; font-weight: 600; color: var(--ink); }
.ar-row { display: grid; grid-template-columns: 170px minmax(0, 1fr); gap: 18px; align-items: start; padding-top: 14px; border-top: 1px solid var(--hair); }
.ar-row b { font-size: 14.5px; font-weight: 600; color: var(--ink); }
.ar-row b small { display: block; margin-top: 4px; font-size: 13px; font-weight: 500; color: var(--muted); }
.ar-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.ar-chips span { padding: 5px 12px; border-radius: 999px; background: var(--mist); font-size: 13.5px; color: var(--ink); }
@media (max-width: 760px) { .ar-row { grid-template-columns: minmax(0, 1fr); gap: 10px; } }

/* ---------------------------------------------------------------- 10-08 正式上线 */
/* 页脚底部：版权、ICP 备案号（链接工信部备案系统）、隐私政策，居中 */
.ft-bot { justify-content: center; align-items: center; gap: 10px 14px; text-align: center; }
.ft-bot a { color: inherit; text-decoration: none; transition: color .2s; }
.ft-bot a:hover { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
.ft-bot i { font-style: normal; opacity: .6; }
/* 预约表单：防机器人的隐藏字段；提交失败的提示 */
.form .hp { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }
.form-err { padding: 12px 16px; border-radius: 10px; background: #FDF1F0; color: #B4372B; font-size: 14.5px; line-height: 1.7; }
.form .note .lnk { display: inline; min-height: 0; color: var(--blue); }
/* 隐私政策 */
.legal-sec { padding-top: calc(var(--hd) + 56px); }
.legal { max-width: 760px; }
.legal .crumb-t { font-size: 13px; letter-spacing: .08em; color: var(--muted); }
.legal .h-hero { margin-top: 14px; font-size: clamp(36px, 4vw, 52px); }
.legal .lead { margin-top: 18px; }
.legal h2 { margin-top: 40px; font-family: var(--serif); font-weight: 700; font-size: 20px; letter-spacing: .03em; color: var(--ink); }
.legal h2 + p { margin-top: 12px; }
.legal p { font-size: 15.5px; line-height: 1.95; color: var(--text); }
.legal .lnk { display: inline; min-height: 0; color: var(--blue); }
.legal-date { margin-top: 44px; padding-top: 18px; border-top: 1px solid var(--hair); font-size: 13.5px !important; color: var(--muted) !important; }

/* ---------------------------------------------------------------- 10-08 手机适配（同步本轮内容修改） */
/* 地址在门牌号之后换行，楼宇名称与楼层不拆开 */
.addr-b { white-space: nowrap; }
@media (max-width: 760px) {
  /* 能源OS 行业面板：静帧在手机上不显示，面板高度随文字（原 2:1 比例会截断说明文字） */
  .ind-hero.is3d { aspect-ratio: auto; }
  /* 数据资产地图：数字卡两列，只留数字与名称（说明与下方区域清单、数据侧卡片重复） */
  .akpis, .akpis.sm { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .akpi, .akpi.sm { padding: 16px 16px 14px; }
  .akpi strong { font-size: 28px; }
  .akpi span { display: none; }
  /* 客户价值评估页负荷预测精度：三张一行，数字与名称缩小 */
  .akpis.k3 .akpi { padding: 14px 12px 12px; }
  .akpis.k3 .akpi strong { font-size: 22px; }
  .akpis.k3 .akpi b { font-size: 13px; line-height: 1.45; }
  .aregions { gap: 14px; margin-top: 20px; padding: 18px 16px 20px; }
  .ar-chips { gap: 6px; }
  .ar-chips span { padding: 4px 10px; font-size: 13px; }
  /* 页脚底部：版权单独一行，备案号与隐私政策一行；窄屏不显示分隔点，避免换行后挂在行尾 */
  .ft-bot { gap: 6px 18px; }
  .ft-bot > i { display: none; }
  .ft-bot > :first-child { flex-basis: 100%; }
}

/* ---------------------------------------------------------------- 页脚联系方式 */
/* 标签一列、内容一列，内容左对齐；地址分两行；联系栏比链接栏宽，手机上占满一行 */
.ft-top { grid-template-columns: minmax(0, 1.2fr) repeat(3, minmax(0, 1fr)) minmax(0, 1.8fr); }
.ft-contact ul { display: grid; gap: 12px; }
.ft-contact li { display: grid; grid-template-columns: 2.4em minmax(0, 1fr); column-gap: 12px; align-items: baseline; }
.ft-col.ft-contact li + li { margin-top: 0; }
.ft-contact .ft-k { font-size: 13px; letter-spacing: .06em; color: #8A97A8; }
.ft-contact .ft-v { min-width: 0; line-height: 1.7; overflow-wrap: anywhere; }
a[href^="tel:"] { white-space: nowrap; }   /* 电话（+86 与号码）不在中间断行：页脚、联系我们、加入我们 */
.ft-contact .addr-b { display: block; }
@media (max-width: 900px) { .ft-top { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 760px) { .ft-contact { grid-column: 1 / -1; } }

/* ---------------------------------------------------------------- 加入我们：在招岗位（小卡片 + 详情弹窗，10-09） */
.jobs-k { margin: 4px 0 14px; font-size: 13.5px; font-weight: 600; letter-spacing: .1em; color: var(--muted); }
.jobs-k2 { margin-top: clamp(40px, 5vw, 56px); margin-bottom: 0; }
.jobs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.job-card { position: relative; display: grid; align-content: start; gap: 10px; width: 100%; padding: 24px 26px 22px; border: 0; border-radius: var(--r); background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--hair); text-align: left; font: inherit; color: inherit; text-decoration: none; cursor: pointer; transition: box-shadow .35s var(--ease), transform .45s var(--ease); }
.job-card:hover, .job-card:focus-visible, .job-card.is-peek { box-shadow: inset 0 0 0 1px var(--blue), 0 18px 40px -28px rgba(14, 40, 65, .45); transform: translateY(-2px); outline: none; }
.job-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.job-tags, .jd-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.job-tags em, .jd-tags em { padding: 3px 10px; border-radius: 999px; background: var(--tint); color: var(--blue); font-style: normal; font-size: 12.5px; font-weight: 600; letter-spacing: .03em; }
.job-top .ic { width: 18px; height: 18px; color: var(--muted); transition: transform .4s var(--ease), color .3s; }
.job-card:hover .job-top .ic, .job-card.is-peek .job-top .ic { color: var(--blue); transform: translate(2px, -2px); }
.job-t { font-family: var(--serif); font-weight: 700; font-size: 22px; letter-spacing: .03em; color: var(--ink); }
.job-d { font-size: 15px; line-height: 1.75; color: var(--text); }
.job-meta { display: flex; flex-wrap: wrap; gap: 8px 18px; margin-top: 4px; padding-top: 14px; border-top: 1px solid var(--hair); }
.job-meta i { display: inline-flex; align-items: center; gap: 6px; font-style: normal; font-size: 13.5px; color: var(--muted); }
.job-meta .ic { width: 15px; height: 15px; flex: none; }
.job-go { margin-top: 2px; font-size: 14px; font-weight: 600; letter-spacing: .03em; color: var(--blue); }
/* “更多岗位”：与合作伙伴里“成为合作伙伴”同一种无底色卡 */
.job-next { align-content: center; background: transparent; box-shadow: inset 0 0 0 1px var(--hair-2); }
.job-next-t { display: inline-flex; align-items: center; gap: 10px; font-size: 17px; font-weight: 600; letter-spacing: .04em; color: var(--ink); }
.job-next-t .ic { width: 20px; height: 20px; color: var(--accent); }

/* 详情弹窗（点击）：左栏工作内容与任职要求，右栏工作安排与投递方式 */
.job-dlg { width: min(880px, calc(100vw - 48px)); max-width: none; max-height: min(88vh, 920px); padding: 0; border: 0; border-radius: 20px; background: #FFFFFF; color: var(--text); box-shadow: 0 30px 80px -30px rgba(14, 40, 65, .45); overflow: auto; overscroll-behavior: contain; }
.job-dlg::backdrop { background: rgba(12, 25, 44, .42); }
.job-dlg[open] { animation: jd-in .28s var(--ease); }
@keyframes jd-in { from { opacity: 0; transform: translateY(10px) scale(.985); } to { opacity: 1; transform: none; } }
html.dlg-open { overflow: hidden; }
.jd { position: relative; padding: 36px 40px 34px; }
.jd-x { position: absolute; top: 18px; right: 18px; width: 40px; height: 40px; display: grid; place-items: center; border: 0; border-radius: 50%; background: transparent; color: var(--muted); cursor: pointer; transition: background-color .25s, color .25s; }
.jd-x:hover, .jd-x:focus-visible { background: var(--mist); color: var(--ink); outline: none; }
.jd-x svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; }
.jd-h { padding-right: 48px; padding-bottom: 24px; border-bottom: 1px solid var(--hair); }
.jd-t { margin-top: 12px; font-family: var(--serif); font-weight: 700; font-size: 30px; letter-spacing: .03em; color: var(--ink); }
.jd-intro { margin-top: 12px; max-width: 46em; font-size: 15.5px; line-height: 1.85; color: var(--text); }
.jd-b { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 28px; margin-top: 26px; align-items: start; }
.jd-main { display: grid; gap: 26px; }
.jd h4 { font-size: 15px; font-weight: 600; letter-spacing: .04em; color: var(--ink); }
.jd ul { display: grid; gap: 10px; margin: 12px 0 0; padding: 0; list-style: none; }
.jd li { position: relative; padding-left: 16px; font-size: 15px; line-height: 1.75; color: var(--text); }
.jd li::before { content: ""; position: absolute; left: 2px; top: .72em; width: 5px; height: 5px; border-radius: 50%; background: var(--blue); opacity: .75; }
.jd-side { display: grid; gap: 22px; padding: 22px 22px 24px; border-radius: 14px; background: var(--mist); }
.jd-side dl { margin: 10px 0 0; }
.jd-side dl > div { display: grid; grid-template-columns: 6.2em minmax(0, 1fr); gap: 12px; padding: 10px 0; border-top: 1px solid var(--hair); }
.jd-side dl > div:first-child { border-top: 0; padding-top: 4px; }
.jd-side dt { font-size: 13.5px; line-height: 1.7; color: var(--muted); }
.jd-side dd { margin: 0; min-width: 0; font-size: 14.5px; line-height: 1.7; color: var(--text); overflow-wrap: anywhere; }
.jd-subj { color: var(--ink); }
.jd-note { margin-top: 8px; font-size: 13.5px; line-height: 1.7; color: var(--muted); }
.jd-cta { display: inline-flex; align-items: center; justify-content: center; gap: 8px; width: 100%; margin-top: 16px; padding: 12px 18px; border-radius: 999px; background: var(--blue); color: #FFFFFF; font-size: 15px; font-weight: 600; letter-spacing: .04em; text-decoration: none; transition: background-color .25s; }
.jd-cta:hover { background: var(--blue-d); }
.jd-cta .ic { width: 16px; height: 16px; }
/* 鼠标停留时的浮窗：同一内容，贴在卡片旁边；点一下即转为弹窗 */
.job-pop { position: fixed; z-index: 60; width: min(700px, calc(100vw - 32px)); max-height: calc(100vh - var(--hd) - 32px); overflow: auto; overscroll-behavior: contain; border-radius: 18px; background: #FFFFFF; box-shadow: 0 0 0 1px var(--hair), 0 30px 70px -28px rgba(14, 40, 65, .42); animation: jd-in .22s var(--ease); cursor: default; }
.job-pop .jd { padding: 26px 28px 24px; }
.job-pop .jd-x { top: 12px; right: 12px; }
.job-pop .jd-h { padding-bottom: 18px; }
.job-pop .jd-t { margin-top: 10px; font-size: 24px; }
.job-pop .jd-intro { font-size: 14.5px; line-height: 1.8; }
.job-pop .jd-b { gap: 22px; margin-top: 20px; }
.job-pop .jd-main { gap: 20px; }
.job-pop .jd li { font-size: 14px; line-height: 1.7; }
.job-pop .jd ul { gap: 7px; margin-top: 10px; }
.job-pop .jd-side { gap: 16px; padding: 18px 18px 20px; }
.job-pop .jd-side dl > div { grid-template-columns: minmax(0, 1fr); gap: 2px; padding: 8px 0; }
.job-pop .jd-side dt { font-size: 12.5px; }
.job-pop .jd-side dd { font-size: 13.5px; }
.job-pop .jd-cta { display: none; }   /* 浮窗里不放按钮：点一下浮窗即转为弹窗，弹窗里有“发送简历” */
@media (max-width: 900px) { .jd-b { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 760px) {
  .jobs { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .job-card { padding: 20px 20px 18px; }
  .job-t { font-size: 20px; }
  .jobs-k2 { margin-top: 36px; }
  /* 手机：从底部弹出，单栏 */
  .job-dlg { width: 100vw; max-height: 92vh; margin: auto 0 0; border-radius: 18px 18px 0 0; }
  .job-dlg[open] { animation: jd-up .3s var(--ease); }
  .jd { padding: 26px 20px calc(24px + env(safe-area-inset-bottom, 0px)); }
  .jd-x { top: 14px; right: 12px; }
  .jd-t { font-size: 24px; }
  .jd-intro { font-size: 15px; }
  .jd-b { gap: 22px; margin-top: 20px; }
  .jd-side { padding: 18px 16px 20px; }
}
@keyframes jd-up { from { transform: translateY(40px); opacity: .6; } to { transform: none; opacity: 1; } }

/* ================================================================ 10-10《官网建议》
   交易智能体“收益逐层拆解”下方的 Alpha / Beta 收益；数据资产地图“能源价格”整行卡片 */
.attr-ab { margin-top: clamp(40px, 5vw, 64px); padding-top: clamp(28px, 3vw, 40px); border-top: 1px solid var(--hair-2); }
.vc-energy { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 20px clamp(28px, 4vw, 56px); margin-top: 12px; }
.vce-l { display: grid; gap: 8px; align-content: start; }
.vce-dims { display: grid; margin-top: 6px; border-top: 1px solid var(--hair); }
.vce-dims div { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--hair); font-size: 13.5px; }
.vce-dims dt { color: var(--muted); }
.vce-dims dd { color: var(--ink); }
.vce-r { display: grid; gap: 10px; align-content: start; }
.vcard2 .vce-k { font-size: 13px; font-weight: 600; color: var(--ink); }
@media (max-width: 900px) { .vc-energy { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 760px) { .vce-dims { display: none; } }
/* 能源OS 架构图“两个引擎”：只在分隔点与标点处换行，不把“策略解释”拆开 */
.ea-engines .ea-cell span { word-break: keep-all; }
/* 合作伙伴卡片（手机）：合作层级统一放在名称下面，名称长短不同时分隔线也对齐（10-10） */
@media (max-width: 760px) {
  .client-meta { flex-direction: column; align-items: flex-start; gap: 2px; }
}
/* 数据资产地图“市场区域下钻”：福建地图为主图，数据侧档案作为小窗叠在右侧、底边对齐（10-10 第六轮） */
.uistack.prov-stack { padding: 0 30% 18% 0; }
.uistack.prov-stack .uistack-inset { left: auto; right: 0; bottom: 0; width: 40%; }
/* 源网荷储：每个字上方一个图标，连线与字的圆圈中心对齐（10-10） */
.vision { --vc: clamp(44px, 4vw, 60px); align-items: flex-end; }
.vision .vn { display: grid; justify-items: center; gap: 10px; }
.vision .vn .iso { width: clamp(44px, 3.6vw, 56px); height: clamp(44px, 3.6vw, 56px); }
.vision i { margin-bottom: calc(var(--vc) / 2 - 1px); }
.vision em { align-self: flex-end; line-height: var(--vc); }

/* 环形流程图（交易智能体运行闭环、数据飞轮，10-10 第八轮）：进度弧与弧头光点画在节点下层，经过节点时被圆盘盖住；
   到达的节点放大、填充浅色并扩散一圈，已经过的节点描边保留强调色；走完一圈整环加粗亮起，再与节点一起淡回初始状态 */
.ring .ring-arc { fill: none; stroke: var(--accent); stroke-width: 2.5; stroke-linecap: round; stroke-dasharray: 1 1; stroke-dashoffset: 1; transition: opacity .9s var(--ease), stroke-width .8s var(--ease); }
.ring .ring-head { opacity: 0; transition: opacity .6s var(--ease); }
.ring.ring-live .ring-head { opacity: 1; }
.ring.is-fading .ring-arc, .ring.is-fading .ring-head { opacity: 0; }
.ring.is-closed .ring-arc { stroke-width: 4.5; }
.ring .rh-dot { fill: var(--accent); }
.ring .rh-glow { fill: var(--accent); opacity: .18; }
.ring .rn { color: var(--ink); transform-box: fill-box; transform-origin: center; transition: transform .8s var(--ease), color .5s var(--ease); }
.ring .rn-disc { fill: #FFFFFF; stroke: var(--hair-2); stroke-width: 1; transition: fill .6s var(--ease), stroke .6s var(--ease), stroke-width .6s var(--ease); }
.tone-deep .ring .rn-disc, [data-tone="dark"] .ring .rn-disc { fill: var(--deep); }
.ring .rn-halo { fill: none; stroke: var(--accent); stroke-width: 1.5; opacity: 0; transform-box: fill-box; transform-origin: center; }
.ring .rn.is-done .rn-disc { stroke: var(--accent); }
.ring .rn.is-cur { transform: scale(1.16); color: var(--blue); }
.ring .rn.is-cur .rn-disc { fill: var(--tint); stroke: var(--accent); stroke-width: 1.6; }
.ring .rn.is-cur .rn-halo { animation: rnHalo 1.7s var(--ease) both; }
@keyframes rnHalo { 0% { opacity: .65; transform: scale(1); } 100% { opacity: 0; transform: scale(1.8); } }
.ring .rn-lb, .ring .rn-n { transition: fill .5s var(--ease); }
.ring .rn-lb.is-cur, .ring .rn.is-cur .rn-n, .ring .rn.is-done .rn-n { fill: var(--blue); }
.ring .ring-inner { opacity: .45; transition: opacity .9s var(--ease), stroke .9s var(--ease); }
.ring.is-closed .ring-inner { stroke: var(--accent); opacity: .9; }
.ring .ring-core { transform-box: fill-box; transform-origin: center; transition: transform 1s var(--ease); }
.ring.is-closed .ring-core { transform: scale(1.06); }
.fly-notes li { cursor: default; }
.fly-notes b { transition: color .5s var(--ease); }
.fly-notes li.is-cur b { color: var(--blue); }
/* 外框描边画在最上层（10-10 第八轮）：卡片上部铺图或三维画面时，图片不再盖住描边，四周边线连续 */
.bz, .scard { position: relative; }
.bz, .tcard, .scard { box-shadow: none; }
.bz::after, .scard::after, .tcard::before { content: ""; position: absolute; inset: 0; z-index: 3; border-radius: inherit; box-shadow: inset 0 0 0 1px var(--hair); pointer-events: none; }

/* 导航“首页”“应用案例”的悬停面板（10-10 第八轮）：首页按页面各节编号排列，应用案例按服务对象列出案例数与平均效果 */
.fly-home .fly-body { grid-template-columns: minmax(0, 1fr); }
.fly-cases .fly-body { grid-template-columns: minmax(0, .78fr) minmax(0, 2.22fr); }
.fly-item span i.nw { font-style: normal; white-space: nowrap; }
.fly-span3 { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 28px; }

/* ---------------------------------------------------------------- 动效核查（10-10 第八轮） */
/* 悬停上浮的卡片提到同层最上面：上浮后的投影不被相邻卡片盖住 */
.client:hover, .ccard:hover, .pcard:hover, a.psw-card:hover, .tprod:hover, .job-card:hover, .job-card.is-peek, .cfeat:hover, .bz:hover { z-index: 2; }
/* 页签切换（首页产品、行业页签）：新内容淡入并轻微上移，不再瞬间替换 */
.js [role="tabpanel"]:not([hidden]) { animation: paneIn .65s var(--ease) both; }
@keyframes paneIn { from { opacity: 0; transform: translate3d(0, 12px, 0); } to { opacity: 1; transform: none; } }
/* 前后景界面组：后景先出现，前景窗口随后依次滑入，层次更清楚 */
.js .uistack .uistack-inset, .js .uistack .uistack-inset2 { opacity: 0; transform: translate3d(0, 22px, 0); transition: opacity .8s ease .2s, transform 1.1s var(--ease) .2s; }
.js .uistack .uistack-inset2 { transition-delay: .38s; }
.js .uistack.on .uistack-inset, .js .uistack.on .uistack-inset2 { opacity: 1; transform: none; }
/* 卡片里的等轴测图标：卡片进入视口时轻轻上浮显现 */
.js .draw .iso { opacity: 0; transform: translate3d(0, 8px, 0); transition: opacity .8s ease .1s, transform 1s var(--ease) .1s; }
.js .draw.on .iso { opacity: 1; transform: none; }
/* 源网荷储：四个字依次出现、连线随之生长（10-11 去掉连线上的流动光点） */
.js .vision .vn { opacity: 0; transform: translate3d(0, 10px, 0); transition: opacity .7s ease, transform .9s var(--ease); }
.vision.on .vn { opacity: 1; transform: none; }
.vision.on .vn:nth-of-type(2) { transition-delay: .35s; }
.vision.on .vn:nth-of-type(3) { transition-delay: .7s; }
.vision.on .vn:nth-of-type(4) { transition-delay: 1.05s; }
.vision.on i:nth-of-type(1) { transition-delay: .12s; } .vision.on i:nth-of-type(2) { transition-delay: .47s; } .vision.on i:nth-of-type(3) { transition-delay: .82s; }
.js .vision em { opacity: 0; transition: opacity .9s ease 1.5s; }
.vision.on em { opacity: 1; }

/* 图标精简（10-10 第九轮）：要点、概念与分项条目不再配图标，原来留给图标的列一并去掉 */
.scard-b { grid-template-columns: minmax(0, 1fr); }
.svc-links a { grid-template-columns: minmax(0, 1fr) 16px; }
.pp-pts li { grid-template-columns: 6px minmax(0, 1fr); gap: 14px; }
.pp-pts li::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }
.layer { grid-template-columns: 140px minmax(0, 1fr); }
@media (max-width: 900px) { .layer { grid-template-columns: minmax(0, 1fr); } .layer p { grid-column: 1; } }
.ea-mods li { grid-template-columns: minmax(0, 1fr) auto; }
.rh-t, .px-t, .px-r { grid-template-columns: minmax(0, 1fr); }
.acaps span { padding: 8px 16px; }
/* 数据飞轮说明：左侧用较大的 1—6 数字（图标只在环上），当前一步的数字与标题变为深蓝 */
.fly-notes li { grid-template-columns: 34px minmax(0, 1fr); }
.fly-notes .fn { grid-row: span 2; padding: 0; font-family: var(--serif); font-size: 32px; line-height: 1; font-weight: 700; color: var(--accent); font-variant-numeric: tabular-nums; transition: color .5s var(--ease); }
.fly-notes li.is-cur .fn { color: var(--blue); }
