/* 首屏「AI 核心 · 业务脉冲」（2026-10-01 第二轮：字体 / 光效 / 文字联动 / 交互整体精修）· 配合 qidian-hero-pulse.js
   页头内联脚本先给 html 加 qp-intro（首屏先黑着），引擎开场后给 .hero 加 qp-lit，文字依次出现。
   没有 3D 的设备看到静帧海报 hero-pulse-poster.webp。
   字体：中文标题 思源宋体（只含首屏用字的子集）；英文与数字 Instrument Serif；英文小字 JetBrains Mono。均为 OFL 开源字体，随站自带。 */
@font-face{font-family:"QD Serif SC";src:url(/assets/fonts/qd-serif-site.woff2?v=1001a) format("woff2");font-weight:200 900;font-display:swap}
@font-face{font-family:"QD Instrument";src:url(/assets/fonts/qd-instrument.woff2?v=1001c) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"QD Instrument";src:url(/assets/fonts/qd-instrument-italic.woff2?v=1001c) format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"QD Mono";src:url(/assets/fonts/qd-mono.woff2?v=1001c) format("woff2");font-weight:100 800;font-display:swap}

.hero{--ink:#f3f1ec;--mist:#9fb0c2;--gold:#e9cf9f;--blue:#a9c6ff;
  --serif-sc:"QD Serif SC","Songti SC","STSong","Noto Serif SC",serif;
  --latin:"QD Instrument","Times New Roman",serif;--mono:"QD Mono",ui-monospace,"SF Mono",Menlo,monospace}
.hero{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
.hero .scene{background:#04070b url(/assets/hero-pulse-poster.webp?v=1001a) 62% 50%/cover no-repeat;transform:none!important;transition:none!important}
.hero .camera{animation:none!important}
.hero .light,.hero .edgeglow{display:none}
.qp-canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.hero.qp-on .scene,.qp-intro .hero .scene{background-image:none}

/* 暗角：左侧给文字压暗；再加一层跟着鼠标走的极淡柔光 */
.hero .shade{background:
  radial-gradient(520px circle at var(--gx,-999px) var(--gy,-999px),#7fa6ff0d,transparent 70%),
  linear-gradient(90deg,#04070bf2 0%,#04070bc4 26%,#04070b4d 44%,transparent 58%),
  linear-gradient(0deg,#04070be6,transparent 26%),
  linear-gradient(180deg,#04070b99,transparent 14%)}

/* ---------------- 排版 ---------------- */
html body.approved-home .hero .webcopy .eyebrow{font:500 12px/1 var(--serif-sc);letter-spacing:.32em;color:#b9c6d2;gap:16px}
html body.approved-home .hero .webcopy .eyebrow:before{width:44px;background:linear-gradient(90deg,transparent,#c9d4de)}
html body.approved-home .hero .webcopy .eyebrow:after{content:"ENTERPRISE AI · CONSULTING & DELIVERY";font:400 10px/1 var(--mono);letter-spacing:.22em;color:#6f8396;padding-left:16px;border-left:1px solid #ffffff1f}
html body.approved-home .hero .webcopy{top:clamp(110px,15vh,170px)}
html body.approved-home .hero .webcopy h1{font-family:var(--serif-sc);font-weight:500;font-size:clamp(78px,min(8.4vw,13vh),146px);line-height:1.04;letter-spacing:-.02em;color:var(--ink);
  font-feature-settings:"palt" 1,"kern" 1;margin:26px 0 24px}
/* 「AI」用英文衬线，字号做光学补偿，和宋体的字面一样高 */
.hero .webcopy h1 .qp-ai{font-family:var(--latin);font-weight:400;font-size:1.12em;letter-spacing:-.01em;margin-left:.12em;
  background:linear-gradient(180deg,#ffffff 20%,#c9d8f2 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
/* 第二行：字距收紧，光流到达时扫过一道光 */
html body.approved-home .hero .webcopy h1 span:not(.qp-ai){display:inline-block;font-size:.66em;letter-spacing:.02em;font-weight:400;
  background:linear-gradient(100deg,#e8ebf0 0%,#e8ebf0 40%,#ffffff 48%,#f6dfb4 50%,#ffffff 52%,#e8ebf0 60%,#e8ebf0 100%) 120% 0/250% 100% no-repeat,#e8ebf0;
  -webkit-background-clip:text;background-clip:text;color:transparent;margin-top:.12em}
.hero .webcopy h1 span.qp-sweep{animation:qpSweep 1.25s cubic-bezier(.3,.6,.2,1) both}
@keyframes qpSweep{from{background-position:120% 0}to{background-position:-30% 0}}
html body.approved-home .hero .webcopy p{font-size:16px;line-height:1.9;margin-bottom:24px;color:#c3cfd9;letter-spacing:.04em;max-width:30em}

/* 「正在接入」：跟着动画切换的一行 */
.qp-status{display:flex;align-items:center;gap:12px;width:max-content;max-width:100%;margin:0 0 26px;padding:9px 16px 9px 13px;
  border:1px solid #ffffff14;border-radius:40px;background:linear-gradient(90deg,#0d1826b3,#0a121c66);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  color:var(--ink);font-size:13px;letter-spacing:.06em;transition:border-color .35s,background .35s,opacity 1s,transform 1.2s,filter 1s}
.qp-status i{width:7px;height:7px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 0 #e9cf9f88;animation:qpPing 2.4s ease-out infinite}
@keyframes qpPing{0%{box-shadow:0 0 0 0 #e9cf9f80}70%,100%{box-shadow:0 0 0 9px #e9cf9f00}}
.qp-status em{font:normal 400 10px/1 var(--mono);letter-spacing:.2em;color:#7d90a3}
.qp-st-txt{display:inline-flex;align-items:baseline;gap:10px;opacity:0;transform:translateY(5px);filter:blur(4px)}
.qp-st-txt.in{animation:qpIn .55s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes qpIn{to{opacity:1;transform:none;filter:none}}
.qp-status b{font-weight:500;font-family:var(--serif-sc);font-size:14px;letter-spacing:.12em}
.qp-status small{font-size:12px;color:#8fa2b6;letter-spacing:.04em}
.qp-status s{text-decoration:none;color:#8fa2b6;transition:transform .3s,color .3s}
.qp-status:hover{border-color:#e9cf9f55;background:linear-gradient(90deg,#16202ecc,#0a121c88)}
.qp-status:hover s{transform:translate(3px,-3px);color:var(--gold)}

/* 主按钮：磁吸（JS 写 transform）+ 跟手扫光；次链接：下划线从左长出 */
html body.approved-home .hero .webcopy .herocta{position:relative;overflow:hidden;isolation:isolate;gap:22px;padding:15px 26px;font-size:14px;letter-spacing:.06em;
  background:#f3f1ec;color:#0f1a24;box-shadow:0 8px 30px -8px #a9c6ff40,0 0 0 1px #ffffff40 inset;
  transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s,background .25s,opacity 1s cubic-bezier(.2,.7,.2,1),filter 1s}
.hero .webcopy .herocta:before{content:"";position:absolute;inset:0;z-index:-1;opacity:0;transition:opacity .3s;
  background:radial-gradient(120px circle at var(--mx,50%) 50%,#ffffff,#dfe9ff 45%,transparent 75%)}
.hero .webcopy .herocta:hover{box-shadow:0 14px 40px -10px #a9c6ff80,0 0 0 1px #ffffff80 inset}
.hero .webcopy .herocta:hover:before{opacity:1}
.hero .webcopy .herocta:active{transform:scale(.97)!important}
.hero .webcopy .herocta .arrow{transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.hero .webcopy .herocta:hover .arrow{transform:translate(3px,-3px)}
html body.approved-home .hero .webcopy .quietlink{position:relative;font-size:13px;letter-spacing:.08em;color:#c9d4de;padding:6px 0;transition:color .3s,opacity 1s,transform 1.2s,filter 1s}
.hero .webcopy .quietlink:after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:linear-gradient(90deg,var(--gold),transparent);transform:scaleX(0);transform-origin:left;transition:transform .45s cubic-bezier(.2,.7,.2,1)}
.hero .webcopy .quietlink:hover{color:#fff}
.hero .webcopy .quietlink:hover:after{transform:none}
.hero .webcopy .quietlink span{transition:transform .35s}
.hero .webcopy .quietlink:hover span{transform:translateY(3px)}
.hero :is(.herocta,.quietlink,.qp-status,.qp-lab,.servicestrip a,.pause):focus-visible{outline:1px solid var(--gold);outline-offset:5px}

/* 底部三步：数字用英文衬线斜体，悬停时数字变金、上方一条细线长出 */
html body.approved-home .hero .servicestrip{border-top:1px solid #ffffff14}
html body.approved-home .hero .servicestrip a{position:relative;transition:transform .4s cubic-bezier(.2,.7,.2,1)}
.hero .servicestrip a:before{content:"";position:absolute;left:0;right:20%;top:-24px;height:1px;background:linear-gradient(90deg,var(--gold),transparent);transform:scaleX(0);transform-origin:left;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.hero .servicestrip a:hover:before{transform:none}
html body.approved-home .hero .servicestrip em{font-family:var(--latin);font-style:italic;font-size:30px;color:#8395a6;transition:color .35s}
.hero .servicestrip a:hover em{color:var(--gold)}
html body.approved-home .hero .servicestrip h2{font-family:var(--serif-sc);font-weight:500;font-size:18px;letter-spacing:.08em}
html body.approved-home .hero .servicestrip p{font-size:12px;color:#8193a5;letter-spacing:.04em}
html body.approved-home .hero .pause{font:400 10px/1 var(--mono);letter-spacing:.18em;padding:9px 14px;border-color:#ffffff26;background:#0b131c99;color:#a9b8c6}
html body.approved-home .hero .pause:hover{border-color:#e9cf9f66;color:#fff}

/* ---------------- 业务区标签 ---------------- */
.qp-labels{position:absolute;inset:0;pointer-events:none;z-index:1}
.qp-lab{position:absolute;left:0;top:0;pointer-events:auto;display:flex;align-items:baseline;gap:10px;
  padding:6px 10px 6px 18px;margin:-14px 0 0 10px;color:#d3dde8;white-space:nowrap;opacity:0;will-change:transform,opacity;transition:color .35s}
.qp-lab i{position:absolute;left:-10px;top:15px;width:22px;height:1px;background:linear-gradient(90deg,transparent,#9fc1ff99);transition:width .4s,background .4s}
.qp-lab b{font:500 13px/1.2 var(--serif-sc);letter-spacing:.16em}
.qp-lab span{font-size:12px;color:#8fa2b8;letter-spacing:.04em;opacity:0;transform:translateX(-6px);transition:opacity .45s,transform .45s}
.qp-lab:after{content:"↗";font-size:12px;color:var(--gold);opacity:0;transform:translate(-4px,2px);transition:opacity .3s,transform .3s}
.qp-lab.on{color:#fff3de}
.qp-lab.on b{text-shadow:0 0 18px #ffd9a055}
.qp-lab.focus span,.qp-lab.hot span{opacity:1;transform:none}
.qp-lab.hot{color:#fff}
.qp-lab.hot i{width:32px;background:linear-gradient(90deg,transparent,var(--gold))}
.qp-lab.hot:after{opacity:1;transform:none}
.hero.qp-hub-hover{cursor:pointer}

/* ---------------- 开场：文字依次浮现 ---------------- */
.hero .webcopy>*{animation:none!important;transition:opacity 1s cubic-bezier(.2,.7,.2,1),transform 1.2s cubic-bezier(.2,.7,.2,1),filter 1s ease}
html.qp-intro body .hero .webcopy>*,html body .hero.qp-on:not(.qp-lit) .webcopy>*{opacity:0!important;transform:translateY(18px);filter:blur(8px)}
.hero.qp-lit .webcopy>:nth-child(1){transition-delay:.05s}
.hero.qp-lit .webcopy>:nth-child(2){transition-delay:.2s}
.hero.qp-lit .webcopy>:nth-child(3){transition-delay:.45s}
.hero.qp-lit .webcopy>:nth-child(4){transition-delay:.6s}
.hero.qp-lit .webcopy>:nth-child(5){transition-delay:.72s}
.hero.qp-lit .webcopy>:nth-child(6){transition-delay:.84s}
.hero .webside,.hero .hero-showcase,.hero .servicestrip{transition:opacity 1.2s ease .9s}
.qp-intro .hero .webside,.qp-intro .hero .hero-showcase,.qp-intro .hero .servicestrip,
.hero.qp-on:not(.qp-lit) .webside,.hero.qp-on:not(.qp-lit) .hero-showcase,.hero.qp-on:not(.qp-lit) .servicestrip{opacity:0}

/* 右侧整块给网络：演示卡片和侧栏收起（下面「看具体的项目」有完整入口），标签本身就是入口 */
.hero .hero-showcase,.hero .webside{display:none!important}
@media(max-width:760px){
  .hero .scene{background-position:50% 20%}
  html body.approved-home .hero .webcopy .eyebrow:after{display:none}
  html body.approved-home .hero .webcopy h1{font-size:68px;line-height:1.12;margin:22px 0}
  .qp-status{margin:-4px 0 22px;padding:7px 13px 7px 11px;font-size:12px}
  .qp-status small{display:none}
  .qp-lab span,.qp-lab:after{display:none}
  .qp-lab b{font-size:11px}
}
@media (prefers-reduced-motion:reduce){.qp-canvas,.qp-labels,.qp-status{display:none}.hero .webcopy h1 span.qp-sweep{animation:none}}
