/* 销帮官网 · 组件层 ui.css（1029）
 * 界面语言从 3D 智能之城里取：近黑紫底（#06050b → #1d1a27 取样）、细发丝线、设备框四角刻度、等宽读数、光边扫过。
 * 发光只给「正在发生」的东西（悬停、选中、数据在跑），静止时克制。
 * 在 site.css 之后加载：只定义规格和组件，页面里的旧类名在这里统一映射到同一套组件。 */

:root{
  /* 间距：4 的倍数，十档 */
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;--s9:96px;--s10:128px;
  /* 区块节奏：相邻两个区块之间的总距离 = --sec-y；区块标题到内容 = --head-gap */
  --sec-y:clamp(72px,8vw,120px);
  --head-gap:clamp(28px,3vw,44px);
  --grid-gap:clamp(12px,1.4vw,20px);
  /* 正文行宽：中文 36 字左右最好读 */
  --measure:36em;
  /* 面：三层深度（底 / 面板 / 抬起），全部取自城市夜景 */
  --surf-0:#05040d;--surf-1:#0b0920;--surf-2:#12102a;
  --edge:rgba(160,140,255,.14);--edge-2:rgba(160,140,255,.28);
  --rr:8px;--rr-sm:6px;--rr-lg:12px;
  /* 字号阶梯 */
  --fs-d1:clamp(34px,4.6vw,64px);--fs-d2:clamp(26px,3vw,40px);--fs-h3:clamp(17px,1.3vw,20px);--fs-body:16px;--fs-sm:14px;--fs-xs:12px;
}

/* ---------- 区块节奏：每个 .sec 上下各占一半，相邻区块自然是一个 --sec-y；不再靠行内 padding-top:0 ---------- */
.sec{padding:calc(var(--sec-y) / 2) 0}
main>.sec:last-child,main>section:last-child{padding-bottom:var(--sec-y)}
.fx-hero+.sec,.cabin-hero+.sec,.plain-hero+.sec,.city-hero+div .sec:first-child,.stage-hero+.sec{padding-top:calc(var(--sec-y) * .6)}
.sec-head{margin-bottom:0}
.sec>.wrap.grid,.sec>.wrap>.grid{gap:var(--head-gap)}

/* ---------- 区块标题：编号 + 英文标签 + 标题 + 导语，右侧可挂一个动作 ---------- */
main{counter-reset:sec}
.sec-head{display:grid;gap:var(--s3);grid-template-columns:minmax(0,1fr) auto;align-items:end;column-gap:var(--s6)}
.sec-head>*{grid-column:1}
.sec-head>.btn,.sec-head>a.btn{grid-column:2;grid-row:1 / span 3;align-self:end}
.sec-head .eyebrow{counter-increment:sec;display:inline-flex;align-items:center;gap:10px;font-size:11px;letter-spacing:.24em}
.sec-head .eyebrow::before{content:counter(sec,decimal-leading-zero);color:var(--ink);opacity:.55;font-variant-numeric:tabular-nums}
.sec-head .eyebrow::after{content:"";width:28px;height:1px;background:linear-gradient(90deg,var(--d),transparent);order:-1;display:none}
.sec-head h2{font-size:var(--fs-d2);font-weight:400;letter-spacing:.02em;max-width:22em}
.sec-head .lead{max-width:var(--measure);font-size:clamp(15px,1.15vw,17px)}
@media (max-width:720px){.sec-head{grid-template-columns:1fr}.sec-head>.btn,.sec-head>a.btn{grid-column:1;grid-row:auto;justify-self:start}}

/* ---------- 设备框（面板）：发丝边 + 四角刻度 + 悬停时一道光边扫过 ----------
 * 全站所有「卡片」都走这一套：通用卡、城市目录、舱卡、套餐、服务、步骤、知识库、顺路卡…… */
.card,.zone,.dist,.kb-uses a,.neighbors a,.plan,.pl-svc li,.kb-flow li,.step5 li,.lead-box,.pf-fold,.trial-strip,.hero-next a,.ptable-wrap,.pl-faq details{
  --tk:color-mix(in srgb,var(--d) 55%,transparent);
  position:relative;border:1px solid var(--edge);border-radius:var(--rr);
  background:linear-gradient(180deg,rgba(22,18,48,.5),rgba(11,9,32,.72));
  transition:border-color var(--t2) var(--eu),background var(--t2) var(--eu),transform var(--t2) var(--eo),box-shadow var(--t2) var(--eu)}
.card::before,.zone::before,.dist::before,.kb-uses a::before,.neighbors a::before,.plan::before,.pl-svc li::before,.kb-flow li::before,.step5 li::before,.lead-box::before,.hero-next a::before{
  content:"";position:absolute;inset:-1px;pointer-events:none;border-radius:inherit;z-index:2;opacity:.75;transition:opacity var(--t2) var(--eu);
  background:
    linear-gradient(var(--tk),var(--tk)) left top/10px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) left top/1px 10px no-repeat,
    linear-gradient(var(--tk),var(--tk)) right top/10px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) right top/1px 10px no-repeat,
    linear-gradient(var(--tk),var(--tk)) left bottom/10px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) left bottom/1px 10px no-repeat,
    linear-gradient(var(--tk),var(--tk)) right bottom/10px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) right bottom/1px 10px no-repeat}
/* 光边：顶边一道 1px 亮线，悬停时从左扫到右 */
.card::after,.zone::after,.dist::after,.kb-uses a::after,.neighbors a::after,.plan::after,.pl-svc li::after,.kb-flow li::after,.step5 li::after,.hero-next a::after{
  content:"";position:absolute;left:0;right:0;top:-1px;height:1px;pointer-events:none;z-index:2;
  background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--d) 90%,#fff),transparent);
  transform:scaleX(0);transform-origin:left;opacity:0;transition:transform .7s var(--eo),opacity var(--t2) var(--eu)}
:is(.card,.zone,.dist,.kb-uses a,.neighbors a,.plan,.pl-svc li,.kb-flow li,.step5 li,.hero-next a):is(:hover,.is-hover){border-color:color-mix(in srgb,var(--d) 38%,var(--edge))}
:is(.card,.zone,.dist,.kb-uses a,.neighbors a,.plan,.pl-svc li,.kb-flow li,.step5 li,.hero-next a):is(:hover,.is-hover)::before{opacity:1}
:is(.card,.zone,.dist,.kb-uses a,.neighbors a,.plan,.pl-svc li,.kb-flow li,.step5 li,.hero-next a):is(:hover,.is-hover)::after{transform:scaleX(1);opacity:1}
a:is(.card,.kb-uses a,.neighbors a):hover,.neighbors a:hover,.kb-uses a:hover{transform:translateY(-2px)}
:is(.card,.zone,.dist,.kb-uses a,.neighbors a,.plan,.pl-svc li,.kb-flow li,.step5 li,.hero-next a):focus-visible{outline:none;border-color:var(--d);box-shadow:0 0 0 3px color-mix(in srgb,var(--d) 30%,transparent)}

/* 面板里的排版统一 */
.card h3,.kb-uses h3,.pl-svc h3,.kb-flow h3,.step5 h3{font-size:var(--fs-h3);font-weight:500;letter-spacing:.02em;margin:0 0 var(--s2)}
.card p,.kb-uses p,.pl-svc p,.kb-flow p,.step5 p{color:var(--mute);font-size:var(--fs-sm);line-height:1.75}

/* ---------- 读数（数字条）：等宽标签在上、数字、底部细刻度；进视口数字滚上来 ---------- */
.stats{border-radius:var(--rr);border-color:var(--edge);background:var(--edge)}
.stats div{background:var(--surf-1);padding:var(--s5) var(--s5) var(--s4);position:relative;display:grid;gap:6px}
.stats div::after{content:"";position:absolute;left:var(--s5);right:var(--s5);bottom:10px;height:4px;
  background:repeating-linear-gradient(90deg,rgba(160,140,255,.22) 0 1px,transparent 1px 8px);opacity:.6}
.stats b{font-weight:300;letter-spacing:.01em;font-variant-numeric:tabular-nums}
.stats span{font-size:13px;letter-spacing:.04em;color:var(--mute)}

/* ---------- 步骤 / 时间线：编号节点 + 进场时连线画出来 ---------- */
.kb-flow,.step5,.pl-svc{counter-reset:none;gap:var(--grid-gap)}
.kb-flow li,.step5 li,.pl-svc li{padding:var(--s5);display:grid;gap:var(--s2);align-content:start}
.kb-flow li>span,.step5 li>span,.pl-svc li>span{font:500 12px/1 var(--mono);letter-spacing:.14em;color:var(--d);display:inline-flex;align-items:center;gap:10px}
.kb-flow li>span::after,.step5 li>span::after,.pl-svc li>span::after{content:"";flex:1;height:1px;min-width:24px;background:linear-gradient(90deg,color-mix(in srgb,var(--d) 50%,transparent),transparent);transform:scaleX(0);transform-origin:left;transition:transform var(--t4) var(--eo) .2s}
.in>.kb-flow li>span::after,.kb-flow.in li>span::after,li.in>span::after,.in li>span::after{transform:none}
.ab-tline::before{transform:scaleX(0);transform-origin:left;transition:transform 1.6s var(--eo)}
.ab-tline.in::before,.in .ab-tline::before{transform:none}

/* ---------- 分段选择（页签 / 筛选 / chips）：一套 ---------- */
.chips button,.gtabs button,.vtabs button,.newstags button{border-radius:var(--rr-sm);font-size:13px;letter-spacing:.02em}

/* ---------- 按钮：主按钮实心 + 箭头位移；次按钮发丝边 ---------- */
.btn{border-radius:var(--rr-sm);letter-spacing:.02em;transition:border-color var(--t2) var(--eu),background var(--t2) var(--eu),transform var(--t2) var(--eo),box-shadow var(--t2) var(--eu),color var(--t2) var(--eu)}
.btn.primary{background:linear-gradient(180deg,#c3a5ff,#9a78ff);box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 0 0 1px rgba(177,140,255,.4)}
.btn.primary:hover{box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 0 0 1px rgba(177,140,255,.6),0 10px 32px -8px rgba(143,107,255,.6)}
.btn:active{transform:translateY(1px)}

/* ---------- 媒体框：圆角收小、四角刻度、悬停扫描线 ---------- */
.vtile .pv,.scard .cv{border-radius:var(--rr-sm)}
.vtile .pv::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 0 45%,rgba(199,168,255,.16) 50%,transparent 55% 100%);background-size:100% 220%;background-position:0 -120%;opacity:0;transition:opacity var(--t2) var(--eu)}
.vtile:hover .pv::after{opacity:1;animation:uScan 1.4s var(--eu) 1}
@keyframes uScan{to{background-position:0 120%}}
.vtile .du,.vtile .tg{font-family:var(--mono);font-size:11px;letter-spacing:.08em;border-radius:4px}

/* ---------- 留资：控制台面板（网格底 + 编号字段） ---------- */
.lead-box{border-radius:var(--rr-lg);background:
  radial-gradient(80% 120% at 0% 0%,rgba(143,107,255,.16),transparent 60%),
  repeating-linear-gradient(90deg,rgba(160,140,255,.045) 0 1px,transparent 1px 32px),
  repeating-linear-gradient(0deg,rgba(160,140,255,.045) 0 1px,transparent 1px 32px),var(--surf-1)}
.lead-form input{border-radius:var(--rr-sm);background:rgba(5,4,13,.7);border-color:var(--edge-2);transition:border-color var(--t2) var(--eu),box-shadow var(--t2) var(--eu)}
.lead-form input:focus{border-color:var(--d);box-shadow:0 0 0 3px color-mix(in srgb,var(--d) 22%,transparent)}

/* ---------- 位置条：回到城市 + 面包屑并成一行（原来上下两行，首屏白占一行高） ---------- */
.locbar{display:flex;align-items:center;gap:var(--s4);flex-wrap:wrap}
.locbar .back-city{margin:0}

/* ---------- 首屏：三种首屏统一字号阶梯 ---------- */
.fx-hero h1,.cabin-hero h1,.plain-hero h1{font-size:var(--fs-d1);font-weight:300;letter-spacing:.03em;line-height:1.18}
.fx-hero .lead,.cabin-hero .lead,.plain-hero .lead{max-width:var(--measure);font-size:clamp(15px,1.2vw,18px)}

@media (prefers-reduced-motion:reduce){
  .card::after,.zone::after,.dist::after,.vtile .pv::after{display:none}
}

/* ---------- 状态：加载中（骨架扫光）/ 空 / 出错 / 完成 ---------- */
.is-loading{position:relative;overflow:hidden;color:transparent!important}
.is-loading::selection{background:none}
.is-loading>*{visibility:hidden}
.is-loading::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(177,140,255,.10) 50%,transparent 70%),var(--surf-2);background-size:220% 100%,auto;animation:uSk 1.4s linear infinite}
@keyframes uSk{from{background-position:120% 0,0 0}to{background-position:-120% 0,0 0}}
.empty{display:grid;justify-items:start;gap:var(--s2);padding:var(--s6);border:1px dashed var(--edge-2);border-radius:var(--rr);color:var(--mute);font-size:var(--fs-sm)}
.empty::before{content:"NO SIGNAL";font:500 11px/1 var(--mono);letter-spacing:.24em;color:var(--faint)}
.lead-form input:user-invalid{border-color:#ff7a9a;box-shadow:0 0 0 3px rgba(255,122,154,.16)}
.lead-form .done{display:flex;align-items:center;gap:10px;padding:var(--s4);border:1px solid rgba(157,255,207,.35);border-radius:var(--rr-sm);background:rgba(157,255,207,.06)}
.lead-form .done::before{content:"✓";display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#9dffcf;color:#05040d;font-size:12px;font-weight:700}
/* 状态点：在线（呼吸）/ 即将上线（虚线环） */
.dot-on,.dot-soon{display:inline-block;width:7px;height:7px;border-radius:50%;flex:0 0 auto}
.dot-on{background:#9dffcf;box-shadow:0 0 0 0 rgba(157,255,207,.5);animation:uPulse 2.4s var(--eu) infinite}
.dot-soon{border:1px dashed var(--faint)}
@keyframes uPulse{0%{box-shadow:0 0 0 0 rgba(157,255,207,.45)}70%{box-shadow:0 0 0 7px rgba(157,255,207,0)}100%{box-shadow:0 0 0 0 rgba(157,255,207,0)}}
@media (prefers-reduced-motion:reduce){.is-loading::after,.dot-on{animation:none}}

/* ---------- 城市目录 · 区域设备面板（1029 样板区块 ①） ---------- */
.zones{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:var(--grid-gap)}
.zone{grid-column:span 2;padding:var(--s5);display:grid;gap:var(--s3);align-content:start;overflow:hidden}
/* 第一排放清单最长的两区（6 / 5 座），第二排三区（3 / 4 / 2 座），两排高度差最小 */
.zones .zone:nth-child(2),.zones .zone:nth-child(3){grid-column:span 3}
.zone-core{grid-column:1 / -1;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--s6);
  background:radial-gradient(50% 180% at 0% 50%,rgba(217,204,255,.12),transparent 70%),linear-gradient(180deg,rgba(22,18,48,.5),rgba(11,9,32,.72))}
.zone-core p{color:var(--mute);font-size:var(--fs-sm);max-width:60em}
.zone-core p a{color:var(--ink);border-bottom:1px solid var(--edge-2);transition:border-color var(--t2) var(--eu)}
.zone-core p a:hover{border-color:var(--d)}
.zone header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:2px var(--s3)}
.z-no{grid-column:1 / -1;font:500 11px/1 var(--mono);letter-spacing:.24em;color:var(--d)}
.zone h3{font-size:20px;font-weight:500;letter-spacing:.04em;margin:0}
.z-read{font:12px/1 var(--mono);color:var(--mute);letter-spacing:.06em}.z-read b{color:var(--ink);font-weight:500;font-size:15px}
/* 分段刻度：每座舱一格，在线的亮 */
.z-seg{display:flex;gap:3px;height:4px}
.z-seg i{flex:1;border-radius:1px;background:rgba(255,255,255,.07);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--eo);transition-delay:calc(var(--k) * 60ms + 200ms)}
.z-seg i.on{background:var(--d);box-shadow:0 0 8px color-mix(in srgb,var(--d) 70%,transparent)}
.zone.in .z-seg i{transform:none}
.zone>p{font-size:13px;color:var(--mute);line-height:1.7}
.zone[data-no]{background-image:linear-gradient(180deg,color-mix(in srgb,var(--d) 9%,transparent),transparent 45%),linear-gradient(180deg,rgba(22,18,48,.5),rgba(11,9,32,.72))}
/* 设备清单 */
.z-list{list-style:none;margin:0;padding:0;display:grid;border-top:1px solid var(--edge)}
.z-list a{display:grid;grid-template-columns:auto minmax(0,1fr) auto 14px;align-items:center;gap:10px;padding:10px 4px;border-bottom:1px solid var(--edge);font-size:15px;position:relative;transition:background var(--t2) var(--eu),padding var(--t2) var(--eo)}
.z-list a::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,color-mix(in srgb,var(--d) 16%,transparent),transparent 70%);opacity:0;transition:opacity var(--t2) var(--eu)}
.z-list a:is(:hover,.is-hover)::before,.z-list a:focus-visible::before{opacity:1}
.z-list a:hover{padding-left:10px}
.z-list b{font-weight:400;position:relative}
.z-list small{font:11px/1 var(--mono);letter-spacing:.08em;color:var(--faint);position:relative;white-space:nowrap}
.z-list em{font-style:normal;color:var(--d);opacity:0;transform:translateX(-6px);transition:opacity var(--t2) var(--eu),transform var(--t2) var(--eo);position:relative}
.z-list a:hover em{opacity:1;transform:none}
.z-list a.is-soon{color:var(--mute)}.z-list a.is-soon b{opacity:.75}
@media (max-width:1100px){.zones{grid-template-columns:1fr 1fr}.zone,.zones .zone:nth-child(2),.zones .zone:nth-child(3){grid-column:auto}.zones .zone:last-child{grid-column:1 / -1}.zone-core{grid-template-columns:1fr;gap:var(--s3)}}
@media (max-width:640px){.zones{grid-template-columns:1fr}.zones .zone:last-child{grid-column:auto}}

/* ---------- 舱页 · 监视器 + 频道条 + 侧栏（1029 样板区块 ②） ---------- */
.cabin-body{grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr);gap:clamp(24px,3.5vw,56px);padding-top:calc(var(--sec-y) * .5);padding-bottom:calc(var(--sec-y) * .5)}
.mon{display:grid;gap:var(--s4);min-width:0}
.mon-screen{position:relative;display:block;width:100%;aspect-ratio:16/9;padding:0;border:1px solid var(--edge-2);border-radius:var(--rr);overflow:hidden;background:#07061a;cursor:pointer;color:var(--ink);text-align:left}
.mon-screen img,.mon-screen video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.mon-screen video{opacity:0;transition:opacity .8s var(--eu)}.mon-screen video.on{opacity:1}
.mon-screen::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(5,4,13,.55),transparent 22%,transparent 62%,rgba(5,4,13,.85)),repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 3px)}
.mon-screen::after{content:"";position:absolute;inset:10px;z-index:1;pointer-events:none;--tk:color-mix(in srgb,var(--d) 75%,#fff);
  background:linear-gradient(var(--tk),var(--tk)) left top/18px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) left top/1px 18px no-repeat,linear-gradient(var(--tk),var(--tk)) right top/18px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) right top/1px 18px no-repeat,
  linear-gradient(var(--tk),var(--tk)) left bottom/18px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) left bottom/1px 18px no-repeat,linear-gradient(var(--tk),var(--tk)) right bottom/18px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) right bottom/1px 18px no-repeat;opacity:.7}
.mon-hud{position:absolute;inset:auto 22px 20px;z-index:2;display:grid;grid-template-columns:1fr auto;gap:6px 12px;align-items:end}
.mon-hud i{font:500 11px/1 var(--mono);letter-spacing:.2em;color:var(--d);font-style:normal}
.mon-hud em{font:12px/1 var(--mono);color:var(--mute);font-style:normal;grid-row:1 / span 2;grid-column:2;align-self:end}
.mon-hud b{font-size:clamp(18px,1.8vw,26px);font-weight:400;letter-spacing:.02em;text-shadow:0 2px 12px rgba(0,0,0,.6)}
.mon-play{position:absolute;left:50%;top:50%;z-index:2;width:76px;height:76px;margin:-38px 0 0 -38px;border-radius:50%;border:1px solid rgba(255,255,255,.5);background:rgba(5,4,13,.35);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:transform var(--t2) var(--eo),background var(--t2) var(--eu),border-color var(--t2) var(--eu)}
.mon-play::before{content:"";position:absolute;left:31px;top:26px;border:12px solid transparent;border-left:19px solid #fff;border-right:0}
.mon-play::after{content:"";position:absolute;inset:-9px;border-radius:50%;border:1px solid color-mix(in srgb,var(--d) 60%,transparent);animation:kfRing 2.8s ease-out infinite}
.mon-screen:hover .mon-play{transform:scale(1.08);background:color-mix(in srgb,var(--d) 40%,rgba(5,4,13,.4));border-color:#fff}
.mon-rail-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s4);padding-top:var(--s2);border-top:1px solid var(--edge)}
.mon-rail-head span{font:500 11px/1 var(--mono);letter-spacing:.22em;color:var(--mute)}
.mon-rail-head small{font-size:12px;color:var(--faint)}
.mon-rail{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 3 * var(--s3)) / 4);gap:var(--s3);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:thin;scrollbar-color:var(--edge-2) transparent;padding-bottom:var(--s2)}
.mon-rail .vtile{scroll-snap-align:start}
.mon-rail .vtile b{font-size:13px;font-weight:400}.mon-rail .vtile small{display:none}
.mon-rail .vtile .tg{background:rgba(5,4,13,.7);color:var(--d)}
/* 侧栏：跟着滚，三块之间用发丝线分 */
.cabin-body .side{position:sticky;top:calc(var(--toph,64px) + 24px);display:grid;gap:0;align-content:start}
.side-blk{display:grid;gap:var(--s3);padding:0 0 var(--s5);margin-bottom:var(--s5);border-bottom:1px solid var(--edge)}
.side-blk h2{font-size:13px;font-weight:500;font-family:var(--mono);letter-spacing:.2em;color:var(--mute);display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.side-blk h2 small{font-family:var(--font);letter-spacing:0;color:var(--faint);font-size:12px;font-weight:400}
.side .steps{margin:0}
.side .outs a{display:inline-flex;align-items:center;gap:6px}
.side .outs a i{font-style:normal;font-size:9px;color:var(--d)}
.side .staff{margin-bottom:var(--s5)}
.cabin-body.no-v .side{position:static}
@media (max-width:980px){.cabin-body{grid-template-columns:1fr}.cabin-body .side{position:static}.mon-rail{grid-auto-columns:42%}}
@media (max-width:640px){.mon-rail{grid-auto-columns:64%}.mon-play{width:60px;height:60px;margin:-30px 0 0 -30px}.mon-play::before{left:24px;top:19px;border-width:11px;border-left-width:17px}}
@media (prefers-reduced-motion:reduce){.mon-play::after{animation:none}}
.mon-rail .vtile .pl{opacity:0;transform:scale(.8);transition:opacity var(--t2) var(--eu),transform var(--t2) var(--eo)}.mon-rail .vtile:hover .pl,.mon-rail .vtile:focus-visible .pl{opacity:1;transform:none}

/* ---------- 发展历程 · 轨道（1029 样板区块 ③）：一条光轨从根基画到现在，站点依次点亮，「现在」一站呼吸 ---------- */
.track{--n:4;list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:var(--grid-gap);position:relative}
.track::before,.track::after{content:"";position:absolute;left:0;right:0;top:44px;height:1px}
.track::before{background:var(--edge-2)}
.track::after{background:linear-gradient(90deg,color-mix(in srgb,var(--d) 30%,transparent),var(--d) 80%,#9dffcf);box-shadow:0 0 12px color-mix(in srgb,var(--d) 60%,transparent);transform:scaleX(0);transform-origin:left;transition:transform 1.8s var(--eo) .2s}
.track.in::after{transform:none}
.track li{position:relative;display:grid;gap:var(--s2);align-content:start;padding:0 var(--s4) 0 0}
.t-when{font:500 12px/1 var(--mono);letter-spacing:.16em;color:var(--d);height:32px;display:flex;align-items:flex-end}
.t-node{position:relative;width:11px;height:11px;margin:1px 0 var(--s3);border-radius:50%;background:var(--surf-0);border:1px solid var(--edge-2);transition:border-color .4s var(--eu),box-shadow .4s var(--eu),background .4s var(--eu);transition-delay:calc(var(--k) * .42s + .3s)}
.track.in .t-node{border-color:var(--d);background:color-mix(in srgb,var(--d) 40%,var(--surf-0));box-shadow:0 0 0 4px color-mix(in srgb,var(--d) 14%,transparent),0 0 14px var(--d)}
.track h3{font-size:var(--fs-h3);font-weight:500;margin:0}
.track p{color:var(--mute);font-size:var(--fs-sm);line-height:1.75}
.track li>*:not(.t-node){opacity:0;transform:translateY(10px);transition:opacity var(--t3) var(--eo),transform var(--t3) var(--eo);transition-delay:calc(var(--k) * .42s + .4s)}
.track.in li>*{opacity:1;transform:none}
.track .now .t-when{color:#9dffcf}
.track .now h3{color:#d9ffee}
.track .now .t-node{--d:#9dffcf}
.track.in .now .t-node{animation:uPulse 2.4s var(--eu) infinite 2s}
.track .now p b{color:var(--ink);font-weight:500;font-variant-numeric:tabular-nums}
.track .now a{font-size:13px;color:#9dffcf;width:max-content;border-bottom:1px solid rgba(157,255,207,.35)}
@media (max-width:900px){
  .track{grid-template-columns:1fr;gap:var(--s6);padding-left:28px}
  .track::before,.track::after{left:5px;right:auto;top:6px;bottom:6px;width:1px;height:auto}
  .track::after{background:linear-gradient(180deg,color-mix(in srgb,var(--d) 30%,transparent),var(--d) 80%,#9dffcf);transform:scaleY(0);transform-origin:top}
  .track.in::after{transform:none}
  .t-node{position:absolute;left:-28px;top:0;margin:0}
  .t-when{height:auto}
}
@media (prefers-reduced-motion:reduce){.track li>*{opacity:1!important;transform:none!important}.track::after{transform:none}}

/* ---------- 样张页 /_ui/ 自用 ---------- */
.sg .sg-blk{display:grid;grid-template-columns:220px minmax(0,1fr);gap:var(--s6);padding:var(--s7) 0;border-top:1px solid var(--edge)}
.sg .sg-blk>header h3{font-size:16px;font-weight:500}.sg .sg-blk>header small{display:block;margin-top:6px;color:var(--faint);font-size:12px;line-height:1.6}
.sg .sg-row{display:flex;flex-wrap:wrap;gap:var(--s4);align-items:center}
.sg .sg-col{display:grid;gap:var(--s3)}
.sg .sg-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--grid-gap)}
.sg .sg-sw{display:grid;gap:4px;width:120px}.sg .sg-sw i{height:56px;border-radius:var(--rr-sm);border:1px solid var(--edge)}.sg .sg-sw b{font-weight:400;font-size:13px}
.sg code{font:11px var(--mono);color:var(--faint)}
.sg .sg-sp{display:flex;align-items:center;gap:var(--s4)}.sg .sg-sp i{height:10px;background:var(--d);border-radius:2px;opacity:.7}
.sg .sg-fs{display:grid;grid-template-columns:90px 1fr;align-items:baseline;gap:var(--s4)}
.sg .sg-dot{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:var(--mute)}
.sg .sg-motion{display:grid;gap:var(--s5)}
@media (max-width:900px){.sg .sg-blk{grid-template-columns:1fr}.sg .sg-3{grid-template-columns:1fr}}
.sg .sg-motion>.btn{justify-self:start}

/* =================== 套餐页 =================== */
/* 价目卡：规格单 —— 档位代号 / 价格读数 / 规格行；推荐档一圈流光边 */
.plans{gap:var(--grid-gap)}
.plan{padding:var(--s5) var(--s5) var(--s5);gap:var(--s2);background:linear-gradient(180deg,rgba(22,18,48,.6),rgba(8,7,22,.85))}
.pl-tier{font:500 11px/1 var(--mono);letter-spacing:.24em;color:var(--faint)}
.plan h3{font-size:19px;font-weight:500;margin:2px 0 0}
.plan .price{font-size:clamp(28px,2.4vw,36px);font-weight:300;font-variant-numeric:tabular-nums;letter-spacing:0;margin-top:var(--s3);padding-top:var(--s3);border-top:1px solid var(--edge)}
.plan .pl-pk{border-top:0;padding-top:0;gap:0;margin:var(--s2) 0 var(--s3)}
.plan .pl-pk li{display:flex;gap:10px;align-items:baseline;padding:8px 0;border-bottom:1px dashed rgba(160,140,255,.12)}
.plan .pl-pk li::before{content:"";flex:0 0 5px;height:5px;margin-top:-2px;align-self:center;border-radius:1px;background:color-mix(in srgb,var(--d) 70%,transparent)}
.plan .btn{margin-top:auto;width:100%}
.plan{grid-template-rows:auto auto auto auto auto 1fr auto}
.plan.hot{border-color:transparent;box-shadow:0 30px 80px -30px rgba(143,107,255,.55);isolation:isolate}
.plan.hot>*{position:relative;z-index:1}
.plan.hot::after{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;z-index:0;pointer-events:none;opacity:1;transform:none;top:-1px;height:auto;
  background:conic-gradient(from var(--ang,0deg),#9a78ff,#7fd8ff,#ffcf6b,#ff7ab8,#9a78ff);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);animation:uSpin 6s linear infinite}
@property --ang{syntax:"<angle>";inherits:false;initial-value:0deg}
@keyframes uSpin{to{--ang:360deg}}
.plan .badge{top:-10px;left:var(--s5);font:600 10px/1 var(--mono);letter-spacing:.14em;padding:6px 10px;border-radius:4px;background:linear-gradient(90deg,#c3a5ff,#7fd8ff);z-index:3}
/* 对比表：行悬停一条光带，列悬停整列亮起；推荐列常亮 */
.ptable-wrap{border-radius:var(--rr);background:var(--surf-1)}
.ptable thead th{font-size:15px;padding-top:18px;padding-bottom:14px;background:rgba(5,4,13,.4)}
.ptable thead th small{font-family:var(--mono);font-size:11px;letter-spacing:.04em}
.ptable tbody tr{transition:background var(--t1) var(--eu)}
.ptable tbody tr:hover{background:rgba(177,140,255,.06)}
.ptable tbody tr:hover th{color:var(--ink)}
.ptable .ok{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:color-mix(in srgb,var(--d) 16%,transparent);font-size:11px}
.ptable .no{opacity:.6}
.ptable .add{font-family:var(--mono);font-size:11px;padding:2px 6px;border:1px solid rgba(255,207,107,.35);border-radius:4px}
.ptable .hot{background:rgba(143,107,255,.07);box-shadow:inset 1px 0 0 rgba(177,140,255,.25),inset -1px 0 0 rgba(177,140,255,.25)}
.ptable:has(td:nth-child(2):hover) :is(td,th):nth-child(2),.ptable:has(td:nth-child(3):hover) :is(td,th):nth-child(3),.ptable:has(td:nth-child(4):hover) :is(td,th):nth-child(4),
.ptable:has(td:nth-child(5):hover) :is(td,th):nth-child(5),.ptable:has(td:nth-child(6):hover) :is(td,th):nth-child(6){background:rgba(127,216,255,.07)}
/* 六大服务：模块格，编号做成描边大数字 */
.pl-svc{background:var(--edge);border-color:var(--edge);border-radius:var(--rr);gap:1px}
.pl-svc li{border:0;border-radius:0;background:var(--surf-1);padding:var(--s6) var(--s5) var(--s5);position:relative;overflow:hidden}
.pl-svc li::before{display:none}
.pl-svc li>span{position:absolute;right:var(--s4);top:var(--s3);font:600 56px/1 var(--mono);letter-spacing:-.04em;color:transparent;-webkit-text-stroke:1px rgba(160,140,255,.22);transition:-webkit-text-stroke-color var(--t2) var(--eu),transform var(--t3) var(--eo)}
.pl-svc li>span::after{display:none}
.pl-svc li:hover>span{-webkit-text-stroke-color:var(--d);transform:translateY(-3px)}
.pl-svc li:hover{background:linear-gradient(180deg,rgba(177,140,255,.07),transparent 60%),var(--surf-1)}
.pl-svc h3{position:relative;max-width:12em}
/* 不止套餐：两块终端面板 */
.pl-ent .card{padding:var(--s6)}
.pl-ent .card .eyebrow{font-size:11px}
.pl-ent ul{border-top:1px solid var(--edge);gap:0;padding-top:0}
.pl-ent li{padding:10px 0;border-bottom:1px dashed rgba(160,140,255,.12)}
.pl-ent li::before{content:"›";font-family:var(--mono)}
/* FAQ：手风琴，展开时左边一条区色竖线 */
.pl-faq{gap:var(--s2)}
.pl-faq details{border-radius:var(--rr);padding:0 var(--s5)}
.pl-faq details::before{content:"";position:absolute;left:-1px;top:14px;bottom:14px;width:2px;border-radius:2px;background:var(--d);transform:scaleY(0);transition:transform var(--t2) var(--eo)}
.pl-faq details[open]::before{transform:none}
.pl-faq details[open]{border-color:color-mix(in srgb,var(--d) 35%,var(--edge));background:linear-gradient(90deg,rgba(157,255,207,.04),transparent 40%),var(--surf-1)}
.pl-faq summary{font-size:15px;align-items:center}
.pl-faq summary::after{content:"";flex:0 0 22px;height:22px;border-radius:50%;border:1px solid var(--edge-2);background:linear-gradient(var(--ink),var(--ink)) center/9px 1px no-repeat,linear-gradient(var(--ink),var(--ink)) center/1px 9px no-repeat;transition:transform var(--t2) var(--eo)}
.pl-faq details[open] summary::after{content:"";transform:rotate(45deg);border-color:var(--d)}
.trial-strip{border-style:solid;border-radius:var(--rr)}
@media (prefers-reduced-motion:reduce){.plan.hot::after{animation:none}}

/* =================== 知识库页 =================== */
/* 三类知识库：核心模块（同心环图标随悬停转、层代号） */
.kb-card{border-left:1px solid var(--edge);padding:var(--s6) var(--s5) var(--s5);gap:var(--s2)}
.kb-ico{position:relative;width:44px;height:44px;margin-bottom:var(--s3)}
.kb-ico s{position:absolute;inset:0;border-radius:50%;border:1px solid color-mix(in srgb,var(--d) 55%,transparent);transition:transform 1.2s var(--eo)}
.kb-ico s:nth-child(2){inset:9px;border-style:dashed}
.kb-ico s:nth-child(3){inset:18px;background:var(--d);border:0;box-shadow:0 0 14px var(--d)}
.kb-card:hover .kb-ico s:nth-child(1){transform:rotate(120deg) scale(1.08)}
.kb-card:hover .kb-ico s:nth-child(2){transform:rotate(-180deg)}
.kb-code{font:500 11px/1 var(--mono);letter-spacing:.22em;color:var(--d)}
.kb-card em{font:12px/1 var(--mono);letter-spacing:.06em;margin-top:var(--s2)}
/* 哪些舱在用：设备清单两栏 */
.kb-rows{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--s7);border-top:1px solid var(--edge)}
.kb-rows a{display:grid;grid-template-columns:auto 7em minmax(0,1fr) auto 14px;align-items:center;gap:var(--s4);padding:var(--s4) var(--s2);border-bottom:1px solid var(--edge);position:relative;transition:padding var(--t2) var(--eo)}
.kb-rows a::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,color-mix(in srgb,var(--d) 14%,transparent),transparent 70%);opacity:0;transition:opacity var(--t2) var(--eu)}
.kb-rows a:hover{padding-left:var(--s4)}.kb-rows a:hover::before{opacity:1}
.kb-rows h3{font-size:15px;font-weight:500;margin:0;position:relative}
.kb-rows p{font-size:13px;color:var(--mute);line-height:1.6;position:relative}
.kb-rows b{font:400 11px/1.3 var(--mono);color:var(--d);letter-spacing:.06em;text-align:right;position:relative;max-width:9em}
.kb-rows em{font-style:normal;color:var(--d);opacity:0;transition:opacity var(--t2) var(--eu),transform var(--t2) var(--eo);transform:translateX(-6px);position:relative}
.kb-rows a:hover em{opacity:1;transform:none}
@media (max-width:980px){.kb-rows{grid-template-columns:1fr}}
@media (max-width:640px){.kb-rows a{grid-template-columns:auto minmax(0,1fr) 14px;row-gap:4px}.kb-rows p,.kb-rows b{grid-column:2;text-align:left}.kb-rows em{grid-row:1;grid-column:3}}

/* =================== 页脚（1029）：状态条 + 品牌 + 三栏；手机折叠 =================== */
.foot{padding:0 0 var(--s6);border-top:1px solid var(--edge);background:linear-gradient(180deg,rgba(11,9,32,.6),var(--surf-0) 60%)}
.f-status{display:flex;flex-wrap:wrap;gap:var(--s3) var(--s6);align-items:center;padding:var(--s4) 0;margin-bottom:var(--s7);border-bottom:1px solid var(--edge);font:12px/1.4 var(--mono);letter-spacing:.08em;color:var(--mute)}
.f-status span:first-child{display:inline-flex;align-items:center;gap:8px;color:#9dffcf;letter-spacing:.2em}
.f-status b{display:inline;margin:0;color:var(--ink);font-weight:500}
.f-status a{margin-left:auto;color:var(--ink);font-size:14px;letter-spacing:.04em}
.foot .cols{grid-template-columns:1.3fr repeat(3,1fr);gap:var(--s6);margin-bottom:var(--s7)}
.f-brand{display:grid;gap:var(--s3);align-content:start;justify-items:start}
.f-brand img{width:36px;height:36px}
.f-brand b{font-size:18px;margin:0}
.f-brand p{color:var(--mute);font-size:14px;line-height:1.75}
/* 1109 页脚品牌栏：免费体验按钮 + 下方独立的公众号二维码（不套框，白底保证扫码对比度） */
.f-qr{display:flex;align-items:center;gap:var(--s4);margin:var(--s5) 0 0}
.f-qr span{flex:none;display:block;width:140px;height:140px;padding:7px;border-radius:12px;background:#fff;box-shadow:0 8px 26px rgba(0,0,0,.4)}
.f-qr img{display:block;width:100%;height:100%;border-radius:4px}
.f-qr figcaption{font-size:13px;line-height:1.7;color:var(--mute)}
.f-qr figcaption b{font-size:14px;margin:0 0 4px;color:var(--ink)}
.lead-box[id]{scroll-margin-top:calc(var(--toph,72px) + 24px)}
.fcol summary{list-style:none;cursor:default;color:var(--ink);font-weight:500;font-size:14px;margin-bottom:var(--s3);pointer-events:none}
.fcol summary::-webkit-details-marker{display:none}
.fcol ul{gap:0}
.fcol a{display:inline-block;padding:5px 0;color:var(--mute);transition:color var(--t1) var(--eu),transform var(--t2) var(--eo)}
.fcol a:hover{color:var(--ink);transform:translateX(3px)}
.foot .legal{border-top:1px solid var(--edge);padding-top:var(--s5);font-family:var(--mono);letter-spacing:.04em}
@media (max-width:980px){.foot .cols{grid-template-columns:1fr 1fr}.f-brand{grid-column:1 / -1}}
@media (max-width:640px){
  .foot .cols{grid-template-columns:1fr;gap:0}
  .f-brand{margin-bottom:var(--s5)}
  .fcol{border-top:1px solid var(--edge)}
  .fcol:last-child{border-bottom:1px solid var(--edge)}
  .fcol summary{pointer-events:auto;cursor:pointer;margin:0;padding:var(--s4) 0;display:flex;justify-content:space-between;align-items:center}
  .fcol summary::after{content:"";width:9px;height:9px;border-right:1px solid var(--mute);border-bottom:1px solid var(--mute);transform:rotate(45deg) translate(-2px,-2px);transition:transform var(--t2) var(--eo)}
  .fcol[open] summary::after{transform:rotate(-135deg)}
  .fcol ul{padding-bottom:var(--s4);grid-template-columns:1fr 1fr}
  .fcol a{padding:8px 0;min-height:40px}
  .f-status a{margin-left:0}
}

/* ---------- 网格不落单：列数由生成器按数量算（--cols），或按版面固定 ---------- */
.neighbors{grid-template-columns:repeat(var(--cols,4),minmax(0,1fr))}
.news-all{grid-template-columns:repeat(3,minmax(0,1fr))}
.sgrid-dir{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1100px){.neighbors{grid-template-columns:repeat(3,minmax(0,1fr))}.news-all,.sgrid-dir{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:820px){.neighbors,.news-all,.sgrid-dir{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.news-all{grid-template-columns:1fr}
  /* 手机：套餐卡横滑，不再 2 列落单 */
  .plans{grid-template-columns:none!important;grid-auto-flow:column;grid-auto-columns:78%;overflow-x:auto;scroll-snap-type:x mandatory;padding:12px 2px 8px;margin-inline:-2px}
  .plan{scroll-snap-align:center}
  /* 点击目标 ≥ 40px */
  .crumbs a,.crumbs span{display:inline-flex;align-items:center;min-height:40px}
  .back-city,.btn.sm{min-height:40px}
  .brand{min-height:40px}
}
@media (max-width:640px){.neighbors{grid-template-columns:none}}
/* 没片子的舱（军师、GEO 等）：侧栏内容铺成两栏，不再左边一条、右边空 564px */
.cabin-body.no-v{grid-template-columns:1fr}
.cabin-body.no-v .side{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);column-gap:var(--s8);align-items:start}
.cabin-body.no-v .side>.side-blk:first-child{grid-row:span 3;border-bottom:0;margin:0;padding:0}
.cabin-body.no-v .side>*:not(.side-blk:first-child){grid-column:2}
@media (max-width:820px){.cabin-body.no-v .side{grid-template-columns:1fr}.cabin-body.no-v .side>*{grid-column:auto!important;grid-row:auto!important}}

/* =================== 留资区（1029 定稿：方案 A「点亮」，原型 Lusion「Our Approach」按钮） =================== */
.lead-box{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,80px);align-items:center;padding:clamp(28px,4vw,56px)}
.lb-copy{display:grid;gap:var(--s4);align-content:center}
.lb-copy h2{font-size:var(--fs-d2);font-weight:400}
.lead-form{display:grid;gap:0}
.lf-fields{display:grid;gap:var(--s3)}
/* 字段：浮动标签 —— 空的时候标签当提示，聚焦或有字就缩到上沿 */
.fld{position:relative;display:block}
.fld input{width:100%;height:58px;padding:22px 44px 6px 16px;font-size:16px;color:var(--ink);background:rgba(5,4,13,.72);border:1px solid var(--edge-2);border-radius:var(--rr-sm);outline:none;transition:border-color var(--t2) var(--eu),box-shadow var(--t2) var(--eu),background var(--t2) var(--eu)}
.fl{position:absolute;left:17px;top:19px;font-size:15px;color:var(--mute);pointer-events:none;transform-origin:left top;transition:transform var(--t2) var(--eo),color var(--t2) var(--eu),letter-spacing var(--t2) var(--eu)}
.fld input:focus+.fl,.fld input:not(:placeholder-shown)+.fl{transform:translateY(-11px) scale(.74);letter-spacing:.06em;color:var(--d)}
.fld .msg{display:block;font-style:normal;font-size:12px;line-height:1.4;color:#ff6b86;max-height:0;overflow:hidden;opacity:0;transition:max-height var(--t2) var(--eo),opacity var(--t2) var(--eu),margin var(--t2) var(--eo)}
.fld .ic{position:absolute;right:14px;top:19px;width:20px;height:20px;opacity:0;transform:scale(.6);transition:opacity var(--t2) var(--eu),transform var(--t2) var(--eo);
  background:conic-gradient(from 0deg,#ff6b86 0 0) center/0 0;}
.fld .ic::before{content:"!";display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#ff6b86;color:#1a0610;font:700 12px/1 var(--mono)}
.fld.bad input{border-color:#ff6b86;background:linear-gradient(0deg,rgba(255,82,110,.12),rgba(255,82,110,.12)),rgba(5,4,13,.72)}
.fld.bad .msg{max-height:40px;opacity:1;margin-top:6px}
.fld.bad .ic{opacity:1;transform:none}
.fld.bad .fl{color:#ff8fa3}
.lead-form .note{font-size:12px;color:var(--faint);transition:color var(--t2) var(--eu)}
.lead-form[data-state="fail"] .note{color:#ff8fa3}
/* 提交按钮骨架 */
.sbtn{position:relative;isolation:isolate;display:flex;align-items:center;gap:12px;height:58px;padding:0 22px 0 46px;border:0;border-radius:999px;overflow:hidden;cursor:pointer;font:500 16px/1 var(--font);letter-spacing:.04em;color:var(--ink);background:#1b1442;box-shadow:inset 0 0 0 1px rgba(177,140,255,.45);-webkit-tap-highlight-color:transparent}
.sbtn:focus-visible{outline:none;box-shadow:inset 0 0 0 1px rgba(177,140,255,.45),0 0 0 2px var(--surf-0),0 0 0 4px #7fd8ff}
.sb-txt{position:relative;flex:1;text-align:left;height:1.2em;overflow:hidden}
.sb-a{display:block;transition:transform .4s cubic-bezier(.35,0,0,1),color .5s cubic-bezier(.35,0,0,1),opacity .2s}
.sb-arr{position:relative;width:18px;height:18px;overflow:hidden;flex:0 0 auto}
.sb-arr i{position:absolute;inset:0;font-style:normal;line-height:18px;text-align:center;transition:transform .4s cubic-bezier(.35,0,0,1)}
.sb-arr i+i{transform:translateX(-140%)}
.sb-dot{position:absolute;left:22px;top:50%;width:10px;height:10px;margin-top:-5px;border-radius:50%;z-index:-1;background:#9dffcf;box-shadow:0 0 10px #9dffcf;transition:transform .55s cubic-bezier(.35,0,0,1),background .5s cubic-bezier(.35,0,0,1),box-shadow .5s}
.sb-ring{position:absolute;left:18px;top:50%;width:20px;height:20px;margin-top:-10px;opacity:0;transition:opacity var(--t2)}
.sb-ring circle{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-dasharray:40 100}
/* 提交中：圆点收起、转圈、字换成「提交中」 */
.lead-form[data-state="sending"] .sbtn{cursor:progress}
.lead-form[data-state="sending"] .sb-dot{transform:scale(0)}
.lead-form[data-state="sending"] .sb-ring{opacity:1;animation:uSpin2 .8s linear infinite}
.lead-form[data-state="sending"] .sb-a{opacity:0}
.lead-form[data-state="sending"] .sb-txt::after{content:"提交中…";position:absolute;inset:0}
.lead-form[data-state="sending"] .sb-arr{opacity:.3}
@keyframes uSpin2{to{transform:rotate(360deg)}}
.lead-form[data-state="fail"] .sbtn{box-shadow:inset 0 0 0 1px #ff6b86}
.lead-form[data-state="fail"] .sb-dot{background:#ff6b86;box-shadow:0 0 10px #ff6b86}
/* 成功回执 */
.lf-done{display:grid;grid-template-columns:auto 1fr;gap:var(--s4);align-items:start;padding:var(--s5);border:1px solid rgba(157,255,207,.35);border-radius:var(--rr);background:linear-gradient(135deg,rgba(157,255,207,.08),transparent 60%),var(--surf-1);animation:uIn .6s var(--eo) both}
.lf-done b{display:block;font-size:20px;font-weight:500;margin-bottom:6px}
.lf-done span{display:block;font:13px/1.6 var(--mono);color:var(--mute)}.lf-done code{color:#9dffcf;font:inherit}
.lf-done small{display:block;margin-top:var(--s3);color:var(--mute);font-size:13px;line-height:1.7}
.lf-ok{position:relative;width:44px;height:44px;border-radius:50%;border:1px solid #9dffcf;box-shadow:0 0 0 6px rgba(157,255,207,.08),0 0 24px rgba(157,255,207,.35)}
.lf-ok::after{content:"";position:absolute;left:15px;top:11px;width:9px;height:17px;border-right:2px solid #9dffcf;border-bottom:2px solid #9dffcf;transform:rotate(45deg) scale(0);transform-origin:center;animation:uTick .5s var(--eo) .25s forwards}
@keyframes uTick{to{transform:rotate(45deg) scale(1)}}
@keyframes uIn{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
/* 去掉旧样式里留资区的设备框角标（留资是控制台，不是卡片） */
.lead-box::before{display:none}

/* ---------- 方案 a · 点亮：左侧在线点悬停时扩散铺满（Lusion「Our Approach」0.4s / (.35,0,0,1)），字让位，箭头从左滑入 ---------- */
.lf-a .sbtn:hover .sb-dot,.lf-a .sbtn.is-hover .sb-dot{transform:scale(72);background:#9a78ff;box-shadow:none}
.lf-a .sbtn:hover .sb-a,.lf-a .sbtn.is-hover .sb-a{transform:translateX(-24px);color:#0d0826}
.lf-a .sbtn:hover .sb-arr,.lf-a .sbtn.is-hover .sb-arr{color:#0d0826}
.lf-a .sbtn:hover .sb-arr i:first-child,.lf-a .sbtn.is-hover .sb-arr i:first-child{transform:translateX(140%)}
.lf-a .sbtn:hover .sb-arr i+i,.lf-a .sbtn.is-hover .sb-arr i+i{transform:none}
.lf-a .sbtn:active{transform:scale(.985)}
.lf-a .fld input:focus{border-color:transparent;box-shadow:0 0 0 2px var(--surf-0),0 0 0 3px #7fd8ff;background:rgba(10,8,28,.9)}

@media (max-width:980px){.lead-box{grid-template-columns:1fr}}
@media (max-width:640px){.sbtn{width:100%}}
@media (prefers-reduced-motion:reduce){.sb-dot,.sb-a,.sb-arr i{transition:none!important}}
.sg .sg-lf{display:grid;gap:var(--s4)}.sg .sg-states{display:flex;flex-wrap:wrap;gap:6px}
/* 修：a 悬停字左移时不被裁；圆点放大到铺满任意宽度的按钮 */
.lf-a .sb-txt{overflow:visible}
.lf-a .sbtn:hover .sb-dot,.lf-a .sbtn.is-hover .sb-dot{transform:scale(180)}
.lf-a .sb-dot{transition:transform .55s cubic-bezier(.35,0,0,1),background .15s linear,box-shadow .2s}   /* 绿点先变紫再扩散，避免中途混出浅蓝 */
.sg .sg-spec{display:grid;grid-template-columns:5em 1fr;gap:8px 16px;margin:0;padding:var(--s5);border:1px dashed var(--edge-2);border-radius:var(--rr);font-size:13px}.sg .sg-spec dt{color:var(--d);font-family:var(--mono);font-size:12px}.sg .sg-spec dd{margin:0;color:var(--mute)}

/* =================== 按钮（1029 定稿，和留资 A 同一语言） ===================
 * 主按钮：实心紫，悬停一道白光从左扫到右（0.7s 主曲线）+ 微抬；按下回落
 * 次按钮：发丝框，悬停区色底从左推满（0.4s (.35,0,0,1)，Lusion 同款节奏），框线变区色 */
.btn{position:relative;isolation:isolate;overflow:hidden;min-height:40px}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:color-mix(in srgb,var(--d) 16%,transparent);transform:scaleX(0);transform-origin:left;transition:transform .4s cubic-bezier(.35,0,0,1)}
.btn:hover::before,.btn.is-hover::before{transform:scaleX(1)}
.btn:hover,.btn.is-hover{border-color:color-mix(in srgb,var(--d) 70%,transparent);background:rgba(255,255,255,.02)}
.btn.primary::before{background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);transform:translateX(-120%);transition:none}
.btn.primary:hover::before,.btn.primary.is-hover::before{transform:translateX(120%);transition:transform .7s var(--eo)}
.btn.primary:hover,.btn.primary.is-hover{transform:translateY(-1px);background:linear-gradient(180deg,#cdb4ff,#a283ff)}
.btn.primary:active{transform:translateY(0)}
.btn:focus-visible{outline:none;box-shadow:0 0 0 2px var(--surf-0),0 0 0 3px #7fd8ff}
@media (prefers-reduced-motion:reduce){.btn::before{display:none}}
.btn{border-radius:999px}   /* 和留资提交钮同为胶囊（Lusion 胶囊），全站按钮只有这一种轮廓 */
/* AI 客服浮钮：从右侧居中挪到右下角（测出来桌面会压住留资表单和卡片右缘），留资区进视口时收成小圆点不挡输入 */
.rag{top:auto!important;bottom:max(20px,env(safe-area-inset-bottom));margin-top:0!important;transition:opacity var(--t2) var(--eu),transform var(--t2) var(--eo)}
.rag.tuck:not(.open){transform:scale(.72) translate(10px,10px);opacity:.75}
.rag.tuck:not(.open) .rag-launch b{display:none}
/* 版式骨架页 */
.ly-page{display:grid;gap:var(--s5);padding:var(--s7) 0;border-top:1px solid var(--edge)}
.ly-page>header h2{font-size:22px;font-weight:500}.ly-page>header p{color:var(--mute);font-size:14px;margin-top:6px;max-width:60em}
.ly-opts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--grid-gap)}
.ly-opt{display:grid;gap:var(--s3);align-content:start;padding:var(--s4);border:1px solid var(--edge);border-radius:var(--rr);background:var(--surf-1)}
.ly-opt.rec{border-color:color-mix(in srgb,#9dffcf 50%,transparent);box-shadow:0 0 0 1px rgba(157,255,207,.25)}
.ly-opt header{display:flex;justify-content:space-between;align-items:center}.ly-opt header b{font-weight:500}
.ly-opt header em{font:500 11px/1 var(--mono);font-style:normal;color:#05040d;background:#9dffcf;padding:5px 8px;border-radius:4px}
.ly-opt>p{font-size:12px;color:var(--faint)}
.ly-wf{display:grid;gap:4px}
.ly-b{min-height:calc(var(--h) * 22px);padding:8px 10px;border-radius:4px;background:repeating-linear-gradient(135deg,rgba(255,255,255,.035) 0 6px,transparent 6px 12px),rgba(160,140,255,.10);display:grid;align-content:center;gap:2px}
.ly-b b{font-weight:500;font-size:13px}.ly-b small{font-size:11px;color:var(--mute);line-height:1.5}
.ly-b.keep{background:transparent;border:1px dashed var(--edge-2)}.ly-b.keep b{color:var(--mute)}
@media (max-width:980px){.ly-opts{grid-template-columns:1fr}}

/* =================== 首页 · 三条路（1029 版式 B） =================== */
.paths{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:var(--grid-gap)}
.path{position:relative;display:grid;grid-template-rows:auto 1fr;border:1px solid var(--edge);border-radius:var(--rr-lg);overflow:hidden;background:var(--surf-1);transition:border-color var(--t2) var(--eu),transform var(--t3) var(--eo)}
.path:hover{border-color:color-mix(in srgb,var(--d) 55%,var(--edge));transform:translateY(-3px)}
.path .pv{position:relative;aspect-ratio:16/11;overflow:hidden;background:#07061a;border-bottom:1px solid var(--edge)}
.path .pv::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 55%,rgba(11,9,32,.9))}
.path .tx{display:grid;gap:var(--s2);padding:var(--s5);align-content:start}
.path h3{font-size:clamp(20px,1.7vw,26px);font-weight:400;letter-spacing:.02em}
.path h3 em{font-style:normal;color:var(--d)}
.path p{color:var(--mute);font-size:14px;line-height:1.75}.path p b{color:var(--ink);font-weight:500}
.path .go{font-style:normal;font-size:14px;color:var(--d);display:inline-flex;gap:8px;margin-top:var(--s2)}
.path .go i{font-style:normal;transition:transform var(--t2) var(--eo)}.path:hover .go i{transform:translateX(5px)}
/* 行业方案：三列封面缓慢上行，速度各不同 */
.p-wall{position:absolute;inset:-6% -4%;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;transform:rotate(-6deg)}
.p-col{display:grid;gap:8px;align-content:start;animation:pRise var(--s) linear infinite}
.p-col:nth-child(2){animation-direction:reverse}
.p-col img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:6px;opacity:.85}
@keyframes pRise{from{transform:translateY(0)}to{transform:translateY(-50%)}}
.path:hover .p-col{animation-play-state:paused}
/* 城市影院：封面打底，进视口播静音循环 */
.p-vid .pv img,.p-vid .pv video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.p-vid .pv video{opacity:0;transition:opacity .8s var(--eu)}.p-vid .pv video.on{opacity:1}
.p-live{position:absolute;left:14px;top:14px;z-index:2;display:inline-flex;align-items:center;gap:8px;font:500 10px/1 var(--mono);letter-spacing:.2em;padding:6px 9px;border-radius:4px;background:rgba(5,4,13,.7);backdrop-filter:blur(6px)}
.p-live i{width:6px;height:6px;border-radius:50%;background:#ff4d6d;box-shadow:0 0 8px #ff4d6d;animation:uBlink 1.2s steps(2) infinite}
@keyframes uBlink{50%{opacity:.2}}
/* 小阳军师：一句话 → 派单到四座舱，依次点亮 */
.p-adv .pv{display:grid;align-content:center;gap:var(--s3);padding:var(--s5);background:radial-gradient(70% 90% at 50% 0%,rgba(217,204,255,.12),transparent 70%),repeating-linear-gradient(90deg,rgba(160,140,255,.04) 0 1px,transparent 1px 24px),#07061a}
.p-say{font-size:13px;color:var(--mute);padding:10px 12px;border:1px solid var(--edge-2);border-radius:var(--rr-sm);background:rgba(5,4,13,.6)}
.p-say b{color:var(--ink);font-weight:500}
.p-disp{list-style:none;margin:0;padding:0 0 0 18px;display:grid;gap:8px;position:relative}
.p-disp::before{content:"";position:absolute;left:4px;top:4px;bottom:4px;width:1px;background:linear-gradient(var(--edge-2),transparent)}
.p-disp li{display:grid;grid-template-columns:auto auto 1fr;gap:10px;align-items:center;font-size:12.5px;opacity:.35;transition:opacity .4s var(--eu)}
.p-disp li i{width:9px;height:9px;margin-left:-18px;border-radius:50%;border:1px solid var(--d);background:var(--surf-0)}
.p-disp li b{font-weight:500;color:var(--d)}.p-disp li span{color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.paths.in .p-disp li{animation:pDisp 6s var(--eu) infinite;animation-delay:calc(var(--k) * .7s + .6s)}
.paths.in .p-disp li i{animation:pDot 6s var(--eu) infinite;animation-delay:calc(var(--k) * .7s + .6s)}
@keyframes pDisp{0%{opacity:.35}6%,70%{opacity:1}85%,100%{opacity:.35}}
@keyframes pDot{0%{background:var(--surf-0);box-shadow:none}6%,70%{background:var(--d);box-shadow:0 0 10px var(--d)}85%,100%{background:var(--surf-0);box-shadow:none}}
@media (max-width:1100px){.paths{grid-template-columns:1fr 1fr}.p-sol{grid-column:1 / -1}.p-sol .pv{aspect-ratio:21/9}}
@media (max-width:640px){.paths{grid-template-columns:1fr}.p-sol .pv{aspect-ratio:16/10}}
@media (prefers-reduced-motion:reduce){.p-col,.paths.in .p-disp li,.paths.in .p-disp li i,.p-live i{animation:none}.p-disp li{opacity:1}}

/* =================== 关于我们（1029 版式 B） =================== */
.ab-hist{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:var(--s7);align-items:start}
.stats.vert{grid-template-columns:1fr;border-radius:var(--rr)}
.stats.vert div{padding:var(--s4) var(--s5) var(--s5)}
.stats.vert b{font-size:clamp(22px,2vw,28px)}
.pillars{gap:var(--grid-gap)}
.pillars .card{display:grid;gap:var(--s2);align-content:start;padding:var(--s6) var(--s5) var(--s5)}
.pillars .card .btn{justify-self:start;margin-top:var(--s3)}
.pillars .card.on{border-color:var(--d);box-shadow:0 0 0 1px color-mix(in srgb,var(--d) 40%,transparent),0 20px 60px -30px var(--d)}
.ethos{margin-top:calc(var(--grid-gap) - var(--head-gap))}
/* 画廊：6 列错落，照片和竖版影像交错 */
.gallery{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-auto-rows:clamp(120px,11vw,180px);gap:10px}
.gallery>*{border-radius:var(--rr);overflow:hidden;position:relative;margin:0}
.g-ph img{width:100%;height:100%;object-fit:cover;transition:transform var(--t4) var(--eo),filter var(--t4) var(--eo),opacity var(--t3) var(--eo)}
.g-ph:hover img.in{transform:scale(1.04)}
.g-ph figcaption{position:absolute;left:10px;bottom:10px;font-size:12px;padding:4px 10px;border-radius:999px;background:rgba(5,4,13,.62);backdrop-filter:blur(6px);opacity:0;transform:translateY(6px);transition:opacity var(--t2) var(--eu),transform var(--t2) var(--eo)}
.g-ph:hover figcaption{opacity:1;transform:none}
.g-fm{display:block;padding:0;border:0;background:none;text-align:left}
.g-fm .pv{position:absolute!important;inset:0;aspect-ratio:auto!important;border-radius:0!important;border:0!important}
.g-fm>span:last-child{position:absolute;left:12px;right:12px;bottom:12px;z-index:2;text-shadow:0 2px 10px #000}
.g-fm>span:last-child small{display:none}
.gallery>:nth-child(1){grid-column:span 3;grid-row:span 2}
.gallery>:nth-child(2){grid-column:span 1;grid-row:span 2}
.gallery>:nth-child(3){grid-column:span 2}
.gallery>:nth-child(4){grid-column:span 2}
.gallery>:nth-child(5){grid-column:span 1;grid-row:span 2}
.gallery>:nth-child(6){grid-column:span 2;grid-row:span 2}
.gallery>:nth-child(7){grid-column:span 1;grid-row:span 2}
.gallery>:nth-child(8){grid-column:span 2}
.gallery>:nth-child(9){grid-column:span 2}
.gallery>:nth-child(10){grid-column:span 2;grid-row:span 1}
/* 运营地点并进留资左栏 */
.ab-locs{list-style:none;margin:var(--s3) 0 0;padding:0;display:grid;border-top:1px solid var(--edge)}
.ab-locs li{display:grid;grid-template-columns:96px 1fr;gap:2px var(--s4);padding:var(--s3) 0;border-bottom:1px solid var(--edge)}
.ab-locs span{grid-row:span 2;font:500 11px/1.8 var(--mono);letter-spacing:.18em;color:var(--d)}
.ab-locs b{font-weight:500}.ab-locs small{color:var(--mute);font-size:13px}
.ab-locs a{color:var(--ink);font-size:18px;letter-spacing:.04em}
@media (max-width:1100px){.ab-hist{grid-template-columns:1fr}.stats.vert{grid-template-columns:1fr 1fr}}
@media (max-width:820px){.gallery{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:150px}.gallery>*{grid-column:auto!important;grid-row:auto!important}.gallery>:nth-child(1){grid-column:span 2!important}.gallery .g-fm{grid-row:span 2!important}}
.gallery{grid-auto-flow:row dense}
.gallery>:nth-child(6){grid-column:span 2;grid-row:span 1}

/* =================== 套餐（1029 版式 B） =================== */
.ptable-wrap[data-fold]:not(.open) tr.more{display:none}
.pt-more{display:flex;justify-content:center;align-items:center;gap:8px;width:100%;padding:14px;border:0;border-top:1px solid var(--edge);background:linear-gradient(180deg,transparent,rgba(177,140,255,.06));color:var(--d);font-size:14px;cursor:pointer;transition:background var(--t2) var(--eu)}
.pt-more:hover{background:rgba(177,140,255,.1)}
.pt-more i{font-style:normal;transition:transform var(--t2) var(--eo)}
.ptable-wrap.open .pt-more i{transform:rotate(180deg)}
.pl-deliver{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:var(--grid-gap);align-items:stretch}
.pl-deliver .pl-svc{grid-template-columns:1fr 1fr}
.pl-deliver .pl-ent{grid-template-columns:1fr;align-content:stretch}
.pl-deliver .pl-ent .card{padding:var(--s5)}
.pl-close{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--s7);align-items:start}
.pl-faq-col{gap:var(--head-gap)}
.pl-close .lead-box{grid-template-columns:1fr;position:sticky;top:calc(var(--toph,64px) + 24px)}
@media (max-width:1100px){.pl-deliver,.pl-close{grid-template-columns:1fr}.pl-close .lead-box{position:static}}
@media (max-width:640px){.pl-deliver .pl-svc{grid-template-columns:1fr}}

/* =================== 新闻（1029 版式 B） =================== */
.news-hero-fx{min-height:92vh!important;min-height:92svh!important}   /* 1029 用户：62% 时列表压上首屏，改回接近满屏 */
.news-head{grid-column:1 / -1}
.news-head .nh{display:grid!important;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:0;border:1px solid var(--edge);border-radius:var(--rr-lg);overflow:hidden;background:var(--surf-1)}
.news-head .nh .nimg{aspect-ratio:16/9!important;border-radius:0!important}
.news-head .nh>div{display:grid;align-content:center;gap:var(--s3);padding:var(--s6)}
.news-head .nh>div span{font:12px/1 var(--mono);letter-spacing:.12em;color:var(--d)}
.news-head .nh>div span::before{content:"LATEST · ";color:#9dffcf}
.news-head .nh b{font-size:clamp(22px,2vw,30px);font-weight:400;line-height:1.4}
.news-head .nh:hover{border-color:color-mix(in srgb,var(--d) 50%,var(--edge))}
@media (max-width:820px){.news-head .nh{grid-template-columns:1fr}.news-head .nh>div{padding:var(--s5)}}
.news a{border-radius:var(--rr);border-color:var(--edge);background:var(--surf-1)}
.news a:hover{border-color:color-mix(in srgb,var(--d) 50%,var(--edge))}
.news a>div span{font-family:var(--mono);font-size:11px;letter-spacing:.08em}

/* =================== 小阳军师 · 现场演示（1029 版式 B） =================== */
.adv-demo{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr);gap:clamp(24px,3.5vw,56px);align-items:start;padding-top:calc(var(--sec-y) * .5);padding-bottom:calc(var(--sec-y) * .5)}
.ad-console{display:grid;gap:var(--s4);padding:var(--s5);border:1px solid var(--edge-2);border-radius:var(--rr-lg);background:radial-gradient(80% 60% at 0% 0%,rgba(217,204,255,.08),transparent 60%),repeating-linear-gradient(90deg,rgba(160,140,255,.035) 0 1px,transparent 1px 28px),var(--surf-1);min-height:520px;align-content:start}
.ad-console header{display:grid;gap:var(--s3)}
.ad-chips{display:flex;flex-wrap:wrap;gap:8px}
.ad-chips button{padding:7px 12px;border-radius:999px;border:1px solid var(--edge-2);background:rgba(5,4,13,.5);color:var(--mute);font-size:13px;cursor:pointer;transition:color var(--t2) var(--eu),border-color var(--t2) var(--eu),background var(--t2) var(--eu)}
.ad-chips button:hover{color:var(--ink);border-color:var(--d)}
.ad-chips button[aria-pressed=true]{color:#120a2a;background:var(--d);border-color:var(--d)}
.ad-input{display:flex;align-items:center;gap:10px;min-height:56px;padding:0 var(--s4);border:1px solid var(--edge-2);border-radius:var(--rr);background:rgba(5,4,13,.7);font-size:clamp(16px,1.4vw,20px)}
.ad-you{font:500 11px/1 var(--mono);letter-spacing:.2em;color:var(--faint)}
.ad-caret{width:2px;height:1.2em;background:var(--d);animation:uBlink 1s steps(2) infinite}
.ad-think{display:flex;gap:10px;align-items:center;font-size:13px;color:var(--mute);opacity:0;transition:opacity var(--t2) var(--eu)}
.ad-think span{font:500 11px/1 var(--mono);letter-spacing:.2em;color:var(--d)}
.ad-think em{font-style:normal}
.ad-think.on{opacity:1}
.ad-track{list-style:none;margin:0;padding:0 0 0 22px;display:grid;gap:8px;position:relative}
.ad-track::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:linear-gradient(var(--edge-2),transparent)}
.ad-track li{display:grid;grid-template-columns:auto 6em minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--edge);border-radius:var(--rr-sm);background:rgba(5,4,13,.5);font-size:14px;opacity:0;transform:translateX(-8px);transition:opacity .35s var(--eo),transform .35s var(--eo),border-color .3s}
.ad-track li.in{opacity:1;transform:none}
.ad-track li i{width:9px;height:9px;margin-left:-28px;border-radius:50%;border:1px solid var(--c);background:var(--surf-0);transition:background .3s,box-shadow .3s}
.ad-track li b{font-weight:500;color:var(--c)}
.ad-track li span{color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ad-track li em{font:11px/1 var(--mono);font-style:normal;letter-spacing:.08em;color:var(--faint)}
.ad-track li.go{border-color:color-mix(in srgb,var(--c) 45%,var(--edge))}
.ad-track li.go i{background:var(--c);box-shadow:0 0 10px var(--c)}
.ad-track li.go em{color:#9dffcf}
.ad-track li.soon.go em{color:var(--amber)}.ad-track li.soon.go i{background:transparent;border-style:dashed;box-shadow:none}
.ad-out{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.ad-out figure{margin:0;position:relative;aspect-ratio:16/10;border-radius:var(--rr-sm);overflow:hidden;border:1px solid var(--edge);opacity:0;transform:translateY(8px) scale(.97);transition:opacity .5s var(--eo),transform .5s var(--eo)}
.ad-out figure.in{opacity:1;transform:none}
.ad-out img{width:100%;height:100%;object-fit:cover}
.ad-out figcaption{position:absolute;left:6px;bottom:6px;font:10px/1 var(--mono);letter-spacing:.06em;padding:4px 6px;border-radius:3px;background:rgba(5,4,13,.75)}
.adv-demo .side{position:sticky;top:calc(var(--toph,64px) + 24px)}
@media (max-width:980px){.adv-demo{grid-template-columns:1fr}.adv-demo .side{position:static}.ad-console{min-height:0}.ad-out{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.ad-track li{grid-template-columns:auto minmax(0,1fr) auto;row-gap:2px}.ad-track li span{grid-column:2 / -1}}
@media (prefers-reduced-motion:reduce){.ad-caret{animation:none}}

/* =================== 知识库（1029 版式 B） =================== */
.kb-split{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:var(--s7);align-items:start}
.kb-three{display:grid;gap:var(--grid-gap)}
.kb-three .kb-card{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"ico code" "ico h" "ico p" "ico em";column-gap:var(--s5);text-align:left;padding:var(--s5)}
.kb-three .kb-ico{grid-area:ico;margin:0}.kb-three .kb-code{grid-area:code}.kb-three h3{grid-area:h;margin:0}.kb-three p{grid-area:p}.kb-three em{grid-area:em}
.kb-sol{display:flex;gap:12px;align-items:center;padding:var(--s3) var(--s4);border:1px dashed var(--edge-2);border-radius:var(--rr);font-size:14px;color:var(--mute);transition:border-color var(--t2) var(--eu),color var(--t2) var(--eu)}
.kb-sol span{font:500 11px/1 var(--mono);letter-spacing:.16em;color:#7fd8ff}
.kb-sol:hover{border-color:#7fd8ff;color:var(--ink)}
.kb-how{position:sticky;top:calc(var(--toph,64px) + 24px);padding:var(--s5);border:1px solid var(--edge);border-radius:var(--rr);background:var(--surf-1)}
.kb-how-h{display:block;font:500 11px/1 var(--mono);letter-spacing:.22em;color:var(--mute);margin-bottom:var(--s5)}
/* 竖向轨道 */
.track.vt{grid-template-columns:1fr;gap:var(--s5);padding-left:28px}
.track.vt::before,.track.vt::after{left:5px;right:auto;top:6px;bottom:6px;width:1px;height:auto}
.track.vt::after{background:linear-gradient(180deg,color-mix(in srgb,var(--d) 30%,transparent),var(--d));transform:scaleY(0);transform-origin:top}
.track.vt.in::after{transform:none}
.track.vt .t-node{position:absolute;left:-28px;top:2px;margin:0}
.track.vt .t-when{height:auto}
@media (max-width:1100px){.kb-split{grid-template-columns:1fr}.kb-how{position:static}}

/* =================== 舱页（1029 版式 B）：首屏降到 70% 屏高，标题和画面同屏 =================== */
.cabin-hero.has-fx{min-height:72vh;min-height:72svh}
@media (max-width:640px){.cabin-hero.has-fx{min-height:64svh}}
.soon-will{margin-top:var(--s3);padding-top:var(--s4);border-top:1px solid var(--edge)}
.soon-will span{font:500 11px/1 var(--mono);letter-spacing:.2em;color:var(--mute)}
.soon-will ul{list-style:none;margin:var(--s3) 0 0;padding:0;display:grid;gap:8px}
.soon-will li{display:flex;align-items:center;gap:10px;font-size:15px}

/* =================== 首屏统一（1029）：位置条固定在顶栏下同一行；文字桌面端垂直居中靠左，3D 在右 =================== */
.fx-hero,.cabin-hero,.plain-hero,.swall-hero{position:relative}
.locbar-row{position:absolute;left:0;right:0;top:calc(var(--toph,64px) + 16px);z-index:6;pointer-events:none}
.locbar-row .locbar{pointer-events:auto;width:max-content;max-width:100%;gap:var(--s3);padding:4px 14px 4px 4px;border-radius:999px;border:1px solid var(--edge);background:rgba(5,4,13,.5);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.locbar-row .back-city{border-color:transparent;background:rgba(255,255,255,.04);min-height:32px;padding:5px 12px}
.locbar-row .crumbs{font-size:12.5px}
.locbar-row .crumbs span:last-child{color:var(--ink)}
@media (min-width:901px){
  .fx-hero:not(.stage-hero):not(.dive){align-items:center;padding:calc(var(--toph,64px) + 72px) 0 72px}
  .cabin-hero.has-fx,.plain-hero.has-fx{align-items:center;padding-top:calc(var(--toph,64px) + 72px);padding-bottom:72px}
  .fx-hero:not(.stage-hero) .wrap>*,.cabin-hero .wrap>*,.plain-hero.has-fx .wrap>*{max-width:600px}
}
.plain-hero:not(.has-fx){padding-top:calc(var(--toph,64px) + 76px)}
.stage-hero .stage-head{top:calc(var(--toph,64px) + 64px)}
/* 新闻首屏：图墙在右，标题后面左侧压暗，保证字可读 */
.news-hero-fx::before{background:linear-gradient(90deg,rgba(5,4,13,.97),rgba(5,4,13,.86) 40%,rgba(5,4,13,.2) 66%,transparent),linear-gradient(180deg,rgba(5,4,13,.92),transparent 24%,transparent 62%,var(--void))!important}
@media (max-width:900px){
  .locbar-row{top:calc(var(--toph,56px) + 10px)}
  .locbar-row .crumbs{display:none}
  .locbar-row .locbar{padding:4px}
}
@media (max-width:900px){.swall-hero .swall-in{padding-top:calc(var(--toph,56px) + 30px)!important}}

/* =================== 组件静止态（1029 深夜第二轮）：不悬停也要看得出是「城里的设备」 ===================
 * 参考：Lusion 卡片的层次（面 + 内高光 + 细边）、basement 的等宽小编号、x.ai 的克制分割线 */
/* 面板材质：顶部内高光 + 极细颗粒，四角刻度常亮、加长 */
.card,.zone,.kb-uses a,.neighbors a,.plan,.pl-svc li,.hero-next a,.path,.pl-faq details,.lead-box,.kb-how,.ad-console{
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06),inset 0 0 0 1px rgba(255,255,255,.012)}
.card::before,.zone::before,.kb-uses a::before,.neighbors a::before,.plan::before,.hero-next a::before{opacity:1;
  --tk:color-mix(in srgb,var(--d) 75%,transparent)}
.card::before,.zone::before,.neighbors a::before,.plan::before{
  background:
    linear-gradient(var(--tk),var(--tk)) left top/14px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) left top/1px 14px no-repeat,
    linear-gradient(var(--tk),var(--tk)) right top/14px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) right top/1px 14px no-repeat,
    linear-gradient(var(--tk),var(--tk)) left bottom/14px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) left bottom/1px 14px no-repeat,
    linear-gradient(var(--tk),var(--tk)) right bottom/14px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) right bottom/1px 14px no-repeat,
    radial-gradient(120% 60% at 0% 0%,color-mix(in srgb,var(--d) 9%,transparent),transparent 60%)}
/* 卡片组自动编号：每组卡右上角一个等宽小号 /01 /02 …（basement 手法） */
.pl-ent,.neighbors{counter-reset:cn}
.pl-ent>.card,.neighbors>a{counter-increment:cn}
.pl-ent>.card>:first-child::after{content:"/" counter(cn,decimal-leading-zero);position:absolute;right:18px;top:16px;font:500 11px/1 var(--mono);letter-spacing:.1em;color:var(--faint)}
.neighbors>a>b::after{content:" /" counter(cn,decimal-leading-zero);font:500 10px/1 var(--mono);color:var(--faint);margin-left:6px;letter-spacing:.08em}
/* 区块标题：编号后接一条通栏发丝线，区块之间有结构感（x.ai 的分割线） */
.sec-head .eyebrow{width:100%}
.sec-head .eyebrow::after{display:block;order:0;flex:1;width:auto;height:1px;background:linear-gradient(90deg,color-mix(in srgb,var(--d) 45%,transparent),var(--edge) 30%,transparent);margin-left:6px}
/* 读数：数字渐变、标签等宽；底部刻度更明显 */
.stats b{background:linear-gradient(180deg,#fff,color-mix(in srgb,var(--d) 55%,#cfc8ff));-webkit-background-clip:text;background-clip:text;color:transparent}
.stats div::after{opacity:1;background:repeating-linear-gradient(90deg,color-mix(in srgb,var(--d) 45%,transparent) 0 1px,transparent 1px 8px)}
/* 标签 / 产出 chips：方角胶囊 + 左侧小点，像设备铭牌 */
.outs a,.outs span,.proof span{display:inline-flex;align-items:center;gap:7px;padding:6px 11px;border-radius:6px;border:1px solid var(--edge-2);background:rgba(5,4,13,.5);font-size:13px;color:var(--ink)}
.outs a::before,.outs span::before{content:"";width:5px;height:5px;border-radius:1px;background:var(--d)}
.proof{display:flex;flex-wrap:wrap;gap:8px}
.proof span{font-size:12px;color:var(--mute);padding:5px 10px}
.proof span::before{content:"✓";color:#9dffcf;font-size:11px}
/* 页签：选中态带底部光条 */
.gtabs button[aria-selected=true],.chips button[aria-pressed="true"]{box-shadow:inset 0 -2px 0 rgba(255,255,255,.35)}
/* 媒体框：四角取景框常驻（淡），悬停变亮 */
.vtile .pv::before{content:"";position:absolute;inset:8px;z-index:2;pointer-events:none;opacity:.55;transition:opacity var(--t2) var(--eu);--tk:rgba(255,255,255,.8);
  background:linear-gradient(var(--tk),var(--tk)) left top/12px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) left top/1px 12px no-repeat,linear-gradient(var(--tk),var(--tk)) right top/12px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) right top/1px 12px no-repeat,
  linear-gradient(var(--tk),var(--tk)) left bottom/12px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) left bottom/1px 12px no-repeat,linear-gradient(var(--tk),var(--tk)) right bottom/12px 1px no-repeat,linear-gradient(var(--tk),var(--tk)) right bottom/1px 12px no-repeat}
.vtile:hover .pv::before{opacity:1}

/* =================== 首屏 HUD + 读数行（1029 深夜） ===================
 * 四角取景框随首屏出现时从中心往外「对焦」；左下代号逐字打出；右下滚动提示一条光往下流 */
.hud{position:absolute;inset:calc(var(--toph,64px) + 64px) 28px 24px;z-index:3;pointer-events:none}
.hud s{position:absolute;width:22px;height:22px;border-color:rgba(255,255,255,.4);border-style:solid;border-width:0;opacity:0;transition:transform 1s var(--eo) .3s,opacity .6s var(--eu) .3s}
.hud s:nth-child(1){left:0;top:0;border-left-width:1px;border-top-width:1px;transform:translate(24px,24px)}
.hud s:nth-child(2){right:0;top:0;border-right-width:1px;border-top-width:1px;transform:translate(-24px,24px)}
.hud s:nth-child(3){left:0;bottom:0;border-left-width:1px;border-bottom-width:1px;transform:translate(24px,-24px)}
.hud s:nth-child(4){right:0;bottom:0;border-right-width:1px;border-bottom-width:1px;transform:translate(-24px,-24px)}
.hud.in s{opacity:1;transform:none}
.hud-code{position:absolute;left:34px;bottom:2px;font:500 10.5px/1 var(--mono);letter-spacing:.22em;color:rgba(255,255,255,.45);white-space:nowrap;overflow:hidden;width:0;transition:width 1.4s steps(36) .8s}
.hud.in .hud-code{width:44ch}
.hud-scroll{position:absolute;right:34px;bottom:0;display:flex;align-items:center;gap:10px;font:500 10px/1 var(--mono);letter-spacing:.3em;color:rgba(255,255,255,.45)}
.hud-scroll i{position:relative;width:1px;height:34px;background:rgba(255,255,255,.15);overflow:hidden}
.hud-scroll i::after{content:"";position:absolute;left:0;top:-40%;width:1px;height:40%;background:#fff;animation:hudFlow 1.8s var(--eu) infinite}
@keyframes hudFlow{to{top:100%}}
/* 读数行：等宽标签 + 值，像设备状态栏 */
.hero-meta{display:flex;flex-wrap:wrap;gap:0;margin-top:6px;border:1px solid var(--edge);border-radius:var(--rr);background:rgba(5,4,13,.45);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);width:max-content;max-width:100%;overflow:hidden}
.hm{display:grid;gap:4px;padding:10px 16px;border-right:1px solid var(--edge)}
.hm:last-child{border-right:0}
.hm i{font:500 10px/1 var(--mono);font-style:normal;letter-spacing:.18em;color:var(--faint)}
.hm b{font-size:15px;font-weight:500;color:var(--ink);display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.hm.live b::before{content:"";width:6px;height:6px;border-radius:50%;background:#9dffcf;box-shadow:0 0 8px #9dffcf;animation:uPulse 2.4s var(--eu) infinite}
.hm.soon b::before{content:"";width:6px;height:6px;border-radius:50%;border:1px dashed var(--amber)}
@media (max-width:900px){.hud{display:none}.hero-meta{width:100%}.hm{flex:1 1 auto;padding:8px 12px}.hm b{font-size:13px}}
@media (prefers-reduced-motion:reduce){.hud s,.hud-code{transition:none}.hud-scroll i::after,.hm.live b::before{animation:none}}
.cabin-hero .wrap>.lead{max-width:520px}

/* =================== 整页动效时间线（1029 深夜第三轮） ===================
 * 首屏：位置条 0 → 眉标逐字模糊转清晰（x.ai 250ms/字、间隔 25ms）→ 标题按行升起 → 导语模糊转清晰 → 读数行逐格 → 按钮；HUD 同步对焦
 * 区块：眉标细线从左画出 → 标题升起 → 导语 → 内容（错峰 40ms）
 * 数字：逐位滚动到位（basement NumberFlow 900ms，带一点回弹） */
html.js .chor>*:not(h1){opacity:0;filter:blur(8px);transform:translateY(10px);transition:opacity .8s var(--eo),filter .9s var(--eo),transform .8s var(--eo);transition-delay:calc(var(--hd,0) * 110ms + 120ms)}
html.js .chor.in>*:not(h1){opacity:1;filter:none;transform:none}
html.js .chor>.eyebrow,html.js .chor>.alias{filter:none;transform:none;opacity:1}
.ltr span{display:inline-block;opacity:0;filter:blur(6px);transition:opacity .25s cubic-bezier(.16,1,.3,1),filter .25s cubic-bezier(.16,1,.3,1);transition-delay:calc(var(--l) * 25ms + 60ms)}
.in .ltr span,.ltr.in span{opacity:1;filter:none}
.locbar-row{opacity:0;transition:opacity .6s var(--eu) .05s}.locbar-row.in{opacity:1}
/* 区块标题时间线 */
html.js .sec-head[data-reveal]{opacity:1;transform:none}
html.js .sec-head>*{opacity:0;transform:translateY(10px);transition:opacity .7s var(--eo),transform .7s var(--eo);transition-delay:calc(var(--hd,0) * 120ms)}
html.js .sec-head.in>*{opacity:1;transform:none}
html.js .sec-head>.eyebrow{transform:none}
.sec-head .eyebrow::after{transform:scaleX(0);transform-origin:left;transition:transform 1.2s var(--eo) .1s}
.sec-head.in .eyebrow::after{transform:none}
/* 数字逐位滚动 */
.roll{display:inline-flex;align-items:baseline}
.roll .dg{display:inline-block;height:1.15em;overflow:hidden;vertical-align:bottom;line-height:1.15}
.roll .dg>span{display:flex;flex-direction:column;transform:translateY(0);transition:transform .9s cubic-bezier(.22,1.25,.36,1);transition-delay:calc(var(--k) * 45ms)}
.roll .dg>span>.n{display:block;height:1.15em;line-height:1.15}
@media (prefers-reduced-motion:reduce){html.js .chor>*,html.js .sec-head>*,.ltr span,.locbar-row{opacity:1!important;filter:none!important;transform:none!important;transition:none!important}.roll .dg>span{transition:none}}
.stats b .roll,.stats b .roll *{-webkit-text-fill-color:#efeaff;color:#efeaff}   /* 渐变字 + 逐位滚动的子层在 Chrome 里会被裁空，滚动的数字用实色 */
b .roll,b .roll span,.price .roll span{font:inherit;color:inherit;letter-spacing:inherit;text-transform:none;padding:0;margin:0;border:0;background:none}   /* 读数里 .stats span / .hm i 这类规则别误伤滚动数字 */

/* =================== 方案组件（1029 深夜：收自 12 份行业方案原稿，按全站界面语言重做） =================== */
/* 痛点卡 */
.x-pains{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1px;border:1px solid var(--edge);border-radius:var(--rr);overflow:hidden;background:var(--edge);counter-reset:xp}
.x-pains li{counter-increment:xp;position:relative;display:grid;gap:6px;align-content:start;padding:var(--s5) var(--s4) var(--s4);background:var(--surf-1)}
.x-pains li::before{content:"PAIN " counter(xp,decimal-leading-zero);font:500 10px/1 var(--mono);letter-spacing:.2em;color:#ff8fa3}
.x-pains li::after{content:"";position:absolute;left:0;top:0;width:28px;height:2px;background:#ff6b86}
.x-pains b{font-weight:500;font-size:15px}.x-pains span{font-size:13px;color:var(--mute);line-height:1.7}
/* 以前 / 现在 */
.x-vs{display:grid;grid-template-columns:1fr auto 1fr;gap:0;border:1px solid var(--edge);border-radius:var(--rr);overflow:hidden}
.x-vs>div{display:grid;gap:8px;align-content:start;padding:var(--s5)}
.x-vs>div:first-child{background:repeating-linear-gradient(135deg,rgba(255,255,255,.02) 0 8px,transparent 8px 16px),var(--surf-0);color:var(--mute)}
.x-vs>div:last-child{background:radial-gradient(90% 120% at 100% 0%,color-mix(in srgb,var(--d) 14%,transparent),transparent 60%),var(--surf-1)}
.x-vs i{font:500 10px/1 var(--mono);font-style:normal;letter-spacing:.2em}
.x-vs>div:first-child i{color:var(--faint)}.x-vs>div:last-child i{color:var(--d)}
.x-vs>div p{font-size:14px;line-height:1.75}
.x-vs>span{display:grid;place-items:center;width:44px;border-left:1px solid var(--edge);border-right:1px solid var(--edge);color:var(--d);background:var(--surf-0);font-family:var(--mono)}
/* 商机卡：来源 + 意向分环 + 原话 + 系统建议 + 开场白（可复制） */
.x-lead{display:grid;gap:var(--s3);padding:var(--s5);border:1px solid var(--edge-2);border-radius:var(--rr);background:var(--surf-1);max-width:520px}
.x-lead header{display:flex;align-items:center;gap:10px}
.x-lead .src{font:500 11px/1 var(--mono);letter-spacing:.1em;padding:5px 8px;border-radius:4px;background:rgba(255,122,184,.12);color:#ff9cc8}
.x-lead .when{font:11px/1 var(--mono);color:var(--faint)}
.x-lead .sc{margin-left:auto;--v:74;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font:600 13px/1 var(--mono);color:#9dffcf;background:radial-gradient(closest-side,var(--surf-1) 78%,transparent 80% 100%),conic-gradient(#9dffcf calc(var(--v) * 1%),rgba(255,255,255,.08) 0)}
.x-lead q{font-size:20px;line-height:1.5;quotes:"「" "」"}
.x-lead .ctx{font-size:12px;color:var(--faint)}
.x-lead dl{margin:0;display:grid;gap:8px}
.x-lead dt{font:500 10px/1 var(--mono);letter-spacing:.2em;color:var(--d)}
.x-lead dd{margin:4px 0 0;font-size:13.5px;color:var(--mute);line-height:1.7;padding:10px 12px;border-radius:var(--rr-sm);background:rgba(5,4,13,.5);border:1px solid var(--edge);position:relative}
.x-lead dd.say{color:var(--ink);padding-right:56px}
.x-lead .cp{position:absolute;right:8px;top:8px;font:11px/1 var(--mono);padding:5px 8px;border-radius:4px;border:1px solid var(--edge-2);background:none;color:var(--mute);cursor:pointer}
.x-lead .cp:hover{color:var(--ink);border-color:var(--d)}
/* 对话气泡 */
.x-chat{display:grid;gap:10px;padding:var(--s5);border:1px solid var(--edge);border-radius:var(--rr);background:var(--surf-1);max-width:560px}
.x-chat .who{font:500 10px/1 var(--mono);letter-spacing:.2em;color:var(--faint);margin-bottom:4px}
.x-chat .m{max-width:82%;padding:10px 14px;border-radius:14px;font-size:14px;line-height:1.7}
.x-chat .m.u{justify-self:start;background:rgba(255,255,255,.06);border-top-left-radius:4px}
.x-chat .m.a{justify-self:end;background:linear-gradient(180deg,color-mix(in srgb,var(--d) 24%,var(--surf-2)),color-mix(in srgb,var(--d) 12%,var(--surf-2)));border:1px solid color-mix(in srgb,var(--d) 35%,transparent);border-top-right-radius:4px}
.x-chat .m.a::before{content:"AI 客服";display:block;font:500 10px/1 var(--mono);letter-spacing:.16em;color:var(--d);margin-bottom:6px}
/* 陪练评分卡：分数环 + 做得好 / 要改进 */
.x-score{display:grid;grid-template-columns:auto 1fr;gap:var(--s5);padding:var(--s5);border:1px solid var(--edge);border-radius:var(--rr);background:var(--surf-1);max-width:640px}
.x-score .ring{--v:54;width:96px;height:96px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(closest-side,var(--surf-1) 84%,transparent 86% 100%),conic-gradient(var(--amber) calc(var(--v) * 1%),rgba(255,255,255,.08) 0)}
.x-score .ring b{font:300 34px/1 var(--font);font-variant-numeric:tabular-nums}.x-score .ring b small{font-size:12px;color:var(--mute);margin-left:2px}
.x-score h4{margin:0 0 6px;font-weight:500;font-size:15px}.x-score p{font-size:13px;color:var(--mute);line-height:1.7}
.x-score ul{list-style:none;margin:var(--s3) 0 0;padding:0;display:grid;gap:6px;font-size:13px}
.x-score li{display:flex;gap:8px}.x-score li i{font-style:normal;font:500 10px/1.9 var(--mono);letter-spacing:.1em;flex:0 0 auto}
.x-score li.ok i{color:#9dffcf}.x-score li.up i{color:var(--amber)}
/* 红线规则 */
.x-rules{list-style:none;margin:0;padding:0;display:grid;border-top:1px solid rgba(255,107,134,.3)}
.x-rules li{display:grid;grid-template-columns:28px 10em 1fr;gap:var(--s4);align-items:start;padding:var(--s4) 0;border-bottom:1px solid var(--edge)}
.x-rules li::before{content:"";width:18px;height:18px;margin-top:2px;border-radius:50%;border:1.5px solid #ff6b86;background:linear-gradient(45deg,transparent 45%,#ff6b86 46% 54%,transparent 55%)}
.x-rules b{font-weight:500;font-size:15px}.x-rules span{font-size:13.5px;color:var(--mute);line-height:1.7}
/* 周计划 */
.x-week{border:1px solid var(--edge);border-radius:var(--rr);overflow:hidden}
.x-week header{display:flex;justify-content:space-between;padding:12px 16px;background:var(--surf-2);font-size:14px}.x-week header i{font:11px/1.6 var(--mono);font-style:normal;color:var(--faint)}
.x-week ol{list-style:none;margin:0;padding:0}
.x-week li{display:grid;grid-template-columns:5em 1fr auto;gap:var(--s4);align-items:baseline;padding:12px 16px;border-top:1px solid var(--edge);font-size:14px}
.x-week li>i{font:500 11px/1 var(--mono);font-style:normal;letter-spacing:.08em;color:var(--d)}
.x-week li small{display:block;margin-top:4px;font-size:12px;color:var(--faint)}
.x-week li em{font-style:normal;font-size:11px;padding:4px 8px;border-radius:4px;border:1px solid var(--edge-2);color:var(--mute);white-space:nowrap}
@media (max-width:640px){.x-vs{grid-template-columns:1fr}.x-vs>span{width:auto;height:32px;border:0;border-top:1px solid var(--edge);border-bottom:1px solid var(--edge)}.x-rules li{grid-template-columns:28px 1fr}.x-rules span{grid-column:2}.x-score{grid-template-columns:1fr}.x-week li{grid-template-columns:1fr}}
@media (max-width:640px){.plans>.plan{grid-column:auto!important;grid-row:auto!important}}
/* 视频中心首屏（1030）：影院自带操作界面，不叠 HUD；矮屏（笔记本 720/800 高）收起缩略图条，播放条不再压银幕 */
.stage-hero .hud{display:none}
@media (max-height:820px) and (min-width:641px){.stage-strip{display:none!important}.stage-ui{bottom:18px}.stage-hero .stage-head{top:calc(var(--toph,64px) + 70px)}}

/* =================== 1030 参考站组件 =================== */
/* 作品卡倾斜（Lusion）：最多 7°/9°，跟随高光；回正 0.6s */
.tilt{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transform-style:preserve-3d;transition:transform .6s var(--eo),border-color var(--t2) var(--eu)}
.tilt:hover{transition:transform .12s linear,border-color var(--t2) var(--eu)}
.tilt::after{}
.vtile.tilt .pv,.scard.tilt .cv,.path.tilt .pv{position:relative}
.vtile.tilt .pv>.glare,.tilt .glare{display:none}
.tilt .pv,.tilt .cv{--gl:radial-gradient(420px circle at var(--gx,50%) var(--gy,50%),rgba(255,255,255,.18),transparent 45%)}
.vtile.tilt:hover .pv,.scard.tilt:hover .cv,.path.tilt:hover .pv{box-shadow:0 24px 50px -20px rgba(0,0,0,.8)}
.vtile.tilt .pv>img{transition:transform .8s var(--eo)}
.vtile.tilt:hover .pv>img{transform:scale(1.05)}
.pv-vid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .4s var(--eu);z-index:1}
.pv-vid.on{opacity:1}
/* 标题上下滚动换行（Lusion 按钮同款 0.4s (.4,0,.1,1)） */
.tr{display:inline-grid;overflow:hidden;vertical-align:bottom;line-height:inherit}
.tr>span{grid-area:1/1;transition:transform .45s cubic-bezier(.4,0,.1,1)}
.tr>span+span{transform:translateY(105%)}
:is(.vtile,.path,.scard,.neighbors>a):hover .tr>span:first-child{transform:translateY(-105%)}
:is(.vtile,.path,.scard,.neighbors>a):hover .tr>span+span{transform:none}
/* 自定义光标（zajno）：小点 6px 跟手，外环 34px 带惯性；可点处放大 + 动作字 */
html.has-cur.cur-on,html.has-cur.cur-on *{cursor:none!important}
html.has-cur.cur-on input,html.has-cur.cur-on textarea{cursor:text!important}
.cur-dot,.cur-ring{position:fixed;left:0;top:0;z-index:300;pointer-events:none;opacity:0;transition:opacity .3s}
html.cur-on .cur-dot,html.cur-on .cur-ring{opacity:1}
.cur-dot{width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#fff;mix-blend-mode:difference}
.cur-ring{width:34px;height:34px;margin:-17px 0 0 -17px;display:grid;place-items:center}
.cur-ring::before{content:"";position:absolute;inset:0;border-radius:50%;border:1px solid rgba(255,255,255,.5);transition:transform .35s var(--eo),background .3s,border-color .3s}
.cur-ring span{position:relative;font:600 10px/1 var(--mono);letter-spacing:.14em;color:#0d0826;opacity:0;transform:scale(.6);transition:opacity .2s,transform .3s var(--eo)}
.cur-ring.big::before{transform:scale(1.6);border-color:rgba(255,255,255,.9)}
.cur-ring.txt::before{transform:scale(2.1);background:rgba(220,206,255,.95);border-color:transparent}
.cur-ring.txt span{opacity:1;transform:none}
.cur-ring.txt~.cur-dot,.cur-ring.big+.cur-dot{opacity:0}
.cur-ring.down::before{transform:scale(1.2)}
.cur-ring.hide,.cur-dot.hide{opacity:0!important}
/* 磁吸按钮 */
.mag{transform:translate(var(--mx,0px),var(--my,0px));transition:transform .5s cubic-bezier(.22,1.4,.36,1),box-shadow var(--t2) var(--eu),background var(--t2) var(--eu)}
.mag:hover{transition:transform .15s linear,box-shadow var(--t2) var(--eu),background var(--t2) var(--eu)}
/* 图片遮罩揭开（nextgen / Lusion）：从中线向上下展开 + 轻微缩放，替代原来的模糊淡入 */
.mz{filter:none;opacity:1;clip-path:inset(50% 0 50% 0);transform:scale(1.08);transition:clip-path 1.1s cubic-bezier(.77,0,.18,1),transform 1.4s var(--eo)}
.mz.in{clip-path:inset(0 0 0 0);transform:none}
/* 巨型跑马字带：描边超大字，中间缀星号 */
.mq{position:relative;overflow:hidden;padding:clamp(18px,2.4vw,34px) 0;border-top:1px solid var(--edge);border-bottom:1px solid var(--edge);background:linear-gradient(90deg,var(--surf-0),transparent 12%,transparent 88%,var(--surf-0))}
.mq>div{display:flex;width:max-content;white-space:nowrap;will-change:transform}
.mq span{font:600 clamp(48px,7.4vw,124px)/1 var(--font);letter-spacing:.02em;color:transparent;-webkit-text-stroke:1px rgba(220,206,255,.32);padding:0 .35em}
.mq span:nth-of-type(2n){-webkit-text-stroke:0;color:rgba(220,206,255,.07)}
.mq i{font-style:normal;font-size:clamp(20px,2.6vw,40px);color:var(--amber);align-self:center;opacity:.7}
.mq::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,var(--void),transparent 10%,transparent 90%,var(--void))}
/* 同心圆擦屏转场（nextgen）：离开时三圈从点击处扩散；进来时从中心收回 */
.wipe{position:fixed;inset:0;z-index:250;pointer-events:none}
.wipe i{position:absolute;inset:0;clip-path:circle(0 at var(--cx,50%) var(--cy,50%));transition:clip-path .42s cubic-bezier(.77,0,.18,1)}
.wipe i:nth-child(1){background:#b18cff;transition-delay:0s}
.wipe i:nth-child(2){background:#2a1d66;transition-delay:.06s}
.wipe i:nth-child(3){background:var(--void);transition-delay:.12s}
.wipe.on{pointer-events:auto}
.wipe.on i{clip-path:circle(150% at var(--cx,50%) var(--cy,50%))}
html.arrive body::after{content:"";position:fixed;inset:0;z-index:250;pointer-events:none;background:var(--void);animation:wipeIn .55s cubic-bezier(.77,0,.18,1) .05s both}
html.arrive body::before{content:"";position:fixed;inset:0;z-index:249;pointer-events:none;background:#b18cff;animation:wipeIn .55s cubic-bezier(.77,0,.18,1) .12s both}
@keyframes wipeIn{from{clip-path:circle(150% at 50% 50%)}to{clip-path:circle(0 at 50% 50%)}}
/* 首页计数加载（Lusion 000→100） */
.fxl-big{align-content:end;justify-items:start;padding:0 clamp(20px,4vw,64px) clamp(28px,6vh,72px);background:var(--void)}
.fxl-big .lc{display:grid;gap:10px;width:min(560px,100%)}
.fxl-big .lc span{font:500 11px/1 var(--mono);letter-spacing:.24em;color:var(--mute)}
.fxl-big .lc b{font:300 clamp(64px,10vw,140px)/.9 var(--mono);letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums}
.fxl-big .lc i{display:block;height:1px;background:rgba(255,255,255,.12)}
.fxl-big .lc s{display:block;height:100%;background:linear-gradient(90deg,#b18cff,#7fd8ff,#ffcf6b);transform:scaleX(0);transform-origin:left;transition:transform .3s var(--eu)}
.fxl-big.done{opacity:1;clip-path:circle(0 at 50% 55%);transition:clip-path .7s cubic-bezier(.77,0,.18,1)}
.fxl-big{clip-path:circle(150% at 50% 55%)}
@media (prefers-reduced-motion:reduce){.tilt{transform:none!important}.mz{clip-path:none;transform:none}.wipe,html.arrive body::after,html.arrive body::before{display:none}}

/* =================== 视频中心 · 一座影院（1030 重做） ===================
 * 首屏放映厅的光一路延续下来：银幕光晕 → 地面弧线 → 排片表；全页同一个空间，不再一滚就换成通用卡片墙 */
.stage-hero::after{height:28%!important;background:linear-gradient(transparent,var(--void))!important}
.cine-body{position:relative;isolation:isolate}
.cine-body::before{content:"";position:absolute;inset:0 0 auto;height:min(1400px,100%);z-index:-1;pointer-events:none;
  background:radial-gradient(60% 420px at 50% 0%,rgba(255,207,107,.10),transparent 70%),radial-gradient(80% 600px at 50% 0%,rgba(177,140,255,.12),transparent 75%),
  repeating-radial-gradient(ellipse 120% 70% at 50% -10%,transparent 0 58px,rgba(177,140,255,.07) 58px 59px);
  -webkit-mask:linear-gradient(#000 40%,transparent);mask:linear-gradient(#000 40%,transparent)}
/* 排片表：像影院场次牌 —— 厅号 / 海报 / 片名 / 代号·时长·短片数 / 展开钮 */
.cprog{list-style:none;margin:0;padding:0;border-top:1px solid var(--edge-2)}
.pr{position:relative;border-bottom:1px solid var(--edge)}
.pr::before{content:"";position:absolute;left:0;top:-1px;bottom:-1px;width:2px;background:var(--d);transform:scaleY(0);transform-origin:top;transition:transform .5s var(--eo)}
.pr.open::before,.pr:hover::before{transform:none}
.pr-row{display:grid;grid-template-columns:88px 168px minmax(0,1fr) auto 40px;align-items:center;gap:var(--s5);width:100%;padding:var(--s4) var(--s4) var(--s4) var(--s5);border:0;background:none;color:inherit;text-align:left;cursor:pointer;position:relative;overflow:hidden}
.pr-row::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,color-mix(in srgb,var(--d) 12%,transparent),transparent 60%);opacity:0;transition:opacity .4s var(--eu)}
.pr-row:hover::after,.pr.open .pr-row::after{opacity:1}
.pr-no{display:grid;gap:4px;font:500 10px/1 var(--mono);letter-spacing:.24em;color:var(--faint)}
.pr-no b{font:300 40px/1 var(--mono);letter-spacing:-.02em;color:var(--d);font-variant-numeric:tabular-nums;transition:transform .5s var(--eo)}
.pr-row:hover .pr-no b{transform:translateX(4px)}
.pr-pv{position:relative;aspect-ratio:16/9;border-radius:6px;overflow:hidden;border:1px solid var(--edge-2)}
.pr-pv img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--eo),filter .5s var(--eu);filter:saturate(.85) brightness(.85)}
.pr-row:hover .pr-pv img,.pr.open .pr-pv img{transform:scale(1.06);filter:none}
.pr-t{display:grid;gap:4px;min-width:0}
.pr-t b{font-size:clamp(18px,1.6vw,24px);font-weight:400;letter-spacing:.02em}
.pr-t small{color:var(--mute);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pr-meta{display:flex;gap:var(--s3);align-items:center;font:12px/1 var(--mono);color:var(--mute);letter-spacing:.06em;white-space:nowrap}
.pr-meta i{font-style:normal;color:var(--d);text-transform:uppercase;letter-spacing:.14em}
.pr-meta em{font-style:normal;padding:5px 8px;border:1px solid var(--edge);border-radius:4px}
.pr-x{position:relative;width:32px;height:32px;border-radius:50%;border:1px solid var(--edge-2);transition:transform .45s var(--eo),border-color .3s,background .3s}
.pr-x::before,.pr-x::after{content:"";position:absolute;left:10px;right:10px;top:15px;height:1px;background:var(--ink)}
.pr-x::after{transform:rotate(90deg);transition:transform .45s var(--eo)}
.pr.open .pr-x{transform:rotate(180deg);border-color:var(--d);background:color-mix(in srgb,var(--d) 18%,transparent)}
.pr.open .pr-x::after{transform:rotate(0)}
/* 胶片带：上下两排齿孔，片子在中间横排；展开时整条从左滑入 */
.pr-reel{padding:0 0 var(--s5) calc(88px + var(--s5) + var(--s5))}
.film{position:relative;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(220px,250px);gap:14px;overflow-x:auto;padding:26px 14px;background:#08070f;border-radius:6px;scrollbar-width:thin;scrollbar-color:var(--edge-2) transparent;scroll-snap-type:x proximity;animation:filmIn .6s var(--eo) both}
.film{background-image:repeating-linear-gradient(90deg,rgba(255,255,255,.12) 0 10px,transparent 10px 22px),repeating-linear-gradient(90deg,rgba(255,255,255,.12) 0 10px,transparent 10px 22px);background-size:100% 7px,100% 7px;background-position:0 8px,0 calc(100% - 8px);background-repeat:repeat-x}
.film .vtile{scroll-snap-align:start}
.film .vtile b{font-size:13.5px;font-weight:400}.film .vtile small{display:none}
.film .vtile .tg{background:rgba(5,4,13,.75);color:var(--d)}
@keyframes filmIn{from{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:none}}
.pr-acts{display:flex;gap:10px;margin-top:var(--s3)}
@media (max-width:900px){
  .pr-row{grid-template-columns:auto 112px minmax(0,1fr) 32px;gap:var(--s3);padding-left:var(--s3)}
  .pr-meta{display:none}.pr-no b{font-size:26px}.pr-no{font-size:9px}
  .pr-reel{padding-left:0}
  .film{grid-auto-columns:72%}
}
@media (prefers-reduced-motion:reduce){.film{animation:none}}
.sec>.wrap.grid>*,.cprog,.pr,.pr-reel{min-width:0}
.pr-reel{overflow:hidden}
.film .vtile .pl{opacity:0;transform:scale(.8);transition:opacity var(--t2) var(--eu),transform var(--t2) var(--eo)}.film .vtile:hover .pl{opacity:1;transform:none}
/* 倾斜要压过各卡片自己的 :hover 上浮（原来 .path:hover translateY 把 rotate 覆盖掉了），两者叠加 */
html.js .tilt.tilt.tilt{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))}   /* 压过 [data-stagger].in>*{transform:none} */
html.js .tilt.tilt.tilt:hover{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(-3px)}

/* =================== 1030 用户：toB 要克制 =================== */
/* 页面切换：只剩 0.18s 的淡出到底色，不要任何图形 */
.pt{transition:opacity .18s var(--eu)}.pt img{display:none}
html.arrive body::after,html.arrive body::before{display:none}
/* AI 客服（羽扇）回到右侧中间；留资区在视口时仍缩小让位 */
.rag{top:50%!important;bottom:auto!important;margin-top:-53px!important}
@media (max-width:640px){.rag{top:50%!important;bottom:auto!important;margin-top:-43px!important}}
