@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/portal-assets-20261001/fonts/reference-ibm-plex-mono-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/portal-assets-20261001/fonts/reference-ibm-plex-mono-500-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/portal-assets-20261001/fonts/reference-inter-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/portal-assets-20261001/fonts/reference-inter-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/portal-assets-20261001/fonts/reference-inter-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/portal-assets-20261001/fonts/reference-inter-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


/* ============================================================
   NextBanker 首页重构 Demo
   结构：总（全流程总览）→ 分（01 发现 / 02 研判 / 03 预测 / 04 直连）
   品牌沿用原站：浅色底 + 品红 signal
============================================================ */
:root{
  --bg:#f7f8fa; --panel:#ffffff; --raise:#f2f4f8;
  --line:#e4e7ee; --line-soft:#edf0f5; --line-strong:#d5dae3;
  --ink:#14161c; --body:#414957; --muted:#5c6472; --faint:#9aa2b0;
  --signal:#ab4077; --signal-deep:#8e2f62; --signal-mid:#c25c8f; --signal-soft:#fbeff5;
  --green:#16a34a;
  --dark:#101218; --dark-2:#161922; --dark-line:rgba(255,255,255,.09);
  --mono:"IBM Plex Mono","Inter","PingFang SC",ui-monospace,monospace;
  --sans:"Inter","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --shadow-md:0 2px 0.375rem rgba(18,24,40,.05),0 0.875rem 2.5rem rgba(18,24,40,.08);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font:0.875rem/1.65 var(--sans);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums lining-nums}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer;border:none;background:none}
::selection{background:var(--signal);color:#fff}
.wrap{max-width:73.75rem;margin:0 auto;padding:0 2rem}
.eyebrow{display:inline-flex;align-items:center;gap:0.5625rem;font:500 0.65625rem/1 var(--mono);letter-spacing:.26em;color:var(--signal-deep);text-transform:uppercase}
.eyebrow i{width:0.375rem;height:0.375rem;border-radius:50%;background:var(--signal);animation:blip 2.2s ease-in-out infinite}
@keyframes blip{0%,100%{opacity:1}50%{opacity:.3}}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:0.4375rem;border-radius:0.5625rem;padding:0.6875rem 1.375rem;font-size:0.84375rem;font-weight:500;transition:all .18s}
.btn-primary{background:var(--signal);color:#fff}
.btn-primary:hover{background:var(--signal-deep)}
.btn-outline{border:1px solid var(--line-strong);color:var(--muted)}
.btn-outline:hover{border-color:var(--signal);color:var(--signal)}
/* 入场动画 */
.rv{opacity:0;transform:translateY(1.375rem);transition:opacity .7s ease,transform .7s cubic-bezier(.22,.61,.36,1)}
.rv.in{opacity:1;transform:none}
/* 四角星装饰 */
.star{position:absolute;width:0.9375rem;height:0.9375rem;opacity:.5;pointer-events:none}
.star svg{display:block;width:100%;height:100%}

/* ---------- 左侧流程轨（桌面端） ---------- */
.rail{position:fixed;left:1.625rem;top:50%;transform:translateY(-50%);z-index:60;display:none;flex-direction:column;align-items:center;gap:0}
@media(min-width:1380px){.rail{display:flex}}
.rail-line{width:1px;height:2.75rem;background:var(--line-strong);position:relative;overflow:hidden}
.rail-line b{position:absolute;left:0;top:0;width:100%;height:0;background:var(--signal);transition:height .5s cubic-bezier(.22,.61,.36,1)}
.rail-item{display:flex;align-items:center;gap:0.625rem;padding:0.4375rem 0;cursor:pointer;position:relative}
.rail-item .dot{width:0.5625rem;height:0.5625rem;border-radius:50%;border:1.5px solid var(--line-strong);background:var(--bg);transition:all .3s;flex-shrink:0}
.rail-item .lab{position:absolute;left:1.375rem;white-space:nowrap;font:500 0.65625rem var(--mono);letter-spacing:.14em;color:var(--faint);opacity:0;transform:translateX(-0.375rem);transition:all .3s}
.rail:hover .lab{opacity:1;transform:none}
.rail-item.on .dot{border-color:var(--signal);background:var(--signal);box-shadow:0 0 0 0.25rem var(--signal-soft)}
.rail-item.on .lab{color:var(--signal-deep)}

/* ---------- 导航 ---------- */
.nav{position:sticky;top:0;z-index:50;background:rgba(247,248,250,.85);backdrop-filter:blur(0.75rem);border-bottom:1px solid transparent;transition:border-color .3s}
.nav.scrolled{border-bottom-color:var(--line)}
.nav-in{max-width:77.5rem;margin:0 auto;padding:0.9375rem 2rem;display:flex;align-items:center;gap:1.5rem}
.brand{font-size:1.1875rem;font-weight:700;letter-spacing:-.01em}
.brand em{font-style:normal;color:var(--signal)}
.member{display:flex;align-items:center;gap:0.75rem;padding-left:1rem;border-left:1px solid var(--line)}
.member span{font-size:0.625rem;line-height:1.4;color:var(--faint)}
.member img{display:block;height:1.25rem;width:auto}
.nav-links{display:flex;align-items:center;gap:0.25rem;margin-left:auto}
.nav-links a{padding:0.4375rem 0.6875rem;border-radius:0.4375rem;font-size:0.78125rem;font-weight:500;color:var(--muted);transition:all .2s}
.nav-links a:hover{background:var(--raise);color:var(--ink)}
.nav-links a b{font:500 0.625rem var(--mono);color:var(--signal-mid);margin-right:0.1875rem}
.nav-links .founder{color:var(--signal-deep);font-weight:600}
.nav-cta{display:flex;gap:0.625rem;margin-left:0.875rem}
.nav-cta .btn{padding:0.5rem 1rem;font-size:0.78125rem}
@media(max-width:1000px){.member,.nav-links a b{display:none}.nav-links{gap:0}}
@media(max-width:760px){.nav-links{display:none}}

/* ---------- Hero ---------- */
.hero{position:relative;overflow:hidden;text-align:center;padding:clamp(4.5rem,9vh,6.875rem) 1.5rem 0}
.hero::after{content:"";position:absolute;top:-10rem;left:50%;translate:-50% 0;width:40rem;height:26.25rem;pointer-events:none;background:radial-gradient(ellipse at center,rgba(171,64,119,.09),transparent 65%)}
.hero h1{margin:1.5rem 0 1.25rem;font-size:clamp(2.125rem,4.6vw,3.375rem);line-height:1.18;font-weight:700;letter-spacing:-.02em}
.hero h1 em{font-style:normal;background:linear-gradient(100deg,#c25c8f,#ab4077 45%,#8e2f62);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.hero .lede{margin:0 auto 2.125rem;color:var(--muted);font-size:0.9375rem;line-height:1.9;max-width:80ch}
.hero .lede b{color:var(--ink);font-weight:600}
.hero-cta{display:flex;gap:0.75rem;justify-content:center;flex-wrap:wrap;position:relative;z-index:1}
.hero-micro{margin-top:0.9375rem;font:400 0.6875rem var(--mono);letter-spacing:.14em;color:var(--faint)}
/* Hero 内的全流程条（总的第一次出现） */
.hero-flow{position:relative;z-index:1;max-width:66.25rem;margin:3.5rem auto 0;padding:0 0.5rem 4.5rem}
.hf-track{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.hf-line{position:absolute;top:1.4375rem;left:12.5%;right:12.5%;height:2px;background:var(--line);border-radius:2px;overflow:hidden}
.hf-line b{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--signal-mid),var(--signal-deep));transition:width 2.6s cubic-bezier(.65,0,.35,1) .3s}
.hero-flow.in .hf-line b{width:100%}
.hf-step{position:relative;text-align:center;padding:0 0.625rem;opacity:0;transform:translateY(0.875rem);transition:opacity .6s ease,transform .6s ease;display:block}
.hero-flow.in .hf-step{opacity:1;transform:none}
.hero-flow.in .hf-step:nth-child(2){transition-delay:.15s}
.hero-flow.in .hf-step:nth-child(3){transition-delay:.45s}
.hero-flow.in .hf-step:nth-child(4){transition-delay:.75s}
.hero-flow.in .hf-step:nth-child(5){transition-delay:1.05s}
.hf-node{width:2.875rem;height:2.875rem;margin:0 auto 0.875rem;border-radius:0.875rem;background:var(--panel);border:1px solid var(--line);box-shadow:0 1px 0.1875rem rgba(18,24,40,.06);display:flex;align-items:center;justify-content:center;position:relative;z-index:1;transition:all .25s}
.hf-node svg{width:1.25rem;height:1.25rem;stroke:var(--signal-deep);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.hf-step:hover .hf-node{border-color:var(--signal);transform:translateY(-0.1875rem);box-shadow:var(--shadow-md)}
.hf-step .num{font:500 0.625rem var(--mono);letter-spacing:.2em;color:var(--signal-mid)}
.hf-step h3{margin:0.3125rem 0 0.3125rem;font-size:0.96875rem;font-weight:600}
.hf-step p{margin:0;color:var(--faint);font-size:0.75rem;line-height:1.6}
.hf-step .go{display:inline-block;margin-top:0.5625rem;font:500 0.65625rem var(--mono);letter-spacing:.1em;color:var(--signal-deep);opacity:0;transition:opacity .25s}
.hf-step:hover .go{opacity:1}
@media(max-width:760px){.hf-track{grid-template-columns:repeat(2,1fr);gap:1.875rem 0}.hf-line{display:none}}

/* ---------- 总览（暗色 · 总） ---------- */
.flow{position:relative;background:var(--dark);color:#e8eaf0;overflow:hidden;overflow:clip}
.flow::before{content:"";position:absolute;inset:0;background:radial-gradient(56.25rem 31.25rem at 85% -10%,rgba(171,64,119,.16),transparent 60%),radial-gradient(43.75rem 26.25rem at 0% 110%,rgba(171,64,119,.1),transparent 60%);pointer-events:none}
.flow-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:4.375rem;padding:6.875rem 2rem 7.5rem}
.flow-sticky{position:sticky;top:6.875rem;align-self:start}
.flow .eyebrow{color:var(--signal-mid)}
.flow h2{margin:1.375rem 0 1.125rem;font-size:clamp(1.75rem,3.2vw,2.5rem);line-height:1.25;font-weight:700;letter-spacing:-.02em;color:#fff}
.flow h2 em{font-style:normal;color:var(--signal-mid)}
.flow-lede{color:#9aa0ae;font-size:0.90625rem;line-height:1.9;max-width:46ch}
.flow-lede b{color:#dfe2ea;font-weight:500}
.flow-stats{display:flex;gap:0;margin-top:2.375rem;border:1px solid var(--dark-line);border-radius:0.875rem;overflow:hidden;background:rgba(255,255,255,.025)}
.fstat{flex:1;padding:1.125rem 1.25rem;border-left:1px solid var(--dark-line)}
.fstat:first-child{border-left:0}
.fstat b{display:block;font:600 1.5rem/1.2 var(--sans);color:#fff;letter-spacing:-.01em}
.fstat b i{font-style:normal;color:var(--signal-mid)}
.fstat span{font:400 0.65625rem var(--mono);letter-spacing:.12em;color:#7c8290;text-transform:uppercase}
/* 右侧脊柱 */
.spine-wrap{position:relative;padding-left:3.25rem}
.spine-svg{position:absolute;left:0.625rem;top:0.5rem;bottom:0.5rem;width:1.625rem;height:calc(100% - 1rem)}
.spine-svg path{fill:none;stroke:rgba(255,255,255,.12);stroke-width:2}
.spine-svg path.prog{stroke:url(#spineGrad);stroke-width:2.5;stroke-linecap:round}
.spine-dot{position:absolute;width:0.75rem;height:0.75rem;margin:-0.375rem 0 0 -0.375rem;border-radius:50%;background:var(--signal-mid);box-shadow:0 0 0 0.3125rem rgba(194,92,143,.18),0 0 1.125rem rgba(194,92,143,.55);left:1.1875rem;top:0}
.stage{position:relative;border:1px solid var(--dark-line);border-radius:1rem;background:var(--dark-2);padding:1.625rem 1.75rem;margin-bottom:1.625rem;opacity:.38;transform:translateY(0.625rem);transition:opacity .5s,transform .5s,border-color .5s,background .5s}
.stage:last-child{margin-bottom:0}
.stage.on{opacity:1;transform:none;border-color:rgba(194,92,143,.4);background:#191c28}
.stage .tick{position:absolute;left:-3.25rem;top:1.875rem;width:0.875rem;height:0.875rem;margin-left:0.3125rem;border-radius:50%;border:2px solid rgba(255,255,255,.18);background:var(--dark);transition:all .4s}
.stage.on .tick{border-color:var(--signal-mid);background:var(--signal-mid);box-shadow:0 0 0 0.3125rem rgba(194,92,143,.16)}
.stage-top{display:flex;align-items:baseline;gap:0.875rem}
.stage-top .no{font:600 0.8125rem var(--mono);letter-spacing:.14em;color:var(--signal-mid)}
.stage-top h3{font-size:1.25rem;font-weight:650;color:#fff;letter-spacing:-.01em}
.stage-top .en{margin-left:auto;font:400 0.625rem var(--mono);letter-spacing:.2em;color:#6d7382;text-transform:uppercase}
.stage p{margin:0.625rem 0 0.875rem;color:#9aa0ae;font-size:0.84375rem;line-height:1.8}
.stage .art{display:flex;flex-wrap:wrap;gap:0.5rem;align-items:center}
.stage .art span{padding:0.3125rem 0.6875rem;border-radius:62.4375rem;border:1px solid var(--dark-line);font:400 0.6875rem var(--mono);letter-spacing:.06em;color:#a9aebc}
.stage.on .art span{border-color:rgba(194,92,143,.35);color:#d8b9cb}
.stage .enter{margin-left:auto;font:500 0.71875rem var(--mono);letter-spacing:.08em;color:var(--signal-mid)}
.stage .enter:hover{color:#e08ab6}
@media(max-width:900px){.flow-grid{grid-template-columns:1fr;gap:3.125rem}.flow-sticky{position:static}}


/* ---------- 成果验证带 ---------- */
.proof{position:relative;padding:6rem 0 1.875rem}
.proof-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1.25rem;margin-bottom:2.125rem}
.proof h2{margin:1rem 0 0.5rem;font-size:clamp(1.5rem,3vw,2rem);font-weight:650;letter-spacing:-.01em}
.proof .sub{color:var(--muted);font-size:0.875rem;max-width:52ch}
.proof-strip{display:flex;gap:1.125rem;overflow-x:auto;padding:0.375rem 0.25rem 1.375rem;scroll-snap-type:x mandatory;scrollbar-width:none}
.proof-strip::-webkit-scrollbar{display:none}
.case{flex:0 0 20.625rem;scroll-snap-align:start;border:1px solid var(--line);border-radius:1rem;background:var(--panel);padding:1.375rem 1.5rem;display:flex;flex-direction:column;transition:all .25s}
.case:hover{border-color:var(--signal-mid);box-shadow:var(--shadow-md);transform:translateY(-0.1875rem)}
.case .sector{font:500 0.625rem var(--mono);letter-spacing:.14em;color:var(--signal-deep);text-transform:uppercase}
.case h3{margin:0.5625rem 0 0.375rem;font-size:1.0625rem;font-weight:650}
.case .desc{color:var(--faint);font-size:0.78125rem;line-height:1.65;margin-bottom:1rem}
.case .tl{border-left:2px solid var(--line-soft);padding-left:0.875rem;margin-bottom:1rem;display:flex;flex-direction:column;gap:0.5rem}
.case .tl li{list-style:none;font-size:0.75rem;color:var(--muted);display:flex;gap:0.5625rem;align-items:baseline}
.case .tl time{font:500 0.6875rem var(--mono);color:var(--faint);flex-shrink:0}
.case .tl li.hit{color:var(--ink)}
.case .tl li.hit time{color:var(--signal-deep)}
.case .amt{margin-top:auto;padding-top:0.875rem;border-top:1px solid var(--line-soft)}
.case .amt small{display:block;font-size:0.6875rem;color:var(--faint);margin-bottom:0.1875rem}
.case .amt b{font-size:1.125rem;font-weight:700;letter-spacing:-.01em}
.case .amt p{margin:0.1875rem 0 0;font-size:0.71875rem;color:var(--muted)}
.case .lead{display:inline-flex;align-items:center;gap:0.375rem;margin-top:0.75rem;padding:0.3125rem 0.6875rem;border-radius:62.4375rem;background:var(--signal-soft);color:var(--signal-deep);font:500 0.6875rem var(--mono);letter-spacing:.05em;align-self:flex-start}

/* ---------- 分述模块（分） ---------- */
.stage-sec{position:relative;padding:6.875rem 0 1.875rem}
.stage-sec + .stage-sec{border-top:1px solid var(--line-soft)}
.ss-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:4rem;align-items:start}
.ss-grid.mirror{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)}
.ss-grid.mirror .ss-intro{order:2}
.ss-grid.mirror .ss-demo{order:1}
.ss-intro{position:sticky;top:6.5rem}
.ss-no{display:inline-flex;align-items:center;gap:0.625rem;margin-bottom:1.25rem}
.ss-no .chip{padding:0.375rem 0.8125rem;border-radius:0.5rem;background:var(--ink);color:#fff;font:600 0.75rem var(--mono);letter-spacing:.16em}
.ss-no .of{font:400 0.6875rem var(--mono);letter-spacing:.2em;color:var(--faint)}
.ss-intro h2{margin:0 0 0.375rem;font-size:clamp(1.625rem,3vw,2.25rem);font-weight:700;letter-spacing:-.02em;line-height:1.25}
.ss-intro .en{display:block;font:400 0.65625rem var(--mono);letter-spacing:.24em;color:var(--signal-mid);text-transform:uppercase;margin-bottom:1.375rem}
.ss-intro .desc{color:var(--muted);font-size:0.90625rem;line-height:1.9;max-width:48ch}
.ss-intro .desc b{color:var(--ink);font-weight:600}
.ss-pts{margin:1.625rem 0 1.875rem;display:flex;flex-direction:column;gap:0;border-top:1px solid var(--line)}
.ss-pts li{list-style:none;display:flex;gap:0.8125rem;padding:0.8125rem 2px;border-bottom:1px solid var(--line-soft);font-size:0.84375rem;color:var(--body);align-items:baseline}
.ss-pts li::before{content:"+";font:500 0.8125rem var(--mono);color:var(--signal);flex-shrink:0}
.ss-pts li b{font-weight:600;color:var(--ink)}
.ss-cta{display:flex;gap:0.6875rem;flex-wrap:wrap}
.ss-flowlink{margin-top:1.625rem;font:400 0.6875rem var(--mono);letter-spacing:.1em;color:var(--faint)}
.ss-flowlink a{color:var(--signal-deep);font-weight:500}
.ss-flowlink a:hover{color:var(--signal)}
@media(max-width:900px){.ss-grid,.ss-grid.mirror{grid-template-columns:1fr;gap:2.75rem}.ss-intro{position:static}.ss-grid.mirror .ss-intro{order:1}.ss-grid.mirror .ss-demo{order:2}}

/* 浏览器框 */
.frame{border:1px solid var(--line);border-radius:1rem;background:var(--panel);box-shadow:var(--shadow-md);overflow:hidden}
.frame-bar{display:flex;align-items:center;gap:0.4375rem;padding:0.8125rem 1.25rem;border-bottom:1px solid var(--line-soft);background:#fafbfd}
.frame-bar i{width:0.625rem;height:0.625rem;border-radius:50%;background:#e2e6ee}
.frame-bar i:nth-child(1){background:rgba(171,64,119,.5)}
.frame-bar span{margin-left:0.5625rem;font:500 0.65625rem var(--mono);letter-spacing:.14em;color:var(--faint);text-transform:uppercase}
.frame-bar .live{margin-left:auto;display:inline-flex;align-items:center;gap:0.375rem;padding:0.1875rem 0.6875rem;border:1px solid rgba(22,163,74,.35);border-radius:62.4375rem;color:var(--green);font:500 0.625rem var(--mono);letter-spacing:.14em}
.frame-bar .live::before{content:"";width:0.375rem;height:0.375rem;border-radius:50%;background:var(--green);animation:blip 1.8s infinite}

/* ---- 01 雷达 ---- */
.radar-head{display:flex;align-items:center;gap:0.875rem;padding:1rem 1.5rem;border-bottom:1px solid var(--line-soft)}
.radar-head b{font-size:0.8125rem;font-weight:600}
.radar-head .cnt{font:400 0.6875rem var(--mono);color:var(--faint)}
.radar-prog{margin-left:auto;display:flex;gap:0.3125rem}
.radar-prog i{width:1.375rem;height:0.1875rem;border-radius:2px;background:var(--line);position:relative;overflow:hidden;cursor:pointer}
.radar-prog i.on::after{content:"";position:absolute;inset:0;background:var(--signal);transform-origin:left;animation:fill 5.5s linear forwards}
.radar-prog i.done{background:var(--signal-mid)}
@keyframes fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.radar-nav{display:flex;gap:0.375rem}
.radar-nav button{width:1.75rem;height:1.75rem;border:1px solid var(--line);border-radius:0.5rem;color:var(--muted);display:flex;align-items:center;justify-content:center;transition:all .2s}
.radar-nav button:hover{border-color:var(--signal);color:var(--signal)}
.radar-body{padding:1.625rem 1.75rem;min-height:22rem}
.pj{animation:pjIn .5s ease}
@keyframes pjIn{from{opacity:0;transform:translateY(0.625rem)}to{opacity:1;transform:none}}
.pj-top{display:flex;align-items:center;gap:0.75rem;margin-bottom:0.875rem}
.pj-sector{padding:0.25rem 0.6875rem;border-radius:62.4375rem;background:var(--signal-soft);color:var(--signal-deep);font:500 0.65625rem var(--mono);letter-spacing:.08em}
.pj-status{font:400 0.65625rem var(--mono);letter-spacing:.06em;color:var(--faint)}
.score{margin-left:auto;display:flex;align-items:center;gap:0.5625rem}
.score svg{width:2.75rem;height:2.75rem;transform:rotate(-90deg)}
.score .ring-bg{stroke:var(--line-soft);fill:none;stroke-width:3.5}
.score .ring-val{stroke:var(--signal);fill:none;stroke-width:3.5;stroke-linecap:round;transition:stroke-dashoffset 1s cubic-bezier(.22,.61,.36,1)}
.score b{font-size:1.1875rem;font-weight:700}
.score small{display:block;font:400 0.59375rem var(--mono);letter-spacing:.1em;color:var(--faint)}
.pj h3{font-size:1.3125rem;font-weight:700;letter-spacing:-.01em;margin-bottom:0.375rem}
.pj .one{color:var(--muted);font-size:0.84375rem;margin-bottom:1.125rem}
.pj-rows{display:grid;grid-template-columns:repeat(3,1fr);gap:0.875rem;margin-bottom:1.125rem}
.pj-row{border:1px solid var(--line-soft);border-radius:0.6875rem;padding:0.75rem 0.875rem;background:var(--panel-2,#fbfbfc)}
.pj-row b{display:block;font:500 0.625rem var(--mono);letter-spacing:.16em;color:var(--signal-deep);margin-bottom:0.375rem}
.pj-row p{font-size:0.75rem;line-height:1.65;color:var(--muted)}
.pj-why{border-left:0.1875rem solid var(--signal);background:var(--signal-soft);border-radius:0 0.6875rem 0.6875rem 0;padding:0.8125rem 1rem;font-size:0.78125rem;line-height:1.75;color:var(--body)}
.pj-why b{display:block;font:500 0.625rem var(--mono);letter-spacing:.16em;color:var(--signal-deep);margin-bottom:0.3125rem}
.pj-foot{display:flex;align-items:center;margin-top:1.125rem;font:400 0.6875rem var(--mono);color:var(--faint);letter-spacing:.06em}
.pj-foot a{margin-left:auto;font-weight:500;color:var(--signal-deep)}
@media(max-width:640px){.pj-rows{grid-template-columns:1fr}}
/* 信号源 */
.sources{margin-top:2.75rem;border:1px dashed var(--line-strong);border-radius:0.875rem;padding:1.25rem 1.5rem;display:flex;align-items:center;gap:1.125rem;flex-wrap:wrap;background:var(--panel)}
.sources .cap{font:500 0.65625rem var(--mono);letter-spacing:.18em;color:var(--faint);text-transform:uppercase}
.sources .cap b{display:block;color:var(--ink);font:600 0.9375rem var(--sans);letter-spacing:0;margin-top:0.1875rem}
.src-chips{display:flex;gap:0.5rem;flex-wrap:wrap;margin-left:auto}
.src-chips span{padding:0.4375rem 0.875rem;border:1px solid var(--line);border-radius:62.4375rem;font-size:0.75rem;color:var(--muted);background:var(--bg);transition:all .2s}
.src-chips span:hover{border-color:var(--signal);color:var(--signal-deep)}

/* ---- 02 投决 ---- */
.ic-phases{display:flex;gap:0;border-bottom:1px solid var(--line-soft)}
.ic-phases span{flex:1;padding:0.8125rem 0.5rem;text-align:center;font:500 0.6875rem var(--mono);letter-spacing:.12em;color:var(--faint);border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .4s}
.ic-phases span.on{color:var(--signal-deep);border-bottom-color:var(--signal)}
.ic-body{padding:1.5rem 1.75rem 1.25rem}
.ic-quote{min-height:9.375rem;transition:opacity .25s}
.ic-quote.fading{opacity:0}
.ic-quote .role-line{display:flex;align-items:center;gap:0.75rem;margin-bottom:0.8125rem}
.ic-ava{width:2.5rem;height:2.5rem;border-radius:0.75rem;display:flex;align-items:center;justify-content:center;font-size:0.875rem;font-weight:600;color:#fff;background:linear-gradient(135deg,#c25c8f,#8e2f62)}
.ic-quote .role-line b{font-size:0.9375rem;display:block}
.ic-quote .role-line small{font:400 0.65625rem var(--mono);letter-spacing:.12em;color:var(--signal-deep)}
.ic-quote blockquote{font-size:0.875rem;line-height:1.85;color:var(--body);padding-left:0.9375rem;border-left:0.1875rem solid var(--signal-soft)}
.ic-quote .focus{margin-top:0.75rem;font-size:0.75rem;color:var(--faint)}
.ic-quote .focus b{color:var(--signal-deep);font-weight:500}
.ic-roles{display:grid;grid-template-columns:repeat(4,1fr);gap:0.5625rem;padding:0 1.75rem 1.625rem}
.ic-role{display:flex;align-items:center;gap:0.5rem;padding:0.625rem 0.75rem;border:1px solid var(--line);border-radius:0.625rem;font-size:0.75rem;color:var(--muted);transition:all .22s;background:var(--panel)}
.ic-role svg{width:0.875rem;height:0.875rem;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.ic-role:hover{border-color:var(--signal-mid);color:var(--ink)}
.ic-role.on{border-color:var(--signal);background:var(--signal-soft);color:var(--signal-deep);font-weight:500}
.ic-foot{padding:0.75rem 1.75rem;border-top:1px solid var(--line-soft);background:#fafbfd;font:400 0.65625rem var(--mono);letter-spacing:.1em;color:var(--faint);text-align:center}
@media(max-width:640px){.ic-roles{grid-template-columns:repeat(2,1fr)}}

/* ---- 03 沙盘 · 世界演进 ---- */
#s03 .sb-caps{display:flex;align-items:center;gap:0.5625rem;padding:1rem 1.75rem 0.125rem;font:500 0.65625rem var(--mono);letter-spacing:.08em;color:var(--faint)}
#s03 .sb-caps .arr{color:var(--signal-mid)}
#s03 .sb-caps b{color:var(--signal-deep)}
#s03 .sb-timeline{position:relative;margin:1rem 2.125rem 0.25rem}
#s03 .sb-tl-track{position:absolute;left:12.5%;right:12.5%;top:0.5625rem;height:0.125rem;background:var(--line);border-radius:0.125rem}
#s03 .sb-tl-fill{position:absolute;left:12.5%;top:0.5625rem;height:0.125rem;width:25%;background:linear-gradient(90deg,var(--signal-mid),var(--signal-deep));border-radius:0.125rem;transition:width .7s cubic-bezier(.22,.61,.36,1)}
#s03 .sb-tl-nodes{position:relative;display:grid;grid-template-columns:repeat(4,1fr)}
#s03 .sb-tl-node{display:flex;flex-direction:column;align-items:center;gap:0.4375rem;padding:0}
#s03 .sb-tl-node i{width:1.1875rem;height:1.1875rem;border-radius:50%;border:0.125rem solid var(--line-strong);background:#fff;transition:all .3s;display:block}
#s03 .sb-tl-node span{font:500 0.6875rem var(--mono);letter-spacing:.08em;color:var(--faint);transition:color .3s}
#s03 .sb-tl-node.now{cursor:default}
#s03 .sb-tl-node.now i{border-color:var(--ink);background:var(--ink);width:0.75rem;height:0.75rem;margin:0.21875rem 0}
#s03 .sb-tl-node.now span{color:var(--muted)}
#s03 .sb-tl-node.on i{border-color:var(--signal);background:var(--signal);box-shadow:0 0 0 0.3125rem var(--signal-soft)}
#s03 .sb-tl-node.on span{color:var(--signal-deep);font-weight:600}
#s03 .sb-scen{display:flex;gap:0.5rem;padding:0.9375rem 1.75rem 0.125rem;flex-wrap:wrap}
#s03 .sb-scen button{padding:0.4375rem 0.875rem;border:0.0625rem solid var(--line);border-radius:62.4375rem;font-size:0.75rem;color:var(--muted);background:var(--panel);transition:all .2s}
#s03 .sb-scen button:hover{border-color:var(--signal-mid);color:var(--ink)}
#s03 .sb-scen button.on{border-color:var(--signal);background:var(--signal-soft);color:var(--signal-deep);font-weight:500}
/* 抽象示意图：三层联动，只表达结构，不举实例 */
#s03 .sb-diag{margin:0.875rem 0 0.25rem;border-top:0.0625rem solid var(--line-soft)}
#s03 .sb-diag.swap .sb-drow{animation:nbHomeWorldSwap .5s ease}
@keyframes nbHomeWorldSwap{from{opacity:0;transform:translateY(0.5rem)}to{opacity:1;transform:none}}
#s03 .sb-drow{display:grid;grid-template-columns:6rem repeat(4,1fr);gap:0.625rem;align-items:center;padding:0.875rem 1.75rem}
#s03 .sb-drow + .sb-drow{border-top:0.0625rem solid var(--line-soft)}
#s03 .sb-dlab{font:500 0.625rem var(--mono);letter-spacing:.14em;color:var(--faint)}
#s03 .sb-dcell{display:flex;justify-content:center;align-items:center;min-height:2.125rem;border-radius:0.5625rem;transition:background .4s}
#s03 .sb-dcell.cur{background:var(--signal-soft)}
#s03 .sb-bars{display:flex;flex-direction:column;gap:0.25rem;width:62%}
#s03 .sb-bars i{display:block;height:0.3125rem;border-radius:0.1875rem;background:var(--line-strong);transition:width .7s cubic-bezier(.22,.61,.36,1),background .5s}
#s03 .sb-dcell.cur .sb-bars i{background:var(--signal-mid)}
#s03 .sb-dots{display:flex;gap:0.3125rem}
#s03 .sb-dots i{width:0.5625rem;height:0.5625rem;border-radius:50%;background:var(--line-strong);transition:all .5s}
#s03 .sb-dots i.ai{background:var(--signal)}
#s03 .sb-vchip{display:inline-block;padding:0.375rem 0.8125rem;border-radius:62.4375rem;font-size:0.71875rem;font-weight:600;white-space:nowrap;transition:all .4s}
#s03 .sb-dcell:not(.cur) .sb-vchip:not(.v-now){opacity:.35}
#s03 .v-now{background:var(--raise);color:var(--muted);border:0.0625rem solid var(--line)}
#s03 .v-up{background:rgba(22,163,74,.12);color:#15803d}
#s03 .v-hold{background:rgba(13,148,136,.1);color:#0f766e}
#s03 .v-commod{background:rgba(179,135,30,.13);color:#92690f}
#s03 .v-pivot{background:rgba(194,101,15,.13);color:#a34c0a}
#s03 .v-gone{background:rgba(220,83,70,.12);color:#b53a2c}
#s03 .sb-legend{display:flex;align-items:center;gap:1.125rem;padding:0.625rem 1.75rem 0.125rem;font:400 0.65625rem var(--mono);letter-spacing:.05em;color:var(--faint)}
#s03 .sb-legend .ver{margin-left:auto}
#s03 .sb-ctrl{display:flex;align-items:center;gap:0.75rem;padding:0.125rem 1.75rem 1.375rem}
#s03 .sb-hint{font:400 0.65625rem var(--mono);letter-spacing:.08em;color:var(--faint)}
#s03 .sb-play{margin-left:auto;display:inline-flex;align-items:center;gap:0.4375rem;padding:0.5rem 1.0625rem;border-radius:0.5625rem;background:var(--ink);color:#fff;font-size:0.78125rem;font-weight:500;transition:all .2s}
#s03 .sb-play:hover{background:var(--signal-deep)}
#s03 .sb-play:disabled{opacity:.55;cursor:default}
#s03 .frame-bar .sim{margin-left:auto;padding:0.1875rem 0.6875rem;border:0.0625rem solid rgba(171,64,119,.35);border-radius:62.4375rem;color:var(--signal-deep);font:500 0.625rem var(--mono);letter-spacing:.14em}
@media(max-width:40rem){#s03 .sb-drow{grid-template-columns:3.875rem repeat(4,1fr);padding:0.75rem;gap:0.3125rem}#s03 .sb-dlab{font-size:0.5625rem;letter-spacing:.06em}#s03 .sb-vchip{padding:0.25rem 0.4375rem;font-size:0.5625rem}#s03 .sb-dots{gap:0.1875rem}#s03 .sb-dots i{width:0.4375rem;height:0.4375rem}#s03 .sb-timeline{margin:0.875rem 1.125rem 0.125rem}}


/* Fit the new schematic on phones without changing the rest of the homepage. */
#s03 .sb-dcell{min-width:0}
@media(max-width:640px){
 #s03 .sb-caps{flex-wrap:wrap;gap:0.375rem;padding-inline:0.75rem}
 #s03 .frame-bar{flex-wrap:wrap}#s03 .frame-bar .sim{margin-left:auto}
 #s03 .sb-drow{grid-template-columns:3.875rem repeat(4,minmax(0,1fr))}
 #s03 .sb-vchip{max-width:100%;white-space:normal;text-align:center;line-height:1.5;padding-inline:0.375rem}
 #s03 .sb-dots{gap:0.125rem}#s03 .sb-dots i{width:0.3125rem;height:0.3125rem;flex-shrink:0}
 #s03 .sb-scen{padding-inline:0.75rem}#s03 .sb-scen button{padding:0.4375rem 0.625rem;font-size:0.6875rem}
 #s03 .sb-legend{flex-wrap:wrap;gap:0.4375rem;padding-inline:0.75rem}#s03 .sb-legend .ver{margin-left:0}
 #s03 .sb-ctrl{flex-wrap:wrap;padding-inline:0.75rem}#s03 .sb-hint{flex:1 1 10rem}#s03 .sb-play{flex-shrink:0}
}
#s03 .sb-summary{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
/* ---- 04 对话 ---- */
.chat-body{padding:1.5rem 1.875rem;display:flex;flex-direction:column;gap:1rem;min-height:18.75rem}
.msg{display:flex;gap:0.625rem;max-width:78%;opacity:0;transform:translateY(0.5rem);transition:opacity .45s,transform .45s}
.msg.show{opacity:1;transform:none}
.msg.me{align-self:flex-end;flex-direction:row-reverse}
.m-ava{width:2rem;height:2rem;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:0.75rem;margin-top:2px}
.msg.me .m-ava{background:var(--raise);border:1px solid var(--line);color:var(--muted)}
.msg.ai .m-ava{background:linear-gradient(135deg,#c25c8f,#8e2f62);color:#fff;border-radius:0.6875rem}
.bubble{padding:0.75rem 1rem;border-radius:0.8125rem;font-size:0.84375rem;line-height:1.75}
.msg.me .bubble{background:var(--raise);border:1px solid var(--line-soft);border-bottom-right-radius:0.25rem}
.msg.ai .bubble{background:var(--signal-soft);border:1px solid rgba(171,64,119,.18);border-bottom-left-radius:0.25rem}
.bubble .who{display:block;margin-bottom:0.25rem;font:500 0.625rem var(--mono);letter-spacing:.12em;color:var(--faint)}
.msg.ai .bubble .who{color:var(--signal-deep)}
.typing{display:inline-flex;gap:0.25rem;padding:0.25rem 2px}
.typing i{width:0.375rem;height:0.375rem;border-radius:50%;background:var(--signal-mid);animation:tp 1.1s infinite}
.typing i:nth-child(2){animation-delay:.18s}.typing i:nth-child(3){animation-delay:.36s}
@keyframes tp{0%,100%{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-0.1875rem)}}
.chat-chips{display:flex;gap:0.5rem;flex-wrap:wrap;padding:0 1.875rem 0.375rem}
.chat-chips button{padding:0.5rem 0.9375rem;border:1px solid var(--line);border-radius:62.4375rem;font-size:0.75rem;color:var(--muted);background:var(--panel);transition:all .2s}
.chat-chips button:hover:not(:disabled){border-color:var(--signal);color:var(--signal-deep)}
.chat-chips button:disabled{opacity:.35;cursor:default}
.chat-input{display:flex;gap:0.625rem;align-items:center;padding:0.9375rem 1.875rem;border-top:1px solid var(--line-soft);background:#fafbfd}
.chat-input span{flex:1;padding:0.6875rem 0.9375rem;border:1px solid var(--line);border-radius:0.625rem;background:#fff;color:var(--faint);font-size:0.8125rem}
.chat-input b{display:flex;align-items:center;gap:0.375rem;padding:0.6875rem 1.25rem;border-radius:0.625rem;background:var(--signal);color:#fff;font-size:0.8125rem;font-weight:500;cursor:pointer}

/* ---------- 结尾 CTA / 页脚 ---------- */
.final{position:relative;margin-top:6.875rem;padding:5.5rem 2rem 6rem;text-align:center;border-top:1px solid var(--line-soft);background:linear-gradient(180deg,rgba(171,64,119,.045),transparent 62%);overflow:hidden}
.final h2{margin:0 0 0.875rem;font-size:clamp(1.625rem,3.4vw,2.375rem);font-weight:700;letter-spacing:-.02em}
.final p{margin:0 0 2rem;color:var(--muted);font-size:0.90625rem}
.footer{border-top:1px solid var(--line-soft);padding:1.625rem 2rem;text-align:center;color:var(--faint);font:400 0.6875rem var(--mono);letter-spacing:.1em}
.footer a:hover{color:var(--signal)}
.footer .demo-tag{display:inline-block;margin-bottom:0.5rem;padding:0.25rem 0.75rem;border:1px dashed var(--line-strong);border-radius:62.4375rem;color:var(--muted)}

/* Keep the reference layout isolated from workspace and legacy portal CSS. */
:root{--red:#b42318}
.case-source{display:inline-flex;align-self:flex-start;margin-top:0.75rem;font-size:0.65625rem;color:var(--muted)}.case-source:hover{color:var(--signal-deep);text-decoration:underline}
.rv{opacity:1;transform:none}.nb-home-js .rv:not(.in){opacity:0;transform:translateY(1.375rem)}
html{scroll-padding-top:5.125rem}.home-empty{padding:2.5rem 0;color:var(--muted);line-height:1.9}.home-empty a{display:block;color:var(--signal-deep);margin-top:0.875rem}
:focus-visible{outline:2px solid var(--signal);outline-offset:0.25rem}
.home-hidden *,.home-hidden *::before,.home-hidden *::after,.home-offscreen *,.home-offscreen *::before,.home-offscreen *::after,.home-paused .edge{animation-play-state:paused!important}
.sg-overlay{position:fixed;inset:0;background:rgba(20,22,28,.5);z-index:150;display:flex;align-items:center;justify-content:center;padding:1.25rem;opacity:0;transition:opacity .2s}
.sg-overlay.sg-show{opacity:1}.sg-modal{background:var(--panel);border-radius:1rem;padding:1.875rem;width:27.5rem;max-width:94vw;max-height:90dvh;overflow:auto;box-shadow:var(--shadow-md);position:relative;line-height:1.8}
.sg-modal h3{margin:0 0 1.125rem;font-size:1.125rem}.sg-close{position:absolute;top:0.625rem;right:0.875rem;font-size:1.5625rem;color:var(--muted)}
.sg-input{display:block;width:100%;border:1px solid var(--line-strong);background:var(--panel);color:var(--ink);padding:0.6875rem;border-radius:0.5rem;margin:0.75rem 0;font:inherit}
.sg-submit{width:100%;padding:0.625rem 1rem;border-radius:0.5rem;color:white;background:var(--signal);margin:0.5rem 0}.sg-error{font-size:0.75rem;color:var(--red);min-height:1.25rem}.sg-link{font-size:0.75rem;color:var(--signal);cursor:pointer}
.sg-spinner{display:inline-block;width:0.75rem;height:0.75rem;border:2px solid #fff;border-right-color:transparent;border-radius:50%}.sg-overlay button:disabled{opacity:.45;cursor:default}
#sg-toast{position:fixed;bottom:1.75rem;left:50%;transform:translateX(-50%) translateY(0.75rem);padding:0.6875rem 1.25rem;background:var(--ink);color:#fff;box-shadow:var(--shadow-md);border-radius:0.5625rem;opacity:0;pointer-events:none;z-index:200;transition:.2s;font-size:0.8125rem;max-width:90vw}#sg-toast.sg-show{opacity:1;transform:translateX(-50%)}
.sg-profile-note{font-size:0.75rem;color:var(--muted);margin-bottom:0.9375rem}.sg-profile-card{border:1px solid var(--line);border-radius:0.625rem;padding:0.75rem;margin-top:0.875rem}.sg-profile-card p{font-size:0.75rem;color:var(--muted);margin:0.375rem 0}.sg-card-picker{font-size:0.75rem;color:var(--signal)}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.rv,.nb-home-js .rv:not(.in),.hf-step,.msg{opacity:1;transform:none}.hf-line b{width:100%}}
/* Let controls wrap on narrow phones rather than expanding the page's grid. */
@media(max-width:360px){
  .ss-grid,.ss-grid.mirror{grid-template-columns:minmax(0,1fr)}
  .ss-intro,.ss-demo{min-width:0}
  .radar-head{flex-wrap:wrap;gap:0.5rem;padding:0.875rem 0.75rem}
  .radar-nav{margin-left:auto;flex-shrink:0}
  .radar-prog{order:3;flex-basis:100%;justify-content:flex-end}
  .radar-body{padding:1.375rem 1.125rem}
  .pj-top{flex-wrap:wrap;gap:0.5rem}.pj-status{overflow-wrap:anywhere}
  .pj h3,.pj .one,.pj-row p,.pj-why{overflow-wrap:anywhere}
  .frame-bar{padding-inline:0.75rem;gap:0.3125rem}.frame-bar i{flex-shrink:0}
  .frame-bar span{min-width:0;overflow-wrap:anywhere}
  .frame-bar .live{flex-shrink:0}
}

/* Homepage density: retain normal phone sizing and use 85% desktop dimensions.
   Rem changes participate in layout, so sticky headers and scroll targets stay native. */
:root{font-size:16px}
.flow-sticky,.spine-wrap,.ss-intro,.ss-demo{min-width:0}
.stage-top{flex-wrap:wrap}
.stage-top h3,.stage p,.flow-lede{overflow-wrap:anywhere}
@media(min-width:761px){:root{font-size:13.6px}}
