/* =====================================================================
   码上交付 · 星际宇宙主题层（在 site.css 之后加载，同权重靠后覆盖）
   视觉：深空基底 + 星点星轨 + 星云光晕 + 玻璃拟态 + 霓虹描边 + 轻微视差
   约束：正文对比度 ≥ 7:1；动效只做位移/透明度；prefers-reduced-motion 全停
   1. 色板        2. 深空背景与视差     3. 布局与自适应
   4. 首屏        5. 玻璃卡片与组件      6. 区块内 CTA 与团队卡
   7. 页面切换与进场动效
   ===================================================================== */

/* ---------- 1. 色板 ---------- */
:root {
  /* 深空基底 */
  --c-bg: #05070F;
  --c-bg-2: #0A1020;
  --c-card: rgba(17, 25, 46, .72);
  --c-card-solid: #111928;
  /* 文字：三档，均满足深色底上的高对比 */
  --c-ink: #E9EFFC;
  --c-ink-2: #A9B7D1;
  --c-ink-3: #7E8DAB;
  /* 描边与分隔 */
  --c-line: rgba(124, 164, 255, .16);
  --c-line-strong: rgba(124, 164, 255, .30);
  /* 主色 / 辅色 / 强调色 */
  --c-primary: #74A9FF;
  --c-primary-2: #6FF0DC;
  --c-accent: #FF9A3D;
  --c-accent-ink: #FFB173;
  --c-btn: #3D6BEF;
  --c-btn-hover: #4E7BFF;
  --c-accent-btn: #FF8A3D;
  --c-accent-btn-hover: #FF9E5C;
  --c-primary-soft: rgba(116, 169, 255, .12);
  --c-primary-line: rgba(116, 169, 255, .34);
  --c-teal-soft: rgba(111, 240, 220, .12);
  --c-teal-ink: #6FF0DC;
  --c-accent-soft: rgba(255, 154, 61, .12);
  --c-accent-line: rgba(255, 154, 61, .34);
  --c-success: #34D399;
  /* 霓虹 */
  --neon-1: #4C7DFF;
  --neon-2: #22D3EE;
  --neon-3: #A855F7;
  --grad: linear-gradient(135deg, #4C7DFF 0%, #22D3EE 100%);
  --grad-warm: linear-gradient(135deg, #FF9A3D 0%, #FF6A2A 100%);
  /* 阴影 / 圆角 */
  --shadow: 0 4px 20px rgba(0, 0, 0, .45);
  --shadow-lg: 0 18px 48px rgba(0, 0, 0, .55);
  --glow-1: 0 0 28px -8px rgba(76, 125, 255, .55);
  --glow-2: 0 0 28px -8px rgba(34, 211, 238, .50);
  --radius: 16px;
  --radius-sm: 12px;
  --navy: #080D1B;
  --navy-2: #0C1428;
  --c-header: rgba(6, 10, 22, .72);
  --c-footer: #05070F;
  --c-footer-ink: #9BAAC7;
  --c-footer-line: rgba(124, 164, 255, .14);
  --gutter: clamp(16px, 2.6vw, 36px);
  --sec-y: clamp(40px, 5.6vw, 84px);
  --ease: cubic-bezier(.2, .7, .2, 1);
  color-scheme: dark;
}
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
h1, h2, h3, .section-title { letter-spacing: -.02em; }
.price, .stat-value, .fx-metric-v span, .cat-tile-meta .price { font-variant-numeric: tabular-nums; }
::selection { background: rgba(76, 125, 255, .38); color: #fff; }

/* ---------- 2. 深空背景：星点 + 星云 + 轻微视差 ---------- */
/* 底色挂在 html 上（会成为画布背景），body 保持透明，
   这样 body::before / ::after 的负层级星空才不会被 body 背景盖住 */
html {
  background-color: var(--c-bg);
  background-image: linear-gradient(180deg, #070C18 0%, #05070F 45%, #060A14 100%);
}
body { background: transparent; }
/* 星点：三层不同密度的点阵，缓慢漂移 */
body::before {
  content: "";
  position: fixed;
  left: 0; right: 0; top: -8%; height: 118%;
  z-index: -3;
  pointer-events: none;
  background-image:
    radial-gradient(1.4px 1.4px at 24px 34px, rgba(255, 255, 255, .80), rgba(255, 255, 255, 0) 100%),
    radial-gradient(1.1px 1.1px at 138px 96px, rgba(178, 214, 255, .62), rgba(255, 255, 255, 0) 100%),
    radial-gradient(1.7px 1.7px at 76px 172px, rgba(255, 255, 255, .50), rgba(255, 255, 255, 0) 100%),
    radial-gradient(1.2px 1.2px at 196px 210px, rgba(255, 214, 170, .45), rgba(255, 255, 255, 0) 100%);
  background-size: 220px 220px, 320px 320px, 430px 430px, 560px 560px;
  opacity: .85;
  animation: cosmos-drift 160s linear infinite, cosmos-twinkle 9s ease-in-out infinite;
}
/* 星云光晕 + 星轨：随滚动做轻微视差（--cosmos-y 由 fx.js 写入） */
body::after {
  content: "";
  position: fixed;
  left: -10%; right: -10%; top: -14%;
  height: 96vh;
  z-index: -2;
  pointer-events: none;
  background-image:
    radial-gradient(620px 440px at 14% 10%, rgba(76, 125, 255, .30), transparent 68%),
    radial-gradient(540px 400px at 88% 6%, rgba(168, 85, 247, .22), transparent 66%),
    radial-gradient(760px 480px at 68% 34%, rgba(34, 211, 238, .16), transparent 72%),
    linear-gradient(104deg, transparent 44%, rgba(160, 200, 255, .07) 49%, transparent 54%),
    linear-gradient(76deg, transparent 62%, rgba(160, 200, 255, .05) 66%, transparent 70%);
  filter: blur(6px);
  transform: translate3d(0, var(--cosmos-y, 0px), 0);
  will-change: transform;
  animation: cosmos-breathe 26s ease-in-out infinite alternate;
}
@keyframes cosmos-drift {
  from { background-position: 0 0, 0 0, 0 0, 0 0; }
  to { background-position: -220px 110px, 320px -160px, -430px 215px, 560px -280px; }
}
@keyframes cosmos-breathe {
  from { opacity: .85; }
  to { opacity: 1; }
}
@keyframes cosmos-twinkle {
  0%, 100% { opacity: .55; }
  50% { opacity: .95; }
}

/* 深度层级（从远到近）：
   -4 星系（银河带 + 星系核 + 旋臂） → -3 星点 → -2 星云与星轨 → -1 流星雨 → 0 内容 */
/* ---------- 2.1 星系背景：银河带 + 星系核 + 旋臂 ---------- */
.cosmos-galaxy {
  position: fixed;
  left: -24%; right: -24%; top: -20%; bottom: -10%;
  z-index: -4;
  pointer-events: none;
  background-image:
    /* 银河主带：斜跨画面的弥散亮带 */
    linear-gradient(114deg, transparent 24%, rgba(96, 132, 220, .13) 36%, rgba(168, 196, 255, .17) 44%, rgba(120, 160, 235, .12) 53%, transparent 65%),
    /* 银河亮芯 */
    linear-gradient(114deg, transparent 33%, rgba(206, 224, 255, .12) 43%, rgba(255, 255, 255, .15) 47%, rgba(198, 218, 255, .10) 51%, transparent 61%),
    /* 暗尘带：把银河劈成两半，才有真实银河的味道 */
    linear-gradient(114deg, transparent 31%, rgba(6, 9, 20, .52) 43%, rgba(5, 8, 18, .62) 46%, rgba(6, 9, 20, .48) 49%, transparent 59%),
    /* 星系核与外晕（右上） */
    radial-gradient(360px 220px at 74% 20%, rgba(190, 165, 255, .20), transparent 70%),
    radial-gradient(720px 460px at 74% 20%, rgba(76, 125, 255, .12), transparent 74%),
    /* 远端伴星系（左下） */
    radial-gradient(260px 160px at 13% 79%, rgba(34, 211, 238, .10), transparent 72%);
  filter: blur(16px);
  transform: translate3d(0, calc(var(--cosmos-y, 0px) * .45), 0);
  will-change: transform;
  animation: galaxy-breathe 34s ease-in-out infinite alternate;
}
/* 带内的密集星点：用斜向 mask 只让银河带里的星星显形；
   动画走 transform（合成层），统一 260px 平铺周期保证无缝循环 */
.cosmos-galaxy::before {
  content: "";
  position: absolute; inset: -260px;
  background-image:
    radial-gradient(1.3px 1.3px at 36px 72px, rgba(255, 255, 255, .92), rgba(255, 255, 255, 0) 100%),
    radial-gradient(1px 1px at 116px 22px, rgba(206, 226, 255, .80), rgba(255, 255, 255, 0) 100%),
    radial-gradient(1.6px 1.6px at 178px 142px, rgba(255, 238, 214, .72), rgba(255, 255, 255, 0) 100%),
    radial-gradient(1px 1px at 70px 198px, rgba(255, 255, 255, .70), rgba(255, 255, 255, 0) 100%),
    radial-gradient(1.2px 1.2px at 224px 96px, rgba(255, 255, 255, .60), rgba(255, 255, 255, 0) 100%);
  background-size: 260px 260px;
  -webkit-mask-image: linear-gradient(114deg, transparent 26%, rgba(0, 0, 0, .55) 36%, #000 44%, #000 52%, rgba(0, 0, 0, .5) 60%, transparent 68%);
  mask-image: linear-gradient(114deg, transparent 26%, rgba(0, 0, 0, .55) 36%, #000 44%, #000 52%, rgba(0, 0, 0, .5) 60%, transparent 68%);
  animation: galaxy-dust 300s linear infinite;
}
/* 旋臂：椭圆区域内两条扇形旋涡 */
.cosmos-galaxy::after {
  content: "";
  position: absolute;
  left: 48%; top: -16%; width: 54%; height: 78%;
  background: conic-gradient(from 170deg at 50% 50%,
    transparent 0deg, rgba(150, 180, 255, .12) 40deg, transparent 84deg,
    rgba(176, 146, 255, .10) 136deg, transparent 196deg,
    rgba(110, 200, 240, .08) 248deg, transparent 306deg);
  border-radius: 50%;
  filter: blur(22px);
  opacity: .85;
}
@keyframes galaxy-breathe { from { opacity: .80; } to { opacity: 1; } }
@keyframes galaxy-dust {
  from { transform: translate3d(0, 0, 0); }
  to { transform: translate3d(-260px, 130px, 0); }
}

/* 让半透明卡片能透出星空 */
.section, .section.alt, .page-hero, .stats-band { background: transparent; }
.section.alt {
  background-image: linear-gradient(180deg, rgba(124, 164, 255, .05), rgba(124, 164, 255, .015));
  border-top: 1px solid var(--c-line);
  border-bottom: 1px solid var(--c-line);
}

/* ---------- 3. 布局与自适应 ---------- */
.container { max-width: 1360px; padding: 0 var(--gutter); }
@media (min-width: 1500px) { .container { max-width: 1480px; } }
@media (min-width: 1800px) { .container { max-width: 1640px; } }
.container.narrow { max-width: 880px; }
.section { padding: var(--sec-y) 0; }
.section.tight { padding: calc(var(--sec-y) * .55) 0; }
.section-head { max-width: 780px; margin-bottom: clamp(20px, 2.4vw, 34px); }
.section-head-row { margin-bottom: clamp(20px, 2.4vw, 34px); }
.section-title { font-size: clamp(23px, 1.1rem + 1.3vw, 38px); font-weight: 800; }
.section-desc { font-size: clamp(14.5px, .85rem + .2vw, 16.5px); line-height: 1.75; }
.page-hero { padding: clamp(28px, 4vw, 56px) 0 clamp(30px, 4vw, 56px); }
.page-hero h1 { font-size: clamp(28px, 1.3rem + 1.8vw, 44px); }
@media (min-width: 1240px) { .grid-3 { gap: 20px; } }
/* 移动端：紧凑单列，压掉大段留白 */
@media (max-width: 719.98px) {
  .section { padding: clamp(34px, 7.5vw, 48px) 0; }
  .section-head { margin-bottom: 18px; }
  .grid-2, .grid-3, .grid-4 { gap: 12px; }
  .card { padding: 16px; }
  .container { padding: 0 14px; }
}

/* 首页区块编号 */
.page-home main { counter-reset: sec; }
.page-home main > .section .section-head .eyebrow::before {
  counter-increment: sec;
  content: counter(sec, decimal-leading-zero) " /";
  display: inline; width: auto; height: auto; margin-right: 8px; background: none;
  color: var(--c-ink-3); font-variant-numeric: tabular-nums;
}
.eyebrow { font-size: 13px; font-weight: 700; letter-spacing: .08em; color: var(--c-primary); }
.eyebrow::before { background: var(--grad); box-shadow: var(--glow-1); }

/* ---------- 4. 首屏 ---------- */
.hero.hero-dark {
  --h-ink: #F2F6FF;
  --h-ink-2: #AEBBD8;
  --h-line: rgba(124, 164, 255, .20);
  color: var(--h-ink);
  background: transparent;
  padding: clamp(36px, 5vw, 80px) 0 clamp(56px, 6.4vw, 96px);
}
.hero.hero-dark::before {
  background:
    radial-gradient(900px 460px at 86% -14%, rgba(76, 125, 255, .34), transparent 66%),
    radial-gradient(620px 380px at -6% 18%, rgba(34, 211, 238, .18), transparent 68%);
  z-index: -2;
}
.hero.hero-dark::after {
  background-image:
    linear-gradient(rgba(160, 200, 255, .055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(160, 200, 255, .055) 1px, transparent 1px);
  background-size: 48px 48px;
  -webkit-mask-image: radial-gradient(ellipse 84% 74% at 50% 0%, #000 28%, transparent 76%);
  mask-image: radial-gradient(ellipse 84% 74% at 50% 0%, #000 28%, transparent 76%);
  z-index: -1;
}
.hero-dark h1 { color: #fff; font-size: clamp(29px, 1rem + 2.5vw, 54px); line-height: 1.16; font-weight: 800; text-wrap: balance; }
.hero-dark .hero-line { white-space: normal; }
.hero-dark .hero-line.grad, .hero-dark .grad {
  background: linear-gradient(120deg, #8FC0FF 0%, #6FF0DC 55%, #C4A6FF 100%);
  -webkit-background-clip: text; background-clip: text;
  color: transparent; -webkit-text-fill-color: transparent;
}
.hero-dark .hero-sub { color: var(--h-ink-2); font-size: clamp(15px, .85rem + .35vw, 18px); line-height: 1.8; }
.hero-dark .eyebrow { color: #C6D6FA; letter-spacing: .04em; }
.hero-eyebrow {
  display: inline-flex; align-items: center; gap: 8px; padding: 6px 13px;
  border: 1px solid var(--h-line); border-radius: 999px;
  background: rgba(124, 164, 255, .08);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  font-weight: 600;
}
.hero-eyebrow::before { display: none !important; }
.hero-dark .hero-points { gap: 10px; }
.hero-dark .hero-points li {
  padding: 7px 12px; border-radius: 10px;
  background: rgba(124, 164, 255, .08); border: 1px solid var(--h-line);
  color: #E4EAF8; font-weight: 600; font-size: 14px;
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
.hero-dark .hero-points .icon { color: var(--c-primary-2); }
.hero-dark .btn-ghost { color: #EAF1FF; border-color: rgba(160, 200, 255, .32); background: rgba(124, 164, 255, .06); }
.hero-dark .btn-ghost:hover { border-color: rgba(160, 200, 255, .62); background: rgba(124, 164, 255, .13); }
.hero-risk {
  display: flex; align-items: flex-start; gap: 8px; margin: 18px 0 0;
  padding: 10px 14px; max-width: 640px;
  border: 1px solid var(--h-line); border-radius: 12px;
  background: rgba(111, 240, 220, .07);
  color: #C9D6EF; font-size: 13.5px; line-height: 1.65;
}
.hero-risk .icon { width: 17px; height: 17px; margin-top: 3px; flex: none; color: var(--c-primary-2); }
.fx-live { position: relative; width: 8px; height: 8px; border-radius: 50%; background: #34D399; flex: 0 0 auto; box-shadow: 0 0 0 3px rgba(52, 211, 153, .20); }
.term-caret { display: none; }

/* 项目进度卡：玻璃拟态 */
.hero-term {
  position: relative; border-radius: 18px; overflow: hidden;
  background: linear-gradient(160deg, rgba(20, 30, 56, .92), rgba(10, 16, 32, .92));
  color: var(--c-ink);
  border: 1px solid var(--c-line-strong);
  box-shadow: var(--shadow-lg), 0 0 44px -22px rgba(76, 125, 255, .55);
  -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
}
.hero-term::before {
  content: ""; position: absolute; inset: 0 0 auto 0; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(160, 200, 255, .55), transparent);
}
.hero-term-bar { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--c-line); background: rgba(124, 164, 255, .05); font-size: 13px; font-weight: 600; color: var(--c-ink-2); }
.fx-badge { margin-left: auto; padding: 2px 8px; border-radius: 999px; font-size: 11px; font-weight: 600; color: var(--c-ink-3); background: rgba(124, 164, 255, .10); border: 1px solid var(--c-line); }
.hero-term-body { padding: 18px 18px 10px; font-size: 14px; line-height: 1.5; }
.hero-term-body p { margin: 0 0 10px; display: flex; gap: 10px; align-items: center; }
.term-ok { display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: rgba(111, 240, 220, .14); color: var(--c-primary-2); flex: 0 0 auto; }
.term-ok .icon { width: 13px; height: 13px; stroke-width: 3; }
.term-line strong { color: var(--c-ink); font-weight: 700; min-width: 4.8em; }
.term-dim { color: var(--c-ink-2); font-size: 13.5px; }
.fx-prog { margin: 0 0 16px; }
.fx-prog-top { display: flex; justify-content: space-between; font-size: 12.5px; font-weight: 600; color: var(--c-ink-3); margin-bottom: 6px; }
.fx-prog-top strong { color: var(--c-primary-2); font-variant-numeric: tabular-nums; }
.fx-prog-bar { height: 6px; border-radius: 99px; background: rgba(124, 164, 255, .14); overflow: hidden; }
.fx-prog-bar i { display: block; height: 100%; width: 100%; border-radius: inherit; background: var(--grad); transition: width .5s var(--ease); }
.fx-msg { margin-top: 14px !important; align-items: flex-start !important; }
.fx-msg-avatar { flex: 0 0 auto; display: grid; place-items: center; width: 30px; height: 30px; border-radius: 9px; background: var(--grad); color: #04122B; font-weight: 800; font-size: 14px; }
.fx-msg-bubble { padding: 9px 12px; border-radius: 4px 12px 12px 12px; background: rgba(124, 164, 255, .10); border: 1px solid var(--c-line); color: var(--c-ink); font-size: 13.5px; line-height: 1.55; }
.hero-term-foot { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--c-line); border-top: 1px solid var(--c-line); }
.hero-term-foot > div { padding: 12px 14px; background: rgba(10, 16, 32, .92); min-width: 0; }
.hero-term-foot small { display: block; font-size: 11.5px; color: var(--c-ink-3); }
.hero-term-foot strong { display: block; font-size: clamp(14px, .8rem + .35vw, 18px); color: var(--c-ink); white-space: nowrap; }
.hero-term-foot strong.price { color: var(--c-accent-ink); }
.hero-term-foot em { display: block; font-style: normal; font-size: 11.5px; color: var(--c-ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.js .hero-term-body[data-fx-term] p { opacity: .38; transition: opacity .3s; }
.js .hero-term-body[data-fx-term] p.is-on { opacity: 1; }
.js .hero-term-body[data-fx-term] p.is-on .term-ok { background: var(--c-primary-2); color: #04122B; }
@media (min-width: 1080px) {
  .hero-dark .hero-grid { grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: clamp(32px, 4vw, 60px); }
  .hero-term { transform: none; }
}
@media (max-width: 719.98px) {
  .hero-term-body { font-size: 13px; padding: 14px 14px 8px; }
  .term-line strong { min-width: 0; }
  .term-dim { font-size: 12.5px; }
  .hero-term-foot { grid-template-columns: 1fr 1fr; }
  .hero-term-foot > div:last-child { grid-column: 1 / -1; }
  .hero-risk { font-size: 13px; }
}

/* 数据带：压在首屏下沿，数字用青绿 */
.stats-band { position: relative; z-index: 2; margin-top: clamp(-52px, -4vw, -28px); }
.stats {
  border-radius: 16px; box-shadow: var(--shadow-lg);
  background: var(--c-line);
  border: 1px solid var(--c-line-strong);
  overflow: hidden;
}
.stats .stat {
  background: linear-gradient(160deg, rgba(20, 30, 56, .92), rgba(10, 16, 32, .92));
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  padding: 18px 12px;
}
.stat-value {
  color: var(--c-primary-2); font-weight: 800;
  background: none; -webkit-text-fill-color: currentColor;
  text-shadow: 0 0 24px rgba(111, 240, 220, .35);
}
.stat-label { color: var(--c-ink-2); }

/* 适合谁：静态标签 */
.fx-marquee { padding: clamp(20px, 2.6vw, 32px) 0 0; }
.fx-marquee-label { margin: 0 0 12px; font-size: 13px; font-weight: 700; color: var(--c-ink-3); letter-spacing: .06em; text-align: center; }
.fx-who { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin: 0; padding: 0; list-style: none; }
.fx-who li {
  padding: 6px 14px; border: 1px solid var(--c-line); border-radius: 999px;
  background: rgba(124, 164, 255, .06); font-size: 13.5px; color: var(--c-ink-2);
}
@media (max-width: 719.98px) { .fx-who li { padding: 5px 11px; font-size: 12.5px; } }

/* ---------- 5. 玻璃卡片与组件 ---------- */
.card, .cat-tile, .svc-card, .case-card, .feature, .tier-card, .fx-metric, .faq-item, .svc-intro-card, .notice, .price-note, .quote-card {
  transition: border-color .2s var(--ease), box-shadow .2s var(--ease), transform .2s var(--ease);
}
.card, .svc-card, .case-card, .tier-card, .fx-metric, .svc-intro-card, .quote-card, .team-card, .team-verify {
  background: var(--c-card);
  border: 1px solid var(--c-line);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
}
.card::before, .svc-card::before, .case-card::before, .fx-metric::before, .team-card::before, .team-verify::before {
  content: ""; position: absolute; inset: 0 0 auto 0; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(160, 200, 255, .40), transparent);
  pointer-events: none;
}
.card, .svc-card, .case-card, .tier-card, .fx-metric, .svc-intro-card, .team-card, .team-verify { position: relative; }
/* 移动端关掉大面积模糊，保证滚动流畅 */
@media (max-width: 719.98px) {
  .card, .svc-card, .case-card, .tier-card, .fx-metric, .svc-intro-card, .team-card, .team-verify,
  .hero-term, .stats .stat, .hero-eyebrow, .hero-dark .hero-points li, .site-header {
    -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
    background-color: rgba(15, 22, 42, .94);
  }
}
@media (hover: hover) {
  .cat-tile:hover, .svc-card:hover, .case-card:hover, .tier-card:hover, .fx-metric:hover, .team-card:hover {
    transform: translateY(-3px);
    border-color: var(--c-primary-line);
    box-shadow: var(--shadow-lg), var(--glow-1);
  }
}
.notice { background: var(--c-primary-soft); border-color: var(--c-primary-line); color: var(--c-ink); }
.price-note { background: var(--c-accent-soft); border-color: var(--c-accent-line); color: var(--c-ink-2); }
.price { color: var(--c-accent-ink); }
.tag { background: var(--c-primary-soft); color: var(--c-primary); border: 1px solid var(--c-line); }
.tag.muted { background: rgba(124, 164, 255, .07); color: var(--c-ink-2); }
.demo-badge { background: rgba(255, 154, 61, .14); color: var(--c-accent-ink); border-color: var(--c-accent-line); }
.demo-badge.is-product { background: rgba(111, 240, 220, .13); color: var(--c-primary-2); border-color: rgba(111, 240, 220, .30); }
.demo-badge.is-career { background: rgba(124, 164, 255, .12); color: var(--c-primary); border-color: var(--c-primary-line); }

/* 按钮 */
.btn { transition: background-color .15s, border-color .15s, color .15s, box-shadow .15s, transform .15s; }
.btn:active { transform: translateY(1px); }
.btn-primary { background: var(--c-btn); color: #fff; box-shadow: 0 8px 22px -8px rgba(61, 107, 239, .75); }
.btn-primary:hover { background: var(--c-btn-hover); }
.btn-accent {
  background: var(--grad-warm); color: #2A1200;
  box-shadow: 0 10px 26px -8px rgba(255, 122, 42, .70);
}
.btn-accent:hover { background: linear-gradient(135deg, #FFA855, #FF7C3B); color: #2A1200; }
.btn-ghost {
  background: rgba(124, 164, 255, .07); color: var(--c-ink); border-color: var(--c-line-strong);
}
.btn-ghost:hover { border-color: var(--c-primary-line); color: #fff; background: rgba(124, 164, 255, .13); }
.btn-white { background: #EAF1FF; color: #0A1B4D; box-shadow: 0 10px 26px -10px rgba(160, 200, 255, .45); }
.btn-white:hover { background: #fff; }
:focus-visible { outline: 2px solid var(--c-primary-2); outline-offset: 2px; }

/* 页眉 / 导航 */
.site-header {
  background: var(--c-header);
  -webkit-backdrop-filter: blur(16px) saturate(160%); backdrop-filter: blur(16px) saturate(160%);
  border-bottom: 1px solid transparent;
}
.site-header.is-scrolled, .site-header.nav-open {
  border-bottom-color: var(--c-line);
  box-shadow: 0 6px 24px rgba(0, 0, 0, .45);
}
.brand { color: var(--c-ink); }
.brand-en { color: var(--c-ink-3); }
.nav-toggle { background: rgba(124, 164, 255, .07); border-color: var(--c-line-strong); color: var(--c-ink); }
.site-nav { background: linear-gradient(180deg, rgba(9, 14, 28, .97), rgba(6, 10, 22, .97)); border-bottom: 1px solid var(--c-line); box-shadow: 0 20px 40px rgba(0, 0, 0, .55); }
.site-nav li a { color: var(--c-ink-2); border-bottom-color: var(--c-line); }
.site-nav li a:hover { color: #fff; }
.site-nav .nav-tools { background: rgba(111, 240, 220, .07); box-shadow: inset 0 0 0 1px rgba(111, 240, 220, .18); }
.site-nav .nav-tools-label { color: var(--c-primary-2); }
.site-nav .nav-tools li a { color: var(--c-primary-2); border-bottom-color: rgba(111, 240, 220, .14); }
@media (min-width: 1280px) {
  .site-nav li a { color: var(--c-ink-2); }
  .site-nav li a:hover { color: #fff; background: rgba(124, 164, 255, .12); }
  .site-nav li a[aria-current="page"] { color: var(--c-primary); background: var(--c-primary-soft); }
  .site-nav .nav-tools li a:hover { background: rgba(111, 240, 220, .14); color: var(--c-primary-2); }
  .site-nav .nav-tools li a[aria-current="page"] { color: #04122B; background: var(--c-primary-2); }
}
/* 推广条 */
.promo-bar { background: linear-gradient(90deg, #1B2A55, #243A6E 45%, #1B2A55); border-bottom: 1px solid var(--c-line); }
.promo-dot { background: var(--c-primary-2); box-shadow: 0 0 0 3px rgba(111, 240, 220, .22); }
/* 页脚 */
.site-footer { background: var(--c-footer); border-top: 1px solid var(--c-line); color: var(--c-footer-ink); }
.footer-title { color: var(--c-ink); }
.footer-links a { color: var(--c-footer-ink); }
.footer-links a:hover { color: var(--c-primary-2); }
.footer-bottom { border-top: 1px solid var(--c-footer-line); }
.footer-brand .brand { color: var(--c-ink); }

/* 优势 / 步骤 / FAQ / 时间线 */
.feature-icon {
  background: linear-gradient(140deg, rgba(76, 125, 255, .30), rgba(34, 211, 238, .22));
  border: 1px solid var(--c-primary-line);
  color: var(--c-primary-2);
  box-shadow: var(--glow-1);
}
.cat-icon { background: rgba(124, 164, 255, .10); color: var(--c-primary); border: 1px solid var(--c-line); }
.cat-icon.tone-2 { background: rgba(111, 240, 220, .10); color: var(--c-primary-2); }
.cat-icon.tone-3 { background: rgba(255, 154, 61, .12); color: var(--c-accent-ink); }
.faq-item { background: var(--c-card); border: 1px solid var(--c-line); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.faq-item summary { color: var(--c-ink); }
@media (min-width: 1080px) {
  .steps li::after { background: linear-gradient(90deg, var(--c-primary-line), rgba(124, 164, 255, .10)); }
}
.num-list > li::before { background: var(--c-primary-soft); color: var(--c-primary); box-shadow: inset 0 0 0 1px var(--c-line); }
.check-list li::before { background-color: rgba(111, 240, 220, .14); }

/* 合作体验区块 */
.fx-show-grid { display: grid; gap: 16px; }
@media (min-width: 1080px) { .fx-show-grid { grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); align-items: stretch; } }
.fx-pipe {
  position: relative; padding: clamp(18px, 2vw, 28px); border-radius: 18px;
  background: linear-gradient(160deg, rgba(14, 22, 44, .92), rgba(8, 13, 27, .92));
  border: 1px solid var(--c-line-strong);
  color: #E6ECFA; overflow: hidden;
  box-shadow: var(--shadow), 0 0 48px -26px rgba(76, 125, 255, .6);
}
.fx-pipe-title { display: flex; align-items: center; gap: 8px; margin: 0 0 18px; font-weight: 700; color: #fff; }
.fx-pipe-list { position: relative; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; margin: 0 0 20px; padding: 0; list-style: none; }
.fx-pipe-list::before { content: ""; position: absolute; left: 10%; right: 10%; top: 23px; height: 1px; background: linear-gradient(90deg, transparent, rgba(160, 200, 255, .38), transparent); }
.fx-pipe-list li { position: relative; display: grid; justify-items: center; text-align: center; gap: 8px; min-width: 0; }
.fx-pipe-ico { position: relative; z-index: 1; display: grid; place-items: center; width: 46px; height: 46px; border-radius: 13px; background: rgba(124, 164, 255, .10); border: 1px solid var(--c-line-strong); color: var(--c-primary-2); }
.fx-pipe-ico .icon { width: 21px; height: 21px; }
.fx-pipe-list strong { display: block; font-size: 13.5px; color: #fff; }
.fx-pipe-list small { display: block; font-size: 12px; color: #9AA8C7; line-height: 1.4; }
.fx-promise { display: grid; gap: 10px; }
.fx-promise p { display: flex; gap: 12px; margin: 0; padding: 12px 14px; border-radius: 12px; background: rgba(124, 164, 255, .06); border: 1px solid var(--c-line); font-size: 13.5px; line-height: 1.65; color: var(--c-ink-2); }
.fx-promise .icon { flex: 0 0 auto; width: 20px; height: 20px; margin-top: 2px; color: var(--c-primary-2); }
.fx-promise strong { display: block; color: #fff; font-size: 14.5px; margin-bottom: 2px; }
.fx-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.fx-metric-v span { font-size: clamp(30px, 1.2rem + 1.6vw, 42px); font-weight: 800; letter-spacing: -.03em; color: var(--c-primary-2); text-shadow: 0 0 26px rgba(111, 240, 220, .30); }
.fx-metric-v small { font-size: 14px; font-weight: 700; color: var(--c-ink); }
.fx-metric p { margin: 6px 0 0; font-size: 13.5px; color: var(--c-ink-2); line-height: 1.6; }
.fx-metric-cta { grid-column: 1 / -1; background: var(--grad-warm); border-color: transparent; color: #2A1200; box-shadow: 0 10px 26px -10px rgba(255, 122, 42, .70); }
.fx-metric-cta:hover { background: linear-gradient(135deg, #FFA855, #FF7C3B); }
.fx-metric-cta .fx-metric-v small, .fx-metric-cta p { color: #2A1200; }
.fx-metric-cta .fx-metric-v small { font-size: 17px; }
.fx-metric-cta .icon { width: 16px; height: 16px; vertical-align: -3px; }
@media (max-width: 719.98px) {
  .fx-pipe-list { grid-template-columns: 1fr; gap: 12px; }
  .fx-pipe-list::before { left: 22px; right: auto; top: 22px; bottom: 22px; width: 1px; height: auto; }
  .fx-pipe-list li { grid-template-columns: 46px 1fr; justify-items: start; text-align: left; align-items: center; gap: 12px; }
}

/* ---------- 6. 区块内 CTA 与团队卡 ---------- */
.block-cta {
  display: grid; gap: 14px; align-items: center;
  margin-top: clamp(22px, 2.6vw, 32px);
  padding: clamp(16px, 1.8vw, 22px) clamp(18px, 2vw, 26px);
  border: 1px solid var(--c-primary-line);
  border-radius: 16px;
  background: linear-gradient(120deg, rgba(76, 125, 255, .14), rgba(34, 211, 238, .07) 60%, rgba(168, 85, 247, .08));
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  box-shadow: 0 0 40px -22px rgba(76, 125, 255, .8);
}
.block-cta-text { min-width: 0; }
.block-cta-text strong { display: block; font-size: clamp(16px, .95rem + .3vw, 19px); font-weight: 700; color: #fff; line-height: 1.45; }
.block-cta-text span { display: block; margin-top: 5px; font-size: 13.5px; line-height: 1.7; color: var(--c-ink-2); }
.block-cta-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.block-cta-actions .btn { flex: 1 1 170px; }
@media (min-width: 900px) {
  .block-cta { grid-template-columns: minmax(0, 1fr) auto; gap: 26px; }
  .block-cta-actions .btn { flex: 0 0 auto; }
}

/* 团队卡 */
.team-grid { gap: 14px; }
.team-card { padding: 20px; overflow: hidden; }
.team-card-head { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.team-role-icon {
  display: grid; place-items: center; width: 44px; height: 44px; flex: none;
  border-radius: 13px; background: linear-gradient(140deg, rgba(76, 125, 255, .28), rgba(34, 211, 238, .20));
  border: 1px solid var(--c-primary-line); color: var(--c-primary-2); box-shadow: var(--glow-1);
}
.team-role-icon .icon { width: 22px; height: 22px; }
.team-card h3 { margin: 0; font-size: 17px; color: #fff; }
.team-years { display: inline-block; margin-top: 3px; padding: 2px 9px; border-radius: 999px; background: rgba(111, 240, 220, .12); border: 1px solid rgba(111, 240, 220, .26); color: var(--c-primary-2); font-size: 12px; font-weight: 700; }
.team-focus { margin: 0 0 8px; font-size: 14.5px; line-height: 1.7; color: var(--c-ink); }
.team-note { margin: 0; font-size: 13.5px; line-height: 1.7; color: var(--c-ink-2); }
.team-verify { margin-top: 16px; padding: clamp(18px, 2vw, 26px); }
.team-verify-title { display: flex; align-items: center; gap: 9px; margin: 0 0 14px; font-size: 17px; color: #fff; }
.team-verify-title .icon { width: 21px; height: 21px; color: var(--c-primary-2); }
.team-verify .check-list { font-size: 14.5px; }
.team-verify .check-list li { color: var(--c-ink); }
.team-verify-note {
  display: flex; align-items: flex-start; gap: 9px; margin: 14px 0 0; padding-top: 14px;
  border-top: 1px solid var(--c-line);
  font-size: 13.5px; line-height: 1.7; color: var(--c-ink-2);
}
.team-verify-note .icon { width: 18px; height: 18px; margin-top: 3px; flex: none; color: var(--c-primary-2); }

/* FAQ 侧栏动作 */
.faq-side-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.faq-side-actions .btn { flex: 1 1 160px; }
.faq-side-risk {
  display: flex; align-items: flex-start; gap: 8px; margin: 16px 0 0;
  font-size: 13px; line-height: 1.65; color: var(--c-ink-2);
}
.faq-side-risk .icon { width: 16px; height: 16px; margin-top: 3px; flex: none; color: var(--c-primary-2); }

/* 页尾行动带：改成深空玻璃 + 霓虹描边（白字压在青色渐变上对比度不够） */
.cta-band {
  background: linear-gradient(140deg, rgba(76, 125, 255, .24), rgba(34, 211, 238, .10) 55%, rgba(168, 85, 247, .16));
  border: 1px solid var(--c-primary-line);
  color: var(--c-ink);
  box-shadow: var(--shadow-lg), 0 0 66px -28px rgba(76, 125, 255, .9);
  -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
}
.cta-band::before, .cta-band::after { background: rgba(160, 200, 255, .07); }
.cta-band h2 { color: #fff; }
.cta-band p { color: var(--c-ink-2); }
.cta-band .cta-band-hours { color: var(--c-ink-3); }
.cta-band .btn-ghost { background: rgba(124, 164, 255, .09); color: var(--c-ink); border-color: var(--c-line-strong); }
.cta-band .btn-ghost:hover { background: rgba(124, 164, 255, .16); color: #fff; }

/* 弹层：玻璃卡片，正文保持浅色 */
.modal-panel {
  background: linear-gradient(160deg, rgba(20, 30, 56, .96), rgba(9, 14, 28, .96));
  border: 1px solid var(--c-line-strong);
  box-shadow: var(--shadow-lg), 0 0 48px -22px rgba(76, 125, 255, .7);
  -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px);
}
.modal-title { color: #fff; }
.modal-desc, .modal-hint, .modal-url { color: var(--c-ink-2); }
.modal-tip { background: var(--c-primary-soft); border-color: var(--c-primary-line); color: var(--c-ink); }

/* 步骤序号：霓虹环 */
.steps li::before {
  background: rgba(10, 16, 32, .92);
  border-color: var(--c-primary-line);
  color: var(--c-primary-2);
  box-shadow: 0 0 18px -4px rgba(34, 211, 238, .55);
}
.timeline-item::before { background: var(--c-primary-2); box-shadow: 0 0 0 4px rgba(111, 240, 220, .16), 0 0 16px rgba(111, 240, 220, .6); }
.timeline-item::after { background: var(--c-line); }

/* =====================================================================
   6.5 特效增强（分级：L1 全端轻量 / L2 桌面专属）
   全部为 transform / opacity / background-position 动画，不触发重排；
   prefers-reduced-motion 与移动端按级关闭。
   ===================================================================== */

/* ---- L1：标题渐变流动 ---- */
@keyframes fx-gradflow {
  from { background-position: 0% 50%; }
  to { background-position: 100% 50%; }
}
.hero-dark .hero-line.grad, .hero-dark .grad {
  background-size: 220% 100%;
  animation: fx-gradflow 9s ease-in-out infinite alternate;
}
.eyebrow::before {
  background-size: 220% 100%;
  animation: fx-gradflow 6s ease-in-out infinite alternate;
}

/* ---- L1：行动区呼吸光晕 ---- */
@keyframes fx-glow-blue {
  0%, 100% { box-shadow: var(--shadow-lg), 0 0 44px -24px rgba(76, 125, 255, .8); }
  50% { box-shadow: var(--shadow-lg), 0 0 78px -16px rgba(76, 125, 255, 1); }
}
@keyframes fx-glow-warm {
  0%, 100% { box-shadow: 0 10px 26px -10px rgba(255, 122, 42, .70); }
  50% { box-shadow: 0 10px 34px -6px rgba(255, 138, 61, .95); }
}
.cta-band { animation: fx-glow-blue 6s ease-in-out infinite; }
.fx-metric-cta { animation: fx-glow-warm 5s ease-in-out infinite; }
.team-verify { animation: fx-glow-blue 8s ease-in-out infinite; }

/* ---- L1：卡片顶部扫光（hover 才播，不常驻） ---- */
/* 位移控制在元素内（0 → 150%），不需要 overflow 裁剪，也不会挡住焦点框 */
@keyframes fx-sweep {
  0% { transform: translateX(0); opacity: 0; }
  18% { opacity: 1; }
  100% { transform: translateX(150%); opacity: 0; }
}
@media (hover: hover) {
  .card::after, .svc-card::after, .case-card::after, .fx-metric::after, .team-card::after, .block-cta::after {
    content: "";
    position: absolute; left: 0; top: 0; width: 40%; height: 1px;
    background: linear-gradient(90deg, transparent, rgba(180, 216, 255, .95), transparent);
    transform: translateX(0); opacity: 0; pointer-events: none;
  }
  .card:hover::after, .svc-card:hover::after, .case-card:hover::after,
  .fx-metric:hover::after, .team-card:hover::after, .block-cta:hover::after {
    animation: fx-sweep .9s var(--ease);
  }
}

/* ---- L1：主按钮 hover 流光 ---- */
@keyframes fx-shine {
  to { transform: translateX(130%); }
}
@media (hover: hover) {
  .btn-accent, .btn-primary { position: relative; overflow: hidden; }
  .btn-accent::after, .btn-primary::after {
    content: "";
    position: absolute; inset: -20% 0;
    background: linear-gradient(105deg, transparent 38%, rgba(255, 255, 255, .5) 50%, transparent 62%);
    transform: translateX(-130%); pointer-events: none;
  }
  .btn-accent:hover::after, .btn-primary:hover::after { animation: fx-shine .8s ease-out; }
}

/* ---- L2：鼠标跟随星云光斑（负层级，压在内容之下，经玻璃卡片透出） ---- */
.cosmos-cursor {
  position: fixed; z-index: -1; left: 0; top: 0;
  width: 560px; height: 560px; margin: -280px 0 0 -280px;
  pointer-events: none; opacity: 0;
  mix-blend-mode: screen;
  background: radial-gradient(circle at center, rgba(76, 125, 255, .26), rgba(34, 211, 238, .12) 42%, transparent 68%);
  transform: translate3d(var(--mx, -9999px), var(--my, -9999px), 0);
  transition: opacity .4s ease;
  will-change: transform;
}
.cosmos-cursor.is-on { opacity: 1; }

/* ---- L2：首屏星轨圆环（行星沿轨道运行） ---- */
@keyframes fx-orbit { to { transform: rotate(360deg); } }
.hero-orbit {
  position: absolute; z-index: -1; right: -4%; top: 1%;
  width: min(720px, 66vw); aspect-ratio: 1;
  pointer-events: none; opacity: .92;
}
/* 中心恒星微光 */
.hero-orbit::before {
  content: "";
  position: absolute; inset: 40%; border-radius: 50%;
  background: radial-gradient(circle, rgba(124, 164, 255, .30), rgba(76, 125, 255, .10) 45%, transparent 72%);
  filter: blur(8px);
}
.hero-orbit i {
  position: absolute; inset: 0; border-radius: 50%;
  border: 1.5px dashed rgba(158, 192, 255, .52);
  animation: fx-orbit 44s linear infinite;
}
.hero-orbit i:nth-child(2) { inset: 15%; border-style: solid; border-color: rgba(111, 240, 220, .36); animation-duration: 30s; animation-direction: reverse; }
.hero-orbit i:nth-child(3) { inset: 33%; border-color: rgba(196, 166, 255, .36); animation-duration: 66s; }
/* 沿轨道运行的光点：局部 x 轴即切线方向，拉长即成拖尾 */
.hero-orbit i::after {
  content: "";
  position: absolute; top: -5px; left: 50%;
  width: 18px; height: 7px; margin-left: -9px; border-radius: 999px;
  background: linear-gradient(90deg, rgba(111, 240, 220, .12), rgba(111, 240, 220, .75) 55%, #EAFFF9);
  box-shadow: 0 0 20px 5px rgba(111, 240, 220, .78), 0 0 46px 12px rgba(111, 240, 220, .30);
}
.hero-orbit i:nth-child(2)::after {
  background: linear-gradient(90deg, rgba(196, 166, 255, .12), rgba(196, 166, 255, .75) 55%, #F5EEFF);
  box-shadow: 0 0 20px 5px rgba(168, 85, 247, .75), 0 0 46px 12px rgba(168, 85, 247, .28);
}
.hero-orbit i:nth-child(3)::after {
  background: linear-gradient(90deg, rgba(158, 192, 255, .12), rgba(158, 192, 255, .75) 55%, #EDF5FF);
  box-shadow: 0 0 18px 4px rgba(124, 164, 255, .72), 0 0 42px 10px rgba(124, 164, 255, .26);
}
@media (max-width: 1079.98px) { .hero-orbit { opacity: .55; width: min(440px, 80vw); } }

/* ---- 流星雨：阵发式，一阵多条；速度/长度/亮度逐条随机 ---- */
/* 遮挡处理：
   ① 整层 z-index -1 —— 在星云(-2)/星点(-3)/星系(-4) 之上、内容(0) 之下，
      不会再被带 blur 的星云层糊掉，也不会盖住一个字；
   ② 竖向 mask 把视口中部（正文与卡片密集区）压到 .30–.40，
      流星穿过时自然变淡，首尾的天空带保持全亮。 */
.cosmos-shower {
  position: fixed; inset: 0;
  z-index: -1;
  pointer-events: none;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 22%, rgba(0, 0, 0, .40) 36%, rgba(0, 0, 0, .30) 62%, #000 78%, #000 100%);
  mask-image: linear-gradient(180deg, #000 0%, #000 22%, rgba(0, 0, 0, .40) 36%, rgba(0, 0, 0, .30) 62%, #000 78%, #000 100%);
}
/* 位移写在 rotate 之后：先沿自身 x 轴平移，再整体旋转，
   这样尾巴朝向与飞行方向永远一致，不会出现在不同宽高比屏幕上"斜着飞却是平尾巴" */
@keyframes fx-comet {
  0%   { opacity: 0; transform: rotate(var(--c-angle, 18deg)) translate3d(0, 0, 0) scaleX(.34); }
  6%   { opacity: var(--c-op, 1); }
  92%  { opacity: var(--c-op, 1); }
  100% { opacity: 0; transform: rotate(var(--c-angle, 18deg)) translate3d(var(--c-dist, 2000px), 0, 0) scaleX(1); }
}
.cosmos-comet {
  position: absolute; left: 0; top: 0;
  width: var(--c-len, 420px);
  height: var(--c-thick, 3px);
  border-radius: 999px;
  opacity: 0;
  pointer-events: none;
  background: linear-gradient(90deg, transparent 0%, rgba(140, 180, 255, .20) 24%, rgba(200, 228, 255, .72) 62%, rgba(240, 250, 255, .96) 88%, #FFFFFF 100%);
  filter: drop-shadow(0 0 8px rgba(170, 210, 255, .90)) drop-shadow(0 0 22px rgba(110, 165, 255, .48));
  will-change: transform, opacity;
}
/* 流星头部亮点：越大越快则越亮，尺寸由 --c-head 逐条给定 */
.cosmos-comet::after {
  content: "";
  position: absolute; right: -2px; top: 50%;
  width: var(--c-head, 9px); height: var(--c-head, 9px);
  margin-top: calc(var(--c-head, 9px) * -.5);
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 14px 4px rgba(205, 230, 255, .95), 0 0 34px 10px rgba(120, 170, 255, .48);
}
.cosmos-comet.is-fly { animation: fx-comet var(--c-dur, 1.15s) cubic-bezier(.22, .62, .32, 1) 1; }

/* ---------- 7. 页面切换与进场动效 ---------- */
@view-transition { navigation: auto; }
.site-header { view-transition-name: site-header; }
::view-transition-old(root) { animation: vt-out .16s ease-in both; }
::view-transition-new(root) { animation: vt-in .32s var(--ease) both; }
@keyframes vt-out { to { opacity: 0; transform: translateY(-6px); } }
@keyframes vt-in { from { opacity: 0; transform: translateY(12px); } }
@supports not (view-transition-name: none) {
  #main { animation: vt-in .36s var(--ease) both; }
}
.js .fx-reveal { opacity: 0; transform: translateY(12px); transition: opacity .5s var(--ease), transform .5s var(--ease); transition-delay: calc(var(--d, 0) * 50ms); }
.js .fx-reveal.is-in { opacity: 1; transform: none; }
.fx-progress { position: fixed; top: 0; left: 0; right: 0; height: 2px; z-index: 100; transform-origin: 0 50%; transform: scaleX(0); background: var(--grad); pointer-events: none; }

/* 动效偏好：全部停掉，只保留静态版式 */
@media (prefers-reduced-motion: reduce) {
  body::before { animation: none; }
  body::after { animation: none; transform: none; }
  ::view-transition-old(root), ::view-transition-new(root) { animation: none; }
  #main { animation: none !important; }
  .js .fx-reveal, .js .hero-term-body[data-fx-term] p { opacity: 1 !important; transform: none !important; transition: none !important; }
  /* 特效层全部退场：只保留静态版式与配色 */
  .cosmos-cursor, .cosmos-comet, .cosmos-shower, .hero-orbit { display: none !important; }
  /* 星系背景是静态视觉基底，保留图案，只停掉缓慢动画 */
  .cosmos-galaxy, .cosmos-galaxy::before { animation: none !important; }
  .hero-dark .hero-line.grad, .hero-dark .grad, .eyebrow::before { animation: none !important; }
  .cta-band, .fx-metric-cta, .team-verify { animation: none !important; }
  .card::after, .svc-card::after, .case-card::after, .fx-metric::after, .team-card::after, .block-cta::after,
  .btn-accent::after, .btn-primary::after { display: none !important; }
}

/* 打印：装饰层全部退场，只留内容 */
@media print {
  body::before, body::after { display: none !important; }
  .cosmos-galaxy, .cosmos-shower, .cosmos-cursor, .fx-progress { display: none !important; }
}
