
:root{
  /* V11 深色统一底盘 · 暖纸证据岛 */
  --ink:#f4f7fb; --text:#c4cdd9; --muted:#8a97a7; --line:rgba(255,255,255,.10); --line2:rgba(255,255,255,.055);
  --paper:#070b11; --bg2:#0b111a; --surface:#121b26; --surface2:#0e1620; --surface3:#182533;
  --white:#fff; --blue:#3183c9; --blue2:#4a9ce0; --blueDeep:#0a3f73; --teal:#43b3a8;
  --gold:#c9a46b; --gold2:#e0c188; --green:#3cc08a;
  --pp:#f4f1ea; --pp2:#efe9dd; --pp-ink:#1b1f26; --pp-text:#3b414a; --pp-muted:#5c636e; --pp-line:rgba(20,28,38,.14);
  --shadow:0 30px 80px rgba(0,0,0,.55); --soft:0 16px 44px rgba(0,0,0,.36);
  --sans:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Microsoft YaHei","HarmonyOS Sans SC","Noto Sans CJK SC","Source Han Sans SC","Helvetica Neue",Arial,sans-serif;
  --serif:"Songti SC","STSong","Source Han Serif SC","Noto Serif CJK SC","Noto Serif SC","SimSun","Times New Roman",serif;
  --mono:"SF Mono","SFMono-Regular",Menlo,Consolas,monospace;
  --r:8px; --r2:12px; --max:1220px; --nav:68px; --ease:cubic-bezier(.22,1,.36,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--paper);overflow-x:hidden;color-scheme:dark}
body{margin:0;color:var(--text);font-family:var(--sans);font-size:17px;line-height:1.72;letter-spacing:0;background:radial-gradient(1200px 720px at 80% -10%,rgba(49,131,201,.12),transparent 60%),radial-gradient(1000px 640px at 4% 106%,rgba(201,164,107,.06),transparent 56%),var(--paper);background-attachment:fixed;overflow-x:hidden;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"kern" 1}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
button,a,input,select,textarea{touch-action:manipulation}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid rgba(10,63,115,.72);outline-offset:3px}
img,video{display:block;max-width:100%}
.wrap{width:min(var(--max),calc(100vw - 40px));margin-inline:auto}
.eyebrow{font:700 12px/1.4 var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--blue)}
.eyebrow.light{color:#d8c2a0}
.serif{font-family:var(--serif);font-style:italic;font-weight:600}
.view{display:none;min-height:80vh}
.view.active{display:block;animation:viewIn .52s var(--ease) both}
@keyframes viewIn{from{opacity:.01;transform:translateY(10px)}to{opacity:1;transform:none}}
.reveal{opacity:0;transform:translateY(24px);transition:opacity .62s var(--ease),transform .62s var(--ease)}
.reveal.in{opacity:1;transform:none}
.stagger > *{opacity:0;transform:translateY(18px);transition:opacity .58s var(--ease),transform .58s var(--ease)}
.stagger.in > *{opacity:1;transform:none;transition-delay:calc(var(--i,0) * 54ms)}
.glass{background:rgba(18,27,38,.66);border:1px solid rgba(255,255,255,.1);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}

.topbar{position:fixed;inset:0 0 auto;z-index:80;height:var(--nav);display:flex;align-items:center;background:rgba(9,13,19,.72);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border-bottom:1px solid transparent;transition:background .22s var(--ease),border-color .22s var(--ease)}
.topbar.scrolled{background:rgba(8,11,16,.86);border-bottom-color:var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;gap:18px}
.brand{display:flex;align-items:center;gap:12px;border:0;background:transparent;padding:0;color:var(--ink)}
.brand img{width:124px;height:auto;filter:brightness(0) invert(1) sepia(.08);opacity:.94}
.brand span{font:700 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.navlinks{display:flex;align-items:center;gap:2px}
.navlinks a{position:relative;padding:12px 13px;border-radius:8px;color:var(--muted);font-size:14px;transition:color .18s var(--ease)}
.navlinks a:hover,.navlinks a.active{color:var(--ink)}
.navlinks a.active:after{content:"";position:absolute;left:14px;right:14px;bottom:6px;height:2px;background:var(--blue);border-radius:2px;transform-origin:left;animation:navLine .28s var(--ease) both}
@keyframes navLine{from{opacity:.01;transform:scaleX(.65)}to{opacity:1;transform:scaleX(1)}}
.navcta{display:flex;align-items:center;gap:10px}
.iconbtn{width:42px;height:42px;border:1px solid var(--line);background:rgba(255,255,255,.06);border-radius:999px;display:none;align-items:center;justify-content:center}
.iconbtn span,.iconbtn:before,.iconbtn:after{display:block;width:18px;height:2px;background:var(--ink);border-radius:2px;content:""}
.iconbtn:before{transform:translateY(-6px)}
.iconbtn:after{transform:translateY(6px)}
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:42px;padding:0 18px;border:1px solid transparent;border-radius:999px;font-weight:650;font-size:14px;overflow:hidden;transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .2s var(--ease),background-color .2s var(--ease)}
.btn:hover{transform:translateY(-1px)}
.btn.primary{background:var(--blue);color:#fff;box-shadow:0 8px 20px rgba(10,63,115,.18)}
.btn.ghost{background:rgba(255,255,255,.06);border-color:var(--line);color:var(--ink)}
.btn.dark{background:#fff;color:#111}
.btn svg{width:16px;height:16px}
.progress{position:fixed;left:0;top:0;height:3px;width:100%;transform-origin:left;transform:scaleX(0);background:linear-gradient(90deg,var(--blue),#8f6a3a);z-index:120}

.hero{position:relative;min-height:calc(100vh - 44px);padding:calc(var(--nav) + 64px) 0 66px;display:flex;align-items:center;overflow:hidden;background:var(--dark);color:#fff}
.hero.media{background:#070b11}
.hero-media{position:absolute;inset:0;z-index:0;overflow:hidden}
.hero-media img,.hero-media video{width:100%;height:100%;object-fit:cover;transform:scale(1.02)}
.hero-media img{opacity:.84}
.hero-media video{position:absolute;inset:0;opacity:.16;mix-blend-mode:screen;filter:saturate(.62) contrast(.92)}
.hero-media:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,7,10,.92),rgba(5,7,10,.72) 44%,rgba(5,7,10,.48)),linear-gradient(180deg,rgba(5,7,10,.12),rgba(5,7,10,.76))}
.hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.12fr) minmax(400px,.68fr);align-items:end;gap:56px}
.hero-copy h1{margin:20px 0 0;font-family:var(--serif);font-size:clamp(46px,4.6vw,62px);line-height:1.2;letter-spacing:0;font-weight:700;max-width:960px;text-wrap:balance}
.hero-copy h1 .line{display:block}
.hero-copy h1 .title-gradient{width:max-content;max-width:100%;font-size:clamp(35px,3.35vw,45px);line-height:1.42;letter-spacing:.01em;color:transparent;background:linear-gradient(90deg,#f4f7fb 0%,#9cc8e8 48%,#e0c188 100%);-webkit-background-clip:text;background-clip:text}
.hero-copy p{margin:28px 0 0;max-width:720px;color:rgba(255,255,255,.78);font-size:clamp(15px,1.2vw,18px);line-height:1.82}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:34px}
.hero-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-top:40px;border:1px solid rgba(255,255,255,.13);background:rgba(255,255,255,.06)}
.hero-stat{padding:16px 18px 15px;background:rgba(8,12,18,.48)}
.hero-stat b{display:block;font:760 28px/1 var(--mono);color:#fff}
.hero-stat b .count{display:inline;margin:0;color:inherit;font:inherit}
.hero-stat > span{display:block;margin-top:8px;color:rgba(255,255,255,.64);font-size:13px}
.ops-panel{align-self:center;border:1px solid rgba(255,255,255,.14);background:rgba(8,11,16,.64);box-shadow:0 18px 54px rgba(0,0,0,.28);border-radius:10px;overflow:hidden;backdrop-filter:blur(20px)}
.ops-top{height:44px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid rgba(255,255,255,.1);font:700 11px/1 var(--mono);letter-spacing:.12em;color:#d8c2a0}
.ops-led{display:flex;gap:7px}
.ops-led i{width:8px;height:8px;border-radius:50%;background:#c9a46b;box-shadow:0 0 0 4px rgba(201,164,107,.1)}
.ops-body{padding:18px}
.ops-row{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:14px 0;border-bottom:1px solid rgba(255,255,255,.09)}
.ops-row:last-child{border-bottom:0}
.ops-icon{width:34px;height:34px;border-radius:8px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);display:grid;place-items:center;font:700 13px/1 var(--mono);color:#d8c2a0}
.ops-row b{display:block;color:#fff;font-size:15px}
.ops-row span{display:block;color:rgba(255,255,255,.56);font-size:12px;margin-top:2px}
.ops-bar{width:80px;height:6px;border-radius:999px;background:rgba(255,255,255,.12);overflow:hidden}
.ops-bar i{display:block;height:100%;width:var(--w);background:#c9a46b;border-radius:999px;transform-origin:left;animation:pulseScale 2.8s ease-in-out infinite}
@keyframes pulseScale{50%{transform:scaleX(.86)}}

/* ===== V11 Hero 产品剧场 · Mac + iPhone 自动演示 ===== */
.hero-theater{position:relative;align-self:center;justify-self:end;width:100%;max-width:524px;padding:0 0 30px 30px}
.mac{position:relative;border-radius:15px;overflow:hidden;border:1px solid rgba(255,255,255,.14);background:linear-gradient(180deg,#0f1822,#0a1119);box-shadow:0 36px 92px rgba(0,0,0,.6),inset 0 0 0 1px rgba(255,255,255,.03)}
.mac-bar{height:38px;display:flex;align-items:center;gap:11px;padding:0 14px;background:rgba(255,255,255,.04);border-bottom:1px solid rgba(255,255,255,.08)}
.mac-bar .dots{display:flex;gap:7px}
.mac-bar .dots i{width:11px;height:11px;border-radius:50%;background:rgba(255,255,255,.16)}
.mac-bar .dots i:nth-child(1){background:#f0685f}.mac-bar .dots i:nth-child(2){background:#f4bd50}.mac-bar .dots i:nth-child(3){background:#5ec764}
.mac-title{font:600 12px/1 var(--sans);color:rgba(255,255,255,.6)}
.mac-led{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font:600 9.5px/1 var(--mono);letter-spacing:.11em;color:var(--gold2);text-transform:uppercase}
.mac-led em{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px rgba(60,192,138,.16);animation:pulseScale 2.6s ease-in-out infinite}
.mac-body{display:grid;grid-template-columns:106px 1fr;height:292px}
.mac-side{border-right:1px solid rgba(255,255,255,.07);padding:12px 8px;display:flex;flex-direction:column;gap:2px;background:rgba(0,0,0,.18)}
.side-item{position:relative;font:590 11.5px/1.2 var(--sans);color:rgba(255,255,255,.48);padding:9px;border-radius:7px;transition:background .35s var(--ease),color .35s var(--ease);display:flex;align-items:center;gap:5px}
.side-item.hot{background:rgba(49,131,201,.2);color:#eaf3fb}
.mac-main{position:relative;overflow:hidden}
.scene{position:absolute;inset:0;padding:15px 17px;opacity:0;transform:translateY(10px);pointer-events:none;display:flex;flex-direction:column;gap:9px;transition:opacity .5s var(--ease),transform .5s var(--ease)}
.scene.on{opacity:1;transform:none;pointer-events:auto}
.scene-hd{display:flex;align-items:center;justify-content:space-between;gap:8px}
.scene-hd b{font:600 13px/1 var(--sans);color:#fff}
.scene-hd .tag{font:700 9px/1 var(--mono);letter-spacing:.05em;color:var(--gold2);border:1px solid rgba(201,164,107,.4);border-radius:999px;padding:4px 8px;white-space:nowrap}
.scene-hd .tag.live{color:var(--green);border-color:rgba(60,192,138,.4)}
.row{display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:rgba(255,255,255,.03)}
.row .ic{width:22px;height:22px;border-radius:6px;background:rgba(49,131,201,.2);display:grid;place-items:center;font:700 8.5px/1 var(--mono);color:var(--blue2);flex:none}
.row .tx{min-width:0;flex:1}
.row .tx b{display:block;font:590 11.5px/1.3 var(--sans);color:rgba(255,255,255,.92);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .tx span{display:block;font:11px/1.3 var(--sans);color:rgba(255,255,255,.5)}
.row .pin{margin-left:auto;font:700 9px/1 var(--mono);color:var(--green);flex:none;letter-spacing:.03em}
.cite{display:flex;flex-wrap:wrap;gap:5px}
.cite span{font:590 10px/1 var(--sans);color:rgba(255,255,255,.74);border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.04);border-radius:5px;padding:5px 7px}
.draft{border:1px solid rgba(255,255,255,.1);border-radius:8px;background:rgba(0,0,0,.22);padding:9px 10px;font:12px/1.5 var(--sans);color:rgba(255,255,255,.82)}
.acts{display:flex;gap:7px;align-items:center}
.chip{font:600 10.5px/1 var(--sans);border-radius:6px;padding:7px 10px}
.chip.go{background:var(--blue);color:#fff}
.chip.ghost2{background:rgba(255,255,255,.06);color:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.14)}
.note{font:11px/1.4 var(--sans);color:rgba(255,255,255,.42)}
.kpi{display:flex;gap:14px;margin-top:auto}
.kpi > div{flex:1}
.kpi b{display:block;font:760 20px/1 var(--mono);color:var(--gold2)}
.kpi span{display:block;margin-top:4px;font:10px/1.3 var(--sans);color:rgba(255,255,255,.5)}
/* iPhone */
.phone{position:absolute;left:0;bottom:0;width:128px;padding:6px;border-radius:22px;background:linear-gradient(180deg,#1c2732,#0e151e);border:1px solid rgba(255,255,255,.16);box-shadow:0 26px 56px rgba(0,0,0,.62);z-index:2}
.phone-scr{position:relative;height:238px;border-radius:16px;overflow:hidden;background:linear-gradient(180deg,#0d141d,#0a1017)}
.phone-notch{position:absolute;top:9px;left:50%;transform:translateX(-50%);width:44px;height:5px;border-radius:999px;background:rgba(255,255,255,.22);z-index:3}
.pscene{position:absolute;inset:0;padding:24px 10px 12px;opacity:0;transform:translateY(8px);display:flex;flex-direction:column;gap:8px;transition:opacity .5s var(--ease),transform .5s var(--ease)}
.pscene.on{opacity:1;transform:none}
.p-hd{font:700 8.5px/1 var(--mono);letter-spacing:.1em;color:rgba(255,255,255,.38);text-transform:uppercase}
.bubble{max-width:90%;padding:8px 9px;border-radius:11px;font:10.5px/1.45 var(--sans)}
.bubble.in{align-self:flex-start;background:rgba(255,255,255,.08);color:rgba(255,255,255,.9);border-bottom-left-radius:3px}
.bubble.out{align-self:flex-end;background:var(--blue);color:#fff;border-bottom-right-radius:3px}
.p-tag{align-self:flex-start;font:600 9.5px/1.2 var(--sans);color:var(--blue2);background:rgba(49,131,201,.16);border:1px solid rgba(49,131,201,.32);border-radius:999px;padding:5px 8px}
.p-card{border:1px solid rgba(255,255,255,.12);border-radius:9px;background:rgba(255,255,255,.05);padding:9px}
.p-card b{display:block;font:600 10.5px/1.3 var(--sans);color:#fff}
.p-card span{display:block;margin-top:3px;font:9.5px/1.3 var(--sans);color:rgba(255,255,255,.55)}
.p-done{margin-top:auto;display:flex;align-items:center;gap:6px;font:600 10px/1.2 var(--sans);color:var(--green)}
.p-done i{width:16px;height:16px;border-radius:50%;background:rgba(60,192,138,.18);display:grid;place-items:center;font-size:9px;flex:none}
/* rail */
.theater-rail{display:flex;gap:6px;justify-content:center;margin-top:15px}
.rail-dot{width:22px;height:4px;border-radius:999px;border:0;background:rgba(255,255,255,.16);padding:0;cursor:pointer;transition:background .3s var(--ease),width .3s var(--ease)}
.rail-dot.active{background:var(--gold2);width:34px}

/* ===== V12 剧场新增：知识底座 & 获客链路 ===== */
.kb-flow{position:relative;height:20px;flex:none}
.kb-flow i{position:absolute;top:0;bottom:0;width:1px;background:linear-gradient(180deg,transparent,rgba(74,156,224,.5))}
.kb-flow i:after{content:"";position:absolute;left:-1.5px;top:0;width:4px;height:4px;border-radius:50%;background:var(--blue2);box-shadow:0 0 6px rgba(74,156,224,.95);animation:kbDrop 1.5s linear infinite;animation-delay:inherit}
@keyframes kbDrop{from{transform:translateY(-3px);opacity:0}25%{opacity:1}to{transform:translateY(18px);opacity:0}}
.kb-base{position:relative;flex:none;border:1px solid rgba(74,156,224,.55);border-radius:9px;background:linear-gradient(180deg,rgba(49,131,201,.3),rgba(10,63,115,.16));padding:10px 12px;text-align:center;box-shadow:0 0 22px rgba(49,131,201,.32),inset 0 0 16px rgba(74,156,224,.14);animation:kbGlow 3s ease-in-out infinite}
@keyframes kbGlow{50%{box-shadow:0 0 34px rgba(49,131,201,.55),inset 0 0 22px rgba(74,156,224,.22)}}
.kb-base b{display:block;font:700 13px/1.25 var(--sans);color:#eaf3fb}
.kb-base span{display:block;margin-top:3px;font:600 8.5px/1.2 var(--mono);letter-spacing:.14em;color:var(--blue2);text-transform:uppercase}
.kb-out span{border-color:rgba(74,156,224,.4);color:#cfe4f6;background:rgba(49,131,201,.12)}
.flow-line{display:flex;align-items:center;gap:3px}
.flow-line span{font:600 9px/1.2 var(--sans);color:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.04);border-radius:5px;padding:5px 4px;white-space:nowrap;animation:stepOn 7.2s ease-in-out infinite;animation-delay:var(--d,0s)}
.flow-line i{flex:1;height:1px;background:rgba(255,255,255,.24);min-width:6px}
@keyframes stepOn{0%,12%{color:#eaf3fb;border-color:rgba(74,156,224,.6);background:rgba(49,131,201,.26)}20%,100%{color:rgba(255,255,255,.72);border-color:rgba(255,255,255,.14);background:rgba(255,255,255,.04)}}
.pin.run{color:var(--gold2)}
.section{position:relative;padding:92px 0}
.section.tight{padding:68px 0}
.section.dark{background:var(--dark2);color:#fff;overflow:hidden}
.section.media-band{background:#111820;color:#fff;overflow:hidden}
.media-bg{position:absolute;inset:0;z-index:0}
.media-bg img{width:100%;height:100%;object-fit:cover;opacity:.24;filter:saturate(.72) contrast(.95)}
.media-bg:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(12,18,25,.95),rgba(12,18,25,.82),rgba(12,18,25,.58))}
.section .wrap{position:relative;z-index:1}
.head{max-width:780px}
.head.center{max-width:820px;text-align:center;margin-inline:auto}
.head h2{margin:16px 0 0;font-family:var(--serif);font-size:clamp(33px,4.8vw,58px);line-height:1.16;letter-spacing:0;font-weight:600;color:var(--ink);text-wrap:balance}
.dark .head h2,.media-band .head h2{color:#fff}
.head p{margin:18px 0 0;color:var(--muted);font-size:17px;line-height:1.8}
.dark .head p,.media-band .head p{color:rgba(255,255,255,.68)}
.split{display:grid;grid-template-columns:.82fr 1.18fr;gap:56px;align-items:start;margin-top:52px}
.why-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.value-card,.product-card,.case-card,.team-card,.contact-card{position:relative;border:1px solid var(--line);background:var(--surface);border-radius:var(--r);padding:24px;box-shadow:0 1px 0 rgba(255,255,255,.04);overflow:hidden;transition:transform .22s var(--ease),border-color .22s var(--ease),background-color .22s var(--ease)}
.value-card:hover,.product-card:hover,.case-card:hover,.team-card:hover{transform:translateY(-2px);border-color:rgba(74,156,224,.42);background:var(--surface3)}
.num{font:760 28px/1 var(--serif);color:var(--blue)}
.value-card h3,.product-card h3,.case-card h3,.team-card h3{margin:18px 0 0;font-family:var(--serif);font-size:21px;line-height:1.34;font-weight:600;color:var(--ink)}
.value-card p,.product-card p,.case-card p,.team-card p{margin:10px 0 0;color:var(--muted);font-size:14px;line-height:1.72}

/* ===== V22 首页第二屏 · AI 业务价值区（0728 改版）===== */
.raven-value-stage{padding-top:92px!important;padding-bottom:104px!important;background:radial-gradient(900px 430px at 50% 66%,rgba(49,131,201,.13),transparent 68%),linear-gradient(180deg,#090e15,#0b1119);overflow:hidden}
.raven-value-head{max-width:1320px!important;margin:0 auto;text-align:center}
.raven-value-head .value-kicker{margin:0;color:#9ca9ba;font:680 clamp(15px,1.65vw,21px)/1.45 var(--sans);letter-spacing:.055em}
.raven-value-head .value-title{max-width:none;margin:18px auto 0;color:#f5f7fb;font-family:var(--sans);font-size:clamp(36px,3.3vw,46px);font-weight:780;line-height:1.18;letter-spacing:-.04em;white-space:nowrap}
.raven-value-head .value-title span{color:transparent;background:linear-gradient(90deg,#9cc8e8 0%,#68a9d9 48%,#e0c188 100%);-webkit-background-clip:text;background-clip:text}
.raven-value-head .value-statement{max-width:1120px;margin:22px auto 0;color:#eef2f6;font-size:clamp(15px,1.25vw,18px);font-weight:430;line-height:1.75;letter-spacing:0}
.raven-value-head .value-statement strong{color:#d9c18f;font-weight:650}

/* 第二屏 · 横向能力大卡 + AI 协同关系图 */
.raven-capability-card{position:relative;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(360px,.92fr);gap:54px;max-width:1220px;margin:52px auto 0;padding:56px 60px;border:1px solid rgba(116,164,203,.24);border-radius:22px;background:linear-gradient(135deg,rgba(20,32,45,.96),rgba(9,16,25,.98));box-shadow:0 32px 80px rgba(0,0,0,.38),inset 0 1px 0 rgba(255,255,255,.055);overflow:hidden}
.raven-capability-card:before{content:"";position:absolute;width:460px;height:460px;right:-90px;top:-130px;border-radius:50%;background:radial-gradient(circle,rgba(55,141,211,.16),transparent 68%);pointer-events:none}
.raven-capability-list{display:grid;gap:0}
.raven-capability-item{position:relative;padding:0 0 28px 58px}
.raven-capability-item:not(:last-child){margin-bottom:28px;border-bottom:1px solid rgba(255,255,255,.08)}
.raven-capability-item:last-child{padding-bottom:0}
.raven-capability-no{position:absolute;left:0;top:2px;color:#5fa9e3;font:700 13px/1 var(--mono);letter-spacing:.1em}
.raven-capability-item h3{margin:0;color:#eef3f8;font-family:var(--serif);font-size:clamp(23px,2vw,29px);font-weight:620;line-height:1.28}
.raven-capability-item p{max-width:650px;margin:12px 0 0;color:#98a7b8;font-size:15px;line-height:1.82}
.raven-collab-map{position:relative;align-self:center;min-height:390px}
.raven-collab-map:before,.raven-collab-map:after{content:"";position:absolute;left:50%;top:50%;border:1px solid rgba(92,163,218,.17);border-radius:50%;transform:translate(-50%,-50%)}
.raven-collab-map:before{width:310px;height:310px}.raven-collab-map:after{width:230px;height:230px}
.raven-collab-core{position:absolute;z-index:2;left:50%;top:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;width:150px;height:150px;border:1px solid rgba(116,183,234,.48);border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(64,151,219,.36),rgba(13,30,44,.96) 65%);box-shadow:0 0 44px rgba(49,131,201,.2);transform:translate(-50%,-50%);text-align:center}
.raven-collab-title{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#edf6fc;font-size:18px;line-height:1.18}.raven-collab-title span,.raven-collab-title b{display:block}.raven-collab-title b{color:#82bee8;font-size:17px;font-weight:650}.raven-collab-core small{display:block;margin-top:9px;color:#75b9e9;font:650 8px/1.3 var(--mono);letter-spacing:.08em}
.raven-collab-node{position:absolute;z-index:3;display:grid;place-items:center;width:112px;height:58px;border:1px solid rgba(111,164,204,.3);border-radius:10px;background:rgba(14,27,39,.94);color:#d9e5ee;font-size:14px;font-weight:650;box-shadow:0 14px 30px rgba(0,0,0,.24)}
.raven-collab-node:after{content:"";position:absolute;background:linear-gradient(90deg,rgba(92,163,218,.08),rgba(92,163,218,.68))}
.raven-collab-node.n1{left:4%;top:15%}.raven-collab-node.n2{right:3%;top:15%}.raven-collab-node.n3{left:4%;bottom:14%}.raven-collab-node.n4{right:3%;bottom:14%}
.raven-collab-node.n1:after,.raven-collab-node.n3:after{left:100%;top:50%;width:62px;height:1px;transform:rotate(22deg);transform-origin:left}
.raven-collab-node.n3:after{transform:rotate(-22deg)}
.raven-collab-node.n2:after,.raven-collab-node.n4:after{right:100%;top:50%;width:62px;height:1px;transform:rotate(-22deg);transform-origin:right}
.raven-collab-node.n4:after{transform:rotate(22deg)}
.raven-collab-caption{position:absolute;left:50%;bottom:4px;color:#617386;font:650 10px/1 var(--mono);letter-spacing:.12em;transform:translateX(-50%);white-space:nowrap}
@media(max-width:980px){.raven-capability-card{grid-template-columns:1fr;padding:42px}.raven-collab-map{min-height:360px}.raven-value-head .value-title{white-space:normal;letter-spacing:-.02em}}
@media(max-width:620px){.raven-value-stage{padding-top:68px!important;padding-bottom:72px!important}.raven-value-head .value-kicker{font-size:14px}.raven-value-head .value-title{font-size:31px;line-height:1.2;white-space:normal}.raven-value-head .value-statement{font-size:15px}.raven-capability-card{margin-top:34px;padding:28px 20px;gap:28px;border-radius:15px}.raven-capability-item{padding-left:42px}.raven-capability-item:not(:last-child){margin-bottom:22px;padding-bottom:22px}.raven-capability-item h3{font-size:22px}.raven-capability-item p{font-size:14px;line-height:1.72}.raven-collab-map{min-height:310px}.raven-collab-map:before{width:260px;height:260px}.raven-collab-map:after{width:190px;height:190px}.raven-collab-core{width:126px;height:126px}.raven-collab-node{width:92px;height:50px;font-size:12px}.raven-collab-node.n1,.raven-collab-node.n3{left:0}.raven-collab-node.n2,.raven-collab-node.n4{right:0}}


.product-stage{margin-top:52px;border:1px solid var(--line);background:var(--surface);border-radius:12px;box-shadow:var(--soft);overflow:hidden}
.product-tabs{display:flex;gap:0;overflow:auto;border-bottom:1px solid var(--line);background:var(--surface2)}
.product-tab{flex:1 0 180px;text-align:left;border:0;background:transparent;padding:19px 20px;color:var(--muted);border-right:1px solid var(--line);transition:background .2s,color .2s}
.product-tab b{display:block;font-size:15px;color:inherit}
.product-tab span{display:block;margin-top:5px;font-size:12px;color:#8a919c}
.product-tab.active{background:var(--surface3);color:var(--blue2)}
.product-view{display:none;grid-template-columns:minmax(0,.92fr) minmax(360px,1fr);gap:28px;padding:30px}
.product-view.active{display:grid;animation:panelIn .45s var(--ease) both}
@keyframes panelIn{from{opacity:.01;transform:translateY(12px)}to{opacity:1;transform:none}}
.product-copy h3{margin:10px 0 0;font-family:var(--serif);font-size:34px;line-height:1.24;font-weight:600;color:var(--ink)}
.product-copy p{margin:14px 0 0;color:var(--muted)}
.ticks{display:grid;gap:10px;margin:22px 0 0}
.ticks li{position:relative;padding-left:26px;color:var(--text);font-size:15px}
.ticks li:before{content:"";position:absolute;left:3px;top:8px;width:10px;height:6px;border-left:2px solid var(--blue);border-bottom:2px solid var(--blue);transform:rotate(-45deg)}
.product-media{position:relative;min-height:360px;border-radius:8px;overflow:hidden;background:#101720;border:1px solid rgba(255,255,255,.18)}
.product-media img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;opacity:.82;transition:transform .8s var(--ease)}
.product-media:hover img{transform:scale(1.04)}
.hud{position:absolute;left:18px;right:18px;bottom:18px;padding:16px;border-radius:8px;background:rgba(8,12,18,.72);border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(16px);color:#fff}
.hud b{display:block;font-size:14px}
.hud span{display:block;margin-top:6px;color:rgba(255,255,255,.66);font-size:12px}
.hud-bars{display:grid;gap:8px;margin-top:14px}
.hud-bars i{height:5px;border-radius:999px;background:#c9a46b;width:var(--w)}


.solution-nav{display:flex;gap:10px;flex-wrap:wrap;margin-top:34px}
.pill{border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.06);color:#dbe8f3;padding:10px 15px;border-radius:999px;font-weight:650;font-size:14px}
.pill.active{background:#fff;color:#111}
.scenario{display:grid;grid-template-columns:.86fr 1.14fr;gap:32px;margin-top:28px;align-items:stretch}
.scenario-copy{padding:28px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);border-radius:8px}
.scenario-copy h3{margin:0;color:#fff;font-family:var(--serif);font-size:31px;line-height:1.28;font-weight:600}
.scenario-copy p{color:rgba(255,255,255,.68)}
.pain-value{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}
.pv{padding:16px;border-radius:8px;border:1px solid rgba(255,255,255,.14);background:rgba(0,0,0,.16)}
.pv b{display:block;color:#fff;font-size:14px}
.pv span{display:block;color:rgba(255,255,255,.62);font-size:13px;margin-top:6px}
.scenario-visual{position:relative;min-height:420px;border-radius:8px;overflow:hidden}
.scenario-visual img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.scenario-visual:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent,rgba(0,0,0,.68))}
.scenario-metrics{position:absolute;left:18px;right:18px;bottom:18px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;z-index:1}
.metric{padding:14px;border:1px solid rgba(255,255,255,.16);background:rgba(10,14,21,.72);border-radius:8px;color:#fff;backdrop-filter:blur(14px)}
.metric b{display:block;font:760 22px/1 var(--mono)}
.metric span{display:block;color:rgba(255,255,255,.62);font-size:12px;margin-top:7px}

.case-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:42px}
.cards{display:grid;gap:14px;margin-top:42px}
.logo-wall{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-top:36px}
.logo-chip{min-height:54px;border:1px solid var(--line);border-radius:8px;background:var(--surface);display:grid;place-items:center;padding:10px;color:var(--text);font-weight:650;font-size:13px}
.team-strip{margin-top:52px;display:grid;grid-template-columns:.7fr 1.3fr;gap:28px;align-items:center}
.team-shot{border-radius:12px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--soft);background:var(--surface)}
.team-shot img{width:100%;height:100%;object-fit:cover}
.team-list{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.marquee{position:relative;overflow:hidden;margin-top:34px;border-block:1px solid var(--line);background:var(--surface2)}
.marquee-track{display:flex;gap:10px;width:max-content;animation:marquee 32s linear infinite paused;padding:14px 0}
.marquee.inview .marquee-track{animation-play-state:running}
.marquee:hover .marquee-track{animation-play-state:paused}
.eco{display:inline-flex;align-items:center;height:38px;padding:0 16px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--text);font-weight:650;font-size:13px;white-space:nowrap}
@keyframes marquee{to{transform:translateX(-50%)}}

.timeline{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:42px}
.time-card{position:relative;border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:22px;min-height:180px}
.step-num{display:block;font:760 28px/1 var(--serif);color:var(--blue)}
.time-card h3{margin:22px 0 0;font-family:var(--serif);font-size:20px;line-height:1.35;font-weight:600}
.time-card p{margin:8px 0 0;color:var(--muted);font-size:14px}

.contact-hero{--ink:var(--pp-ink);--text:var(--pp-text);--muted:var(--pp-muted);--line:var(--pp-line);padding:calc(var(--nav) + 72px) 0 76px;min-height:100vh;background:var(--pp);color:var(--pp-text);position:relative;overflow:hidden}
.contact-hero:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(246,245,241,.98),rgba(246,245,241,.88)),radial-gradient(circle at 78% 10%,rgba(167,122,69,.14),transparent 34%),linear-gradient(135deg,rgba(255,255,255,.72),transparent 46%)}
.contact-layout{position:relative;display:grid;grid-template-columns:.88fr 1.12fr;gap:40px;align-items:start}
.contact-copy h1{margin:18px 0 0;font-family:var(--serif);font-size:clamp(38px,5vw,66px);line-height:1.14;font-weight:600;color:var(--ink)}
.contact-copy p{color:var(--muted);font-size:17px;max-width:520px}
.contact-card{padding:26px;border-radius:12px;box-shadow:var(--shadow);background:rgba(255,255,255,.88);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.field{display:grid;gap:7px}
.field.full{grid-column:1/-1}
.field label{font-weight:650;font-size:13px;color:#343a44}
.field label i{color:#c43c2f;font-style:normal}
.field input,.field select,.field textarea{width:100%;min-height:46px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:0 13px;color:var(--ink);outline:0;transition:border-color .18s var(--ease),box-shadow .18s var(--ease)}
.field textarea{padding:12px 13px;min-height:96px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{border-color:rgba(10,77,140,.55);box-shadow:0 0 0 4px rgba(10,77,140,.08)}
.err{min-height:18px;color:#b3261e;font-size:12px}
.success{display:none;text-align:center;padding:28px 8px}
.success.show{display:block;animation:panelIn .45s var(--ease) both}
.check{width:54px;height:54px;margin:0 auto 18px;border-radius:50%;display:grid;place-items:center;background:#e7f6ef;color:#157347;font-size:26px}
.success h2{font-family:var(--serif);font-size:30px;line-height:1.3;font-weight:600;margin:0;color:var(--ink)}
.success p{color:var(--muted);margin:12px auto 0;max-width:520px}
.qr{width:168px;height:168px;margin:24px auto 16px;border:1px dashed rgba(10,77,140,.35);border-radius:8px;background:linear-gradient(135deg,#fff,#eef5fb);display:grid;place-items:center;color:var(--blue);font-weight:700}
.benefits{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:14px 0 0}
.benefits span{padding:8px 12px;border-radius:999px;border:1px solid var(--line);background:#fff;color:#4d5662;font-size:13px}
.contact-meta{margin-top:34px;display:grid;gap:12px}
.meta-line{border:1px solid var(--line);background:rgba(255,255,255,.76);border-radius:8px;padding:15px}
.meta-line b{display:block;font-size:13px;color:var(--blue)}
.meta-line span{display:block;margin-top:5px;color:#4d5662;font-size:14px}
.map{margin-top:14px;border-radius:8px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--soft)}
.map img{width:100%;height:230px;object-fit:cover}

.footer{background:var(--bg2);border-top:1px solid var(--line);padding:52px 0 34px}
.footer-grid{display:grid;grid-template-columns:1.1fr repeat(2,.8fr);gap:28px;align-items:start;min-height:300px}
.footer img{width:112px}
.footer p,.footer a{color:var(--muted);font-size:14px}
.footer h4{margin:0 0 14px;font:700 12px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text)}
.footer a{display:block;margin:8px 0}
.copy{margin-top:34px;padding-top:20px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:16px;color:#858c96;font-size:12px}
.copy .icp a{color:inherit;text-decoration:none;transition:color .18s var(--ease)}
.copy .icp a:hover{color:#c4cdd9;text-decoration:underline}
.footer-grid>div:first-child{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;height:100%}
.footer-wechat{display:flex;flex-direction:column;align-items:center;width:132px;margin-top:22px}
.footer-wechat img{display:block;width:132px;height:132px;object-fit:cover}
.footer-wechat span{width:100%;margin-top:8px;color:var(--muted);font-size:13px;line-height:1.3;text-align:center}

@media (min-width:981px){
  .hero .wrap{width:min(1380px,calc(100vw - 64px))}   /* 首屏加宽；≤980px 沿用全局 .wrap 以与下方版块左右对齐 */
}
@media (min-width:880px){
  .cards-2{grid-template-columns:repeat(2,1fr)}
  .cards-3{grid-template-columns:repeat(3,1fr)}
  .cards-4{grid-template-columns:repeat(4,1fr)}
}
@media (max-width:980px){
  .nav-product.is-open .product-flyout{display:grid}
  .navlinks{position:fixed;left:14px;right:14px;top:78px;display:none;flex-direction:column;align-items:stretch;padding:12px;border:1px solid var(--line);border-radius:12px;background:rgba(11,17,26,.97);backdrop-filter:blur(22px);box-shadow:var(--soft)}
  /* 抽屉滚动兜底（2026-09-01 补）。坏在哪：抽屉是 position:fixed、高度由内容撑，
     以前既没有 max-height 也没有 overflow —— 内容一超过视口，超出去的那截就永远够不到
     （fixed 元素不跟页面滚，实测 scrollTo 之后最后一项仍在视口外）。
     上一轮给顶栏加「FDE 服务」后 360×640 就实测撞线了：/about 抽屉 608px 高、top 78，
     最后一项「关于我们」落在 621–673，视口只有 640，命中测试直接测不到；
     /index 抽屉 620px、top 68（页面级 <style> 把 top 改成 var(--nav)），末项 613–665 同样被截。
     90px = 78（本表里抽屉的 top）+ 12（底部留白）。**故意按 78 这个最大的 top 算**：
     六个页面级 <style> 把 top 覆盖成 var(--nav)=68px，按 78 算出来的高度对它们只会更保守，
     绝不会算超；反过来按 68 算，about/products 这两页（没有页面级覆盖）就会溢出 10px。
     dvh 那行给移动端浏览器地址栏收放用；不认 dvh 的浏览器丢掉该声明、回落到上一行的 vh。
     overscroll-behavior:contain —— 抽屉滚到头时不把滚动链传给背后的页面。 */
  .navlinks.open{display:flex;max-height:calc(100vh - 90px - env(safe-area-inset-bottom,0px));overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  .navlinks.open{max-height:calc(100dvh - 90px - env(safe-area-inset-bottom,0px))}
  .navlinks a{padding:14px}
  .iconbtn{display:flex}
  .hero-grid,.split,.product-view,.scenario,.team-strip,.contact-layout{grid-template-columns:1fr}
  .hero .ops-panel{display:none}
  .ops-panel{max-width:560px}
  .why-grid,.case-grid,.logo-wall,.team-list,.timeline{grid-template-columns:1fr 1fr}
  .hero-stats{grid-template-columns:1fr 1fr}
}
@media (max-width:620px){
  .wrap{width:min(100vw - 28px,var(--max))}
  .topbar{height:62px}.brand img{width:112px}.brand span{display:none}.navcta .btn{display:none}
  body{font-size:16px}
  .hero{min-height:auto;padding:104px 0 48px}.hero-copy h1{font-size:28px;line-height:1.3}.hero-copy h1 .title-gradient{width:auto;font-size:21px;white-space:normal}
  .hero-copy p{font-size:16px;line-height:1.78}.hero-actions{margin-top:26px}
  .hero-stats{grid-template-columns:repeat(2,1fr);margin-top:28px}
  .hero-stat{padding:12px}.hero-stat b{font-size:23px}.hero-stat > span{font-size:12px}
  .why-grid,.case-grid,.logo-wall,.team-list,.timeline,.scenario-metrics,.pain-value,.form-grid{grid-template-columns:1fr}
  .section{padding:66px 0}.product-view{padding:20px}.product-media{min-height:270px}
  .scenario-copy{padding:22px}.scenario-copy h3{font-size:25px}
  .footer-grid{grid-template-columns:1fr}.copy{display:block}.copy span{display:block;margin-top:8px}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .reveal,.stagger>*{opacity:1!important;transform:none!important}
  .hero-media video{display:none!important}
}

/* ===== V16 产品中心与产品详情页 ===== */
.nav-product{position:relative;display:flex;align-items:center}
.nav-product__trigger{display:inline-flex;align-items:center;gap:6px;position:relative;padding:12px 13px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:14px;line-height:1;transition:color .18s var(--ease),background .18s var(--ease)}
.nav-product__trigger:hover,.nav-product:focus-within .nav-product__trigger{color:var(--ink);background:rgba(255,255,255,.045)}
.nav-product__trigger i{width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .2s var(--ease);flex:none}
.nav-product:hover .nav-product__trigger i,.nav-product:focus-within .nav-product__trigger i{transform:rotate(225deg) translateY(-1px)}
.product-flyout{position:absolute;top:calc(100% + 10px);left:-12px;width:330px;padding:10px;border:1px solid var(--line);border-radius:12px;background:rgba(11,17,26,.97);box-shadow:var(--soft);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);opacity:0;visibility:hidden;transform:translateY(-7px);pointer-events:none;transition:opacity .2s var(--ease),transform .2s var(--ease),visibility .2s var(--ease)}
.nav-product:hover .product-flyout,.nav-product:focus-within .product-flyout{opacity:1;visibility:visible;transform:none;pointer-events:auto}
.product-flyout__item{display:block!important;margin:0!important;padding:12px!important;border-radius:8px!important;color:var(--ink)!important;transition:background .18s var(--ease)!important}
.product-flyout__item:after{display:none!important}
.product-flyout__item:hover,.product-flyout__item:focus-visible{background:rgba(49,131,201,.14)!important}
.product-flyout__item b{display:block;font-size:14px;line-height:1.35}
.product-flyout__item span{display:block;margin-top:4px;color:var(--muted);font-size:12px;line-height:1.5}
.product-flyout__all{display:block!important;margin-top:4px!important;padding:11px 12px!important;border-top:1px solid var(--line);border-radius:0!important;color:var(--blue2)!important;font-weight:700;font-size:13px}
.product-flyout__all:after{display:none!important}

.products-view{min-height:100vh;padding:calc(var(--nav) + 68px) 0 88px;background:radial-gradient(900px 520px at 82% 0%,rgba(49,131,201,.15),transparent 62%),radial-gradient(800px 480px at 6% 100%,rgba(201,164,107,.08),transparent 66%),var(--paper)}
.products-intro{max-width:780px}
.products-intro h1,.product-hero__copy h1,.product-hero__copy h2{margin:16px 0 0;color:var(--ink);font-family:var(--serif);font-size:clamp(38px,5vw,62px);line-height:1.14;font-weight:600;letter-spacing:-.025em;text-wrap:balance}
.products-intro p{max-width:660px;margin:22px 0 0;color:var(--text);font-size:18px;line-height:1.85}
.product-route-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:46px}
.product-route-card{position:relative;min-height:230px;padding:26px;border:1px solid var(--line);border-radius:12px;background:linear-gradient(145deg,rgba(24,37,51,.9),rgba(14,22,32,.92));text-align:left;color:var(--ink);overflow:hidden;transition:transform .22s var(--ease),border-color .22s var(--ease),background .22s var(--ease)}
.product-route-card:before{content:"";position:absolute;right:-42px;bottom:-58px;width:184px;height:184px;border-radius:50%;background:radial-gradient(circle,rgba(74,156,224,.2),transparent 68%)}
.product-route-card:hover{transform:translateY(-4px);border-color:rgba(74,156,224,.48);background:linear-gradient(145deg,rgba(27,45,63,.96),rgba(14,22,32,.94))}
.product-route-card__index{position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid rgba(74,156,224,.36);border-radius:8px;color:var(--blue2);font:700 11px/1 var(--mono);letter-spacing:.08em}
.product-route-card h2{position:relative;margin:25px 0 0;font-family:var(--serif);font-size:29px;line-height:1.25;font-weight:600}
.product-route-card p{position:relative;max-width:420px;margin:10px 0 0;color:var(--muted);font-size:14px;line-height:1.75}
.product-route-card span{position:relative;display:inline-flex;align-items:center;gap:8px;margin-top:22px;color:#dcecff;font-weight:700;font-size:13px}
.product-route-card span:after{content:"→";font-size:16px;transition:transform .2s var(--ease)}
.product-route-card:hover span:after{transform:translateX(4px)}
.product-center-note{margin-top:54px;padding:24px 26px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.035);color:var(--muted);font-size:14px;line-height:1.8}
.product-center-note b{color:var(--ink)}

.product-detail{min-height:100vh;padding:var(--nav) 0 90px;background:var(--paper)}
.product-detail--media{background:radial-gradient(900px 550px at 80% 2%,rgba(67,179,168,.12),transparent 64%),var(--paper)}
.product-detail--harbor{background:radial-gradient(900px 550px at 85% 3%,rgba(49,131,201,.15),transparent 64%),var(--paper)}
.product-detail--agent{background:radial-gradient(880px 520px at 80% 0%,rgba(201,164,107,.11),transparent 66%),var(--paper)}
.product-hero{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(360px,.82fr);gap:48px;align-items:center;padding:78px 0 68px}
.product-hero__copy p{max-width:660px;margin:22px 0 0;color:var(--text);font-size:18px;line-height:1.85}
.product-hero__meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:25px}
.product-hero__meta span{padding:6px 10px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font:600 11px/1.3 var(--mono);letter-spacing:.04em}
.product-hero__actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:32px}
.product-hero__visual{position:relative;min-height:360px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:linear-gradient(145deg,rgba(24,37,51,.85),rgba(10,16,24,.94));box-shadow:var(--soft)}
.product-hero__visual:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(49,131,201,.16),transparent 42%),radial-gradient(circle at 75% 20%,rgba(201,164,107,.16),transparent 36%)}
.visual-placeholder{position:absolute;inset:20px;display:grid;place-items:center;border:1px dashed rgba(255,255,255,.22);border-radius:10px;color:rgba(255,255,255,.45);font:600 12px/1.5 var(--mono);letter-spacing:.08em;text-align:center}
.visual-orbit{position:absolute;inset:50% auto auto 50%;width:200px;height:200px;border:1px solid rgba(74,156,224,.34);border-radius:50%;transform:translate(-50%,-50%)}
.visual-orbit:before,.visual-orbit:after{content:"";position:absolute;border:1px solid rgba(74,156,224,.22);border-radius:50%}
.visual-orbit:before{inset:26px}.visual-orbit:after{inset:58px}
.visual-node{position:absolute;width:54px;height:54px;border:1px solid rgba(255,255,255,.2);border-radius:12px;background:rgba(16,27,38,.88);display:grid;place-items:center;color:#e3eefb;font:700 12px/1 var(--mono);box-shadow:0 10px 30px rgba(0,0,0,.3)}
.visual-node.n1{left:17%;top:22%}.visual-node.n2{right:16%;top:27%}.visual-node.n3{left:24%;bottom:18%}.visual-node.n4{right:21%;bottom:15%}
.product-block{padding:78px 0;border-top:1px solid var(--line)}
.product-block--soft{background:rgba(255,255,255,.025)}
.product-block__head{max-width:760px;margin:0 auto;text-align:center}
.product-block__head h2{margin:0;color:var(--ink);font-family:var(--serif);font-size:clamp(29px,3.5vw,42px);line-height:1.24;font-weight:600;text-wrap:balance}
.product-block__head p{margin:16px auto 0;color:var(--muted);font-size:16px;line-height:1.8}
.problem-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:40px}
.problem-card,.module-card,.system-card{padding:22px;border:1px solid var(--line);border-radius:10px;background:rgba(18,27,38,.62)}
.problem-card__no{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;background:rgba(49,131,201,.13);color:var(--blue2);font:700 11px/1 var(--mono)}
.problem-card h3,.module-card h3,.system-card h3{margin:18px 0 0;color:var(--ink);font-size:18px;line-height:1.35}
.problem-card p,.module-card p,.system-card p{margin:9px 0 0;color:var(--muted);font-size:13px;line-height:1.75}
.flow-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:40px}
.flow-step{position:relative;min-height:158px;padding:20px;border:1px solid var(--line);border-radius:10px;background:linear-gradient(155deg,rgba(24,37,51,.8),rgba(14,22,32,.88))}
.flow-step:not(:last-child):after{content:"→";position:absolute;right:-18px;top:50%;z-index:2;color:var(--blue2);font-size:18px;transform:translateY(-50%)}
.flow-step b{display:block;color:var(--blue2);font:700 11px/1 var(--mono);letter-spacing:.08em}
.flow-step h3{margin:17px 0 0;color:var(--ink);font-size:17px;line-height:1.35}
.flow-step p{margin:8px 0 0;color:var(--muted);font-size:13px;line-height:1.7}
.module-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-top:40px}
.module-card{min-height:190px}
.module-card__tag{color:var(--blue2);font:700 11px/1 var(--mono);letter-spacing:.1em}
.knowledge-flow{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:38px}
.knowledge-flow__item{position:relative;padding:18px;border:1px solid var(--line);border-radius:10px;background:rgba(18,27,38,.6)}
.knowledge-flow__item:not(:last-child):after{content:"→";position:absolute;right:-17px;top:50%;color:var(--blue2);font-size:17px;z-index:2}
.knowledge-flow__item b{display:block;color:var(--ink);font-size:15px}.knowledge-flow__item span{display:block;margin-top:7px;color:var(--muted);font-size:12px;line-height:1.6}
.system-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-top:40px}
.system-card{min-height:164px}.system-card__icon{display:grid;place-items:center;width:36px;height:36px;border-radius:9px;background:rgba(49,131,201,.13);color:var(--blue2);font:700 12px/1 var(--mono)}
.product-compare{width:100%;margin-top:38px;border-collapse:collapse;overflow:hidden;border:1px solid var(--line);border-radius:10px;background:rgba(18,27,38,.58);font-size:14px}
.product-compare th,.product-compare td{padding:15px 16px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.product-compare th{color:var(--ink);background:rgba(49,131,201,.16);font-weight:700}.product-compare td{color:var(--muted);line-height:1.65}.product-compare tr:last-child td{border-bottom:0}.product-compare th:last-child,.product-compare td:last-child{border-right:0}
.faq-list{max-width:900px;margin:38px auto 0;display:grid;gap:10px}.faq-list details{border:1px solid var(--line);border-radius:10px;background:rgba(18,27,38,.52);padding:0 20px}.faq-list summary{padding:18px 0;color:var(--ink);font-weight:700;cursor:pointer;list-style:none}.faq-list summary::-webkit-details-marker{display:none}.faq-list summary:after{content:"+";float:right;color:var(--blue2);font-size:20px;line-height:1}.faq-list details[open] summary:after{content:"−"}.faq-list p{margin:0;padding:0 0 18px;color:var(--muted);font-size:14px;line-height:1.8}
.product-cta{margin-top:42px;padding:32px;border:1px solid rgba(74,156,224,.3);border-radius:12px;background:linear-gradient(135deg,rgba(49,131,201,.18),rgba(18,27,38,.78));display:flex;align-items:center;justify-content:space-between;gap:24px}.product-cta h2{margin:0;color:var(--ink);font-family:var(--serif);font-size:28px;line-height:1.3}.product-cta p{margin:8px 0 0;color:var(--muted);font-size:14px}

/* ===== V17 · 企业智库详情页（仅作用于 #knowledge-base） ===== */
#knowledge-base .kb-hero__title{max-width:620px;text-wrap:initial;text-align:center}
#knowledge-base .kb-hero__title .kb-hero-line{display:block}
#knowledge-base .kb-hero__title .kb-hero-line + .kb-hero-line{margin-top:.12em}
#knowledge-base .kb-hero__visual--image{display:grid;place-items:center;background:radial-gradient(circle at 50% 48%,rgba(49,131,201,.17),transparent 47%),linear-gradient(145deg,rgba(16,29,43,.96),rgba(6,11,18,.98))}
#knowledge-base .kb-hero__visual--image:before{display:none}
#knowledge-base .kb-hero__image{position:absolute;inset:0;width:100%;height:100%;padding:12px;object-fit:contain;filter:saturate(.94) contrast(1.02)}

#knowledge-base .kb-problem-grid{gap:14px}
#knowledge-base .kb-problem-card{--kb-accent:74,156,224;position:relative;min-height:278px;overflow:hidden;border-color:rgba(var(--kb-accent),.32);background:linear-gradient(145deg,rgba(27,43,59,.92),rgba(12,19,29,.96) 70%);box-shadow:inset 0 1px 0 rgba(255,255,255,.045),0 16px 34px rgba(0,0,0,.16);transition:transform .24s var(--ease),border-color .24s var(--ease),box-shadow .24s var(--ease),background .24s var(--ease)}
#knowledge-base .kb-problem-card:before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,rgba(var(--kb-accent),.24),rgba(var(--kb-accent),.95),rgba(var(--kb-accent),.08));box-shadow:0 0 16px rgba(var(--kb-accent),.46)}
#knowledge-base .kb-problem-card:nth-child(2){--kb-accent:91,176,214;background:linear-gradient(145deg,rgba(22,44,59,.94),rgba(12,20,31,.97) 70%)}
#knowledge-base .kb-problem-card:nth-child(3){--kb-accent:102,128,190;background:linear-gradient(145deg,rgba(27,35,58,.94),rgba(13,18,31,.97) 70%)}
#knowledge-base .kb-problem-card:nth-child(4){--kb-accent:70,149,185;background:linear-gradient(145deg,rgba(18,43,57,.94),rgba(11,20,30,.97) 70%)}
#knowledge-base .kb-problem-card:hover{transform:translateY(-3px);border-color:rgba(var(--kb-accent),.74);background:linear-gradient(145deg,rgba(32,55,74,.98),rgba(13,23,35,.99) 70%);box-shadow:inset 0 1px 0 rgba(255,255,255,.075),0 22px 42px rgba(0,0,0,.26),0 0 28px rgba(var(--kb-accent),.11)}
#knowledge-base .kb-problem-card .problem-card__no{position:relative;z-index:2;border:1px solid rgba(var(--kb-accent),.28);background:rgba(var(--kb-accent),.13);box-shadow:inset 0 1px 0 rgba(255,255,255,.08);color:rgb(var(--kb-accent))}
#knowledge-base .kb-problem-card h3,#knowledge-base .kb-problem-card p{position:relative;z-index:2}
#knowledge-base .kb-problem-card h3{max-width:178px}
#knowledge-base .kb-problem-card__icon{position:absolute;right:16px;top:20px;width:70px;height:70px;color:rgb(var(--kb-accent));opacity:.18;filter:drop-shadow(0 0 12px rgba(var(--kb-accent),.28));transition:opacity .24s var(--ease),transform .24s var(--ease)}
#knowledge-base .kb-problem-card:hover .kb-problem-card__icon{opacity:.31;transform:translateY(-2px)}
#knowledge-base .kb-problem-card__icon *{vector-effect:non-scaling-stroke}
#knowledge-base .kb-problem-card{padding:28px 26px 30px}
#knowledge-base .kb-problem-card h3{max-width:none;margin-top:24px;font-size:22px;line-height:1.28;font-weight:780;letter-spacing:-.02em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:normal}
#knowledge-base .kb-problem-card p{margin-top:15px;font-size:15px;line-height:1.86;font-weight:430;letter-spacing:-.01em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:pretty}

#knowledge-base .faq-list{gap:12px}
#knowledge-base .faq-list details{padding:0 24px}
#knowledge-base .faq-list summary{padding:22px 0;font-size:20px;line-height:1.45;font-weight:780;letter-spacing:-.015em;word-break:normal;overflow-wrap:normal;line-break:auto}
#knowledge-base .faq-list p{padding:2px 0 24px;font-size:16px;line-height:1.9;font-weight:430;letter-spacing:-.005em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:pretty}


#knowledge-base .kb-flow-image-block{padding-top:84px;padding-bottom:86px}
#knowledge-base .kb-flow-image-scroll{margin-top:29px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-color:rgba(74,156,224,.42) transparent;scrollbar-width:thin}
#knowledge-base .kb-flow-image{display:block;width:100%;height:auto;margin:0 auto;border:1px solid rgba(102,154,199,.28);border-radius:12px;box-shadow:0 22px 54px rgba(0,0,0,.28)}
#knowledge-base .kb-application-image-block{padding-top:64px;padding-bottom:88px}
#knowledge-base .kb-application-image-scroll{margin-top:32px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-color:rgba(74,156,224,.42) transparent;scrollbar-width:thin}
#knowledge-base .kb-application-image{display:block;width:100%;height:auto;margin:0 auto;border:1px solid rgba(102,154,199,.24);border-radius:12px;box-shadow:0 18px 46px rgba(0,0,0,.25)}
@media (max-width:980px){#knowledge-base .kb-problem-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:620px){#knowledge-base .kb-hero__title{font-size:clamp(38px,12vw,52px)}#knowledge-base .kb-flow-image-scroll,#knowledge-base .kb-application-image-scroll{margin-right:-20px;padding-bottom:12px}#knowledge-base .kb-flow-image{width:960px;max-width:none;border-radius:10px}#knowledge-base .kb-application-image{width:960px;max-width:none;border-radius:10px}#knowledge-base .kb-problem-card{min-height:0}}

@media (max-width:980px){.product-hero{grid-template-columns:1fr;padding:58px 0}.product-hero__visual{min-height:300px}.problem-grid{grid-template-columns:repeat(2,1fr)}.flow-grid{grid-template-columns:repeat(3,1fr)}.flow-step:after,.knowledge-flow__item:after{display:none!important}.knowledge-flow{grid-template-columns:repeat(3,1fr)}.nav-product{display:block;width:100%}.nav-product__trigger{width:100%;padding:14px;text-align:left;justify-content:space-between}.product-flyout{position:static;display:none;width:100%;margin:2px 0 8px;opacity:1;visibility:visible;transform:none;pointer-events:auto;background:rgba(255,255,255,.035);box-shadow:none}.nav-product:focus-within .product-flyout,.nav-product:hover .product-flyout{display:block}}
@media (max-width:620px){.products-view{padding-top:104px}.products-intro h1,.product-hero__copy h1,.product-hero__copy h2{font-size:35px}.products-intro p,.product-hero__copy p{font-size:16px}.product-route-grid,.problem-grid,.module-grid,.system-grid,.knowledge-flow,.flow-grid{grid-template-columns:1fr}.product-route-card{min-height:200px}.product-block{padding:58px 0}.product-cta{display:block;padding:25px}.product-cta .btn{margin-top:20px}.product-compare{display:block;overflow-x:auto;white-space:nowrap}.product-compare td{white-space:normal;min-width:210px}.product-hero__visual{min-height:250px}}

/* ===== V17 产品中心正式页 ===== */
.footer-grid{align-items:start}
.footer-grid>div:first-child{justify-content:flex-start}
.footer-grid>nav{padding-top:0}

.product-flyout{width:650px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:12px}
.product-flyout__item{display:flex!important;min-height:104px;margin:0!important;padding:17px!important;flex-direction:column;justify-content:center;border:1px solid rgba(103,145,181,.16);background:linear-gradient(145deg,rgba(23,39,55,.84),rgba(12,19,29,.9));box-shadow:inset 0 1px 0 rgba(148,191,228,.04)}
.product-flyout__item:hover,.product-flyout__item:focus-visible{border-color:rgba(69,155,225,.54);background:linear-gradient(145deg,rgba(27,52,74,.96),rgba(14,24,36,.96))!important}
.product-flyout__item b{font-size:15px;letter-spacing:-.01em}.product-flyout__item span{line-height:1.6}.product-flyout__all{display:none!important}

.product-hero__visual--image{display:block;min-height:430px;padding:0;overflow:hidden;border-color:rgba(87,143,189,.3);background:#09111b}
.product-hero__visual--image img{display:block;width:100%;height:100%;min-height:430px;object-fit:cover}
.hero-title-line{display:block}.product-hero__copy .product-hero__meta{display:none}.product-hero__actions .btn.ghost{display:none}

.media-problem-grid,.harbor-problem-grid{gap:18px}.media-problem-card,.harbor-problem-card{position:relative;min-height:255px;padding:67px 25px 26px!important;border-color:rgba(86,137,183,.3)!important;border-radius:16px!important;background:linear-gradient(145deg,rgba(19,35,50,.96),rgba(13,22,33,.98))!important;box-shadow:inset 0 1px 0 rgba(135,189,229,.07),0 15px 34px rgba(0,0,0,.18);overflow:visible;transition:transform .22s var(--ease),border-color .22s var(--ease),box-shadow .22s var(--ease)}
.media-problem-card:hover,.harbor-problem-card:hover{transform:translateY(-4px);border-color:rgba(74,156,224,.65)!important;box-shadow:inset 0 1px 0 rgba(135,189,229,.14),0 20px 40px rgba(5,28,53,.32)}
.media-problem-card:before,.harbor-problem-card:before{content:"";position:absolute;top:0;right:24px;left:24px;height:2px;background:linear-gradient(90deg,transparent,rgba(49,131,201,.9),transparent);opacity:.78}
.media-problem-icon,.harbor-problem-icon{position:absolute;top:-24px;left:25px;display:grid;place-items:center;width:50px;height:50px;border:1px solid rgba(123,185,239,.55);border-radius:50%;background:radial-gradient(circle at 32% 26%,#4eaeff,rgba(29,91,147,.96) 58%,#133551);box-shadow:0 8px 22px rgba(49,131,201,.34);color:#dceeff}
.media-problem-icon svg,.harbor-problem-icon svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.media-problem-card .problem-card__no,.harbor-problem-card .problem-card__no{position:absolute;right:23px;top:25px;padding:6px 8px;border-radius:7px;background:rgba(49,131,201,.13);color:var(--blue2)}
.media-problem-card h3,.harbor-problem-card h3{margin-top:4px;font-size:23px}.media-problem-card p,.harbor-problem-card p{max-width:29em;line-height:1.8}
.media-problem-card{min-height:278px;padding:68px 26px 30px!important}
.media-problem-card h3{margin-top:6px;font-size:25px!important;line-height:1.28;font-weight:780;letter-spacing:-.02em;word-break:normal;overflow-wrap:normal;line-break:auto}
.media-problem-card p{margin-top:16px;font-size:16px;line-height:1.86;font-weight:430;letter-spacing:-.01em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:pretty}
.harbor-problem-card{min-height:278px;padding:68px 26px 30px!important}
.harbor-problem-card h3{margin-top:6px;font-size:25px!important;line-height:1.28;font-weight:780;letter-spacing:-.02em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:normal}
.harbor-problem-card p{margin-top:16px;max-width:30em;font-size:16px;line-height:1.86;font-weight:430;letter-spacing:-.01em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:pretty}

.media-solution-tabs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:0 0 25px;padding:8px;border:1px solid rgba(91,141,181,.2);border-radius:14px;background:rgba(16,28,40,.54)}
.media-solution-tab{min-height:54px;padding:14px 12px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--muted);font-size:16px;font-weight:780;line-height:1.35;letter-spacing:-.01em;transition:background .18s var(--ease),border-color .18s var(--ease),color .18s var(--ease)}
.media-solution-tab:hover,.media-solution-tab.active{border-color:rgba(74,156,224,.38);background:rgba(49,131,201,.15);color:#e6f2ff}
.media-solution-panel{display:none;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);gap:30px;align-items:center;min-height:442px;padding:30px;border:1px solid rgba(91,141,181,.24);border-radius:18px;background:radial-gradient(700px 360px at 75% 10%,rgba(49,131,201,.12),transparent 65%),linear-gradient(145deg,rgba(16,29,43,.96),rgba(10,17,26,.98));box-shadow:inset 0 1px 0 rgba(150,205,246,.06)}
.media-solution-panel.active{display:grid;animation:mediaPanelIn .32s var(--ease) both}@keyframes mediaPanelIn{from{opacity:.01;transform:translateY(10px)}to{opacity:1;transform:none}}
.media-solution-panel__eyebrow{margin:0;color:var(--blue2);font:700 12px/1 var(--mono);letter-spacing:.12em}.media-solution-panel h3{margin:17px 0 0;font-family:var(--serif);font-size:36px;line-height:1.2;font-weight:600}.media-solution-panel__lead{margin:15px 0 0;color:var(--text);font-size:16px;line-height:1.8}.media-solution-panel ul{margin:23px 0 0;padding:0;list-style:none}.media-solution-panel li{position:relative;margin:11px 0;padding-left:19px;color:var(--muted);font-size:14px;line-height:1.65}.media-solution-panel li:before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--blue2);box-shadow:0 0 12px rgba(74,156,224,.65)}
.media-solution-panel__image{overflow:hidden;border:1px solid rgba(95,152,200,.3);border-radius:13px;background:#07101a;box-shadow:0 20px 42px rgba(0,0,0,.28)}.media-solution-panel__image img{display:block;width:100%;height:auto}

.compare-head{margin-bottom:25px}.compare-head h2{margin:0;font-family:var(--serif);font-size:clamp(30px,4vw,48px);line-height:1.2;font-weight:600}.compare-head p{max-width:720px;margin:16px 0 0;color:var(--muted);font-size:16px;line-height:1.8}
.harbor-flow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}.harbor-flow .flow-step{position:relative;min-height:216px;padding:25px 19px 24px;border-color:rgba(86,137,183,.3);border-radius:16px;background:linear-gradient(145deg,rgba(18,34,49,.95),rgba(13,22,33,.98));box-shadow:inset 0 1px 0 rgba(135,189,229,.06),0 14px 28px rgba(0,0,0,.16)}
.harbor-flow .flow-step:after{content:"";display:block!important;position:absolute!important;z-index:2;top:50%!important;right:-20px!important;left:auto!important;width:26px!important;height:1px!important;background:linear-gradient(90deg,rgba(49,131,201,.3),var(--blue2))!important;transform:none!important}.harbor-flow .flow-step:before{content:"→";position:absolute;z-index:3;right:-22px;top:calc(50% - 11px);color:var(--blue2);font-size:20px;line-height:1}.harbor-flow .flow-step:last-child:after,.harbor-flow .flow-step:last-child:before{display:none!important}.harbor-flow .flow-step b{display:inline-flex;align-items:center;justify-content:center;width:33px;height:33px;border:1px solid rgba(74,156,224,.42);border-radius:9px;background:rgba(49,131,201,.12);color:var(--blue2);font:700 11px/1 var(--mono)}.harbor-flow .flow-step h3{margin-top:34px;font-size:19px}.harbor-flow .flow-step p{line-height:1.7}
#harbor .harbor-flow{margin-top:44px}
#harbor .harbor-flow .flow-step{min-height:238px;padding:30px 22px 28px;word-break:normal;overflow-wrap:normal;line-break:auto}
#harbor .harbor-flow .flow-step h3{margin-top:38px;font-size:22px;line-height:1.28;font-weight:780;letter-spacing:-.02em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:normal}
#harbor .harbor-flow .flow-step p{margin-top:14px;font-size:15.5px;line-height:1.84;font-weight:430;letter-spacing:-.01em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:pretty}

.harbor-capability-map{position:relative;min-height:672px}.harbor-capability-map__lines{position:absolute;inset:80px 8% 82px;width:84%;height:510px;pointer-events:none}.harbor-capability-map__lines line{stroke:rgba(68,153,222,.44);stroke-width:1.2;filter:drop-shadow(0 0 5px rgba(49,131,201,.36))}.harbor-core{position:absolute;z-index:1;top:226px;left:50%;display:grid;place-items:center;width:200px;height:200px;border:1px solid rgba(99,177,239,.65);border-radius:50%;background:radial-gradient(circle at 40% 34%,rgba(65,151,221,.44),rgba(18,48,75,.94) 48%,rgba(9,18,29,.95) 73%);box-shadow:0 0 0 22px rgba(49,131,201,.045),0 0 0 44px rgba(49,131,201,.025),0 0 52px rgba(49,131,201,.24);transform:translateX(-50%);text-align:center}.harbor-core:before,.harbor-core:after{content:"";position:absolute;border:1px solid rgba(78,161,227,.28);border-radius:50%}.harbor-core:before{inset:-32px}.harbor-core:after{inset:-66px;border-style:dashed}.harbor-core b{position:relative;z-index:1;display:block;color:#edf6ff;font-family:var(--serif);font-size:25px;line-height:1.25}.harbor-core span{position:relative;z-index:1;display:block;margin-top:9px;color:#a7c7e5;font-size:12px;letter-spacing:.08em}
.harbor-capability-card{position:absolute;z-index:2;width:29%;min-height:150px;padding:19px 20px;border:1px solid rgba(84,139,185,.3);border-radius:14px;background:linear-gradient(145deg,rgba(20,37,54,.96),rgba(12,20,30,.98));box-shadow:inset 0 1px 0 rgba(135,189,229,.06),0 15px 30px rgba(0,0,0,.18);transition:transform .2s var(--ease),border-color .2s var(--ease)}.harbor-capability-card:hover{transform:translateY(-3px);border-color:rgba(74,156,224,.62)}.harbor-capability-card--1{left:0;top:0}.harbor-capability-card--2{left:35.5%;top:0}.harbor-capability-card--3{right:0;top:0}.harbor-capability-card--4{left:0;bottom:0}.harbor-capability-card--5{left:35.5%;bottom:0}.harbor-capability-card--6{right:0;bottom:0}.harbor-capability-card__top{display:flex;align-items:center;gap:10px;color:var(--blue2);font:700 11px/1 var(--mono);letter-spacing:.1em}.harbor-capability-card__icon{display:grid;place-items:center;width:27px;height:27px;border-radius:8px;background:rgba(49,131,201,.13)}.harbor-capability-card__icon svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.harbor-capability-card h3{margin:16px 0 0;font-size:17px;line-height:1.4}.harbor-capability-card p{margin:8px 0 0;color:var(--muted);font-size:12px;line-height:1.65}
#harbor .harbor-capability-map__lines{inset:auto;top:118px;left:18%;width:64%;height:430px}#harbor .harbor-capability-map__lines line{stroke:rgba(68,153,222,.26);stroke-width:.9;filter:drop-shadow(0 0 3px rgba(49,131,201,.22))}#harbor .harbor-core b{font-size:29px;line-height:1.18;letter-spacing:-.015em}#harbor .harbor-core span{margin-top:11px;font-size:14px;line-height:1.35;letter-spacing:.05em}#harbor .harbor-capability-card{min-height:172px;padding:22px 24px 24px;word-break:normal;overflow-wrap:normal;line-break:auto}#harbor .harbor-capability-card__top{font-size:12px}#harbor .harbor-capability-card h3{margin-top:18px;font-size:21px;line-height:1.32;font-weight:780;letter-spacing:-.02em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:normal}#harbor .harbor-capability-card p{margin-top:12px;font-size:14.5px;line-height:1.78;font-weight:430;letter-spacing:-.01em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:pretty}

.agent-ability-layout{display:grid;grid-template-columns:minmax(0,.93fr) minmax(340px,.87fr);gap:48px;align-items:center;margin-top:54px}.agent-ability-list{display:grid;gap:13px}.agent-ability-card{position:relative;padding:23px 24px 22px 78px;border:1px solid rgba(84,139,185,.31);border-radius:14px;background:linear-gradient(145deg,rgba(18,34,49,.95),rgba(12,21,32,.98));box-shadow:inset 0 1px 0 rgba(135,189,229,.06)}.agent-ability-card__no{position:absolute;left:22px;top:25px;display:grid;place-items:center;width:36px;height:36px;border-radius:9px;background:rgba(49,131,201,.14);color:var(--blue2);font:700 12px/1 var(--mono)}.agent-ability-card h3{margin:0;font-size:20px}.agent-ability-card p{margin:8px 0 0;color:var(--muted);font-size:14px;line-height:1.75}.agent-core-visual{position:relative;min-height:470px;overflow:hidden;border:1px solid rgba(89,146,193,.34);border-radius:18px;background:radial-gradient(330px 250px at 50% 44%,rgba(49,131,201,.2),transparent 66%),linear-gradient(145deg,rgba(18,37,54,.95),rgba(9,17,26,.98));box-shadow:inset 0 1px 0 rgba(150,205,246,.07)}.agent-core-visual:before{content:"";position:absolute;left:50%;top:50%;width:235px;height:235px;border:1px solid rgba(72,157,225,.32);border-radius:50%;transform:translate(-50%,-50%)}.agent-core-visual:after{content:"";position:absolute;left:50%;top:50%;width:335px;height:335px;border:1px dashed rgba(72,157,225,.22);border-radius:50%;transform:translate(-50%,-50%)}.agent-core-node{position:absolute;z-index:2;left:50%;top:50%;display:grid;place-items:center;width:160px;height:160px;border:1px solid rgba(111,186,242,.7);border-radius:50%;background:radial-gradient(circle at 43% 32%,rgba(94,177,242,.48),rgba(25,65,99,.92) 56%,rgba(10,22,33,.98));box-shadow:0 0 34px rgba(49,131,201,.34);transform:translate(-50%,-50%);text-align:center}.agent-core-node b{font-family:var(--serif);font-size:25px;line-height:1.2}.agent-core-node span{margin-top:8px;color:#b4d4ee;font-size:12px}.agent-core-pill{position:absolute;z-index:2;display:flex;align-items:center;gap:8px;padding:10px 13px;border:1px solid rgba(87,150,201,.38);border-radius:10px;background:rgba(14,29,43,.91);color:#dceeff;font-size:13px;box-shadow:0 10px 22px rgba(0,0,0,.2)}.agent-core-pill:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--blue2);box-shadow:0 0 10px rgba(74,156,224,.85)}.agent-core-pill--knowledge{left:38px;top:75px}.agent-core-pill--process{right:33px;top:129px}.agent-core-pill--system{left:50px;bottom:77px}

.agent-delivery-flow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px 38px}.agent-delivery-step{position:relative;min-height:214px;padding:25px 25px 23px;border:1px solid rgba(85,140,186,.32);border-radius:16px;background:linear-gradient(145deg,rgba(19,36,52,.96),rgba(12,21,31,.98));box-shadow:inset 0 1px 0 rgba(135,189,229,.06),0 16px 30px rgba(0,0,0,.16);transition:transform .2s var(--ease),border-color .2s var(--ease)}.agent-delivery-step:hover{transform:translateY(-3px);border-color:rgba(74,156,224,.62)}.agent-delivery-step b{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:9px;background:rgba(49,131,201,.14);color:var(--blue2);font:700 11px/1 var(--mono)}.agent-delivery-step h3{margin:29px 0 0;font-size:21px}.agent-delivery-step p{margin:9px 0 0;color:var(--muted);font-size:14px;line-height:1.75}.agent-delivery-step:nth-child(4){grid-column:3;grid-row:2}.agent-delivery-step:nth-child(5){grid-column:2;grid-row:2}.agent-delivery-step:nth-child(6){grid-column:1;grid-row:2}.agent-delivery-step:nth-child(1):after,.agent-delivery-step:nth-child(2):after{content:"";position:absolute;top:50%;right:-39px;width:39px;height:1px;background:linear-gradient(90deg,var(--blue2),rgba(49,131,201,.2))}.agent-delivery-step:nth-child(1):before,.agent-delivery-step:nth-child(2):before{content:"→";position:absolute;z-index:2;top:calc(50% - 11px);right:-45px;color:var(--blue2);font-size:20px}.agent-delivery-step:nth-child(3):after{content:"";position:absolute;right:31px;bottom:-27px;width:1px;height:27px;background:var(--blue2)}.agent-delivery-step:nth-child(3):before{content:"↳";position:absolute;z-index:2;right:23px;bottom:-39px;color:var(--blue2);font-size:24px}.agent-delivery-step:nth-child(4):after,.agent-delivery-step:nth-child(5):after{content:"";position:absolute;top:50%;left:-39px;width:39px;height:1px;background:linear-gradient(90deg,rgba(49,131,201,.2),var(--blue2))}.agent-delivery-step:nth-child(4):before,.agent-delivery-step:nth-child(5):before{content:"←";position:absolute;z-index:2;top:calc(50% - 11px);left:-45px;color:var(--blue2);font-size:20px}

.agent-training-showcase{padding-top:92px!important;padding-bottom:96px!important}.agent-training-showcase__head{text-align:center}.agent-training-showcase__head h2{margin:0;font-family:var(--serif);font-size:clamp(31px,4.1vw,50px);line-height:1.2}.agent-training-showcase__head p{max-width:720px;margin:16px auto 0;color:var(--muted);font-size:16px;line-height:1.8}.agent-training-showcase__image{width:min(90%,1360px);margin:34px auto 0;padding:16px;border:1px solid rgba(86,151,202,.34);border-radius:18px;background:linear-gradient(145deg,rgba(22,39,55,.95),rgba(10,18,28,.98));box-shadow:0 26px 50px rgba(0,0,0,.28)}.agent-training-showcase__image img{display:block;width:100%;height:auto;border-radius:10px}.agent-training-showcase__statement{margin:25px 0 0;color:#d8e8f8;text-align:center;font-size:18px;font-weight:700}

@media (max-width:980px){.product-flyout{position:static;width:100%;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.media-solution-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}.media-solution-panel,.agent-ability-layout{grid-template-columns:1fr}.harbor-flow{grid-template-columns:repeat(2,minmax(0,1fr))}.harbor-flow .flow-step:after,.harbor-flow .flow-step:before{display:none!important}.harbor-capability-map{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-height:0}.harbor-capability-map__lines{display:none}.harbor-core{position:relative;top:auto;left:auto;grid-column:1 / -1;grid-row:1;justify-self:center;transform:none}.harbor-capability-card{position:relative!important;inset:auto!important;width:auto}.agent-delivery-flow{gap:16px}.agent-delivery-step{grid-column:auto!important;grid-row:auto!important}.agent-delivery-step:before,.agent-delivery-step:after{display:none!important}}
@media (max-width:620px){.product-flyout{grid-template-columns:1fr}.product-flyout__item{min-height:0}.product-hero__visual--image,.product-hero__visual--image img{min-height:250px}.media-problem-grid,.harbor-problem-grid,.harbor-flow,.harbor-capability-map,.agent-delivery-flow{grid-template-columns:1fr}.media-solution-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.media-solution-panel{min-height:0;padding:20px}.media-solution-panel h3{font-size:29px}.harbor-core{width:168px;height:168px}.harbor-capability-map{display:grid}.agent-core-visual{min-height:400px}.agent-delivery-step{min-height:0}.agent-training-showcase__image{width:100%;padding:8px}.agent-training-showcase{padding-top:64px!important;padding-bottom:68px!important}}

/* ===== V18 product page refinements ===== */
@media (min-width:981px){
  .nav-product{padding-bottom:12px;margin-bottom:-12px}
  .product-flyout{top:calc(100% - 2px);transition:opacity .2s var(--ease),transform .2s var(--ease),visibility 0s linear .2s}
  .nav-product:hover .product-flyout,.nav-product:focus-within .product-flyout{transition-delay:0s}
}

/* Hero illustrations retain their original aspect ratio and use a restrained, product-UI scale. */
.product-hero__visual--image{display:grid!important;place-items:center;min-height:0!important;aspect-ratio:1.56/1;padding:10px!important;overflow:hidden;border-color:rgba(87,143,189,.34);background:radial-gradient(80% 90% at 62% 26%,rgba(41,104,158,.2),transparent 68%),#08111b}
.product-hero__visual--image img{position:relative!important;inset:auto!important;display:block;width:100%!important;height:auto!important;min-height:0!important;padding:0!important;object-fit:contain!important;border-radius:11px}
#knowledge-base .product-hero__copy,#knowledge-base .kb-hero__title{text-align:left}
#knowledge-base .kb-hero__image{position:relative!important;inset:auto!important;width:100%!important;height:auto!important;padding:0!important;object-fit:contain!important}

/* Give the solution module and Harbor capability map the requested breathing room. */
.media-solution-block .product-block__head{margin-bottom:46px}
.harbor-capability-block .product-block__head{margin-bottom:68px}

/* Comparison is presented as a clear left-versus-right decision surface rather than a flat table. */
.compare-head{max-width:1120px;margin:0 auto 38px;text-align:center}
.compare-head .eyebrow{margin:0 0 13px;color:var(--blue2)}
.compare-head h2{color:#f5f9fd}
.marketing-compare{overflow:hidden;border:1px solid rgba(86,151,202,.34);border-radius:20px;background:rgba(9,17,27,.72);box-shadow:inset 0 1px 0 rgba(160,211,247,.06),0 24px 48px rgba(0,0,0,.18)}
.marketing-compare__head,.marketing-compare__row{display:grid;grid-template-columns:minmax(0,1.24fr) minmax(128px,.4fr) minmax(0,.96fr)}
.marketing-compare__head{background:linear-gradient(90deg,rgba(31,98,157,.5),rgba(35,70,101,.32) 54%,rgba(18,30,43,.72));color:#dceeff;font-size:14px;font-weight:700}
.marketing-compare__head>*,.marketing-compare__row>*{margin:0;padding:18px 23px}
.marketing-compare__head>*:nth-child(2),.marketing-compare__row>*:nth-child(2){display:grid;place-items:center;border-right:1px solid rgba(89,143,187,.2);border-left:1px solid rgba(89,143,187,.2);text-align:center}
.marketing-compare__row{align-items:stretch;border-top:1px solid rgba(89,143,187,.18)}
.marketing-compare__row p{display:flex;align-items:center;color:var(--muted);font-size:14px;line-height:1.65}
.marketing-compare__row p:first-child{color:#e7f3ff;background:linear-gradient(90deg,rgba(37,109,170,.18),rgba(27,67,101,.06));font-weight:600}
.marketing-compare__row span{color:var(--blue2);font:700 12px/1.4 var(--mono);letter-spacing:.03em}

/* Use one concise visual for the Agent model instead of layered CSS rings and labels. */
.agent-core-visual--image{display:grid;place-items:center;min-height:0!important;padding:10px;background:radial-gradient(80% 90% at 60% 30%,rgba(41,104,158,.16),transparent 70%),#08111b}
.agent-core-visual--image:before,.agent-core-visual--image:after{display:none!important}
.agent-core-visual--image img{display:block;width:100%;height:auto;border-radius:12px}

/* Delivery flow: connected line-and-chevron cues rather than text arrows. */
.agent-delivery-flow{margin-top:58px;gap:48px 56px}
.agent-delivery-step:nth-child(1):after,.agent-delivery-step:nth-child(2):after{right:-56px;width:56px;background:linear-gradient(90deg,rgba(74,156,224,.9),rgba(49,131,201,.22))}
.agent-delivery-step:nth-child(1):before,.agent-delivery-step:nth-child(2):before{content:"";top:calc(50% - 5px);right:-59px;width:9px;height:9px;border-top:1.5px solid var(--blue2);border-right:1.5px solid var(--blue2);transform:rotate(45deg);font-size:0}
.agent-delivery-step:nth-child(3):after{right:50%;bottom:-48px;height:48px}
.agent-delivery-step:nth-child(3):before{content:"";right:calc(50% - 5px);bottom:-51px;width:9px;height:9px;border-right:1.5px solid var(--blue2);border-bottom:1.5px solid var(--blue2);transform:rotate(45deg);font-size:0}
.agent-delivery-step:nth-child(4):after,.agent-delivery-step:nth-child(5):after{left:-56px;width:56px;background:linear-gradient(90deg,rgba(49,131,201,.22),rgba(74,156,224,.9))}
.agent-delivery-step:nth-child(4):before,.agent-delivery-step:nth-child(5):before{content:"";top:calc(50% - 5px);left:-59px;width:9px;height:9px;border-bottom:1.5px solid var(--blue2);border-left:1.5px solid var(--blue2);transform:rotate(45deg);font-size:0}

/* Agent applications are organized around a central digital-worker hub instead of a flat grid. */
#agent-workforce .system-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,.74fr) minmax(0,1fr);grid-template-rows:repeat(3,minmax(142px,auto));grid-template-areas:"a core b" "c core d" "e core f";gap:16px 24px;align-items:stretch}
#agent-workforce .system-grid:before{content:"Agent数字员工";grid-area:core;place-self:center;display:grid;place-content:center;width:min(100%,250px);aspect-ratio:1;padding:28px;border:1px solid rgba(93,171,233,.72);border-radius:50%;background:radial-gradient(circle at 38% 30%,rgba(72,165,234,.45),rgba(25,64,97,.9) 55%,rgba(9,18,28,.98) 78%);box-shadow:0 0 0 22px rgba(49,131,201,.045),0 0 0 45px rgba(49,131,201,.022),0 0 44px rgba(49,131,201,.26);color:#eff8ff;font-family:var(--serif);font-size:28px;line-height:1.55;text-align:center;white-space:pre-line}
#agent-workforce .system-card{position:relative;min-height:142px;padding:20px 22px 19px 76px;border-color:rgba(91,151,203,.32);background:linear-gradient(145deg,rgba(18,37,54,.98),rgba(10,18,28,.98))}
#agent-workforce .system-card:nth-child(1){grid-area:a}#agent-workforce .system-card:nth-child(2){grid-area:b}#agent-workforce .system-card:nth-child(3){grid-area:c}#agent-workforce .system-card:nth-child(4){grid-area:d}#agent-workforce .system-card:nth-child(5){grid-area:e}#agent-workforce .system-card:nth-child(6){grid-area:f}
#agent-workforce .system-card__icon{position:absolute;left:21px;top:22px;display:grid;place-items:center;width:36px;height:36px;border:1px solid rgba(82,163,228,.45);border-radius:10px;background:rgba(49,131,201,.14);color:var(--blue2);font:700 11px/1 var(--mono)}
#agent-workforce .system-card__icon:after{content:"◆";position:absolute;right:-4px;bottom:-5px;color:#a7dcff;font-size:8px;text-shadow:0 0 9px rgba(73,164,232,.85)}
#agent-workforce .system-card h3{margin:2px 0 0;font-size:18px;line-height:1.4}#agent-workforce .system-card p{margin:8px 0 0;font-size:13px;line-height:1.65}
#agent-workforce .agent-ability-card{padding:25px 26px 25px 82px;word-break:normal;overflow-wrap:normal;line-break:auto}#agent-workforce .agent-ability-card h3{font-size:23px;line-height:1.32;font-weight:780;letter-spacing:-.02em}#agent-workforce .agent-ability-card p{margin-top:11px;font-size:15.8px;line-height:1.82;font-weight:430;letter-spacing:-.01em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:pretty}
#agent-workforce .agent-delivery-step{min-height:236px;padding:28px 27px 26px;word-break:normal;overflow-wrap:normal;line-break:auto}#agent-workforce .agent-delivery-step h3{margin-top:31px;font-size:24px;line-height:1.3;font-weight:780;letter-spacing:-.02em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:normal}#agent-workforce .agent-delivery-step p{margin-top:12px;font-size:15.8px;line-height:1.82;font-weight:430;letter-spacing:-.01em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:pretty}
#agent-workforce .system-card{min-height:166px;padding:23px 24px 22px 82px;word-break:normal;overflow-wrap:normal;line-break:auto}#agent-workforce .system-card h3{font-size:21px;line-height:1.32;font-weight:780;letter-spacing:-.02em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:normal}#agent-workforce .system-card p{margin-top:10px;font-size:14.8px;line-height:1.78;font-weight:430;letter-spacing:-.01em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:pretty}
#agent-workforce .system-grid+.product-cta{display:none}

@media (max-width:980px){
  .product-hero__visual--image{aspect-ratio:1.56/1}
  .marketing-compare{overflow-x:auto}.marketing-compare__head,.marketing-compare__row{min-width:760px}
  #agent-workforce .system-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto;grid-template-areas:"core core" "a b" "c d" "e f"}
  #agent-workforce .system-grid:before{width:100%;min-height:230px;aspect-ratio:auto;border-radius:24px}
  .agent-delivery-flow{margin-top:34px}
}
@media (max-width:620px){
  .product-hero__visual--image{min-height:0!important;padding:7px!important}
  .product-hero__visual--image img{min-height:0!important}
  .compare-head h2{font-size:31px}.marketing-compare__head,.marketing-compare__row{min-width:650px}.marketing-compare__head>*,.marketing-compare__row>*{padding:15px}
  #agent-workforce .system-grid{grid-template-columns:1fr;grid-template-areas:"core" "a" "b" "c" "d" "e" "f"}
  #agent-workforce .system-grid:before{min-height:196px;border-radius:22px;font-size:25px}
}

/* ===== ABOUT US · V18 preview ===== */
#about{background:linear-gradient(180deg,#070b11 0%,#09111a 46%,#070b11 100%)}
.about-section{position:relative;padding:112px 0;overflow:hidden}
.about-section+.about-section{border-top:1px solid rgba(255,255,255,.065)}
.about-hero{min-height:760px;padding-top:calc(var(--nav) + 94px);display:flex;align-items:center;background:radial-gradient(850px 520px at 82% 42%,rgba(49,131,201,.18),transparent 70%),linear-gradient(180deg,#070b11,#09111a)}
.about-hero:before{content:"";position:absolute;right:-22%;top:18%;width:720px;height:720px;border:1px solid rgba(85,164,227,.16);border-radius:50%;box-shadow:0 0 0 92px rgba(51,135,202,.025),0 0 0 188px rgba(51,135,202,.018)}
.about-hero__grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(420px,.92fr);gap:88px;align-items:center}
.about-hero__copy h1,.about-hero__copy h2{max-width:720px;margin:18px 0 28px;color:#f7f9fc;font:500 clamp(58px,6vw,92px)/1.08 var(--serif);letter-spacing:-.045em}
.about-hero__copy>p:not(.eyebrow){max-width:720px;margin:0;color:#a8b5c4;font-size:18px;line-height:1.9}
.about-hero__meta{display:flex;flex-wrap:wrap;gap:10px;margin-top:34px}
.about-hero__meta span{padding:8px 13px;border:1px solid rgba(93,162,217,.22);border-radius:999px;background:rgba(39,95,139,.08);color:#a8bfd2;font-size:12px}
.about-system{position:relative;min-height:470px;padding:45px;border:1px solid rgba(84,151,204,.26);border-radius:26px;background:linear-gradient(145deg,rgba(20,39,56,.86),rgba(8,16,25,.88));box-shadow:inset 0 1px 0 rgba(171,219,255,.05),0 32px 80px rgba(0,0,0,.24)}
.about-system:before{content:"RAVEN / AGENTIC BUSINESS SYSTEMS";display:block;margin-bottom:52px;color:#6f8da6;font:700 10px/1.4 var(--mono);letter-spacing:.14em}
.about-system__flow{display:grid;gap:22px}
.about-system__item{position:relative;display:grid;grid-template-columns:104px 1fr;align-items:center;gap:22px;min-height:76px}
.about-system__item:not(:last-child):after{content:"";position:absolute;left:51px;top:70px;width:1px;height:30px;background:linear-gradient(var(--blue2),transparent)}
.about-system__no{display:grid;place-items:center;width:52px;height:52px;margin:auto;border:1px solid rgba(91,168,229,.42);border-radius:50%;background:rgba(49,131,201,.12);color:#7fc2f4;font:700 11px/1 var(--mono);box-shadow:0 0 24px rgba(49,131,201,.12)}
.about-system__item h3{margin:0 0 5px;color:#eef6fc;font-size:19px}.about-system__item p{margin:0;color:#78899a;font-size:13px}
.about-heading{max-width:900px;margin:0 auto 58px;text-align:center}.about-heading .eyebrow{margin:0 0 14px;color:var(--blue2)}.about-heading h2{margin:0;color:#f7f9fc;font:500 clamp(42px,5vw,68px)/1.16 var(--serif);letter-spacing:-.035em}.about-heading p{max-width:760px;margin:20px auto 0;color:#8d9baa;font-size:16px}
.about-vision{padding:118px 0 132px;background:radial-gradient(860px 430px at 50% 45%,rgba(39,111,169,.14),transparent 74%)}
.about-vision__statement{position:relative;max-width:1060px;margin:auto;text-align:center}
.about-vision__statement:before{content:"“";position:absolute;left:0;top:-72px;color:rgba(93,175,235,.16);font:500 150px/1 var(--serif)}
.about-vision__statement h2{margin:0;color:#f8fbff;font:500 clamp(56px,7vw,96px)/1.16 var(--serif);letter-spacing:-.045em}
.about-vision__statement p{max-width:880px;margin:30px auto 0;color:#91a0af;font-size:19px;line-height:1.85}
.about-vision__points{display:grid;grid-template-columns:repeat(3,1fr);max-width:960px;margin:65px auto 0;border-top:1px solid rgba(91,159,211,.24)}
.about-vision__point{position:relative;padding:32px 22px 0;text-align:center}.about-vision__point:before{content:"";position:absolute;left:50%;top:-4px;width:7px;height:7px;border-radius:50%;background:var(--blue2);box-shadow:0 0 16px var(--blue2)}
.about-vision__point b{display:block;color:#dae8f3;font-size:16px}.about-vision__point span{display:block;margin-top:6px;color:#6f8091;font-size:13px}
.about-team{background:linear-gradient(180deg,rgba(14,25,37,.76),rgba(7,11,17,.82))}
.about-team__lead{display:grid;grid-template-columns:.8fr 1.2fr;gap:80px;align-items:end;margin-bottom:58px}
.about-team__lead h2{margin:13px 0 0;color:#f7f9fc;font:500 clamp(42px,5vw,68px)/1.18 var(--serif);letter-spacing:-.035em}.about-team__lead>p{margin:0;color:#95a3b1;font-size:16px;line-height:1.9}
.about-team__grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid rgba(255,255,255,.1);border-bottom:1px solid rgba(255,255,255,.1)}
.about-role{position:relative;min-height:260px;padding:36px 28px;border-right:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,rgba(255,255,255,.018),transparent)}.about-role:last-child{border-right:0}
.about-role__icon{display:grid;place-items:center;width:48px;height:48px;margin-bottom:40px;border:1px solid rgba(80,157,217,.28);border-radius:13px;background:rgba(49,131,201,.07);color:#66b2ec}.about-role__icon svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.about-role b{display:block;margin-bottom:10px;color:#ecf4fb;font-size:17px}.about-role p{margin:0;color:#778797;font-size:13px;line-height:1.75}
.about-business{padding-bottom:132px;background:radial-gradient(650px 500px at 50% 58%,rgba(39,113,173,.12),transparent 72%)}
.business-orbit{position:relative;min-height:660px;max-width:1120px;margin:0 auto}
.business-orbit__ring{position:absolute;left:50%;top:50%;width:590px;height:360px;border:1px solid rgba(72,158,223,.22);border-radius:50%;transform:translate(-50%,-50%)}
.business-orbit__ring:before,.business-orbit__ring:after{content:"";position:absolute;inset:48px 80px;border:1px solid rgba(72,158,223,.15);border-radius:50%}.business-orbit__ring:after{inset:102px 178px;border-color:rgba(72,158,223,.28)}
.business-core{position:absolute;left:50%;top:50%;z-index:3;display:grid;place-content:center;width:216px;height:216px;padding:26px;border:1px solid rgba(92,180,244,.72);border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle at 38% 30%,rgba(73,168,235,.46),rgba(24,73,109,.93) 54%,#09131d 78%);box-shadow:0 0 0 26px rgba(49,131,201,.04),0 0 60px rgba(49,131,201,.24);text-align:center}
.business-core b{color:#f2f9ff;font:500 30px/1.25 var(--serif)}.business-core span{margin-top:8px;color:#9dc8e7;font-size:12px}
.business-node{position:absolute;z-index:2;width:295px;min-height:154px;padding:27px 28px;border:1px solid rgba(85,148,198,.28);border-radius:18px;background:linear-gradient(145deg,rgba(18,35,50,.96),rgba(9,16,25,.96));box-shadow:0 22px 45px rgba(0,0,0,.2)}
.business-node:before{content:"";position:absolute;width:66px;height:1px;background:linear-gradient(90deg,rgba(80,166,230,.1),rgba(80,166,230,.75))}.business-node:after{content:"";position:absolute;width:7px;height:7px;border-radius:50%;background:var(--blue2);box-shadow:0 0 14px rgba(74,156,224,.8)}
.business-node--one{left:0;top:70px}.business-node--one:before{right:-66px;bottom:26px;transform:rotate(20deg);transform-origin:left}.business-node--one:after{right:-70px;bottom:45px}
.business-node--two{right:0;top:70px}.business-node--two:before{left:-66px;bottom:26px;transform:rotate(-20deg);transform-origin:right}.business-node--two:after{left:-70px;bottom:45px}
.business-node--three{left:0;bottom:56px}.business-node--three:before{right:-66px;top:25px;transform:rotate(-20deg);transform-origin:left}.business-node--three:after{right:-70px;top:44px}
.business-node--four{right:0;bottom:56px}.business-node--four:before{left:-66px;top:25px;transform:rotate(20deg);transform-origin:right}.business-node--four:after{left:-70px;top:44px}
.business-node__label{display:block;margin-bottom:22px;color:#5bace8;font:700 10px/1.4 var(--mono);letter-spacing:.15em}.business-node h3{margin:0 0 9px;color:#ecf5fc;font-size:20px}.business-node p{margin:0;color:#7f8f9f;font-size:13px;line-height:1.7}
.about-contact{padding-bottom:130px;background:linear-gradient(180deg,#09111a,#070b11)}
.contact-shell{display:grid;grid-template-columns:minmax(330px,.72fr) minmax(520px,1.28fr);overflow:hidden;min-height:520px;border:1px solid rgba(89,153,201,.28);border-radius:24px;background:#0b131d;box-shadow:0 32px 75px rgba(0,0,0,.25)}
.contact-info{display:flex;flex-direction:column;justify-content:space-between;padding:54px;border-right:1px solid rgba(255,255,255,.08)}
.contact-info .eyebrow{margin:0 0 14px;color:var(--blue2)}.contact-info h2{margin:0;color:#f7f9fc;font:500 52px/1.2 var(--serif)}.contact-info>p{margin:18px 0 0;color:#81909f;font-size:14px}
.contact-list{display:grid;gap:24px;margin-top:58px}.contact-item{padding-top:20px;border-top:1px solid rgba(255,255,255,.09)}.contact-item span{display:block;margin-bottom:7px;color:#637587;font:700 10px/1.4 var(--mono);letter-spacing:.12em}.contact-item a,.contact-item p{margin:0;color:#dce8f1;font-size:16px;line-height:1.7}.contact-item a:hover{color:#73baf0}
.contact-map{position:relative;min-height:520px;overflow:hidden;background:#0b1721}
.contact-map svg{position:absolute;inset:0;width:100%;height:100%}.contact-map__wash{position:absolute;inset:0;background:radial-gradient(circle at 54% 48%,rgba(45,132,197,.12),transparent 37%),linear-gradient(180deg,transparent 60%,rgba(4,9,14,.5));pointer-events:none}
.contact-map__pin{position:absolute;left:54%;top:47%;z-index:2;transform:translate(-50%,-100%)}.contact-map__pin:before{content:"";position:absolute;left:50%;bottom:-10px;width:38px;height:13px;border-radius:50%;transform:translateX(-50%);background:rgba(49,131,201,.26);filter:blur(5px)}
.contact-map__marker{display:grid;place-items:center;width:50px;height:50px;border:8px solid rgba(106,193,255,.18);border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--blue2);box-shadow:0 0 30px rgba(74,156,224,.55)}.contact-map__marker i{display:block;width:10px;height:10px;border-radius:50%;transform:rotate(45deg);background:#fff}
.contact-map__label{position:absolute;left:calc(54% + 42px);top:calc(47% - 88px);z-index:3;min-width:220px;padding:16px 18px;border:1px solid rgba(104,175,228,.34);border-radius:12px;background:rgba(7,14,22,.9);box-shadow:0 18px 40px rgba(0,0,0,.35);backdrop-filter:blur(14px)}.contact-map__label b{display:block;color:#edf7ff;font-size:15px}.contact-map__label span{display:block;margin-top:5px;color:#7f92a5;font-size:12px}
.contact-map__brand{position:absolute;right:22px;bottom:22px;z-index:4;display:inline-flex;align-items:center;gap:9px;padding:10px 14px;border:1px solid rgba(96,164,216,.28);border-radius:999px;background:rgba(6,13,21,.88);color:#a8cde8;font-size:12px;pointer-events:none;box-shadow:0 12px 28px rgba(0,0,0,.22);backdrop-filter:blur(10px)}
.contact-map__brand:before{content:"";width:18px;height:18px;border-radius:5px;background:linear-gradient(145deg,#43a7ee,#1677c8);box-shadow:0 0 14px rgba(58,158,229,.28)}
.contact-map__brand b{color:#d9edfc;font-weight:650}.contact-map__brand span{color:#6f879a}
@media (max-width:980px){
  .about-section{padding:90px 0}.about-hero{padding-top:calc(var(--nav) + 76px)}.about-hero__grid{grid-template-columns:1fr;gap:50px}.about-system{min-height:0}.about-team__lead{grid-template-columns:1fr;gap:24px}.about-team__grid{grid-template-columns:repeat(2,1fr)}.about-role:nth-child(2){border-right:0}.about-role:nth-child(-n+2){border-bottom:1px solid rgba(255,255,255,.08)}
  .business-orbit{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;min-height:0}.business-orbit__ring{display:none}.business-core{position:relative;left:auto;top:auto;grid-column:1/-1;width:100%;height:auto;min-height:230px;border-radius:24px;transform:none}.business-node{position:relative!important;inset:auto!important;width:auto;min-height:170px}.business-node:before,.business-node:after{display:none}
  .contact-shell{grid-template-columns:1fr}.contact-info{border-right:0;border-bottom:1px solid rgba(255,255,255,.08)}
}
@media (max-width:620px){
  .about-section{padding:68px 0}.about-hero{min-height:0;padding-top:calc(var(--nav) + 60px)}.about-hero__copy h1,.about-hero__copy h2{font-size:47px}.about-hero__copy>p:not(.eyebrow){font-size:16px}.about-system{padding:26px 20px;border-radius:18px}.about-system:before{margin-bottom:30px}.about-system__item{grid-template-columns:64px 1fr;gap:10px}.about-system__item:not(:last-child):after{left:31px}
  .about-heading{margin-bottom:40px}.about-heading h2,.about-team__lead h2{font-size:38px}.about-vision__statement h2{font-size:49px}.about-vision__statement p{font-size:17px;line-height:1.8}.about-vision__points{grid-template-columns:1fr;gap:24px;border-top:0}.about-vision__point{padding:20px;border-top:1px solid rgba(91,159,211,.2)}.about-vision__point:before{top:-4px}
  .about-team__grid{grid-template-columns:1fr}.about-role{min-height:0;border-right:0!important;border-bottom:1px solid rgba(255,255,255,.08)}.about-role:last-child{border-bottom:0}.about-role__icon{margin-bottom:24px}
  .business-orbit{grid-template-columns:1fr}.business-core{grid-column:auto;min-height:200px}.business-node{min-height:0}.contact-shell{border-radius:18px}.contact-info{padding:34px 24px}.contact-info h2{font-size:42px}.contact-map{min-height:430px}.contact-map__label{left:24px;top:24px;min-width:0;right:24px}.contact-map__pin{left:51%;top:56%}
}

/* ===== V19 about-page feedback ===== */
.implementation-roadmap{max-width:1240px;margin:54px auto 0;padding-top:0}
.implementation-roadmap__head{max-width:740px;margin:0 auto 58px;text-align:center}
.implementation-roadmap__head .eyebrow{margin:0 0 12px;color:var(--blue2)}
.implementation-roadmap__head h3{margin:0;color:#eef6fc;font:500 clamp(30px,3.5vw,46px)/1.22 var(--serif);letter-spacing:-.03em}
.implementation-roadmap__head p{margin:14px 0 0;color:#7f8f9e;font-size:14px}
.implementation-steps{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:0;min-height:300px;padding:12px 0 0}
.implementation-step{position:relative;min-height:258px;padding:0 19px;text-align:center;transition:transform .24s var(--ease)}
.implementation-step:after{content:"";position:absolute;left:calc(50% + 30px);right:calc(-50% + 30px);top:29px;height:2px;background:linear-gradient(90deg,rgba(80,174,240,.82) 0%,rgba(80,174,240,.24) 38%,rgba(80,174,240,.6) 72%,rgba(80,174,240,.16) 100%);box-shadow:0 0 9px rgba(74,156,224,.16);transition:background .24s var(--ease),box-shadow .24s var(--ease)}
.implementation-step:last-child:after{display:none}
.implementation-step__node{position:relative;z-index:2;display:grid;place-items:center;width:60px;height:60px;margin:0 auto 29px;border:1px solid rgba(92,181,244,.76);border-radius:50%;background:radial-gradient(circle at 38% 30%,#183d5b,#0d2437 66%,#091723);color:#84c9fa;font:700 12px/1 var(--mono);box-shadow:0 0 0 8px rgba(49,131,201,.05),0 0 26px rgba(49,131,201,.17),inset 0 0 18px rgba(95,185,247,.08);transition:transform .24s var(--ease),border-color .24s var(--ease),box-shadow .24s var(--ease),background .24s var(--ease)}
.implementation-step__node:before{content:"";position:absolute;inset:7px;border:1px solid rgba(111,193,250,.14);border-radius:50%}
.implementation-step h4{margin:0;color:#dce9f3;font-size:18px;letter-spacing:.01em;transition:color .24s var(--ease)}
.implementation-step p{margin:12px auto 0;max-width:168px;color:#718393;font-size:14px;line-height:1.75;transition:color .24s var(--ease)}
.implementation-step:hover{transform:translateY(-4px)}
.implementation-step:hover .implementation-step__node{transform:scale(1.07);border-color:rgba(111,193,250,.88);background:#13314a;box-shadow:0 0 0 8px rgba(49,131,201,.055),0 0 20px rgba(49,131,201,.22)}
.implementation-step:hover h4{color:#eef8ff}.implementation-step:hover p{color:#93a6b7}.implementation-step:hover:after{background:linear-gradient(90deg,rgba(92,181,244,.82),rgba(74,156,224,.28));box-shadow:0 0 8px rgba(74,156,224,.12)}

.about-team__lead{grid-template-columns:minmax(0,1.25fr) minmax(330px,.75fr);gap:64px}
.about-team__lead h2{font-size:clamp(38px,4.2vw,54px);line-height:1.22;letter-spacing:-.04em}
.about-team__lead h2 span{display:block;white-space:nowrap}
.about-team__grid{align-items:stretch}
.about-role{display:flex;flex-direction:column;min-height:390px;padding:30px 26px 26px;transition:background .22s var(--ease),border-color .22s var(--ease),transform .22s var(--ease)}
.about-role:hover{z-index:1;transform:translateY(-3px);background:linear-gradient(180deg,rgba(30,64,91,.2),rgba(255,255,255,.012))}
.about-role__top{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}
.about-role__top .about-role__icon{margin:0}
.about-role__no{color:#4d93c6;font:700 10px/1 var(--mono);letter-spacing:.1em}
.about-role h3{margin:0;color:#f3f8fc;font:500 30px/1.2 var(--serif)}
.about-role__position{display:block;margin:9px 0 0!important;color:#76b8e8!important;font:700 11px/1.4 var(--mono)!important;letter-spacing:.08em}
.about-role>p{margin:22px 0 0;color:#8b9aa9;font-size:14.8px;line-height:1.85}
.about-role__tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:auto;padding-top:24px}
.about-role__tags span{padding:6px 8px;border:1px solid rgba(79,149,201,.22);border-radius:999px;background:rgba(49,131,201,.055);color:#91afc5;font-size:10px}

.business-orbit{min-height:780px}
.business-node{display:flex;flex-direction:column;width:300px;min-height:184px;padding:24px 25px}
.business-node h3{margin-bottom:11px;font-size:23px;line-height:1.35}
.business-node p{font-size:15px;line-height:1.75}
.business-node__top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.business-node__top .business-node__label{margin:0}
.business-node__icon{display:grid;place-items:center;width:34px;height:34px;border:1px solid rgba(78,158,218,.32);border-radius:9px;background:rgba(49,131,201,.07);color:#67b0e6}
.business-node__icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round}
.business-node--knowledge{left:0;top:30px}.business-node--knowledge:before{right:-76px;bottom:25px;width:76px;transform:rotate(22deg);transform-origin:left}.business-node--knowledge:after{right:-80px;bottom:49px}
.business-node--content{left:0;top:305px}.business-node--content:before{right:-72px;top:50%;width:72px;transform:none}.business-node--content:after{right:-76px;top:calc(50% - 3px)}
.business-node--analytics{left:0;bottom:30px}.business-node--analytics:before{right:-76px;top:25px;width:76px;transform:rotate(-22deg);transform-origin:left}.business-node--analytics:after{right:-80px;top:49px}
.business-node--customer{right:0;top:30px}.business-node--customer:before{left:-76px;bottom:25px;width:76px;transform:rotate(-22deg);transform-origin:right}.business-node--customer:after{left:-80px;bottom:49px}
.business-node--agent{right:0;top:305px}.business-node--agent:before{left:-72px;top:50%;width:72px;transform:none}.business-node--agent:after{left:-76px;top:calc(50% - 3px)}
.business-node--delivery{right:0;bottom:30px}.business-node--delivery:before{left:-76px;top:25px;width:76px;transform:rotate(22deg);transform-origin:right}.business-node--delivery:after{left:-80px;top:49px}
.business-core{top:50%}
.business-orbit__ring{top:50%;width:620px;height:430px}

@media (max-width:980px){
  .implementation-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px 0}.implementation-step:nth-child(3):after{display:none}
  .about-team__lead{grid-template-columns:1fr}.about-team__lead h2 span{white-space:normal}.about-role{min-height:360px}
  .business-node--knowledge{transform:none}.business-core{top:auto}.business-node{min-height:190px}.business-node--knowledge,.business-node--content,.business-node--customer,.business-node--analytics,.business-node--agent,.business-node--delivery{inset:auto;transform:none}
}
@media (max-width:620px){
  .about-vision{padding:88px 0 96px}.implementation-roadmap{margin-top:44px;padding-top:0}.implementation-roadmap__head{margin-bottom:42px}.implementation-steps{grid-template-columns:1fr;gap:0;min-height:0;padding-top:0}.implementation-step{min-height:0;padding:0 0 36px 82px;text-align:left}.implementation-step:after{display:block!important;left:29px;right:auto;top:58px;width:2px;height:calc(100% - 42px);background:linear-gradient(rgba(74,174,240,.72),rgba(74,156,224,.14))}.implementation-step:last-child:after{display:none!important}.implementation-step__node{position:absolute;left:0;top:0;margin:0}.implementation-step h4{padding-top:6px}.implementation-step p{max-width:none;margin:8px 0 0}.implementation-step:hover{transform:translateX(3px)}
  .about-team__lead h2{font-size:26px;line-height:1.35}.about-team__lead h2 span{white-space:nowrap}.about-role{min-height:0;padding:26px 22px}.about-role__tags{margin-top:22px;padding-top:0}
  .business-orbit{display:grid}.business-node{min-height:0}.business-node--knowledge,.business-node--content,.business-node--customer,.business-node--analytics,.business-node--agent,.business-node--delivery{inset:auto;transform:none}
}


/* V20 — only the items confirmed in the V19 feedback sheet */
@media (min-width:981px){
  .nav-product:hover .product-flyout,.nav-product:focus-within .product-flyout{opacity:0;visibility:hidden;transform:translateY(-7px);pointer-events:none}
  .nav-product.is-open .product-flyout{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto;transition-delay:0s}
}
.home-knowledge-copy span{display:block;white-space:nowrap}
.media-band>.wrap>.head{max-width:1180px;margin-inline:auto;text-align:center}
.media-band>.wrap>.head>p:last-child{max-width:1040px;margin:22px auto 0}
.media-band>.wrap>.head h2{margin-top:14px}
#chanpin .product-tab{padding:22px 20px}
#chanpin .product-tab b{font-size:18px;line-height:1.28;font-weight:760;color:#dbe8f5;letter-spacing:-.01em}
#chanpin .product-tab span{margin-top:9px;font-size:14px;line-height:1.55;color:#a8b8c7}
#chanpin .product-tab.active b{color:var(--blue2)}
#chanpin .product-tab.active span{color:#b7ccdd}
/* 矩阵标题：前半句白、后半句蓝金渐变——全断点生效（桌面端的单行/居中/字号仍在下方 981px 断点内）*/
#chanpin .product-matrix-title{color:#f5f7fb}
#chanpin .product-matrix-title span{color:transparent;background:linear-gradient(90deg,#9cc8e8 0%,#68a9d9 48%,#e0c188 100%);-webkit-background-clip:text;background-clip:text}
@media (min-width:981px){
  #chanpin .head{max-width:1500px}
  #chanpin .product-matrix-title{white-space:nowrap;text-wrap:nowrap;font-size:clamp(32px,3.35vw,52px);letter-spacing:0}
  #chanpin .product-matrix-title{width:max-content;max-width:100%;margin-inline:auto;color:#f5f7fb}
  #chanpin .product-matrix-title span{color:transparent;background:linear-gradient(90deg,#9cc8e8 0%,#68a9d9 48%,#e0c188 100%);-webkit-background-clip:text;background-clip:text}
  #chanpin .product-view[data-product-view="harbor"]{grid-template-columns:minmax(0,.92fr) minmax(380px,1fr);gap:24px}
  #chanpin .product-view[data-product-view="harbor"] .product-copy h3{font-size:34px;line-height:1.24;letter-spacing:-.04em;word-break:normal;overflow-wrap:normal;line-break:auto}
  #chanpin .product-view[data-product-view="harbor"] .product-copy h3 .harbor-title-line{display:block}
  #chanpin .product-view[data-product-view="harbor"] .product-copy .harbor-home-desc{max-width:720px;font-size:16px;line-height:1.84;letter-spacing:-.01em;word-break:normal;overflow-wrap:normal;line-break:auto}
  #chanpin .product-view[data-product-view="harbor"] .product-copy .harbor-home-desc .harbor-desc-line{display:block;white-space:nowrap}
  #chanpin .product-view[data-product-view="agent"] .product-copy h3{font-size:34px;line-height:1.24;letter-spacing:-.035em;word-break:normal;overflow-wrap:normal;line-break:auto}
  #chanpin .product-view[data-product-view="agent"] .product-copy h3 .agent-title-line{display:block}
  #chanpin .product-view[data-product-view="agent"] .product-copy .agent-home-desc{max-width:720px;font-size:16px;line-height:1.84;letter-spacing:-.01em;word-break:normal;overflow-wrap:normal;line-break:auto}
}

/* Native HTML/CSS product motion panels replace three static hero images. */
.v20-motion{position:relative;display:block!important;min-height:0!important;aspect-ratio:1.56/1;padding:18px!important;overflow:hidden;isolation:isolate;border-color:rgba(91,163,219,.38);background:radial-gradient(100% 100% at 62% 22%,rgba(40,105,159,.22),transparent 64%),linear-gradient(145deg,#0d1d2c,#060b12 74%)}
.v20-motion:before{content:"";position:absolute;inset:auto 9% -7% 9%;height:34%;border-radius:50%;background:radial-gradient(ellipse,rgba(35,126,206,.2),transparent 68%);filter:blur(8px);z-index:-1}
.v20-motion__grid{position:absolute;inset:0;z-index:-2;opacity:.14;background-image:linear-gradient(rgba(82,160,221,.15) 1px,transparent 1px),linear-gradient(90deg,rgba(82,160,221,.15) 1px,transparent 1px);background-size:32px 32px;mask-image:linear-gradient(to bottom,black,transparent 92%)}
.v20-motion__status{position:absolute;left:18px;bottom:13px;color:#61819b;font:700 8px/1 var(--mono);letter-spacing:.12em}.v20-motion__status i{display:inline-block;width:6px;height:6px;margin-right:6px;border-radius:50%;background:#55b9ff;box-shadow:0 0 10px #4bacf1;animation:v20Blink 1.8s ease-in-out infinite}

.v20-kb-motion{display:grid!important;grid-template-columns:1fr 58px 1.08fr 58px .92fr;align-items:center;gap:5px}
.kb-source-stack{display:grid;gap:10px}.kb-source-stack span{position:relative;padding:13px 12px 13px 33px;border:1px solid rgba(104,163,209,.28);border-radius:10px;background:linear-gradient(145deg,rgba(21,42,59,.94),rgba(10,19,29,.94));color:#b8c9d8;font-size:11px;box-shadow:0 8px 20px rgba(0,0,0,.18);animation:v20Doc 4.2s ease-in-out infinite}.kb-source-stack span:before{content:"";position:absolute;left:12px;top:50%;width:11px;height:14px;border:1px solid #5bacE6;border-radius:2px;transform:translateY(-50%);box-shadow:inset 0 4px rgba(74,156,224,.12)}.kb-source-stack span:nth-child(2){animation-delay:.55s}.kb-source-stack span:nth-child(3){animation-delay:1.1s}
.kb-stream{position:relative;height:2px;background:linear-gradient(90deg,rgba(73,165,232,.08),rgba(73,165,232,.7),rgba(73,165,232,.08))}.kb-stream:after{content:"";position:absolute;right:-2px;top:-3px;width:7px;height:7px;border-top:1px solid #62b7ef;border-right:1px solid #62b7ef;transform:rotate(45deg)}.kb-stream i{position:absolute;left:0;top:-2px;width:6px;height:6px;border-radius:50%;background:#80cfff;box-shadow:0 0 12px #4dadf0;animation:v20Flow 3.8s linear infinite}.kb-stream i:nth-child(2){animation-delay:1.25s}.kb-stream i:nth-child(3){animation-delay:2.5s}
.kb-core{position:relative;display:grid;place-content:center;aspect-ratio:1;text-align:center;border:1px solid rgba(101,190,251,.7);border-radius:50%;background:radial-gradient(circle at 40% 30%,rgba(78,178,245,.42),rgba(24,74,111,.92) 54%,#09131d 78%);box-shadow:0 0 0 14px rgba(49,131,201,.045),0 0 38px rgba(49,131,201,.24);animation:v20Pulse 4.2s ease-in-out infinite}.kb-core:before,.kb-core:after{content:"";position:absolute;inset:-11px;border:1px solid rgba(76,165,231,.17);border-radius:50%}.kb-core:after{inset:-22px;opacity:.55}.kb-core small{color:#79bdeb;font:700 7px/1.2 var(--mono);letter-spacing:.08em}.kb-core b{margin-top:8px;color:#f1f8fd;font:500 24px/1.2 var(--serif)}.kb-core span{margin-top:5px;color:#94b4cc;font-size:9px}.kb-agent{display:grid;place-items:center;min-height:152px;padding:16px 8px;border:1px solid rgba(92,159,212,.32);border-radius:17px;background:linear-gradient(145deg,rgba(18,39,57,.94),rgba(8,16,25,.96));box-shadow:0 18px 30px rgba(0,0,0,.2)}.kb-agent__icon{display:grid;place-items:center;width:46px;height:46px;border:1px solid rgba(97,181,240,.55);border-radius:14px;background:rgba(49,131,201,.14);color:#85c9f8;font:700 12px/1 var(--mono);box-shadow:0 0 20px rgba(49,131,201,.13)}.kb-agent b{margin-top:12px;color:#e7f3fb;font-size:17px}.kb-agent small{margin-top:5px;color:#71879a;font-size:8px}.v20-kb-motion:hover .kb-core{animation-duration:2.1s;box-shadow:0 0 0 17px rgba(49,131,201,.055),0 0 50px rgba(49,131,201,.38)}.v20-kb-motion:hover .kb-stream i{animation-duration:1.9s}.v20-kb-motion:hover .kb-agent{border-color:rgba(96,181,241,.58);transform:translateY(-2px)}

.v20-media-motion{display:grid!important;grid-template-columns:.82fr 1.34fr .8fr;grid-template-rows:1fr auto;gap:12px;align-items:stretch}.media-insight,.media-editor,.media-output{position:relative;z-index:1;padding:15px;border:1px solid rgba(93,154,203,.3);border-radius:13px;background:linear-gradient(145deg,rgba(17,35,51,.95),rgba(8,16,25,.97));box-shadow:0 14px 28px rgba(0,0,0,.17)}.media-insight small,.media-output small,.harbor-inbox small,.harbor-advice small,.harbor-profile small{display:block;margin-bottom:12px;color:#7fa8c7;font:700 8px/1.2 var(--mono);letter-spacing:.08em}.media-insight span{display:block;margin-top:7px;padding:8px;border-radius:7px;color:#788c9e;font-size:9px;background:rgba(255,255,255,.025)}.media-insight .is-hot{color:#d9edfc;border:1px solid rgba(76,167,233,.35);background:rgba(49,131,201,.12);animation:v20Select 10.5s ease-in-out infinite}.media-editor__head{display:flex;align-items:center;justify-content:space-between}.media-editor__head b{color:#e3eff8;font-size:12px}.media-editor__head em{color:#55b8fb;font:normal 8px/1 var(--mono)}.media-editor p{min-height:94px;margin:15px 0 10px;padding:12px;border:1px solid rgba(91,147,190,.18);border-radius:8px;background:rgba(4,10,17,.45)}.media-editor p i{display:block;width:0;height:5px;margin:8px 0;border-radius:9px;background:linear-gradient(90deg,#4ca7e8,#315f86);animation:v20Type 10.5s ease-in-out infinite}.media-editor p i:nth-child(2){animation-delay:.35s}.media-editor p i:nth-child(3){animation-delay:.7s}.media-editor p i:nth-child(4){animation-delay:1.05s}.media-editor button,.harbor-advice button{float:right;padding:6px 10px;border:1px solid rgba(92,177,237,.48);border-radius:7px;background:rgba(49,131,201,.18);color:#acd8f7;font-size:8px;animation:v20Confirm 10.5s ease-in-out infinite}.media-output div{display:grid;gap:7px}.media-output b{padding:8px;border:1px solid rgba(92,151,199,.2);border-radius:7px;color:#8ca1b3;font-size:9px;text-align:center}.media-output b{animation:v20Channel 10.5s ease-in-out infinite}.media-output b:nth-child(2){animation-delay:.28s}.media-output b:nth-child(3){animation-delay:.56s}.media-output>span{display:block;margin-top:12px;padding:8px;border-radius:7px;background:rgba(45,148,216,.1);color:#70c1f6;font-size:8px;text-align:center;animation:v20Lead 10.5s ease-in-out infinite}.media-cycle{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:5px;min-height:28px;padding:7px 10px;border-top:1px solid rgba(87,151,202,.18);color:#61788b;font-size:7px}.media-cycle i{flex:1;max-width:22px;height:1px;background:linear-gradient(90deg,#2d688f,#5fbaf4);animation:v20Line 10.5s linear infinite}.v20-media-motion:hover .media-editor p i,.v20-media-motion:hover .media-insight .is-hot,.v20-media-motion:hover .media-output b,.v20-media-motion:hover .media-output>span,.v20-media-motion:hover .media-editor button,.v20-media-motion:hover .media-cycle i{animation-duration:6.4s}

.v20-harbor-motion{display:grid!important;grid-template-columns:.84fr 1.16fr .72fr;grid-template-rows:auto 1fr;gap:10px;padding-top:16px!important}.harbor-window__head{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;padding:3px 4px 10px;border-bottom:1px solid rgba(83,146,194,.21)}.harbor-window__head b{color:#dceaf5;font-size:12px}.harbor-window__head span{color:#61baf4;font:700 8px/1 var(--mono)}.harbor-inbox,.harbor-advice,.harbor-profile{position:relative;z-index:1;padding:13px;border:1px solid rgba(93,154,203,.28);border-radius:12px;background:linear-gradient(145deg,rgba(17,35,51,.95),rgba(8,16,25,.97))}.harbor-inbox>span{display:block;margin-top:7px;padding:9px 7px;border-radius:7px;color:#708598;font-size:8px;white-space:nowrap}.harbor-inbox>span i{display:inline-block;width:6px;height:6px;margin-right:6px;border-radius:50%;background:#52687b}.harbor-inbox .is-current{color:#d9ecfa;border:1px solid rgba(75,166,231,.35);background:rgba(49,131,201,.11);animation:v20Incoming 5.2s ease-in-out infinite}.harbor-inbox .is-current i{background:#58baff;box-shadow:0 0 9px #3b9cdb}.harbor-advice p{min-height:74px;margin:0 0 8px;padding:10px;border-radius:7px;background:rgba(3,9,15,.42)}.harbor-advice p i{display:block;width:0;height:5px;margin:7px 0;border-radius:6px;background:linear-gradient(90deg,#4a9bd4,#294d6a);animation:v20HarborType 5.2s ease-in-out infinite}.harbor-advice p i:nth-child(2){animation-delay:.28s}.harbor-advice p i:nth-child(3){animation-delay:.56s}.harbor-advice>div{display:flex;gap:6px;margin-bottom:8px}.harbor-advice>div span{padding:5px 7px;border-radius:6px;background:rgba(54,133,190,.11);color:#75b7e4;font-size:7px}.harbor-advice button{animation-duration:5.2s}.harbor-profile{display:flex;flex-direction:column}.harbor-profile b{color:#e4f1fa;font-size:11px}.harbor-profile span{margin-top:8px;padding:7px;border-radius:7px;background:rgba(255,255,255,.025);color:#7990a3;font-size:8px}.harbor-profile span:last-child{color:#70c0f3;animation:v20Saved 5.2s ease-in-out infinite}.harbor-flowline{position:absolute;left:18%;right:14%;bottom:16%;height:1px;background:linear-gradient(90deg,transparent,#4da9e7,transparent);opacity:.5}.harbor-flowline i{position:absolute;top:-2px;width:5px;height:5px;border-radius:50%;background:#75c9ff;box-shadow:0 0 10px #4cacE8;animation:v20Across 5.2s linear infinite}.harbor-flowline i:nth-child(2){animation-delay:1.7s}.harbor-flowline i:nth-child(3){animation-delay:3.4s}.v20-harbor-motion:hover .is-current,.v20-harbor-motion:hover .harbor-advice p i,.v20-harbor-motion:hover .harbor-advice button,.v20-harbor-motion:hover .harbor-profile span:last-child,.v20-harbor-motion:hover .harbor-flowline i{animation-duration:3s}

/* Comparison hierarchy and approved spacing changes. */
.compare-head{max-width:none}.compare-head h2{font-size:clamp(27px,3vw,42px);white-space:nowrap;letter-spacing:-.035em}
.marketing-compare{border-color:rgba(73,158,224,.42);background:linear-gradient(90deg,rgba(12,31,47,.94),rgba(8,16,25,.94) 68%);box-shadow:0 26px 55px rgba(0,0,0,.25)}
.marketing-compare__head,.marketing-compare__row{grid-template-columns:minmax(0,1.34fr) minmax(116px,.36fr) minmax(0,.86fr)}
.marketing-compare__head{background:transparent}.marketing-compare__head>*:first-child{color:#edf8ff;background:linear-gradient(135deg,rgba(37,117,182,.62),rgba(22,65,99,.42));box-shadow:inset 3px 0 #4da9e9}.marketing-compare__head>*:nth-child(2){color:#7190a8}.marketing-compare__head>*:last-child{color:#788896;background:rgba(255,255,255,.012)}
.marketing-compare__row p:first-child{position:relative;color:#eef8ff;background:linear-gradient(90deg,rgba(38,118,182,.25),rgba(25,65,96,.07));box-shadow:inset 3px 0 rgba(73,168,232,.58)}.marketing-compare__row p:first-child:after{content:"RAVEN";margin-left:auto;padding:3px 6px;border:1px solid rgba(87,175,236,.3);border-radius:999px;color:#69b8ed;font:700 7px/1 var(--mono);letter-spacing:.08em}.marketing-compare__row p:last-child{color:#6e7d8b;background:rgba(255,255,255,.008)}
.marketing-compare__head{font-size:18px;font-weight:780;line-height:1.45;letter-spacing:-.01em;word-break:normal;overflow-wrap:normal;line-break:auto}
.marketing-compare__head>*,.marketing-compare__row>*{padding:24px 28px;word-break:normal;overflow-wrap:normal;line-break:auto}
.marketing-compare__row{min-height:94px}
.marketing-compare__row p{font-size:17px;line-height:1.78;font-weight:520;letter-spacing:-.01em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:pretty}
.marketing-compare__row p:first-child{font-weight:720}
.marketing-compare__row p:last-child{font-weight:500}
.marketing-compare__row span{font:780 15px/1.45 var(--mono);letter-spacing:.02em;word-break:normal;overflow-wrap:normal;line-break:auto}
.media-solution-panel{padding:34px}
.media-solution-panel__eyebrow{font-size:15px;line-height:1.2;letter-spacing:.12em;word-break:normal;overflow-wrap:normal;line-break:auto}
.media-solution-panel h3{margin-top:20px;font-size:42px;line-height:1.16;font-weight:650;letter-spacing:-.025em;word-break:normal;overflow-wrap:normal;line-break:auto}
.media-solution-panel__lead{margin-top:20px;font-size:19px;line-height:1.86;font-weight:440;letter-spacing:-.01em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:pretty}
.media-solution-panel ul{margin-top:30px}
.media-solution-panel li{margin:14px 0;padding-left:24px;font-size:17px;line-height:1.82;font-weight:430;letter-spacing:-.01em;word-break:normal;overflow-wrap:normal;line-break:auto;text-wrap:pretty}
.media-solution-panel li:before{top:.72em}
#knowledge-base>.product-block:last-child,#new-media>.product-block:last-child,#harbor>.product-block:last-child{padding-bottom:48px}
#knowledge-base>.product-block:last-child .product-cta,#new-media>.product-block:last-child .product-cta,#harbor>.product-block:last-child .product-cta{margin-top:26px;padding:23px 28px}
#knowledge-base>.product-block:last-child .product-cta{margin-top:48px}
#new-media>.product-block:last-child .product-cta{margin-top:44px}
#harbor>.product-block:last-child .product-cta{margin-top:68px;margin-bottom:18px}
.agent-training-showcase__head h2{color:#fff!important}.agent-training-showcase__image{width:min(100%,1420px);padding:12px}.agent-training-showcase__image img{width:100%;height:auto;object-fit:contain}

/* About page: move the approved six-step route up and enrich the four role cards. */
.implementation-roadmap{margin-top:62px}.implementation-steps{padding-top:10px}.about-vision{padding-bottom:72px}.about-team{padding-top:76px}
.about-team__grid{gap:14px;border:0}.about-role{min-height:390px;padding:30px 24px;border:1px solid rgba(91,153,201,.22)!important;border-radius:18px;background:linear-gradient(155deg,rgba(20,39,56,.92),rgba(8,16,25,.96));box-shadow:inset 0 1px rgba(174,217,248,.04),0 20px 40px rgba(0,0,0,.16)}.about-role__top{display:flex;align-items:flex-start;justify-content:space-between}.about-role__icon{margin-bottom:27px}.about-role__no{color:#4fa8e6;font:700 10px/1 var(--mono)}.about-role h3{margin:0 0 8px;color:#f1f7fb;font:500 30px/1.2 var(--serif)}.about-role__position{min-height:42px}.about-role p{min-height:104px}.about-role__credentials{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin:22px 0 0;padding-top:14px;border-top:1px solid rgba(255,255,255,.07)}.about-role__credentials span{display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:5px 9px;border:1px solid rgba(121,151,174,.18);border-radius:7px;background:rgba(255,255,255,.025);color:#7e96a9;font:700 8px/1 var(--mono);letter-spacing:.04em}.about-role__credentials--logos span{height:30px;padding:5px 11px}.about-role__credentials--logos img{display:block;width:auto;height:18px;max-width:62px;object-fit:contain;filter:grayscale(1) brightness(0) invert(1);opacity:.82}.about-role__credentials--logos span:hover img{opacity:1}.about-role__credentials--logos .credential-logo--compact{height:20px;max-width:46px}.about-role__credentials--logos .credential-logo--square{height:19px;max-width:24px}

.about-role__credentials--logos img[alt="Penn State"],.about-role__credentials--logos img[alt="University of Southern California"],.about-role__credentials--logos img[alt="Carnegie Mellon University"],.about-role__credentials--logos img[alt="阿里巴巴"],.about-role__credentials--logos img[alt="腾讯"],.about-role__credentials--logos img[alt="美团"]{filter:none;opacity:.9}

@keyframes v20Blink{50%{opacity:.35;transform:scale(.78)}}
@keyframes v20Doc{0%,18%,100%{transform:translateX(0);border-color:rgba(104,163,209,.28)}35%,55%{transform:translateX(4px);border-color:rgba(89,178,239,.55)}}
@keyframes v20Flow{0%{left:0;opacity:0}12%{opacity:1}88%{opacity:1}100%{left:94%;opacity:0}}
@keyframes v20Pulse{0%,100%{transform:scale(1);filter:brightness(.96)}50%{transform:scale(1.025);filter:brightness(1.12)}}
@keyframes v20Select{0%,13%,100%{border-color:rgba(76,167,233,.2)}18%,35%{border-color:#4bacec;box-shadow:0 0 15px rgba(64,160,226,.2)}}
@keyframes v20Type{0%,24%{width:0}47%,82%{width:88%}100%{width:0}}
@keyframes v20Confirm{0%,47%,100%{opacity:.48;box-shadow:none}53%,67%{opacity:1;box-shadow:0 0 16px rgba(63,160,226,.25)}}
@keyframes v20Channel{0%,55%,100%{color:#8ca1b3;border-color:rgba(92,151,199,.2)}62%,78%{color:#d9f0ff;border-color:#4aa6e5;background:rgba(49,131,201,.12)}}
@keyframes v20Lead{0%,70%,100%{opacity:.35;transform:translateY(3px)}76%,91%{opacity:1;transform:none}}
@keyframes v20Line{0%{opacity:.25}45%,75%{opacity:1;box-shadow:0 0 8px #3a96d3}100%{opacity:.25}}
@keyframes v20Incoming{0%,12%,100%{opacity:.55;transform:translateY(4px)}18%,80%{opacity:1;transform:none}}
@keyframes v20HarborType{0%,22%{width:0}50%,84%{width:90%}100%{width:0}}
@keyframes v20Saved{0%,62%,100%{opacity:.35}70%,90%{opacity:1;box-shadow:inset 2px 0 #4cabeb}}
@keyframes v20Across{0%{left:0;opacity:0}12%{opacity:1}88%{opacity:1}100%{left:98%;opacity:0}}

@media (max-width:980px){
  .home-knowledge-copy span{display:block;white-space:normal;word-break:keep-all;overflow-wrap:normal}.media-band>.wrap>.head{max-width:760px}
  .v20-motion{width:100%;min-height:380px!important;aspect-ratio:auto}.v20-kb-motion{grid-template-columns:1fr 44px 1.05fr 44px .9fr}.kb-core b{font-size:20px}
  .compare-head h2{white-space:normal}.about-team__grid{gap:12px}.about-role{min-height:370px}.about-vision{padding-bottom:58px}.about-team{padding-top:64px}
}
@media (max-width:620px){
  .home-knowledge-copy span{display:block;white-space:normal;word-break:keep-all;overflow-wrap:normal}.media-band>.wrap>.head>p:last-child{font-size:15px;line-height:1.75}
  .v20-motion{min-height:330px!important;padding:12px!important}.v20-kb-motion{grid-template-columns:.9fr 22px 1fr 22px .82fr;gap:2px}.kb-source-stack{gap:6px}.kb-source-stack span{padding:9px 5px 9px 22px;font-size:8px}.kb-source-stack span:before{left:8px;width:7px;height:10px}.kb-core small{font-size:5px}.kb-core b{font-size:15px}.kb-core span{font-size:6px}.kb-agent{min-height:112px;padding:8px 4px}.kb-agent__icon{width:32px;height:32px;border-radius:9px;font-size:8px}.kb-agent b{font-size:12px}.kb-agent small{font-size:6px;text-align:center}.kb-stream{height:1px}
  .v20-media-motion{grid-template-columns:.8fr 1.2fr;grid-template-rows:1fr auto auto}.media-output{grid-column:1/-1;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px}.media-output small{margin:0}.media-output div{grid-template-columns:repeat(3,1fr)}.media-output>span{margin:0}.media-cycle{font-size:5.5px;gap:2px}.media-insight,.media-editor,.media-output{padding:10px}.media-insight span{padding:6px;font-size:7px}.media-editor p{min-height:78px}
  .v20-harbor-motion{grid-template-columns:.86fr 1.14fr}.harbor-profile{grid-column:1/-1;display:grid;grid-template-columns:auto repeat(3,1fr);align-items:center;gap:6px}.harbor-profile small{margin:0}.harbor-profile span{margin:0}.harbor-inbox,.harbor-advice,.harbor-profile{padding:9px}.harbor-inbox>span{padding:7px 4px;font-size:6.5px}.harbor-advice p{min-height:60px}
  #knowledge-base>.product-block:last-child,#new-media>.product-block:last-child,#harbor>.product-block:last-child{padding-bottom:36px}.compare-head h2{font-size:29px}.agent-training-showcase__image{padding:6px}.implementation-roadmap{margin-top:42px}.about-vision{padding-bottom:44px}.about-team{padding-top:50px}.about-team__grid{grid-template-columns:1fr}.about-role{min-height:0}.about-role p,.about-role__position{min-height:0}
}
@media (prefers-reduced-motion:reduce){
  .v20-motion *{animation:none!important;transition:none!important}.media-editor p i,.harbor-advice p i{width:88%}.media-output>span,.harbor-profile span:last-child{opacity:1}.kb-stream i{left:78%}
}


/* ═══ V21 · Irene 视觉与转化增强（仅限任务卡 §3.3 范围）═══ */

/* ---------- 5.1 新媒体：精密运营中枢场景 ---------- */
.media-scene{position:relative;display:grid;grid-template-columns:1fr clamp(250px,24vw,320px) 1fr;grid-template-rows:auto auto;gap:36px 44px;align-items:stretch;padding:8px 0 4px}
.media-scene .media-problem-grid{display:contents}
.media-scene .media-problem-card{position:relative;z-index:1;margin:0}
.media-scene .media-problem-card:nth-child(1){grid-column:1;grid-row:1}
.media-scene .media-problem-card:nth-child(2){grid-column:3;grid-row:1}
.media-scene .media-problem-card:nth-child(3){grid-column:1;grid-row:2}
.media-scene .media-problem-card:nth-child(4){grid-column:3;grid-row:2}
.media-scene__lines{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.media-scene__lines .msl{stroke:rgba(96,150,199,.34);stroke-width:1.1;stroke-dasharray:7 9;animation:v21-flow 3.6s linear infinite}
.media-scene__lines .msn{fill:#4a9ce0;opacity:.5;animation:v21-node 2.8s ease-in-out infinite}
.media-scene__lines .msn--d2{animation-delay:.7s}.media-scene__lines .msn--d3{animation-delay:1.4s}.media-scene__lines .msn--d4{animation-delay:2.1s}
@keyframes v21-flow{to{stroke-dashoffset:-64}}
@keyframes v21-node{0%,100%{opacity:.28}50%{opacity:.85}}
.media-scene__core{position:relative;z-index:1;grid-column:2;grid-row:1/3;align-self:center;justify-self:center;width:clamp(190px,17vw,236px);aspect-ratio:1;display:flex;align-items:center;justify-content:center}
.media-scene__ring{position:absolute;inset:0;border-radius:50%;border:1px solid rgba(112,162,206,.22);background:radial-gradient(60% 60% at 50% 38%,rgba(49,131,201,.10),transparent 70%)}
.media-scene__ring--inner{inset:13%;border-color:rgba(134,182,222,.30);box-shadow:inset 0 1px 0 rgba(163,204,235,.12),inset 0 -20px 34px rgba(4,10,18,.42)}
.media-scene__core-face{position:relative;width:46%;aspect-ratio:1;border-radius:22%;display:flex;align-items:center;justify-content:center;overflow:hidden;background:linear-gradient(155deg,rgba(24,44,64,.94),rgba(10,20,32,.97));border:1px solid rgba(140,186,224,.34);box-shadow:0 0 0 1px rgba(9,17,27,.7),0 14px 34px rgba(0,0,0,.44),inset 0 1px 0 rgba(170,208,238,.16),0 0 36px rgba(49,131,201,.18)}
.media-scene__core-face svg{width:56%;height:56%;fill:none;stroke:#8ec3ec;stroke-width:1.5;stroke-linecap:round}
.media-scene__core-grid{position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(120,170,212,.07) 0 1px,transparent 1px 9px),repeating-linear-gradient(90deg,rgba(120,170,212,.07) 0 1px,transparent 1px 9px);pointer-events:none}
/* 标签必须浮在连线走廊上层：z-index 高于卡片，位置压线不压卡（B1 修复） */
.media-scene__tag{position:absolute;z-index:3;padding:3px 9px;border:1px solid rgba(110,160,205,.30);border-radius:999px;background:rgba(10,20,31,.92);color:#7fa9cc;font-family:var(--mono,ui-monospace,'SF Mono',Menlo,Consolas,monospace);font-size:11px;letter-spacing:.08em;white-space:nowrap}
.media-scene__tag--1{left:37.5%;top:33%;transform:translate(-50%,-50%)}
.media-scene__tag--2{left:62.5%;top:33%;transform:translate(-50%,-50%)}
.media-scene__tag--3{left:37.5%;top:67%;transform:translate(-50%,-50%)}
.media-scene__tag--4{left:62.5%;top:67%;transform:translate(-50%,-50%)}
.media-scene .media-problem-card{transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease}
.media-scene .media-problem-card:hover{transform:translateY(-3px);border-color:rgba(122,175,220,.5)!important;box-shadow:inset 0 1px 0 rgba(135,189,229,.1),0 18px 40px rgba(0,0,0,.26),0 0 26px rgba(49,131,201,.14)}

@media (max-width:1199px){
  .media-scene{grid-template-columns:1fr clamp(170px,20vw,210px) 1fr;gap:26px 26px}
  .media-scene__core{width:clamp(150px,16vw,180px)}
  /* 768–1199：走廊过窄，标签易压卡，按任务卡「关联线简化」隐藏标签、保留连线与节点 */
  .media-scene__tag{display:none}
}
@media (max-width:767px){
  .media-scene{display:block;padding:0}
  .media-scene__lines,.media-scene__tag{display:none}
  .media-scene__core{width:118px;margin:0 auto 22px}
  /* V21.1 纠偏：重置桌面 nth-child 网格定位，<768px 强制单列（任务卡 §4 推荐最小形式） */
  .media-scene .media-problem-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}
  .media-scene .media-problem-card:nth-child(n){grid-column:1 / -1;grid-row:auto}
}
@media (prefers-reduced-motion:reduce){
  .media-scene__lines .msl,.media-scene__lines .msn{animation:none}
  .media-scene .media-problem-card{transition:none}
  .media-scene .media-problem-card:hover{transform:none}
}

/* ---------- 5.2 Harbor 四卡：深蓝层叠玻璃材质 ---------- */
.harbor-problem-card{
  background:
    radial-gradient(130% 96% at 50% 10%,rgba(64,124,182,.15),transparent 56%),
    radial-gradient(92% 74% at 50% 44%,rgba(28,56,86,.5),transparent 80%),
    linear-gradient(160deg,#11202f 0%,#0c1723 54%,#080f18 100%)!important;
  border:1px solid rgba(126,168,205,.26)!important;
  box-shadow:inset 0 1px 0 rgba(168,207,236,.11),inset 0 -22px 40px rgba(3,9,16,.5),0 18px 42px rgba(0,0,0,.3)!important;
}
.harbor-problem-card{isolation:isolate}
.harbor-problem-card::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:radial-gradient(58% 44% at var(--v21-fx,50%) 30%,rgba(74,156,224,.13),transparent 72%)}
.harbor-problem-card:nth-child(1){--v21-fx:44%}.harbor-problem-card:nth-child(2){--v21-fx:52%}
.harbor-problem-card:nth-child(3){--v21-fx:48%}.harbor-problem-card:nth-child(4){--v21-fx:56%}
.harbor-problem-card::after{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;opacity:.5;background:repeating-linear-gradient(0deg,rgba(130,178,218,.05) 0 1px,transparent 1px 12px),repeating-linear-gradient(90deg,rgba(130,178,218,.04) 0 1px,transparent 1px 12px);-webkit-mask-image:radial-gradient(120% 90% at 50% 0%,#000 30%,transparent 78%);mask-image:radial-gradient(120% 90% at 50% 0%,#000 30%,transparent 78%)}
.harbor-problem-card h3{color:#f1f6fc}
.harbor-problem-card{transition:border-color .22s ease,box-shadow .22s ease}
.harbor-problem-card:hover{border-color:rgba(146,190,226,.44)!important;box-shadow:inset 0 1px 0 rgba(168,207,236,.15),inset 0 -22px 40px rgba(3,9,16,.5),0 20px 46px rgba(0,0,0,.34),0 0 30px rgba(49,131,201,.15)!important}
@media (prefers-reduced-motion:reduce){.harbor-problem-card{transition:none}}

/* ---------- 5.3 二维码呈现 ---------- */
.footer-wechat{width:148px}
.footer-wechat img{width:148px;height:148px;padding:9px;border-radius:10px;background:#f6f8fa;object-fit:contain;box-shadow:0 10px 26px rgba(0,0,0,.35)}
.contact-item--wechat .contact-wechat{display:flex;flex-direction:column;gap:8px;margin-top:2px}
.contact-item--wechat img{width:132px;height:132px;padding:8px;border-radius:10px;background:#f6f8fa;object-fit:contain;box-shadow:0 10px 26px rgba(0,0,0,.3)}
.contact-item--wechat em{font-style:normal;color:var(--muted);font-size:13px}


/* ---------- V22 底部悬浮咨询 CTA：深色钛银仪器坞（结构与文案与 V21.1 完全一致，仅重写样式与行为）---------- */
.v21-cta{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom,0px) + var(--v22-lift,0px));z-index:88;width:min(1040px,calc(100vw - 32px));transform:translate(-50%,0);opacity:1;visibility:visible;transition:opacity .21s ease,transform .21s ease,visibility 0s linear 0s}
.v21-cta[data-visible="false"]{opacity:0;transform:translate(-50%,10px);pointer-events:none;visibility:hidden;transition:opacity .21s ease,transform .21s ease,visibility 0s linear .21s}
.v21-cta[data-kb="1"]{opacity:0;pointer-events:none;visibility:hidden}
.v21-cta__inner{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:68px;padding:10px 12px 10px 24px;border-radius:16px;border:1px solid rgba(173,192,209,.30);background:linear-gradient(180deg,rgba(15,22,31,.97),rgba(8,12,18,.985));box-shadow:0 22px 52px rgba(0,0,0,.55),0 2px 10px rgba(0,0,0,.35),inset 0 1px 0 rgba(214,228,240,.09),inset 0 -1px 0 rgba(0,0,0,.4)}
@supports ((backdrop-filter:blur(8px)) or (-webkit-backdrop-filter:blur(8px))){.v21-cta__inner{background:linear-gradient(180deg,rgba(15,22,31,.9),rgba(8,12,18,.94));backdrop-filter:blur(16px) saturate(130%);-webkit-backdrop-filter:blur(16px) saturate(130%)}}
.v21-cta__claim{margin:0;color:#eef4fa;font-size:15px;font-weight:600;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v21-cta__claim::before{content:"";display:inline-block;width:7px;height:7px;margin-right:12px;border-radius:50%;background:#4a9ce0;box-shadow:0 0 0 3px rgba(74,156,224,.16);vertical-align:2px}
.v21-cta__actions{display:flex;align-items:center;gap:10px;flex:none}
.v21-cta #v21QrBtn{height:44px;padding:0 18px;border-radius:11px;border:1px solid rgba(158,180,199,.36);background:transparent;color:#cfe0ee;font-size:14px;font-weight:500;cursor:pointer;transition:border-color .16s ease,background .16s ease,color .16s ease}
.v21-cta #v21QrBtn:hover{border-color:rgba(190,210,226,.55);background:rgba(190,214,233,.06);color:#e8f1f9}
.v21-cta #v21QrBtn:active{background:rgba(190,214,233,.11)}
.v21-cta #v21QrBtn[aria-expanded="true"]{border-color:rgba(74,156,224,.6);color:#eaf4fd;background:rgba(74,156,224,.08)}
.v21-cta .v21-cta__consult{display:inline-flex;align-items:center;justify-content:center;height:46px;padding:0 26px;border-radius:11px;border:1px solid rgba(122,182,232,.5);background:linear-gradient(180deg,#3f95dd,#2b78bd);color:#fff;font-size:14.5px;font-weight:600;letter-spacing:.01em;text-decoration:none;box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 6px 18px rgba(31,102,164,.35);transition:transform .15s ease,box-shadow .15s ease,filter .15s ease}
.v21-cta .v21-cta__consult:hover{filter:brightness(1.07);transform:translateY(-1px);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 9px 22px rgba(31,102,164,.42)}
.v21-cta .v21-cta__consult:active{transform:translateY(0);filter:brightness(.96);box-shadow:inset 0 2px 6px rgba(3,30,56,.38),0 3px 10px rgba(31,102,164,.3)}
.v21-cta a:focus-visible,.v21-cta button:focus-visible{outline:2px solid #4a9ce0;outline-offset:2px}
.v21-cta__qrwrap{position:relative}
.v21-cta__qrpop[hidden]{display:none}
.v21-cta__qrpop{position:absolute;right:0;bottom:calc(100% + 12px);display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px;border-radius:12px;border:1px solid rgba(173,192,209,.32);background:linear-gradient(180deg,rgba(17,25,35,.98),rgba(9,14,21,.99));box-shadow:0 20px 50px rgba(0,0,0,.55),inset 0 1px 0 rgba(214,228,240,.08)}
.v21-cta__qrpop img{width:148px;height:148px;padding:8px;border-radius:8px;background:#f6f8fa;object-fit:contain}
.v21-cta__qrpop span{color:#c4cdd9;font-size:12.5px;white-space:nowrap}
@media (max-width:640px){
  .v21-cta{bottom:var(--v22-lift,0px);width:100vw}
  .v21-cta__inner{border-radius:16px 16px 0 0;min-height:58px;padding:8px 12px calc(8px + env(safe-area-inset-bottom,0px)) 16px;gap:12px}
  .v21-cta__claim{font-size:13px;font-weight:500;flex:1;min-width:0}
  .v21-cta__claim::before{width:6px;height:6px;margin-right:8px}
  .v21-cta__qrwrap{display:none}
  .v21-cta .v21-cta__consult{height:44px;padding:0 20px;font-size:14px}
}
@media (prefers-reduced-motion:reduce){
  .v21-cta,.v21-cta[data-visible="false"]{transition:opacity .12s linear,visibility 0s}
  .v21-cta[data-visible="false"]{transform:translate(-50%,0)}
  .v21-cta .v21-cta__consult,.v21-cta #v21QrBtn{transition:none}
  .v21-cta .v21-cta__consult:hover{transform:none}
}

/* ═══════════════════════════════════════════════════════════════════════
   移动端体验修复（禅道 #431–#436）
   原则：仅移动端 / 触屏（hover:none）生效，桌面端 V22 视觉像素级不变。
   ═══════════════════════════════════════════════════════════════════════ */

/* ── #431 · 动态业务演示区（V20 motion）字号可读性 ──
   ≤620px 下原 5~8px 文字提大：辅助标签≥10px、说明/内容文字≥12px、标题级 13px。
   桌面端不受影响（规则均在 ≤620px 媒体查询内，且晚于原移动规则，优先级生效）。 */
@media (max-width:620px){
  .v20-motion__status,.kb-core small,.kb-core span,.kb-agent small,.kb-agent__icon,
  .media-insight small,.media-editor__head em,.media-output small,.media-cycle,
  .harbor-window__head span,.harbor-inbox small,.harbor-advice small,.harbor-profile small{font-size:10px}
  .kb-source-stack span,.media-insight span,.media-output b,.media-output>span,
  .harbor-inbox>span,.harbor-advice>div span,.harbor-profile span{font-size:12px}
  .kb-agent b,.media-editor__head b,.harbor-window__head b,.harbor-profile b{font-size:13px}
  .media-editor button,.harbor-advice button{font-size:11px}
  /* 放大后避免定宽列内的 nowrap 文本溢出被裁 */
  .harbor-inbox>span{white-space:normal}
}

/* ── #434 · 知识/应用流程图：移动端横滑提示 + 边缘渐隐 ──
   ≤620px 取消原 -20px 出血让渐隐落在可视边缘内，加 mask 边缘渐隐 + 「左右滑动」提示。 */
.kb-scroll-hint{display:none}
@media (max-width:620px){
  #knowledge-base .kb-flow-image-scroll,#knowledge-base .kb-application-image-scroll{
    margin-right:0;margin-left:0;
    -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 18px,#000 calc(100% - 18px),transparent 100%);
    mask-image:linear-gradient(90deg,transparent 0,#000 18px,#000 calc(100% - 18px),transparent 100%)}
  .kb-scroll-hint{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:12px;color:var(--muted);font-size:12px;letter-spacing:.03em}
  .kb-scroll-hint::before,.kb-scroll-hint::after{content:"";width:16px;height:1px;background:linear-gradient(90deg,transparent,var(--blue2))}
  .kb-scroll-hint::after{background:linear-gradient(90deg,var(--blue2),transparent)}
}

/* ── #433 · 减少对全局 overflow-x:hidden 的依赖 ──
   全局 overflow-x:hidden 保留（用于裁切设计上的装饰性出血/横滑条，删除会引入横向滚动条）；
   此处为可能撑宽的模块补 max-width 兜底，降低其溢出风险。 */
@media (max-width:980px){
  .v20-motion,.v20-kb-motion,.v20-media-motion,.v20-harbor-motion,.media-scene,.hero-theater,.mac{max-width:100%}
}

/* ── #432 · 触屏可点区域 ≥44×44px ──
   仅 hover:none（触屏）生效；桌面 hover 设备尺寸不变。视觉尺寸不变，用透明命中区扩大。 */
@media (hover:none){
  .iconbtn{width:44px;height:44px}          /* 移动菜单按钮 42→44 */
  .btn{min-height:44px}                       /* 通用按钮 42→44 */
  .rail-dot{position:relative}                /* 轮播/演示圆点：视觉仍 22×4，命中区 44×44 */
  .rail-dot::before{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}
}

/* ── #436 · 触屏降卡顿 ──
   关闭 fixed 背景（iOS 滚动抖动）、去掉常驻固定元素 backdrop-filter（滚动逐帧重绘）、
   停用演示区/环境常驻装饰动画并落到「完成态」。桌面端全部保留。 */
@media (hover:none){
  body{background-attachment:scroll}
  .topbar{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(9,13,19,.94)}
  .v21-cta__inner{backdrop-filter:none;-webkit-backdrop-filter:none;background:linear-gradient(180deg,rgba(15,22,31,.97),rgba(8,12,18,.985))}
  /* V20 演示区：停动画并保留原「reduced-motion」完成态，避免打字条/线索停在空白 */
  .v20-motion *{animation:none!important}
  .media-editor p i,.harbor-advice p i{width:88%}
  .media-output>span,.harbor-profile span:last-child{opacity:1}
  .kb-stream i{left:78%}
  /* 环境常驻循环动画（发光/闪烁/流点/连线）触屏停用 */
  .mac-led em,.kb-base,.v20-motion__status i,.kb-flow i:after,.flow-line span,
  .media-scene__lines .msl,.media-scene__lines .msn,.harbor-flowline i{animation:none!important}
}

/* ═══ 禅道 #419:产品中心下拉——桌面端点击开合(.is-open)驱动,箭头与面板严格跟随,消除点击后 :focus-within 残留导致箭头卡向上 ═══ */
@media (min-width:981px){
  .nav-product:hover .product-flyout,.nav-product:focus-within .product-flyout{opacity:0;visibility:hidden;transform:translateY(-7px);pointer-events:none}
  .nav-product.is-open .product-flyout{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}
  .nav-product:hover .nav-product__trigger i,.nav-product:focus-within .nav-product__trigger i{transform:rotate(45deg) translateY(-2px)}
  .nav-product.is-open .nav-product__trigger i{transform:rotate(225deg) translateY(-1px)}
}

/* ══════════════════════════════════════════════════════════════════════════════
   /fde 专用 —— FDE 服务页（V4 版式）　　新增于 V4 本轮，其余 9 页一行未动
   ──────────────────────────────────────────────────────────────────────────────
   来源：reference/v4/pages/fde.html 的两段内联 <style>。已做四件事，不是照抄：
     1. 差集：只保留 /fde 真正用得到的规则。demo 那两段是四个页面共用的，
        .industry-* / .capability-* / .faq-* / .about-* / .team-* / 表单等全部不在本页；
        页头页尾也不要 —— 本页用的是现网 V22 的 .topbar / .footer，不是 demo 的
        .site-header / .site-footer，所以 demo 的导航、大菜单、移动面板、
        .consult-modal 弹窗、.wecom-sidebar（现网由 wecom-contact.js 自带样式）全部丢弃。
     2. 作用域：全部收在 #main 下。全站只有一份 site.css，demo 的 --color-* 与现网
        V11 深色底盘是两套体系，写进 :root 会当场改掉另外 9 个页面。
        本页需要 demo 版式的内容全在 <main id="main"> 里，唯一例外 .skip-link 单写在全局
        （现网 CSS 里没有这个类，不会撞车）。这样不需要 HTML 配合加任何 class。
     3. 修掉 demo 的已知缺陷：永假哨兵、width:max-content 右溢出、rem 断点、
        背景图拿不到懒加载、transform 平移越界 —— 每处在原地留了「为什么」。
     4. 断点按 DESIGN-SYSTEM §2.5.3 的五档全部改 px；
        640px（企微侧栏）与 1100px（导航折叠）是刻意保留的组件级例外，本页两者都用不到。
   ══════════════════════════════════════════════════════════════════════════════ */
#main { --color-black: #000000; --color-ink: #07111d; --color-deep: #173a5e; --color-business: #1f4e79; --color-primary: #2e75b6; --color-bright: #5b9bd5; --color-pale: #ddebf7; --color-cold: #f8fafc; --color-white: #ffffff; --color-muted: #5f6f82; --color-line: rgba(23, 58, 94, 0.16); --color-line-dark: rgba(255, 255, 255, 0.15); --color-dark-muted: rgba(255, 255, 255, 0.67); --color-focus: #5b9bd5; --font-display: "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif; --font-body: "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif; --font-data: "DIN Alternate", "Avenir Next", Arial, sans-serif; --font-mark: Georgia, "Times New Roman", serif; --space-xs: 0.5rem; --space-sm: 0.75rem; --space-md: 1rem; --space-lg: 1.5rem; --space-xl: 2rem; --space-2xl: 3rem; --space-3xl: 5rem; --space-4xl: 8rem; --text-sm: 0.8125rem; --text-body: 1rem; --text-lead: clamp(1.0625rem, 1.35vw, 1.25rem); --text-h3: clamp(1.375rem, 2vw, 2rem); --text-h2: clamp(2.25rem, 5vw, 4.75rem); --text-display: clamp(3rem, 6vw, 6.75rem); --ease-out: cubic-bezier(0.16, 1, 0.3, 1); --ease-in: cubic-bezier(0.7, 0, 0.84, 0); --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1); --dur-fast: 160ms; --dur-base: 320ms; --dur-slow: 700ms; --radius-sm: 0.5rem; --radius-md: 0.875rem; --radius-lg: 1.25rem; --rule-light: 1px solid var(--color-line); --rule-dark: 1px solid var(--color-line-dark); }
#main, #main * { box-sizing: border-box; }
/* 作用域根。为什么挂在 #main 而不是 :root/body：全站只有一份 site.css，
   demo 那套 --color-* token 与现网 V11 深色底盘是两套体系，写进 :root 会当场改掉另外 9 个页面。
   /fde 需要 demo 版式的内容全部在 <main id="main"> 里（唯一例外 .skip-link 单独写在全局），
   自定义属性照常向下继承，所以 #main 就是这一页的边界，且不需要 HTML 配合加任何 class。
   background 取黑：main 顶部有 calc(var(--nav)+8px) 的让位内边距，那条带子要和它下面的
   .page-hero（黑底）连成一片，否则会露出现网 body 的深蓝径向渐变，出现一道色差。
   overflow-x:clip 刻意不继承 —— demo 正是靠它把标题右溢出无声吞掉（信条 3：静默失败最贵）。 */
#main { background: var(--color-black); color: var(--color-ink); font-family: var(--font-body); font-size: var(--text-body); line-height: 1.75; -webkit-font-smoothing: antialiased; }
#main img, #main video { display: block; max-width: 100%; }
#main a { color: inherit; text-decoration: none; }
#main button, #main input, #main textarea, #main select { font: inherit; }
#main button, #main a { -webkit-tap-highlight-color: transparent; }
#main :focus-visible { outline: 3px solid var(--color-focus); outline-offset: 3px; }
.skip-link { position: fixed; inset: var(--space-md) auto auto var(--space-md); z-index: 1000; padding: var(--space-sm) var(--space-md); background: var(--color-white); color: var(--color-ink); transform: translateY(-160%); }
.skip-link:focus { transform: none; }
/* §2.5.3：断点与容器限宽一律 px。rem 会随用户浏览器默认字号整体漂移，
   出现「布局档位错位、字号却没变」的最坏组合。 */
#main .container { width: min(100% - clamp(40px, 8vw, 160px), 1440px); margin-inline: auto; }
#main .section { padding-block: clamp(5rem, 10vw, 9rem); }
#main .section-deep { background: var(--color-deep); color: var(--color-white); }
#main .section-cold { background: var(--color-cold); color: var(--color-ink); }
#main .section-pale { background: var(--color-pale); color: var(--color-ink); }
#main .btn:active { transform: translateY(1px); }
#main .btn { display: inline-flex; align-items: center; justify-content: center; min-height: 2.875rem; padding: 0.72rem 1.2rem; border: 1px solid transparent; border-radius: 99rem; font-size: 0.875rem; font-weight: 650; white-space: nowrap; transition: background var(--dur-fast), color var(--dur-fast), border-color var(--dur-fast), transform var(--dur-fast); }
#main .btn-primary { background: var(--color-primary); color: var(--color-white); }
#main .btn-primary:hover { background: var(--color-bright); }
#main .btn:disabled, #main button:disabled, #main input:disabled, #main textarea:disabled, #main select:disabled { opacity: .55; cursor: not-allowed; }
#main .page-hero-media { position: absolute; inset: 0; }
#main .page-hero-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(0,0,0,.97) 0%, rgba(0,0,0,.82) 48%, rgba(0,0,0,.3) 100%), linear-gradient(0deg, rgba(0,0,0,.75), transparent 55%); }
#main .page-hero-media img { width: 100%; height: 100%; object-fit: cover; }
#main .hero-kicker, #main .section-overline { margin: 0 0 1.5rem; color: var(--color-bright); font-family: var(--font-data); font-size: 0.72rem; font-weight: 700; letter-spacing: 0.16em; }
#main .page-hero h1 { margin: 0; max-width: 68rem; font-size: var(--text-display); font-weight: 700; letter-spacing: -0.045em; line-height: 1.08; overflow-wrap: anywhere; }
#main .page-hero h1 span { color: var(--color-bright); }
/* ≥768px 两行标题强制 nowrap（L·下方 .fde-title-line），字号必须由容器宽反推。
   demo 只靠 clamp 的 48px 下限「碰巧」放得下：实测最长那行排版宽 14.6561em
   （PingFang/Heiti/Songti/sans-serif/Arial Unicode 五种字体栈取最大），
   768px 视口容器只有 706.6px，48×14.6561 = 703.5px —— 余量 3.1px（0.4%）。
   Windows 上字体回退宽 1% 就溢出，而且被 overflow 吞掉不报错。
   min(92vw,1440px) 是 .container 的内容宽（vw≥500 时是恒等式，不是近似）；
   15.3em 是排版宽上界（实测值 + 4.4% 余量）。 */
#main .fde-hero h1 { max-width: none; font-size: min(clamp(3rem, 5vw, 6rem), calc(min(92vw, 1440px) / 15.3)); letter-spacing: -0.025em; }
#main .fde-hero > .container { margin-bottom: 12vh; }
#main .fde-hero .hero-actions { justify-content: flex-start; }
#main .fde-hero .hero-actions .btn-primary { border-color: rgba(185,225,255,.72); background: linear-gradient(105deg,#145d9b 0%,#2e8bd2 48%,#8bcaf4 100%); background-size: 140% 100%; box-shadow: 0 .85rem 2.4rem rgba(25,111,177,.34), inset 0 1px 0 rgba(255,255,255,.24); }
#main .fde-hero .hero-actions .btn-primary:hover { background-position: 100% 0; box-shadow: 0 1rem 2.8rem rgba(45,143,211,.42), inset 0 1px 0 rgba(255,255,255,.3); }
#main .fde-hero .page-hero-media img { width: 106%; max-width: none; transform: translateX(29%); -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 16%); mask-image: linear-gradient(90deg, transparent 0, #000 16%); }
#main .fde-hero h1 .fde-title-line { display: block; color: var(--color-white); white-space: nowrap; }
#main .fde-hero h1 .fde-title-second { margin-top: .08em; }
#main .fde-hero h1 .fde-title-white { color: var(--color-white); }
#main .fde-hero h1 .fde-title-gradient { color: transparent; background: linear-gradient(90deg, var(--color-bright), #d9efff 55%, var(--color-primary)); background-clip: text; -webkit-background-clip: text; }
#main .hero-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 0.75rem; margin-top: 2rem; }
#main .hero-actions .btn-primary { min-height: 3.65rem; padding: .95rem 2.6rem; border: 1px solid rgba(183,225,255,.5); border-radius: .25rem; background: linear-gradient(110deg,var(--color-primary),#387eb8); box-shadow: 0 .75rem 2rem rgba(17,82,136,.28), inset 0 1px 0 rgba(255,255,255,.16); font-size: 1.08rem; font-weight: 700; letter-spacing: .06em; }
#main .hero-actions .btn-primary:hover { background: linear-gradient(110deg,#4f9bd2,var(--color-bright)); transform: translateY(-2px); }
#main .hero-actions .btn-primary:active { transform: translateY(0); }
#main .section-title { max-width: 65rem; margin: 0; font-size: var(--text-h2); font-weight: 700; letter-spacing: -0.04em; line-height: 1.12; overflow-wrap: anywhere; }
#main .section-lead { max-width: 46rem; margin: 1.5rem 0 0; color: var(--color-muted); font-size: var(--text-lead); }
#main .section-deep .section-lead { color: var(--color-dark-muted); }
#main .consult-dock-slot { position: relative; min-height: 5rem; background: var(--color-black); }
/* demo 的这块默认是 opacity:0/visibility:hidden/translateY(100%)，靠滚动脚本加 .is-visible 才升起来。
   本页的 fde.js 没有那段吸底逻辑（只做顶栏、菜单、统计、进场动效），
   照抄就等于页面上永远看不见的咨询入口 —— 属于「不报错但结果是错的」。
   这里改成静态常显：它本来就在页面末尾，不需要吸底。 */
#main .consult-dock { position: relative; z-index: 80; width: 100%; min-height: 5rem; overflow: hidden; border-top: 1px solid rgba(139,198,235,.42); border-bottom: 1px solid rgba(3,20,34,.42); background: radial-gradient(circle at 76% -90%,rgba(91,155,213,.22) 0 20%,transparent 21%),radial-gradient(circle at 88% 170%,rgba(3,17,29,.24) 0 27%,transparent 28%),linear-gradient(105deg,#183b5b 0%,#102e49 54%,#0c253b 100%); color: var(--color-white); box-shadow: 0 -1.25rem 3.5rem rgba(2,18,31,.3); }
#main .consult-dock__inner { display: flex; align-items: center; justify-content: space-between; gap: 2rem; width: min(100% - 3rem,75rem); min-height: 5rem; margin-inline: auto; }
#main .consult-dock__copy { display: block; min-width: 0; }
#main .consult-dock__copy span { display: none; }
#main .consult-dock__copy strong { overflow: hidden; color: rgba(255,255,255,.96); font-size: clamp(1.08rem,1.5vw,1.35rem); line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
#main .consult-dock__actions { display: flex; align-items: center; gap: .75rem; flex: 0 0 auto; }
#main .consult-dock__button { display: inline-flex; align-items: center; justify-content: center; gap: .7rem; flex: 0 0 auto; min-width: 8.5rem; min-height: 3rem; padding: .75rem 1.35rem; border: 1px solid rgba(193,228,250,.56); border-radius: .2rem; background: linear-gradient(110deg,var(--color-primary),#438bc4); color: var(--color-white); font: 750 .96rem/1 var(--font-body); letter-spacing: .04em; cursor: pointer; box-shadow: 0 .75rem 1.8rem rgba(5,29,49,.28); transition: transform var(--dur-fast),background var(--dur-fast),color var(--dur-fast),box-shadow var(--dur-fast); }
#main .consult-dock__button--secondary { border-color: rgba(190,225,248,.48); background: rgba(255,255,255,.08); color: rgba(255,255,255,.9); box-shadow: none; }
#main .consult-dock__button span { font-size: 1rem; transition: transform var(--dur-fast); }
#main .consult-dock__button:hover { background: linear-gradient(110deg,#245f92,var(--color-primary)); color: var(--color-white); box-shadow: 0 .95rem 2.2rem rgba(13,61,102,.3); transform: translateY(-2px); }
#main .consult-dock__button--secondary:hover { border-color: rgba(220,241,255,.82); background: rgba(255,255,255,.17); color: var(--color-white); box-shadow: none; }
#main .consult-dock__button:hover span { transform: translate(.16rem,-.16rem); }
#main .consult-dock__button:active { transform: translateY(0); }
/* 现网顶栏是 position:fixed，本页 main 又加了 calc(var(--nav)+8px) 的让位内边距，
   照抄 demo 的 min-height:100dvh 会让首屏总高 = 100dvh + 70px，
   底部对齐的 h1 和 CTA 正好被挤到折线以下。这里把让位量减回去。 */
#main .page-hero { position: relative; min-height: calc(100dvh - var(--nav, 68px) - 8px); display: flex; align-items: flex-end; padding-block: 8rem 5rem; overflow: hidden; background: var(--color-black); color: var(--color-white); }
#main .page-hero > .container { position: relative; z-index: 1; }
#main .page-hero > .container > p:not(.hero-kicker) { max-width: 50rem; margin: 1.75rem 0 0; color: var(--color-dark-muted); font-size: var(--text-lead); }
#main .section:has(.fde-definition) { padding-top: clamp(2.75rem,4vw,4rem); }
#main .fde-definition { display: block; }
#main .fde-definition-heading { max-width: 72rem; margin-inline: auto; text-align: center; }
#main .fde-definition-heading .section-title { display: flex; align-items: center; justify-content: center; width: max-content; max-width: 100%; gap: .85rem; margin: 0 auto 1.35rem; color: var(--color-primary); font-family: var(--font-data); font-size: clamp(1rem,1.25vw,1.3rem); line-height: 1.4; font-weight: 650; letter-spacing: .12em; text-transform: none; }
#main .fde-definition-heading .section-title::before { content: ""; width: 2.8rem; height: 2px; flex: 0 0 auto; background: linear-gradient(90deg,#145d9b 0%,#2e8bd2 52%,#8bcaf4 100%); }
#main .fde-definition-heading .section-title::after { content: ""; width: 2.8rem; height: 2px; flex: 0 0 auto; background: linear-gradient(90deg,#8bcaf4 0%,#2e8bd2 48%,#145d9b 100%); }
#main .fde-definition-heading .section-title span { letter-spacing: .28em; }
#main .definition-subtitle { max-width: 70rem; margin: 0 auto; color: var(--color-ink); font-family: var(--font-display); font-size: clamp(2.25rem,4.4vw,5.15rem); line-height: .98; letter-spacing: -.045em; font-weight: 680; }
/* 需求 §7：这句在 ≥1200px 必须单行且不溢出；<1200px 自然换行、不得为单行缩到不可读。
   demo 的做法是第二个 <style> 块里一条 min-width:75rem 的 !important nowrap 文案补丁
   （DESIGN-SYSTEM 记作缺陷 BP-B）——字号和容器宽没有任何关系，是碰巧够宽。
   这里换成构造性保证，三件事写在代码里而不是注释里：
     · min(92vw,1440px) —— .container 在 vw≥1200 时的内容宽。容器公式是
       min(100% - clamp(40px,8vw,160px), 1440px)：vw∈[1200,2000] 时边距恒等于 8vw
       故内容宽 = 0.92vw；vw>2000 时边距锁 160px 但 1440 封顶已经生效。两段都等于该式。
     · ÷15 —— 这句话的排版宽上界。13 个全角字各恒 1em（CJK 字体的定义），
       "15AI" 四个西文各 ≤0.65em，字距 17×(-0.045em)；五种字体栈实测最大 14.3995em，
       取 15em 留 4.2% 余量。
     · 外层再套一次 min()：日后有人调大 clamp，字号也翻不出容器。
   断点用 1200px 整数，与 §2.5.3 的 L 档下沿严格对齐（demo 的 75rem 会随根字号漂移）。 */
@media (min-width:1200px) {
  #main .fde-definition-heading { max-width: none; }
  #main .definition-subtitle { max-width: none; white-space: nowrap; font-size: min(clamp(44px, 3.4vw, 69.6px), calc(min(92vw, 1440px) / 15)); }
}
#main .definition-title-highlight { color: transparent; background: linear-gradient(95deg,#124f86 0%,#2377b5 58%,#3f8fc7 100%); background-clip: text; -webkit-background-clip: text; font-weight: 800; }
#main .fde-copy { max-width: 78rem; margin-top: clamp(3.75rem,7vw,7rem); }
@media (min-width:1200px) {
  /* demo 用 transform 平移，布局宽度不跟着变，1200px 视口上右边界直接冲出容器。
     改成起始外边距：块宽自动收窄，视觉位置不变，越界消失。 */
  #main .fde-copy { margin-inline-start: clamp(80px, 5vw, 96px); }
}
#main .fde-copy p { max-width: none; margin: 0 0 1.75rem; color: var(--color-muted); font-size: var(--text-lead); line-height: 1.85; }
#main .fde-copy p:last-child { margin-bottom: 0; }
#main .fde-copy-highlight { color: transparent; background: linear-gradient(95deg,#124f86 0%,#2377b5 54%,#3f8fc7 100%); background-clip: text; -webkit-background-clip: text; font-weight: 750; }
#main .fde-points { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: clamp(.85rem,1.5vw,1.35rem); align-items: stretch; margin-top: 5rem; padding-block: 1rem; }
#main .fde-point { --card-offset: .65rem; position: relative; display: flex; min-height: 13.5rem; padding: 1.75rem; align-items: center; justify-content: center; overflow: hidden; border: 1px solid rgba(23,58,94,.12); border-radius: var(--radius-lg); text-align: center; box-shadow: 0 1.1rem 2.8rem rgba(23,58,94,.07),inset 0 1px rgba(255,255,255,.72); transform: translateY(var(--card-offset)); transition: transform .42s var(--ease-out),box-shadow .42s var(--ease-out),border-color .42s var(--ease-out); background: radial-gradient(circle at 82% 18%,rgba(91,155,213,.22),transparent 52%), linear-gradient(135deg,#e7f0f7 0%,#f5f8fb 52%,#dce9f3 100%); }
#main .fde-point:nth-child(2) { --card-offset: -.65rem; background: radial-gradient(circle at 20% 82%,rgba(224,193,136,.17),transparent 52%), linear-gradient(135deg,#eeeae2 0%,#faf8f4 52%,#e7e1d6 100%); }
#main .fde-point:nth-child(3) { --card-offset: .3rem; background: radial-gradient(circle at 80% 20%,rgba(31,78,121,.16),transparent 52%), linear-gradient(135deg,#e5e9ed 0%,#f5f7f9 52%,#d9e0e7 100%); }
#main .fde-point::before { content: ""; position: absolute; inset: 0 16% auto; height: 2px; border-radius: 99rem; background: linear-gradient(90deg,transparent,rgba(46,117,182,.58),transparent); }
#main .fde-point::after { content: ""; position: absolute; right: -3.5rem; bottom: -4rem; width: 9rem; aspect-ratio: 1; border: 1px solid rgba(46,117,182,.12); border-radius: 50%; box-shadow: 0 0 0 1.3rem rgba(46,117,182,.035),0 0 0 2.8rem rgba(46,117,182,.02); pointer-events: none; }
#main .fde-point b, #main .outcome b { color: var(--color-primary); font-family: var(--font-data); font-size: .72rem; }
#main .fde-point h3 { position: relative; z-index: 1; margin: 0; font-size: var(--text-h3); }
@media (hover:hover) and (pointer:fine) {
  #main .fde-point:hover { border-color: rgba(46,117,182,.26); box-shadow: 0 1.7rem 3.6rem rgba(23,58,94,.13),inset 0 1px rgba(255,255,255,.84); transform: translateY(calc(var(--card-offset) - .55rem)) scale(1.012); }
}
@media (prefers-reduced-motion:no-preference) {
  .has-motion #main .fde-points.motion-ready .fde-point { opacity: 0; transform: translateY(calc(var(--card-offset) + 1rem)); }
  #main .fde-points.motion-ready.is-visible .fde-point { opacity: 1; transform: translateY(var(--card-offset)); transition: opacity .42s ease,transform .52s var(--ease-out),box-shadow .42s var(--ease-out),border-color .42s var(--ease-out); }
  #main .fde-points.motion-ready.is-visible .fde-point:nth-child(2) { transition-delay: .08s; }
  #main .fde-points.motion-ready.is-visible .fde-point:nth-child(3) { transition-delay: .16s; }
}
@media (prefers-reduced-motion:no-preference) and (hover:hover) and (pointer:fine) {
  #main .fde-points.motion-ready.is-visible .fde-point:hover { transform: translateY(calc(var(--card-offset) - .55rem)) scale(1.012); transition-delay: 0s; }
}
#main .section:has(.trend-layout) { padding-top: clamp(2.75rem,4vw,4rem); }
#main .trend-layout { display: grid; grid-template-columns: 1fr; gap: clamp(3rem,6vw,5rem); align-items: start; }
#main .trend-heading { text-align: center; }
#main .trend-heading .section-title { display: flex; align-items: center; gap: 1.15rem; width: max-content; max-width: 100%; margin-inline: auto; font-size: clamp(1rem,1.25vw,1.3rem); font-weight: 700; letter-spacing: .22em; color: transparent; background: linear-gradient(90deg,#79b8e6 0%,#b9d8f1 100%); background-clip: text; -webkit-background-clip: text; }
#main .trend-heading .section-title::before, #main .trend-heading .section-title::after { content: ""; width: clamp(3.5rem,5vw,5.5rem); height: 2px; background: linear-gradient(90deg,transparent,#5b9bd5); }
#main .trend-heading .section-title::after { background: linear-gradient(90deg,#5b9bd5,transparent); }
/* 同上：这行也带 white-space:nowrap（<1200px 由下面的 M 档规则解除）。
   18em 是「全球顶尖科技公司已经开始全力部署FDE」的排版宽上界（实测 17.2092em）。 */
#main .trend-heading .section-lead { max-width: none; margin-top: 1.5rem; color: var(--color-white); font-size: min(clamp(2.5rem,4vw,4.5rem), calc(min(92vw, 1440px) / 18)); font-weight: 700; letter-spacing: -.045em; line-height: 1.12; white-space: nowrap; }
#main .trend-heading .section-lead span { font-weight: 800; color: transparent; background: linear-gradient(90deg,#5b9bd5 0%,#b9d8f1 100%); background-clip: text; -webkit-background-clip: text; }
#main .trend-heading > p:last-child { width: 100%; max-width: 72rem; margin: 2rem auto 0; color: var(--color-dark-muted); font-size: clamp(1.125rem,1.35vw,1.35rem); line-height: 1.85; text-align: left; }
#main .trend-stack { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1rem; }
#main .trend-quote { position: relative; min-width: 0; overflow: hidden; padding: 0 0 clamp(1.5rem,2.4vw,2rem); border: 1px solid rgba(185,216,241,.22); border-radius: 1rem; background: linear-gradient(160deg,rgba(255,255,255,.075),rgba(255,255,255,.025)); box-shadow: 0 1.25rem 3rem rgba(2,13,26,.16); transition: transform .32s var(--ease-out),border-color .32s var(--ease-out),box-shadow .32s var(--ease-out); }
/* demo 把三张卡头照片写成 ::before 的 background-image：背景图一进渲染树就下载，
   没有 loading="lazy" 语义，需求 §11 的「非首屏懒加载」拿不到。
   页面已改成真实 <picture class="trend-quote__media">，这里配套：渐变压暗层挪到 ::after。 */
#main .trend-quote__media { position: relative; display: block; width: 100%; height: clamp(128px,11vw,168px); margin-bottom: 24px; border-bottom: 1px solid rgba(185,216,241,.16); overflow: hidden; }
#main .trend-quote__media img { display: block; width: 100%; height: 100%; object-fit: cover; }
#main .trend-quote__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg,rgba(2,14,29,.02),rgba(4,21,40,.38)); }
#main .trend-quote:nth-child(3) .trend-quote__media::after { background: linear-gradient(180deg,rgba(2,14,29,.02),rgba(4,21,40,.4)); }
#main .trend-quote b { display: block; margin: 0 clamp(1.35rem,2vw,2rem); padding: 0; border: 0; color: #d7eafb; background: transparent; font-size: clamp(1.2rem,1.35vw,1.5rem); font-weight: 700; line-height: 1.3; text-align: center; }
#main .trend-quote p { margin: 1.15rem clamp(1.35rem,2vw,2rem); color: rgba(255,255,255,.82); line-height: 1.75; }
#main .trend-quote p strong { color: #ffffff; font-weight: 800; }
#main .trend-quote small { display: block; margin: 0 clamp(1.35rem,2vw,2rem); color: rgba(255,255,255,.52); line-height: 1.6; }
@media (prefers-reduced-motion:no-preference) and (hover:hover) and (pointer:fine) {
  #main .trend-quote:hover { transform: translateY(-.4rem); border-color: rgba(185,216,241,.42); box-shadow: 0 1.8rem 4rem rgba(2,13,26,.28); }
}
#main .section-overline { color: var(--color-primary); }
#main .fde-outcomes { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: clamp(1rem,1.7vw,1.5rem); margin-top: 4.5rem; }
#main .section:has(.fde-outcomes) > .container > .section-overline { display: flex; align-items: center; justify-content: center; gap: 1rem; margin-bottom: 1.35rem; text-align: center; color: var(--color-primary); font-size: clamp(1rem,1.25vw,1.3rem); letter-spacing: .22em; }
#main .section:has(.fde-outcomes) { padding-top: clamp(3rem,5vw,5rem); }
#main .section:has(.fde-outcomes) > .container > .section-overline::before, #main .section:has(.fde-outcomes) > .container > .section-overline::after { content: ""; width: 3.4rem; height: 2px; flex: 0 0 auto; background: linear-gradient(90deg,var(--color-deep) 0%,var(--color-primary) 58%,var(--color-bright) 100%); }
#main .section:has(.fde-outcomes) > .container > .section-overline::after { transform: scaleX(-1); }
/* 缺陷：demo 给这个标题上了 width:max-content 却漏了 max-width（同文件另一处就有正确写法）。
   max-content 会架空 max-width，居中的 margin-inline:auto 在超宽时失效，标题整块从右边溢出，
   再被 html 的 overflow-x 吞掉 —— 不出滚动条，字直接看不见。
   之所以要 max-content：::before 叠了一层同字形的「莱文FDE」渐变文字做描边，
   伪元素 left:0 只有在本体不换行时才和正文对得齐，一换行就错位重影。
   所以按能力分档，而不是简单补一个 max-width：
     <1200px：普通居中块，描边关掉。宁可少一层装饰，也不能让标题看不见。
     ≥1200px：才启用 max-content + 描边。此档已证明放得下 ——
       --text-h2 = clamp(36px,5vw,76px)，这句的排版宽上界 14em（实测 13.4481em）；
       14×0.05vw = 0.7vw < 容器的 0.92vw，封顶 14×76px = 1064px < 1440px。 */
#main .section:has(.fde-outcomes) > .container > .section-title { position: relative; max-width: 72rem; margin-inline: auto; text-align: center; }
@media (min-width:1200px) {
  #main .section:has(.fde-outcomes) > .container > .section-title { width: max-content; max-width: 100%; }
  #main .section:has(.fde-outcomes) > .container > .section-title::before { content: "莱文FDE"; position: absolute; left: 0; top: 0; font: inherit; letter-spacing: inherit; color: transparent; background: linear-gradient(90deg,#2377b5 0%,#79b8e6 100%); background-clip: text; -webkit-background-clip: text; }
}
#main .section:has(.process-line) > .container > .section-overline { display: flex; align-items: center; justify-content: center; gap: 1rem; margin-bottom: 1.35rem; text-align: center; color: var(--color-primary); font-size: clamp(1rem,1.25vw,1.3rem); letter-spacing: .22em; }
#main .section:has(.process-line) { padding-top: clamp(2.75rem,4vw,4rem); }
#main .section:has(.process-line) > .container > .section-overline::before, #main .section:has(.process-line) > .container > .section-overline::after { content: ""; width: 3.4rem; height: 2px; flex: 0 0 auto; background: linear-gradient(90deg,var(--color-deep) 0%,var(--color-primary) 58%,var(--color-bright) 100%); }
#main .section:has(.process-line) > .container > .section-overline::after { transform: scaleX(-1); }
#main .section:has(.process-line) > .container > .section-title { max-width: 72rem; margin-inline: auto; text-align: center; }
#main .outcome { --outcome-accent: #2f7fba; position: relative; isolation: isolate; min-height: 19rem; padding: clamp(1.75rem,2.2vw,2.25rem); overflow: hidden; border: 1px solid rgba(35,99,151,.16); border-radius: clamp(1rem,1.5vw,1.4rem); background: linear-gradient(145deg,rgba(255,255,255,.97),rgba(235,244,251,.88)); box-shadow: 0 .85rem 2.4rem rgba(23,58,94,.07), inset 0 1px 0 rgba(255,255,255,.9); transition: transform .32s var(--ease-out), box-shadow .32s var(--ease-out), border-color .32s var(--ease-out); }
#main .outcome:nth-child(2), #main .outcome:nth-child(5) { --outcome-accent: #316ca8; background: linear-gradient(145deg,rgba(255,255,255,.98),rgba(229,239,248,.9)); }
#main .outcome:nth-child(3), #main .outcome:nth-child(4) { --outcome-accent: #438cad; background: linear-gradient(145deg,rgba(250,253,255,.98),rgba(232,244,246,.9)); }
#main .outcome::before { content: ""; position: absolute; inset: 0 0 auto; z-index: -1; height: 3px; background: linear-gradient(90deg,var(--outcome-accent),color-mix(in srgb,var(--outcome-accent) 34%,white),transparent 88%); }
#main .outcome::after { content: ""; position: absolute; z-index: -1; top: -4.5rem; right: -3.5rem; width: 11rem; aspect-ratio: 1; border: 1px solid color-mix(in srgb,var(--outcome-accent) 18%,transparent); border-radius: 50%; background: radial-gradient(circle,color-mix(in srgb,var(--outcome-accent) 9%,transparent) 0 28%,transparent 29% 48%,color-mix(in srgb,var(--outcome-accent) 7%,transparent) 49% 50%,transparent 51%); transition: transform .4s var(--ease-out); }
#main .outcome > b { display: block; margin: .8rem 0 .55rem; color: var(--outcome-accent); font-family: var(--font-data); font-size: clamp(1.15rem,1.35vw,1.35rem); font-weight: 800; line-height: 1; letter-spacing: .03em; }
#main .outcome h3 { position: relative; margin: 0 0 1rem; color: var(--color-business); font-size: var(--text-h3); line-height: 1.35; }
#main .outcome h3::before { content: ""; display: block; width: 2.4rem; height: 3px; margin-bottom: 1.15rem; border-radius: 99px; background: var(--outcome-accent); }
#main .outcome p { margin: 0; color: var(--color-muted); }
@media (hover:hover) and (pointer:fine) {
  #main .outcome:hover { transform: translateY(-.4rem); border-color: color-mix(in srgb,var(--outcome-accent) 38%,transparent); box-shadow: 0 1.4rem 3rem rgba(23,58,94,.12), inset 0 1px 0 rgba(255,255,255,.92); }
  #main .outcome:hover::after { transform: translate(-.35rem,.35rem) scale(1.05); }
}
#main .process-line { position: relative; isolation: isolate; display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: clamp(.8rem,1.25vw,1.15rem); margin-top: 5rem; }
#main .process-line::before, #main .process-line::after { content: ""; position: absolute; top: 2.45rem; left: 6%; right: 6%; z-index: -1; height: 3px; border-radius: 99rem; }
#main .process-line::before { background: rgba(31,78,121,.14); }
#main .process-line::after { background: linear-gradient(90deg,var(--color-deep),var(--color-primary) 48%,var(--color-bright)); box-shadow: 0 0 1rem rgba(46,117,182,.24); transform: scaleX(1); transform-origin: left center; }
#main .process-step { position: relative; z-index: 1; min-width: 0; min-height: 12.5rem; padding: 4.9rem clamp(1rem,1.5vw,1.4rem) 1.5rem; overflow: visible; border: 1px solid rgba(31,78,121,.14); border-radius: var(--radius-lg); background: linear-gradient(155deg,rgba(255,255,255,.92),rgba(235,244,251,.82)); box-shadow: 0 1rem 2.5rem rgba(23,58,94,.07),inset 0 1px rgba(255,255,255,.92); transition: transform .34s var(--ease-out),box-shadow .34s var(--ease-out),border-color .34s var(--ease-out); }
#main .process-step:not(:last-child)::after { content: "→"; position: absolute; top: 2.05rem; right: calc(clamp(.8rem,1.25vw,1.15rem) * -.78); z-index: 4; display: grid; place-items: center; width: 1.35rem; height: 1.35rem; border: 1px solid rgba(46,117,182,.24); border-radius: 50%; background: var(--color-white); color: var(--color-primary); font: 700 .78rem/1 var(--font-data); box-shadow: 0 .3rem .8rem rgba(23,58,94,.1); }
#main .process-dot { position: absolute; top: 1rem; left: clamp(1rem,1.5vw,1.4rem); z-index: 3; display: grid; place-items: center; width: 3rem; height: 3rem; border: 4px solid rgba(221,235,247,.95); border-radius: 50%; background: linear-gradient(145deg,var(--color-business),var(--color-deep)); color: var(--color-white); font-family: var(--font-data); font-size: .72rem; font-weight: 750; box-shadow: 0 0 0 4px rgba(46,117,182,.08),0 .65rem 1.4rem rgba(23,58,94,.2); }
#main .process-step h3 { margin: 0; color: var(--color-business); font-size: clamp(1.08rem,1.25vw,1.3rem); line-height: 1.45; }
@media (hover:hover) and (pointer:fine) {
  #main .process-step:hover { border-color: rgba(46,117,182,.3); box-shadow: 0 1.5rem 3.2rem rgba(23,58,94,.13),inset 0 1px rgba(255,255,255,.95); transform: translateY(-.45rem); }
}
@media (prefers-reduced-motion:no-preference) {
  #main .process-line.process-ready::after { transform: scaleX(0); }
  .has-motion #main .process-line.process-ready .process-step { opacity: 0; transform: translateY(.8rem); }
  #main .process-line.process-ready.is-visible::after { transform: scaleX(1); transition: transform .9s var(--ease-out); }
  #main .process-line.process-ready.is-visible .process-step { opacity: 1; transform: none; transition: opacity .38s ease,transform .48s var(--ease-out),box-shadow .34s var(--ease-out),border-color .34s var(--ease-out); }
  #main .process-line.process-ready.is-visible .process-step:nth-child(2) { transition-delay: .07s; }
  #main .process-line.process-ready.is-visible .process-step:nth-child(3) { transition-delay: .14s; }
  #main .process-line.process-ready.is-visible .process-step:nth-child(4) { transition-delay: .21s; }
  #main .process-line.process-ready.is-visible .process-step:nth-child(5) { transition-delay: .28s; }
}
/* 现网 site.css 有一条全站 .reveal{opacity:0;transform:translateY(24px)}，靠 app.js 加类才显形，
   而本页只加载 fde.js。所以：默认必须可见（脚本没跑也看得见），
   初始隐藏只在「脚本已确认能跑（html.has-motion）」且「用户没要求减弱动效」时才生效。
   .revealed 是 fde.js 用的可见态类名（demo 那套用的是别的名字，不要混）。 */
#main .reveal { opacity: 1; transform: none; }
@media (prefers-reduced-motion: no-preference) {
  .has-motion #main .reveal { opacity: 0; transform: translateY(24px); transition: opacity .5s var(--ease-out), transform .5s var(--ease-out); }
  .has-motion #main .reveal.revealed { opacity: 1; transform: none; }
  .has-motion #main .fde-outcomes .reveal:nth-child(2) { transition-delay: .06s }
  .has-motion #main .fde-outcomes .reveal:nth-child(3) { transition-delay: .12s }
}
@media (prefers-reduced-motion:no-preference) {
  #main .page-hero > .container { animation: fde-hero-enter .8s var(--ease-out) both; }
  @keyframes fde-hero-enter {
    from { opacity: 0; transform: translateY(1.25rem); }
    to { opacity: 1; transform: none; }
  }
}
@media (max-width:1199.98px) {
  #main .fde-definition, #main .trend-layout { grid-template-columns: 1fr; }
  #main .trend-heading { position: static; }
  #main .trend-heading .section-lead { white-space: normal; }
  #main .trend-stack { grid-template-columns: 1fr; }
  #main .fde-outcomes { grid-template-columns: repeat(2,minmax(0,1fr)); }
  #main .process-line { grid-template-columns: 1fr; gap: 1.25rem; }
  #main .process-line::before, #main .process-line::after { top: 2rem; bottom: 2rem; left: 2.42rem; right: auto; width: 3px; height: auto; }
  #main .process-line::after { transform-origin: center top; }
  #main .process-step { min-height: 8.5rem; padding: 2rem 1.5rem 2rem 6.5rem; }
  #main .process-dot { top: 50%; left: .9rem; transform: translateY(-50%); }
  #main .process-step:not(:last-child)::after { content: "↓"; top: auto; right: auto; bottom: -1.3rem; left: 2.05rem; }
  #main .process-step h3 { min-height: 100%; display: flex; align-items: center; }
}
@media (max-width:1199.98px) and (prefers-reduced-motion:no-preference) {
  #main .process-line.process-ready::after { transform: scaleY(0); }
  #main .process-line.process-ready.is-visible::after { transform: scaleY(1); }
}
@media (min-width:1200px) and (prefers-reduced-motion:no-preference) and (hover:hover) and (pointer:fine) {
  #main .process-line.process-ready.is-visible .process-step:hover { transform: translateY(-.45rem); transition-delay: 0s; }
}
#main .process-line { gap: 0; padding: 1.5rem 1.25rem 1.25rem; border: 1px solid rgba(31,78,121,.12); border-radius: clamp(1rem,1.6vw,1.5rem); background: linear-gradient(145deg,rgba(255,255,255,.62),rgba(221,235,247,.46)); box-shadow: inset 0 1px rgba(255,255,255,.78),0 1.2rem 3rem rgba(23,58,94,.055); }
#main .process-line::before, #main .process-line::after { top: 3.15rem; left: 10%; right: 10%; height: 2px; }
#main .process-step { min-height: 8.75rem; padding: .5rem .75rem 1rem; overflow: visible; border: 0; border-radius: 0; background: transparent; box-shadow: none; text-align: center; }
#main .process-dot { position: relative; top: auto; left: auto; width: 3.35rem; height: 3.35rem; margin-inline: auto; border: 5px solid rgba(221,235,247,.96); background: linear-gradient(145deg,var(--color-primary),var(--color-deep)); box-shadow: 0 0 0 5px rgba(46,117,182,.065),0 .55rem 1.2rem rgba(23,58,94,.18); }
#main .process-step:not(:last-child)::after { content: "›"; top: 1rem; right: -.7rem; width: 1.4rem; height: 1.4rem; border: 0; background: var(--color-pale); color: var(--color-primary); font: 750 1.35rem/1 var(--font-data); box-shadow: none; }
#main .process-step h3 { justify-content: center; min-height: 0; margin: 1.45rem 0 0; color: var(--color-business); }
@media (hover:hover) and (pointer:fine) {
  #main .process-step:hover { border-color: transparent; box-shadow: none; transform: translateY(-.2rem); }
  #main .process-step:hover .process-dot { background: linear-gradient(145deg,var(--color-bright),var(--color-primary)); box-shadow: 0 0 0 6px rgba(46,117,182,.09),0 .7rem 1.5rem rgba(23,58,94,.22); }
}
@media (max-width:1199.98px) {
  #main .process-line { gap: 0; padding: 1.25rem; }
  #main .process-line::before, #main .process-line::after { top: 2.75rem; bottom: 2.75rem; left: 2.92rem; right: auto; width: 2px; height: auto; }
  #main .process-step { min-height: 7rem; padding: 1rem 1rem 1rem 5.6rem; text-align: left; }
  #main .process-dot { position: absolute; top: 50%; left: .85rem; margin: 0; transform: translateY(-50%); }
  #main .process-step:not(:last-child)::after { content: "⌄"; top: auto; right: auto; bottom: -.72rem; left: 2.24rem; }
  #main .process-step h3 { justify-content: flex-start; min-height: 100%; margin: 0; }
}
@media (min-width:1200px) and (prefers-reduced-motion:no-preference) and (hover:hover) and (pointer:fine) {
  #main .process-line.process-ready.is-visible .process-step:hover { transform: translateY(-.2rem); }
}
@media (min-width:1200px) and (prefers-reduced-motion:no-preference) {
  #main .process-line.is-visible .process-step:not(:last-child)::after { animation: fde-process-arrow-flow 1.35s var(--ease-in-out) infinite; }
  #main .process-line.is-visible .process-step:nth-child(2)::after { animation-delay: .16s; }
  #main .process-line.is-visible .process-step:nth-child(3)::after { animation-delay: .32s; }
  #main .process-line.is-visible .process-step:nth-child(4)::after { animation-delay: .48s; }
  @keyframes fde-process-arrow-flow {
    0%,100% { opacity: .35; transform: translateX(-.12rem) scale(.9); filter: drop-shadow(0 0 0 rgba(46,117,182,0)); }
    50% { opacity: 1; transform: translateX(.52rem) scale(1.14); filter: drop-shadow(0 0 .35rem rgba(46,117,182,.5)); }
  }
}
#main .compact-quotes .trend-quote { padding-bottom: 1.4rem; border-color: rgba(213,221,227,.86); background: #deebf7; box-shadow: 0 1.35rem 3.2rem rgba(2,13,26,.2),inset 0 1px rgba(255,255,255,.92); }
#main .trend-stack.compact-quotes { margin-top: clamp(1.5rem,2.5vw,2.75rem); }
#main .compact-quotes .trend-quote b { color: var(--color-deep); }
#main .compact-quotes .trend-summary { min-height: 5.2rem; margin-block: 1.1rem .75rem; color: #294b68; font-size: clamp(.96rem,1.05vw,1.08rem); font-weight: 600; line-height: 1.75; }
#main .trend-details { margin: 0 clamp(1.35rem,2vw,2rem) 1rem; border-top: 1px solid rgba(31,78,121,.14); border-bottom: 1px solid rgba(31,78,121,.12); }
#main .trend-details summary { display: flex; min-height: 2.85rem; align-items: center; justify-content: space-between; gap: 1rem; color: var(--color-business); font-size: .86rem; font-weight: 650; cursor: pointer; list-style: none; }
#main .trend-details summary::-webkit-details-marker { display: none; }
#main .trend-details summary span { color: var(--color-primary); font-size: 1.1rem; transition: transform .25s var(--ease-out); }
#main .trend-details[open] summary span { transform: rotate(180deg); }
#main .trend-details blockquote { margin: 0 0 1rem; padding: .9rem 1rem; border-left: 2px solid rgba(46,117,182,.52); background: rgba(255,255,255,.62); color: #4f6477; font-size: .9rem; line-height: 1.75; }
#main .trend-details blockquote strong { color: var(--color-deep); font-weight: 800; }
#main .trend-details summary:focus-visible { outline: 2px solid var(--color-bright); outline-offset: 3px; }
#main .compact-quotes .trend-quote small { margin-top: 0; color: #6f8190; font-size: .78rem; }
@media (hover:hover) and (pointer:fine) {
  #main .compact-quotes .trend-quote:hover { border-color: rgba(91,155,213,.5); box-shadow: 0 1.8rem 4rem rgba(2,13,26,.25),inset 0 1px rgba(255,255,255,.96); }
}
@media (max-width:1199.98px) {
  #main .trend-stack.compact-quotes { margin-top: 1.25rem; }
  #main .compact-quotes .trend-summary { min-height: 0; }
}
@media (max-width:767.98px) {
  #main .container { width: min(100% - 2.5rem, 90rem); }
  #main .section { padding-block: 5rem; }
  #main .page-hero { min-height: 100svh; padding-block: 7rem 3.5rem; }
  #main .page-hero-media::after { background: linear-gradient(0deg, rgba(0,0,0,.96) 0%, rgba(0,0,0,.7) 68%, rgba(0,0,0,.28) 100%); }
  #main .page-hero h1 { font-size: clamp(2.5rem, 12vw, 4rem); line-height: 1.12; }
  #main .fde-hero h1 { font-size: clamp(2.15rem, 10vw, 3.5rem); }
  #main .fde-hero > .container { margin-bottom: 5vh; }
  #main .fde-hero .page-hero-media img { width: 112%; transform: translateX(8%); -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 12%); mask-image: linear-gradient(90deg, transparent 0, #000 12%); }
  #main .fde-hero h1 .fde-title-line { white-space: normal; }
  #main .page-hero > .container > p:not(.hero-kicker) { font-size: 1rem; line-height: 1.75; }
  #main .hero-actions { display: grid; align-items: stretch; }
  #main .hero-actions .btn { width: 100%; }
  #main .fde-points, #main .fde-outcomes, #main .process-line { grid-template-columns: 1fr; }
  #main .fde-outcomes { gap: 1rem; }
  #main .fde-points { gap: .85rem; padding-block: 0; }
  #main .fde-point, #main .fde-point:nth-child(2), #main .fde-point:nth-child(3) { --card-offset: 0rem; min-height: 9.5rem; }
  #main .fde-point h3, #main .outcome h3 { margin-top: 2.5rem; }
  #main .fde-point h3 { margin: 0; }
  #main .fde-definition-heading .section-title { margin-bottom: 1rem; }
  #main .definition-subtitle { font-size: clamp(2rem,9.8vw,3rem); line-height: 1.08; }
  #main .fde-copy { margin-top: 3rem; }
  #main .fde-copy p { font-size: 1rem; line-height: 1.78; margin-bottom: 1.35rem; }
  #main .outcome { min-height: auto; }
  #main .process-step { display: grid; grid-template-columns: 3.75rem minmax(0,1fr); gap: 1rem; align-items: center; padding-right: 0; }
  #main .process-step h3 { margin: 0; }
  #main .consult-dock-slot, #main .consult-dock { min-height: 5rem; }
  #main .consult-dock__inner { width: min(100% - 2rem,75rem); min-height: 5rem; gap: 1rem; }
  #main .consult-dock__copy { display: none; }
  #main .consult-dock__actions { width: 100%; gap: .55rem; }
  #main .consult-dock__button { flex: 1 1 50%; min-width: 0; min-height: 2.75rem; padding: .7rem .75rem; font-size: .86rem; }
  /* 需求 §6.2：手机端汉字正文 ≥16px。demo 这几处落在 0.78–0.96rem（12.5–15.4px），
     320/375 视口实测不达标 —— 引用卡的摘要、展开原文、来源行和咨询按钮都是要读的正文。 */
  #main .compact-quotes .trend-summary { font-size: 16px; }
  #main .trend-details summary { font-size: 16px; }
  #main .trend-details blockquote { font-size: 16px; line-height: 1.8; }
  #main .compact-quotes .trend-quote small { font-size: 16px; line-height: 1.6; }
  /* 字号提到 16px 后，两个按钮再并排就会把 8 个汉字挤成两行甚至溢出（320px 上每个只剩 140px）。
     改成竖排整宽：点击区不缩水，文案不折行，也仍然满足 ≥44px。 */
  #main .consult-dock__actions { flex-direction: column; align-items: stretch; }
  #main .consult-dock__button { flex: 0 0 auto; width: 100%; min-height: 44px; font-size: 16px; }
}
@media (prefers-reduced-motion:no-preference) {
  .has-motion #main .scene-motion__content { opacity: 0; transform: translate3d(0,2.5rem,0); will-change: opacity, transform; transition: opacity 700ms cubic-bezier(.4,0,.2,1), transform 700ms cubic-bezier(.4,0,.2,1); }
  #main .scene-motion.is-scene-visible > .scene-motion__content { opacity: 1; transform: translate3d(0,0,0); will-change: auto; }
}
@media (max-width:767.98px) and (prefers-reduced-motion:no-preference) {
  #main .scene-motion__content { transform: translate3d(0,1.75rem,0); transition-duration: 620ms; }
}


/* ─── prefers-reduced-motion ─── */
/* demo 里这两侧被打包器编译成了永假哨兵（no-preference→(min-width:0px) 恒真、
   reduce→(max-width:0px) 恒假），无障碍降级 100% 失效且不报错。上面的 no-preference 段已换回真查询。
   这里是 reduce 侧，同时满足两条：
     a) 需求 §5.2：reduce 下关键品牌动效不得「全部」消失，只减位移、缩时长；
     b) 内容必须可见 —— 本段内不允许出现任何 opacity:0（初始 opacity:0 只写在 no-preference 段）。
   为什么要 !important：现网 site.css 已有一条全站
   @media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}，
   把 reduce 用户的动效一刀切光。这里用同为 !important、特异度更高的 #main 规则把
   /fde 的关键动效收回来 —— 只在本页作用域内，另外 9 个页面的行为一个字不改。 */
@media (prefers-reduced-motion: reduce) {
  /* 1) 保留的关键品牌动效：首屏一次淡入。位移全部去掉，时长从 800ms 压到 240ms。
        起点用 .5 而不是 0：即使动画因任何原因没播完，标题也一直可读。
        它是纯 CSS animation，不依赖任何 JS 加类，不存在「卡在半透明」的状态。 */
  #main .page-hero > .container { animation: fde-hero-enter-reduced 240ms linear both !important; }
  /* 2) 卡片反馈保留，但只留描边与阴影，位移归零、时长压到 120ms */
  #main .fde-point, #main .outcome, #main .process-step, #main .trend-quote {
    transition: border-color 120ms linear, box-shadow 120ms linear !important;
  }
  /* 3) 无限循环的流动箭头必须停 —— WCAG 2.2.2 是硬性的，reduce 之外没有豁免 */
  #main .process-step:not(:last-child)::after { animation: none !important; }
  #main *, #main *::before, #main *::after { animation-iteration-count: 1 !important; }
  /* 4) 硬兜底：所有靠 JS 加类才显形的块，reduce 下一律直接可见。
        这是「关掉动效的人看到空白页」的最后一道闸。 */
  #main .scene-motion__content, #main .reveal, #main .fde-points .fde-point,
  #main .process-line .process-step { opacity: 1 !important; transform: none !important; }
  #main .process-line::after { transform: scaleX(1) !important; }
}
@media (prefers-reduced-motion: reduce) and (hover: hover) and (pointer: fine) {
  #main .fde-point:hover, #main .outcome:hover,
  #main .process-step:hover, #main .trend-quote:hover { transform: none !important; }
}
@keyframes fde-hero-enter-reduced { from { opacity: .5 } to { opacity: 1 } }
/* ══════════════════════════════════════════════════════════════════════════════
   首页 / （index.html）—— V4 浅色版式差集　　本文件 = 只补现网共享表还没有的部分
   ──────────────────────────────────────────────────────────────────────────────
   来源  reference/v4/pages/home.html 的两段内联 <style>（与 fde.html 逐字节相同，
         实测 diff -q 无差异，75,745 B）。
   口径  沿用 /fde 那一轮已经在 site.css 里立好的三条约定，不另起炉灶：
         ① 全部收在 #main 下（demo 的 --color-* 与现网 V11 深色底盘是两套体系，
            写进 :root 会当场改掉另外 10 个页面）；
         ② demo 页壳（.site-header / .site-footer / .consult-modal / 大菜单 / 移动面板 /
            .wecom-sidebar）一律不搬 —— 首页继续用现网 V22 的 .topbar / .footer /
            .v21-cta / wecom-contact.js；
         ③ 断点按 DESIGN-SYSTEM §2.5.3 全部改 px。
   差集  demo 与 home 有关的 191 条规则里：
         A 已有且一致 45 条（含 43 个 --color- / --font- / --space- 系列 token —— 逐条比对
           demo :root 与现网 #main：43 vs 43，无缺、无多、无取值差异，一条都不要重复写）
         B 已有但不同 14 条（见文末「B 类的处置」）
         C 缺失      133 条 —— 就是下面这些
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── 0. 顶栏真实高度 ───────────────────────────────────────────────────────────
   为什么不直接用 --nav：site.css L13 定义 --nav:68px，但 L368（@media max-width:620px）
   把 .topbar 的 height 压到 62px 却没有同步改变量 —— 变量在 ≤620px 是骗人的。
   实测（headless，量 .topbar 的 getBoundingClientRect().height）：
     1440px → 68.00　620px → 62.00　375px → 62.00
   所以另起 --navh 跟随实测值。620px 是现网顶栏的既有断点，不是新增版式档位。 */
#main { --navh: 68px; }
@media (max-width:620px) { #main { --navh: 62px; } }

/* ── 1. 锚点让位 ───────────────────────────────────────────────────────────────
   现网整张 site.css 里 scroll-margin-top 一条都没有（实测 getComputedStyle 全站为 0px），
   而 .topbar 是 position:fixed —— 任何锚点跳转都会把目标顶到顶栏底下。
   表现是：点导航「产品中心 → 企业智库」，页面滚过去了，但标题被顶栏盖住半行。
   收在 #main 内，只影响 V4 版式的两页（/ 与 /fde），其余 9 页不受牵连。 */
#main [id] { scroll-margin-top: calc(var(--navh) + 8px); }

/* ── 2. 区块底色 ─────────────────────────────────────────────────────────────── */
#main .section-black { background: var(--color-black); color: var(--color-white); }

/* ── 3. 首屏 hero ──────────────────────────────────────────────────────────────
   现网 V22 的 .hero / .hero-grid / .hero-copy h1 / .hero-copy p / .hero-actions 都是
   **未作用域**的类选择器（0,1,0 / 0,2,1），下面每条都带 #main（1,1,x），
   特异性第一位 1>0 恒胜，与源码顺序无关 —— 不需要 !important，也不需要改 V22 那些行。

   height 不照抄 demo 的 100dvh：现网顶栏是 fixed，页面还要给它 calc(var(--navh)+8px)
   的让位内边距（写在 index.html 的页级 <style> 里，与 /fde 同款），
   100dvh + 让位 = 首屏比一屏高，下面的 industry 区会被推出视口。 */
#main .hero { position: relative; height: calc(100dvh - var(--navh) - 8px); min-height: 42rem; max-height: 67.5rem; display: flex; align-items: center; padding-block: 6.5rem 3rem; overflow: hidden; background: var(--color-black); color: var(--color-white); }
#main .hero::before { content: ""; position: absolute; inset: 8% 12%; background: radial-gradient(circle, rgba(46,117,182,.14), transparent 60%); pointer-events: none; }
/* demo 用 background:url(__RAVEN_ASSET_0__) 挂了一张 788×608 / 776 KB 的 PNG 装饰图。
   CSS 背景图拿不到 <picture>/srcset，也拿不到 loading=lazy —— 但它在首屏，lazy 本来就不该加；
   真正要解决的是「只能发 PNG」。用 image-set() 让支持 WebP 的浏览器取 WebP、其余回落 PNG，
   路径由页面侧用 --hero-figure 注入（资源哈希不进共享表，换图不必换 CSS 哈希）。 */
#main .hero::after { content: ""; position: absolute; right: 0; bottom: -2%; z-index: 0; width: min(34vw,35rem); aspect-ratio: 788 / 608; background: var(--hero-figure) center/contain no-repeat; opacity: 1; filter: brightness(1.16) saturate(1.08) contrast(1.03) drop-shadow(0 0 1.25rem rgba(46,117,182,.16)); pointer-events: none; }
#main .hero-grid { position: relative; z-index: 1; display: grid; grid-template-columns: 1fr; justify-items: center; align-items: center; }
#main .hero-copy-wrap { position: relative; z-index: 3; width: 100%; max-width: 72rem; min-width: 0; margin-top: -2.5rem; text-align: center; transform: translateY(-1vh); }
/* white-space:nowrap 照抄 demo，没有加字号反推。理由是实测过：
   H1 第一行「企业级AI解决方案专家，全场景落地」排版宽 16.2363em（768px 档，跨档 16.098–16.236em）。
   最紧的是 768px：字号 43.2px → 墨迹 701.41px，h1 盒宽 706.55px。
   但 h1 是 text-align:center，多出来的宽度往两侧均分外溢，而裁剪祖先是 .hero（overflow:hidden，
   右边界就是视口）—— 到视口还有 (768-701.41)/2 = 33.29px/侧，等于 **9.5% 的字体回退余量**。
   实测 768/1024/1200/1240/1440/1600/1920 七档，Range 量到的墨迹没有一处越出裁剪祖先。
   （对比 /fde 那轮：那里的余量只有 0.4%，才必须反推字号。这里不必，硬加反而偏离 demo。） */
#main .hero h1 { margin: 0 auto; max-width: 78rem; font-size: clamp(2.7rem, 4.25vw, 5.25rem); font-weight: 700; letter-spacing: .01em; line-height: 1.12; white-space: nowrap; }
#main .hero h1 span { display: inline-block; margin-top: .16em; color: transparent; background: linear-gradient(90deg, var(--color-bright), #d9efff 48%, var(--color-primary)); background-clip: text; -webkit-background-clip: text; }
#main .hero-copy { max-width: 54rem; margin: 1.75rem auto 0; color: var(--color-dark-muted); font-size: clamp(1rem,1.25vw,1.2rem); line-height: 1.85; }
#main .hero-centered .hero-actions--primary-only { justify-content: center; }
#main .hero-centered .hero-actions--primary-only .btn-primary { min-width: 13rem; min-height: 4.35rem; padding: 1.15rem 3.4rem; border-color: rgba(184,226,255,.72); background: linear-gradient(112deg,#155f9f 0%,#2f85c8 46%,#71b8e8 100%); background-size: 160% 100%; box-shadow: 0 1rem 2.5rem rgba(24,105,168,.34), inset 0 1px 0 rgba(255,255,255,.28); font-size: 1.2rem; transition: transform var(--dur-fast),background-position .38s var(--ease-out),box-shadow var(--dur-fast); }
#main .hero-centered .hero-actions--primary-only .btn-primary:hover { background: linear-gradient(112deg,#155f9f 0%,#2f85c8 46%,#71b8e8 100%); background-position: 100% 0; box-shadow: 0 1.2rem 3rem rgba(35,130,199,.44), inset 0 1px 0 rgba(255,255,255,.34); }

/* ── 4. hero 卫星卡（demo 自己把它关掉了） ─────────────────────────────────────
   demo 的 CSS 在 L188–191 完整写了 .hero-satellite 的样式，紧接着 L192 又用
   `.hero-satellite { display:none }` 全部关掉 —— 也就是那 4 张卡在 demo 里一次都没显示过，
   HTML 里的 4 个 div 是死结构。这里照搬是为了与 demo 逐类对齐（class 集合 1:1）；
   **如果 index.html 决定不搬那 4 个 div，本节 8 条可以整段删掉，视觉零差异。** */
#main .hero-satellites { position: absolute; inset: 5rem 0 0; z-index: 1; width: min(100% - 3rem,100rem); margin-inline: auto; pointer-events: none; }
#main .hero-satellites::before, #main .hero-satellites::after { content: none; }
#main .hero-satellite { position: absolute; display: grid; grid-template-columns: 2.65rem auto; grid-template-rows: auto auto; column-gap: .8rem; align-items: center; min-width: 12.5rem; padding: .9rem 1rem; border: 1px solid rgba(91,155,213,.18); border-radius: var(--radius-md); background: linear-gradient(145deg,rgba(23,58,94,.32),rgba(5,12,20,.62)); color: rgba(255,255,255,.78); box-shadow: 0 1.5rem 4rem rgba(0,0,0,.2); backdrop-filter: blur(.75rem); -webkit-backdrop-filter: blur(.75rem); }
#main .hero-satellite svg { grid-row: 1/3; width: 2.65rem; height: 2.65rem; padding: .55rem; border-radius: .75rem; background: rgba(46,117,182,.14); fill: none; stroke: var(--color-bright); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
#main .hero-satellite span { align-self: end; font-size: .82rem; font-weight: 650; }
#main .hero-satellite small { align-self: start; color: rgba(185,216,241,.46); font-family: var(--font-data); font-size: .54rem; letter-spacing: .11em; }
#main .hero-satellite { display: none; }
#main .satellite-systems { right: 2%; top: 18%; transform: rotate(2deg); }
#main .satellite-workflow { left: 4%; top: 24%; transform: rotate(-1.5deg); }
#main .satellite-feedback { right: 7%; bottom: 9%; transform: rotate(-1.5deg); }

/* ── 5. RAVEN 立体字雕塑 ───────────────────────────────────────────────────────
   注意：这 4 个 div 在 demo 里不是写死在 HTML 的，是首段脚本用 insertAdjacentHTML
   注进 .hero#home 的（home.html L999–L1001）。所以它们不在「首页 85 个 class」里，
   实际要做的是 89 个。本站不得内联 <script>，这段结构应当直接写进 index.html 静态标记 —— 
   否则脚本一挂，首屏左下角空一块。 */
#main .brand-sculpture { position: absolute; left: max(1rem,calc((100vw - 100rem)/2)); bottom: 4.2%; z-index: 2; width: clamp(24rem,33vw,38rem); height: clamp(11rem,16vw,18rem); overflow: visible; pointer-events: none; perspective: 62rem; transform-style: preserve-3d; }
#main .brand-sculpture-depth span, #main .brand-sculpture-face, #main .brand-sculpture-shadow { position: absolute; inset: auto auto 0 0; white-space: nowrap; font-family: var(--font-data); font-size: clamp(4.4rem,6.5vw,7.6rem); font-weight: 880; letter-spacing: -.075em; line-height: .7; transform-origin: left bottom; }
#main .brand-sculpture-face { z-index: 10; color: rgba(62,103,138,.62); background: linear-gradient(112deg,rgba(50,91,126,.76) 0%,rgba(100,151,191,.68) 48%,rgba(38,76,109,.5) 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; transform: rotateY(18deg) rotateX(2deg) skewY(-3deg); filter: saturate(.72); text-shadow: -.025em -.02em 0 rgba(156,205,239,.16); }
#main .brand-sculpture-depth { position: absolute; inset: 0; transform-style: preserve-3d; }
#main .brand-sculpture-depth span { color: rgba(10,28,44,.58); transform: rotateY(18deg) rotateX(2deg) skewY(-3deg) translate(calc(var(--layer) * -.055rem),calc(var(--layer) * .07rem)); }
#main .brand-sculpture-depth span:nth-child(1) { --layer: 1; color: rgba(28,62,91,.56); }
#main .brand-sculpture-depth span:nth-child(2) { --layer: 2; }
#main .brand-sculpture-depth span:nth-child(3) { --layer: 3; }
#main .brand-sculpture-depth span:nth-child(4) { --layer: 4; }
#main .brand-sculpture-depth span:nth-child(5) { --layer: 5; }
#main .brand-sculpture-depth span:nth-child(6) { --layer: 6; }
#main .brand-sculpture-depth span:nth-child(7) { --layer: 7; }
#main .brand-sculpture-depth span:nth-child(8) { --layer: 8; color: rgba(5,17,29,.7); }
#main .brand-sculpture-shadow { bottom: .4rem; z-index: 0; color: rgba(71,105,131,.5); transform: translate(4.8rem,2.2rem) skewX(-38deg) scaleY(.34); transform-origin: left bottom; filter: blur(.52rem); opacity: .38; mask-image: linear-gradient(90deg,rgba(0,0,0,.92) 0%,rgba(0,0,0,.58) 58%,transparent 100%); -webkit-mask-image: linear-gradient(90deg,rgba(0,0,0,.92) 0%,rgba(0,0,0,.58) 58%,transparent 100%); }

/* ── 6. 勾选清单 ─────────────────────────────────────────────────────────────── */
#main .check-list { margin: 0; padding: 0; list-style: none; border-top: var(--rule-dark); }
#main .check-list li { position: relative; padding: 1.4rem 0 1.4rem 2.25rem; border-bottom: var(--rule-dark); font-size: clamp(1.05rem,2vw,1.5rem); }
#main .check-list li::before { content: ""; position: absolute; left: 0; top: 2rem; width: .65rem; height: .35rem; border-left: 2px solid var(--color-bright); border-bottom: 2px solid var(--color-bright); transform: rotate(-45deg); }

/* ── 7. 行业场景（黑底 + 双列无限滚动跑马灯） ──────────────────────────────────── */
#main .industry-showcase { overflow: hidden; background: var(--color-pale); color: var(--color-ink); }
#main .industry-showcase-grid { display: grid; grid-template-columns: minmax(18rem,.34fr) minmax(0,.66fr); gap: clamp(3rem,6vw,7rem); align-items: center; }
#main .industry-fixed { position: sticky; top: calc(var(--navh) + 4rem); padding-top: 1rem; }
/* demo 写死 top:8rem。顶栏是 fixed 68px，8rem=128px 只是碰巧够；用 --navh 反推才不会
   在 ≤620px（顶栏 62px）时贴得过近。 */
#main .industry-fixed .check-list { margin-top: 3rem; }
#main .industry-fixed .section-title { font-size: clamp(2.1rem, 4vw, 4.25rem); white-space: nowrap; }
#main .industry-title-gradient { color: transparent; background: linear-gradient(100deg, #175f9c 0%, #3189a8 50%, #254f82 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
#main .industry-showcase .check-list, #main .industry-showcase .check-list li { border-color: var(--color-line); }
/* mask-image 必须同时写 -webkit- 前缀：demo 只写了无前缀版（L 的 .industry-marquee），
   Safari 15.4 以下拿不到遮罩 —— 表现是跑马灯上下边缘不再淡出，卡片被硬生生切一刀。
   同一份 demo 在 .brand-sculpture-shadow 上倒是写了前缀，属于漏写不是有意为之。 */
#main .industry-marquee { position: relative; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; height: 75rem; overflow: hidden; mask-image: linear-gradient(transparent, #000 3%, #000 97%, transparent); -webkit-mask-image: linear-gradient(transparent, #000 3%, #000 97%, transparent); }
#main .industry-marquee::after { content: ""; position: absolute; inset: 0; pointer-events: none; border: 1px solid rgba(91,155,213,.12); border-radius: var(--radius-lg); }
#main .industry-column { min-width: 0; overflow: hidden; }
#main .industry-column-b { padding-top: 3rem; }
#main .industry-column-mobile { display: none; }
#main .industry-track { display: grid; gap: 1rem; animation: home-industry-scroll 48s linear infinite; will-change: transform; }
#main .industry-column-b .industry-track { animation-duration: 48s; animation-direction: reverse; }
#main .industry-marquee.is-paused .industry-track, #main .industry-marquee:focus-within .industry-track, #main .industry-marquee:hover .industry-track { animation-play-state: paused; }
@keyframes home-industry-scroll { to { transform: translateY(calc(-50% - .5rem)); } }
#main .industry-card { overflow: hidden; min-height: 33rem; border: 1px solid rgba(91,155,213,.2); border-radius: var(--radius-md); background: linear-gradient(155deg, rgba(31,78,121,.34), rgba(8,15,23,.96) 54%); box-shadow: 0 1.4rem 3.5rem rgba(0,0,0,.28); }
#main .industry-image { position: relative; aspect-ratio: 2/1; overflow: hidden; background: var(--color-deep); }
#main .industry-image::after { content: ""; position: absolute; inset: 45% 0 0; background: linear-gradient(transparent, rgba(8,15,23,.96)); }
#main .industry-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--ease-out); }
#main .industry-card:hover .industry-image img { transform: scale(1.035); }
#main .industry-card-body { padding: 1.35rem 1.4rem 1.6rem; }
#main .industry-label { display: inline-flex; align-items: center; justify-content: center; min-width: 4rem; padding: .45rem 1rem; border: 1px solid rgba(91,155,213,.68); border-radius: 99rem; background: rgba(91,155,213,.1); box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 .35rem 1rem rgba(5,17,29,.14); color: #d8efff; font-size: 1rem; font-weight: 600; line-height: 1.35; }
#main .industry-card-body small { display: block; width: fit-content; margin: 1.1rem auto 0; padding: .38rem .9rem .42rem; border: 1px solid rgba(91,155,213,.52); border-radius: .5rem; background: linear-gradient(135deg,rgba(91,155,213,.16),rgba(91,155,213,.05)); box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 .45rem 1.2rem rgba(5,17,29,.18); color: #8dc7f3; font-family: var(--font-display); font-size: 1.3rem; font-weight: 700; letter-spacing: .04em; line-height: 1.4; text-align: center; }
/* 这一条是全页余量最紧的：1200px 档卡片盒宽 285.78px，最长的
   「法律咨询员 · 合同审核员 · 案件分析师」墨迹 297.30px —— 已经越出自己的内容盒 11.5px，
   靠 .industry-card-body 左右各 22.4px 的 padding 兜住，离 .industry-card 的裁剪边还有 11.9px（4.0%）。
   1200–1237px 这一段是唯一的紧区（1240px 起余量回到 23.2px）。
   照抄 demo 不改，但把数字留在这儿：**换字号、改 padding、改 .66fr 比例前先复核这条**。 */
#main .industry-card h3 { margin: .7rem 0 .8rem; color: var(--color-white); font-size: clamp(1.1rem,1.24vw,1.22rem); line-height: 1.45; letter-spacing: -.04em; text-align: center; white-space: nowrap; }
#main .industry-card p { margin: 0; color: rgba(255,255,255,.68); font-size: .95rem; line-height: 1.7; }

/* ── 8. 四大核心能力 ───────────────────────────────────────────────────────────
   .capability-title / .capability-highlight 也不在静态 85 个 class 里：
   前者由脚本 classList.add 到 h2 上，后者由脚本包 <span> 注入正文。 */
#main .capability-title { margin-inline: auto; text-align: center; }
#main .capability-rail { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: clamp(2rem,4.5vw,5rem); margin-top: clamp(3.5rem,7vw,6.5rem); }
#main .capability-row { position: relative; isolation: isolate; min-width: 0; min-height: 31rem; padding: 1rem clamp(.75rem,1.4vw,1.35rem) 2rem clamp(1.5rem,2.4vw,2.4rem); border-left: 1px solid rgba(130,191,230,.35); transition: transform .38s var(--ease-out), border-color .3s ease, box-shadow .38s ease; }
#main .capability-row:nth-child(even) { margin-top: clamp(5rem,8vw,8.5rem); }
#main .capability-row::before { content: ""; position: absolute; inset: -.8rem -.8rem -.8rem -1px; z-index: -1; background: radial-gradient(circle at 18% 20%,rgba(89,169,222,.18),transparent 48%),linear-gradient(145deg,rgba(49,112,158,.12),rgba(12,38,62,.04)); opacity: 0; transform: scale(.96); transform-origin: left center; transition: opacity .32s ease, transform .42s var(--ease-out); }
#main .capability-row::after { content: ""; position: absolute; left: -1px; bottom: 0; width: 3px; height: 1.2rem; border-top: .28rem solid rgba(255,255,255,.36); border-bottom: .28rem solid rgba(255,255,255,.36); }
#main .capability-num { display: block; color: var(--color-bright); font-family: var(--font-data); font-size: .78rem; font-weight: 700; letter-spacing: .08em; transition: color .3s ease, transform .38s var(--ease-out); }
#main .capability-row > h3 { max-width: none; margin: 0; font-size: clamp(1.65rem,2.25vw,2.25rem); line-height: 1.28; white-space: nowrap; transition: color .3s ease, transform .38s var(--ease-out), text-shadow .3s ease; }
#main .capability-row > p { max-width: 19rem; margin: clamp(2.4rem,4vw,4rem) 0 0; color: var(--color-dark-muted); font-size: clamp(.95rem,1.15vw,1.08rem); line-height: 1.9; text-wrap: pretty; transition: color .3s ease; }
#main .capability-row > p strong { color: rgba(255,255,255,.88); font-weight: 700; }
#main .capability-highlight { color: #79cfff; background: linear-gradient(100deg,#79cfff 0%,#9abfff 52%,#e2f3ff 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; font-weight: 700; filter: drop-shadow(0 0 .25rem rgba(121,207,255,.16)); }

/* ── 9. 常见问题 ───────────────────────────────────────────────────────────────
   demo 直接给 .faq-answer 写 max-height:0，靠脚本加 .faq-item.open 展开。
   脚本一挂，整段常见问题就是四行标题、一个字答案都看不到，而且**不报错**（信条 3）。
   /fde 那轮定的口径是「默认必须可见，脚本没跑也看得见」，这里照同一口径：
   默认展开，脚本初始化时给 .faq 打上 data-enhanced 才收起。 */
#main .faq-title { text-align: center; margin-inline: auto; }
#main .faq { max-width: 68rem; margin: 4rem auto 0; border-top: var(--rule-light); }
#main .faq-item { border-bottom: var(--rule-light); }
#main .faq-question { display: grid; grid-template-columns: minmax(0,1fr) 2rem; gap: 1.5rem; width: 100%; padding: 1.5rem 0; border: 0; background: transparent; color: var(--color-ink); text-align: left; font-size: clamp(1.05rem,1.8vw,1.35rem); font-weight: 650; cursor: pointer; transition: color var(--dur-fast) var(--ease-out); }
#main .faq-item.open .faq-question { color: var(--color-bright); }
#main .faq-question span:last-child { color: var(--color-primary); transition: transform var(--dur-fast); }
#main .faq-item.open .faq-question span:last-child { transform: rotate(45deg); }
#main .faq-answer { max-height: none; overflow: hidden; transition: max-height var(--dur-base) var(--ease-out); }
#main .faq[data-enhanced] .faq-answer { max-height: 0; }
#main .faq-answer > div { max-width: 58rem; padding: 0 0 1.75rem; color: var(--color-muted); }
#main .faq-highlight { color: var(--color-ink); font-weight: 750; }

/* ── 10. 悬停增强（触屏拿不到，也不该拿到） ────────────────────────────────────── */
@media (hover:hover) and (pointer:fine) {
  #main .capability-row:hover { border-left-color: rgba(126,210,255,.92); box-shadow: -.45rem 0 1.6rem rgba(79,169,221,.12); transform: translateY(-.7rem); }
  #main .capability-row:hover::before { opacity: 1; transform: scale(1); }
  #main .capability-row:hover::after { border-color: rgba(160,225,255,.9); }
  #main .capability-row:hover .capability-num { color: #b8e8ff; transform: translateX(.3rem); }
  #main .capability-row:hover > h3 { color: #dff4ff; text-shadow: 0 0 1.25rem rgba(95,190,240,.28); transform: translateX(.3rem); }
  #main .capability-row:hover > p { color: rgba(225,239,249,.8); }
  #main .capability-row:hover .capability-highlight { background: linear-gradient(100deg,#8fd7ff 0%,#b1ceff 52%,#edf8ff 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
}

/* ── 11. 首屏进场 ──────────────────────────────────────────────────────────────
   demo 这段的媒体查询被构建工具编译成了 `@media (min-width:0px)` —— 恒真，
   等于把带 opacity:0 的动画也发给了开了「减少动态效果」的用户。这里还原成真查询。
   （同一份 demo 里 `@media (max-width:0px)` 是编坏的 reduce 段，恒假，见文末第 13 节。）
   关键帧名加 home- 前缀：@keyframes 不吃 #main 作用域，全站同名会互相覆盖（/fde 轮同样规矩）。
   不挂 .has-motion：这是纯 CSS 动画，fill-mode both 在 .8s 后自愈，脚本挂了也不会白屏。 */
@media (prefers-reduced-motion: no-preference) {
  #main .hero-copy-wrap { animation: home-hero-enter .8s var(--ease-out) both; }
  @keyframes home-hero-enter {
    from { opacity: 0; transform: translateY(1.25rem); }
    to { opacity: 1; transform: none; }
  }
}

/* ── 12. 断点 ──────────────────────────────────────────────────────────────────
   demo 的 68.75rem / 47.99rem / 48rem 一律换成 §2.5.3 的 px 档：
     68.75rem(1100px) → M 档 max-width:1199.98px
     47.99rem/48rem   → S 档 max-width:767.98px
   rem 断点会随用户浏览器默认字号整体漂移，出现「布局换了档、字号却没变」的最坏组合。 */
@media (max-width:1199.98px) {
  #main .hero-satellites::after { display: none; }
  #main .hero::after { width: 28rem; right: -8rem; bottom: -7rem; opacity: .42; }
  #main .brand-sculpture { left: -2rem; bottom: 3.5%; width: 20rem; height: 9rem; opacity: .72; transform: scale(.82); transform-origin: left bottom; }
  #main .industry-showcase-grid { grid-template-columns: minmax(15rem,.38fr) minmax(0,.62fr); gap: 2.5rem; }
  #main .industry-marquee { grid-template-columns: 1fr; height: min(49rem,78vh); }
  #main .industry-column-b { display: none; }
  #main .capability-rail { grid-template-columns: repeat(2,minmax(0,1fr)); }
  #main .capability-row { min-height: 27rem; }
  #main .capability-row:nth-child(even) { margin-top: 5rem; }
}
@media (max-width:767.98px) {
  #main .hero { height: auto; min-height: calc(100svh - var(--navh) - 8px); max-height: none; padding-block: 7rem 4rem; }
  #main .hero::after { display: none; }
  #main .brand-sculpture { left: -3.4rem; bottom: 1.5rem; width: 17rem; height: 7rem; opacity: .3; transform: scale(.62); transform-origin: left bottom; }
  #main .brand-sculpture-shadow { opacity: .25; }
  #main .hero-grid { grid-template-columns: 1fr; }
  #main .hero h1 { font-size: clamp(2.05rem, 8.8vw, 3.2rem); line-height: 1.16; letter-spacing: 0; white-space: normal; }
  #main .hero h1 span { margin-top: .1em; }
  #main .hero-copy-wrap { margin-top: 0; }
  #main .hero-copy { font-size: 1rem; line-height: 1.75; }
  #main .industry-showcase-grid { grid-template-columns: 1fr; }
  #main .industry-fixed { position: static; }
  #main .industry-fixed .check-list { margin-top: 2rem; }
  #main .industry-marquee { grid-template-columns: 1fr; height: 38rem; mask-image: linear-gradient(transparent, #000 8%, #000 92%, transparent); -webkit-mask-image: linear-gradient(transparent, #000 8%, #000 92%, transparent); }
  #main .industry-column-a, #main .industry-column-b { display: none; }
  #main .industry-column-mobile { display: block; }
  #main .industry-column-mobile .industry-track { animation-duration: 92s; }
  #main .industry-card { min-height: 32rem; }
  #main .capability-rail { grid-template-columns: 1fr; gap: 2.5rem; }
  #main .capability-row, #main .capability-row:nth-child(even) { min-height: auto; margin-top: 0; padding: .5rem 0 2.5rem 1.5rem; }
}
/* XS 档：demo 完全没有这一档，§2.5.3 要求补。
   320px 屏上 40px 边距只剩 280px 内容宽（实测 .hero .container = 280.00），
   而 .check-list li 的 padding-left 2.25rem(36px) 要吃掉其中 12.9%。边距收到 24px。
   ⚠️ 这一条会同时作用到 /fde（同为 #main 作用域）—— /fde 的 XS 档也该收，属同一决议，
   但落地前要在 320px 复测一次 /fde，确认没有别的元素靠 40px 边距吃饭。 */
@media (max-width:374.98px) {
  #main .container { width: min(100% - 24px, 1440px); }
}

/* ── 13. 减少动态效果 ──────────────────────────────────────────────────────────
   demo 这段被编译成 `@media (max-width:0px)` —— **恒假**，等于减动用户一条也拿不到。
   现网 site.css L379–383 已有一个全局 reduce 段（`*{animation:none!important;
   transition:none!important;scroll-behavior:auto!important}` + `.reveal{opacity:1!important}`），
   覆盖了 demo 这段里的前三条，所以下面只补它没有的两条跑马灯专项。 */
@media (prefers-reduced-motion: reduce) {
  #main .industry-marquee { overflow-y: auto; mask-image: none; -webkit-mask-image: none; }
  #main .industry-track { animation: none !important; transform: none !important; will-change: auto; }
}
/* 触屏停常驻动画：跑马灯是 48s 无限循环 + will-change:transform，在手机上一直占着合成层。
   现网 V22 已有同款惯例（site.css L1062，@media (hover:none) 里把环境常驻动画全停）。
   停掉后 .industry-track 是静态列表，仍然可滚可读，不是空态。 */
@media (hover:none) {
  #main .industry-track { animation: none; will-change: auto; }
  #main .industry-marquee { overflow-y: auto; }
}

/* ══════════════════════════════════════════════════════════════════════════════
   B 类（已有但不同）的处置 —— 14 条，一条也不写进本文件，理由逐条记在这里
   ──────────────────────────────────────────────────────────────────────────────
   B1  :root                     demo 43 个 token vs 现网 #main 43 个，逐条比对无差异。
                                 现网写在 #main 而不是 :root，是 /fde 轮为了不污染另外
                                 10 页刻意做的作用域，**沿用现网**。
   B2  body,html {overflow-x:clip}  现网是 html{overflow-x:hidden}（L 全局）。两者都会把
                                 右溢出无声吞掉，属既有状况；本轮不改，改动会波及全部 11 页。
                                 验收时横向溢出必须元素级检测，别信 scrollWidth。
   B3  html{scroll-behavior:smooth} 现网已有且多带 background/color-scheme，**沿用现网**。
   B4  body{background:--color-cold} 现网对应的是 #main{background:--color-black}。
                                 首页首屏也是黑 hero，让位内边距那条带子要和 hero 连成一片，
                                 **沿用现网**，不要改回 cold。
   B5  .container                现网已按 §2.5.3 改成 px（40px/160px/1440px），
                                 语义与 demo 的 rem 版等价且不随字号漂移，**沿用现网**。
   B6  .brand    ┐
   B7  .nav-product              demo 页壳专用。首页继续用现网 V22 顶栏/页脚，
   B11 .footer-grid ┘            这三条 demo 版**整条丢弃**。
   B8  .hero      ┐              现网 V22 版未作用域，本文件第 3 节用 #main 前缀（1,1,0）
   B9  .hero-grid ┘              压过 V22 的 (0,1,0)，特异性恒胜，不必动 V22 那几行。
                                 一并被压住的还有 .hero-copy h1 / .hero-copy p / .hero-actions /
                                 @media(max-width:620px) 下的 4 条 —— 共 12 条 V22 规则会继续
                                 匹配新首页的 DOM，全部由 #main 版覆盖。
   B10 .consult-dock             现网（/fde 轮）刻意去掉了 demo 的 4 条初始隐藏态
                                 （opacity:0 / visibility:hidden / transform:translateY(100%) / transition）。
                                 首页要不要 demo 那个「滚到底才升起」的吸底条，是**待决项**：
                                 现网首页已经有 V22 的 .v21-cta（position:fixed，z-index:88），
                                 两条吸底 CTA 会叠在一起。见返回里的冲突清单。
   B12 *{animation-duration:.01ms}  ┐ 现网 L379–383 的全局 reduce 段已用 !important 覆盖，
   B13 .reveal{opacity:1}          ├ 且比 demo 更强（animation:none 而不是 .01ms）。
   B14 .scene-motion__content      ┘ **沿用现网**。
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── 14. 本轮新增：<picture> 包裹层不能吃掉尺寸链 ────────────────────────────────
   demo 的行业卡片是裸 <img>，本站按项目规矩要上 WebP + 兜底，必须包一层 <picture>。
   <picture> 默认是 display:inline —— 一旦插进来，.industry-image（aspect-ratio:2/1 的
   定高盒）与 img{height:100%} 之间的尺寸链就断了：img 的 100% 去参照一个没有高度的
   行内盒，算出来是 auto，卡片图会塌成原图比例把版式顶开。
   表现：行业卡片变成竖长条、marquee 一屏只放得下一张半。
   这条不是装饰，是 <picture> 的结构性代价，改回裸 img 才可以删。 */
#main .industry-image picture { display: block; width: 100%; height: 100%; }

/* ── 15. 本轮新增：手机端正文字号补到 16px ──────────────────────────────────────
   demo 有两处正文在手机上落到 15.2px，低于项目硬线「手机端汉字 ≥16px」：
     · #main .industry-card p            .95rem            → 实测 320/375/412 全是 15.2px
     · #main .capability-row > p         clamp(.95rem,1.15vw,1.08rem)
       1.15vw 在 375px 上只有 4.31px，被 clamp 钉在下界 .95rem —— 同样 15.2px，
       .capability-highlight 继承它，实测也是 15.2px
   量的是 getComputedStyle().fontSize，不是 CSS 变量（变量在 ≤620px 那档会骗人，见第 0 节）。
   只抬下界、不动上界：≥768px 的取值一个都没变，与 demo 的桌面渲染仍然逐像素一致。
   这 0.8px 是有意偏离高保真的地方，改回 .95rem 就会重新破线。 */
@media (max-width:767.98px) {
  #main .industry-card p { font-size: 1rem; }
  #main .capability-row > p { font-size: 1rem; }
}

/* ── 16. 本轮新增：页脚锚点也要给固定顶栏让位 ──────────────────────────────────
   第 1 节那条 #main [id] 只管正文。但「关注公众号」这个 CTA 指的是 #gzh，
   它在页脚里、够不着 —— 实测 getComputedStyle(#gzh).scrollMarginTop = 0px。
   表现是：点了确实滚过去了，但二维码的上沿被固定顶栏压掉 68px（≤620px 是 62px），
   压住的正好是要扫的那张码。不报错，只是扫不了。
   /fde 页上的同名链接是同一个毛病，所以收在共享表里、两页一起修。
   ⚠️ 这是本轮唯一一条**没有** #main 前缀的规则，属有意为之：页脚按定义就在 #main 之外，
   而 9 个引用页共用同一份页脚 + 同一个固定顶栏，这条对每一页都是修复。
   写字面量而不是 var(--navh)，是因为 --navh 定义在 #main 上，页脚取不到这个变量；
   76 = 68+8、70 = 62+8，与第 1 节同一口径。 */
.footer [id], .footer[id] { scroll-margin-top: 76px; }
@media (max-width:620px) { .footer [id], .footer[id] { scroll-margin-top: 70px; } }
