/* ===== 多页：子页头部 / 当前导航 / 页脚 ===== */
.menu a.cur:not(.btn){color:#fff}
.menu a.cur:not(.btn)::after{width:100%}
.pt0{padding-top:20px}
.page-hero{position:relative;padding:150px 0 70px;overflow:hidden}
.ph-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(46,230,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(46,230,255,.08) 1px,transparent 1px);background-size:56px 56px;mask-image:radial-gradient(ellipse at 30% 40%,#000,transparent 70%);animation:phgrid 12s linear infinite}
@keyframes phgrid{to{background-position:56px 56px}}
.page-hero h1{font-size:clamp(36px,6vw,68px);line-height:1.15;font-weight:800;letter-spacing:.03em;background:linear-gradient(180deg,#fff 30%,#8fb4ff);-webkit-background-clip:text;background-clip:text;color:transparent;animation:slideUp .9s cubic-bezier(.2,.8,.2,1) both}
.ph-lead{max-width:720px;margin-top:16px;font-size:18px;color:var(--muted);animation:slideUp .9s .15s cubic-bezier(.2,.8,.2,1) both}
.next{padding:40px 0 110px}
.next-card{display:block;padding:44px 48px;border-radius:24px;border:1px solid var(--line);background:linear-gradient(120deg,rgba(47,107,255,.2),rgba(139,92,255,.12));position:relative}
.next-card small{color:var(--cyan);letter-spacing:.2em;font-size:12px;font-weight:700}
.next-card b{display:block;font-size:clamp(24px,3.6vw,38px);margin:6px 0}
.next-card span{color:var(--muted)}
.next-card i{position:absolute;right:44px;top:50%;margin-top:-24px;font-style:normal;font-size:40px;color:var(--cyan);transition:.3s}
.next-card:hover i{transform:translateX(10px)}
.flinks{display:flex;gap:18px}.flinks a:hover{color:var(--cyan)}

/* ===== 产品架构图 ===== */
.arch{margin-bottom:40px;padding:34px;border-radius:24px;border:1px solid var(--line);background:linear-gradient(160deg,rgba(47,107,255,.1),rgba(255,255,255,.02))}
.arch-in{display:grid;grid-template-columns:420px 1fr;gap:30px;align-items:center}
.orbit{position:relative;width:380px;height:380px;margin:0 auto}
.ring{position:absolute;inset:0;animation:spin 48s linear infinite}
.ring::before{content:"";position:absolute;inset:34px;border-radius:50%;border:1px dashed rgba(46,230,255,.35)}
.spoke{position:absolute;left:50%;top:50%;width:138px;height:1px;transform-origin:0 0;transform:rotate(var(--a));background:linear-gradient(90deg,rgba(46,230,255,.7),transparent)}
.onode{position:absolute;left:50%;top:50%;transform:rotate(var(--a)) translateX(150px) rotate(calc(var(--a) * -1))}
.onode span{display:grid;place-items:center;width:84px;height:84px;margin:-42px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#2f6bff,#0a1330);border:1px solid rgba(46,230,255,.6);box-shadow:0 0 30px rgba(47,107,255,.55);font-size:13px;text-align:center;animation:spinrev 48s linear infinite}
@keyframes spinrev{to{transform:rotate(-360deg)}}
.core{position:absolute;left:50%;top:50%;width:112px;height:112px;margin:-56px;border-radius:50%;display:grid;place-content:center;text-align:center;background:var(--grad);box-shadow:0 0 70px rgba(46,230,255,.6);animation:pulse 3s ease-in-out infinite}
.core b{font-size:24px;line-height:1.1}.core span{font-size:12px;opacity:.9}
.arch-list{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.arch-list li{display:flex;gap:12px;align-items:center;padding:14px 16px;border-radius:14px;border:1px solid var(--line);background:var(--card);transition:.3s}
.arch-list li:hover{border-color:var(--cyan);transform:translateY(-3px)}
.arch-list i{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:13px;background:var(--grad)}
.arch-list b{display:block;font-size:15px}.arch-list span{font-size:12px;color:var(--muted)}
.arch-ai{display:grid;grid-template-columns:1fr 70px 1.1fr 70px 1fr;align-items:stretch}
.acol{padding:22px;border-radius:18px;border:1px solid var(--line);background:var(--card);display:flex;flex-direction:column;gap:9px}
.acol.mid{background:linear-gradient(160deg,rgba(47,107,255,.35),rgba(46,230,255,.1));border-color:rgba(46,230,255,.5);box-shadow:0 0 60px rgba(47,107,255,.25)}
.acol h6{font-size:13px;letter-spacing:.1em;color:var(--cyan);margin-bottom:4px}
.acol span{padding:8px 12px;border-radius:10px;background:rgba(255,255,255,.06);font-size:14px}
.flow-arrow{display:flex;align-items:center;justify-content:center;gap:4px}
.flow-arrow i{width:10px;height:10px;border-top:2px solid var(--cyan);border-right:2px solid var(--cyan);transform:rotate(45deg);opacity:.2;animation:arr 1.2s infinite}
.flow-arrow i:nth-child(2){animation-delay:.2s}.flow-arrow i:nth-child(3){animation-delay:.4s}
@keyframes arr{50%{opacity:1}}

/* ===== 产品界面示意（应用框架） ===== */
.mock .app{display:grid;grid-template-columns:132px 1fr;min-height:440px}
.app aside{padding:14px 10px;border-right:1px solid var(--line);background:rgba(255,255,255,.025)}
.app-brand{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;margin-bottom:14px;white-space:nowrap}
.app-brand i{display:grid;place-items:center;width:22px;height:22px;border-radius:7px;background:var(--grad);font-style:normal;font-size:12px}
.app aside a{display:flex;align-items:center;gap:8px;padding:8px 10px;margin-bottom:3px;border-radius:8px;font-size:12px;color:var(--muted)}
.app aside a i{width:6px;height:6px;border-radius:2px;background:currentColor;opacity:.6}
.app aside a.on{background:rgba(47,107,255,.28);color:#fff}
.app-main{padding:18px;min-width:0}
.app-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.app-top h5{margin:0 auto 0 0;font-size:15px}
.chip{padding:2px 10px;border-radius:999px;font-size:11px;background:rgba(255,255,255,.07);color:var(--muted)}
.v-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.v-tiles div{padding:10px 12px;border-radius:10px;background:linear-gradient(160deg,rgba(47,107,255,.25),rgba(46,230,255,.05));border:1px solid rgba(46,230,255,.18);animation:slideUp .5s both}
.v-tiles div:nth-child(2){animation-delay:.1s}.v-tiles div:nth-child(3){animation-delay:.2s}
.v-tiles b{display:block;font-size:19px;line-height:1.3}.v-tiles span{font-size:11px;color:var(--muted)}
.v-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}
.v-box{padding:12px;border-radius:12px;border:1px solid var(--line);background:rgba(255,255,255,.03);min-width:0}
.v-box h6{font-size:12px;color:#c9d5f5;margin-bottom:8px}.v-box h6 small{color:var(--muted);font-weight:400;margin-left:4px}
.v-donut{display:flex;align-items:center;gap:10px}
.donut{width:116px;flex:none}
.donut .d-n{fill:#fff;font-size:17px;font-weight:700}.donut .d-s{fill:#8fa0c8;font-size:8px}
.dseg{animation:dgrow 1.3s cubic-bezier(.2,.8,.2,1) both}
@keyframes dgrow{from{stroke-dasharray:0 999}}
.v-leg li{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:5px;margin-bottom:4px;white-space:nowrap}
.v-leg i{width:8px;height:8px;border-radius:2px}.v-leg b{color:#fff;margin-left:2px}
.v-docs li{display:flex;align-items:center;gap:8px;padding:7px 4px;border-bottom:1px solid rgba(255,255,255,.06);font-size:12px;animation:slideUp .5s both}
.v-docs li span{flex:1;min-width:0}.v-docs li small{display:block;color:var(--muted);font-size:10px}
.v-docs code{font-family:inherit;color:var(--cyan);font-size:11px;min-width:42px}.doc{color:var(--cyan);flex:none!important}
.v-bar{display:flex;height:8px;border-radius:8px;overflow:hidden;background:rgba(255,255,255,.07);margin-top:2px}
.v-bar i{display:block;width:var(--w);background:#2f6bff;transform-origin:left;animation:scx 1.1s both}
.v-bar i.b2{background:#ffb54a;animation-delay:.2s}
@keyframes scx{from{transform:scaleX(0)}}
.v-foot{margin-top:10px;font-size:11px;color:var(--muted)}
.v-banner{padding:10px 14px;border-radius:10px;font-size:12px;background:rgba(46,230,255,.1);border:1px solid rgba(46,230,255,.3);margin:8px 0;animation:slideUp .6s .5s both}
.v-banner.warn{background:rgba(255,181,74,.1);border-color:rgba(255,181,74,.4);color:#ffd9a0}
.v-trail{display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin:10px 0}
.v-trail span{padding:3px 10px;border-radius:6px;font-size:11px;background:rgba(46,230,255,.1);border:1px solid rgba(46,230,255,.25);color:#aeeeff}
.v-trail i{width:16px;height:1px;background:var(--cyan);position:relative;overflow:hidden}
.v-trail i::after{content:"";position:absolute;inset:0;width:6px;background:#fff;animation:run 1.4s linear infinite}
@keyframes run{from{transform:translateX(-6px)}to{transform:translateX(16px)}}
.kanban{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.kcol{padding:8px;border-radius:10px;background:rgba(255,255,255,.03);border:1px solid var(--line)}
.kcol h6{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--muted);margin-bottom:8px}.kcol h6 i{width:6px;height:6px;border-radius:50%;background:var(--cyan)}
.kcard{padding:9px;border-radius:8px;background:linear-gradient(160deg,rgba(47,107,255,.35),rgba(47,107,255,.1));border:1px solid rgba(46,230,255,.25);font-size:11px;animation:slideUp .6s both;transition:.3s}
.kcard:hover{transform:translateY(-3px) scale(1.03)}
.kcard b{display:block;font-size:12px}.kcard span{display:block;color:var(--muted);margin:2px 0}.kcard em{font-style:normal;color:var(--cyan);font-size:10px}
.bars{display:flex;gap:18px;align-items:flex-end;height:150px;padding:6px 6px 0}
.bars.big{height:170px;justify-content:space-around}
.bars .bg{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;font-size:11px}
.bpair{display:flex;gap:6px;align-items:flex-end;height:calc(100% - 38px);width:100%;justify-content:center}
.bpair i{position:relative;width:30px;height:var(--h);min-height:3px;border-radius:6px 6px 0 0;background:#2f6bff;transform-origin:bottom;animation:scy 1s cubic-bezier(.2,.8,.2,1) both}
.bpair i.ba{background:#2ee6ff}
.bpair i u{position:absolute;top:-17px;left:50%;transform:translateX(-50%);text-decoration:none;font-size:10px;color:#fff}
.bars.big .bpair i{width:52px}
@keyframes scy{from{transform:scaleY(0)}}
.bars .bg b{margin-top:6px}.gap{font-style:normal;color:var(--warn);font-size:10px}.okk{font-style:normal;color:var(--ok);font-size:10px}
.v-steps li{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:12px;animation:slideUp .5s both}
.v-steps li i{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-style:normal;background:rgba(52,224,161,.2);color:var(--ok);flex:none}
.v-steps li div{flex:1}.v-steps li span{display:block;font-size:10px;color:var(--muted)}
.shelf{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.cell{padding:12px 0;text-align:center;border-radius:8px;font-size:11px;background:rgba(255,255,255,.04);border:1px dashed var(--line);color:var(--muted);animation:pop .5s both}
.cell.ok{background:rgba(52,224,161,.15);border:1px solid rgba(52,224,161,.5);color:#bff5de}
.cell.wait{background:rgba(255,181,74,.15);border:1px solid rgba(255,181,74,.5);color:#ffe0ae}
.cell.frozen{background:rgba(110,160,255,.15);border:1px solid rgba(110,160,255,.5);color:#cfe0ff}
@keyframes pop{from{opacity:0;transform:scale(.6)}}
.scan{position:relative;margin-top:10px;padding:8px 10px;border-radius:8px;font-size:11px;background:rgba(46,230,255,.08);border:1px solid rgba(46,230,255,.3);overflow:hidden}
.scan i{position:absolute;top:0;bottom:0;width:30px;background:linear-gradient(90deg,transparent,rgba(46,230,255,.5),transparent);animation:sweep 2s linear infinite}
@keyframes sweep{from{left:-30px}to{left:100%}}
.gantt{display:grid;gap:10px}
.grow{display:grid;grid-template-columns:86px 1fr auto;gap:10px;align-items:center;font-size:12px}
.gl b{display:block}.gl span{font-size:10px;color:var(--muted)}
.gt{position:relative;height:12px;border-radius:12px;background:rgba(255,255,255,.06)}
.gt i{position:absolute;top:0;bottom:0;border-radius:12px;background:linear-gradient(90deg,#2f6bff,#2ee6ff);transform-origin:left;animation:scx 1.2s cubic-bezier(.2,.8,.2,1) both}
.gt i.run{background:linear-gradient(90deg,#2f6bff,#8b5cff,#2ee6ff,#8b5cff,#2f6bff);background-size:200%;animation:scx 1.2s both,flow 2s linear infinite}
.gt i.wait{background:repeating-linear-gradient(45deg,#ffb54a55,#ffb54a55 6px,#ffb54a22 6px,#ffb54a22 12px)}
@keyframes flow{to{background-position:-200% 0}}
.chat{display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:12px;border:1px solid var(--line);background:rgba(255,255,255,.03)}
.msg{max-width:92%;padding:10px 13px;border-radius:14px;font-size:12px;line-height:1.7;animation:slideUp .6s both}
.msg.u{align-self:flex-end;background:linear-gradient(120deg,#2f6bff,#4f8bff);border-bottom-right-radius:4px}
.msg.a{background:rgba(255,255,255,.07);border-bottom-left-radius:4px}
.msg.h{background:rgba(52,224,161,.12);border:1px solid rgba(52,224,161,.35);color:#bff5de}
.msg b{color:#9fe9ff}
.typing{display:flex;gap:4px;height:10px;overflow:hidden;animation:hide .1s 1.3s forwards}
.typing i{width:5px;height:5px;border-radius:50%;background:var(--cyan);animation:bounce 1s infinite}
.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
@keyframes bounce{50%{transform:translateY(-4px)}}
@keyframes hide{to{height:0;opacity:0;margin:0}}
.cite{display:inline-block;margin-top:8px;padding:3px 10px;border-radius:6px;font-size:10px;background:rgba(46,230,255,.12);border:1px solid rgba(46,230,255,.35);color:#aeeeff}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.tags span{padding:2px 10px;border-radius:999px;background:rgba(47,107,255,.35);font-size:11px}
.v-quote{margin-top:10px;padding:10px 14px;border-left:3px solid var(--cyan);background:rgba(46,230,255,.06);font-size:12px;color:#c9d5f5;border-radius:0 8px 8px 0;animation:slideUp .6s 1.4s both}
.v-quote b{display:block;color:#fff;margin-bottom:2px}
.v-quote mark{background:rgba(255,224,102,.25);color:#ffe9a0;padding:0 4px;border-radius:3px}
.v-tbl{width:100%;font-size:11px;min-width:0}
.v-tbl th,.v-tbl td{padding:6px 5px}
.v-tbl tr{animation:slideUp .5s both}
.ring-box{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}
.rv-ver{font-size:12px;color:var(--muted)}.rv-ver b{color:var(--cyan)}
.diff{display:grid;grid-template-columns:1fr 30px 1fr;gap:8px;align-items:stretch;margin-bottom:8px}
.dside{padding:12px;border-radius:12px;border:1px solid var(--line);background:rgba(255,255,255,.03);font-size:12px}
.dside h6{color:var(--muted);font-size:11px;margin-bottom:6px}
.dmid{display:grid;place-items:center;font-size:11px;color:var(--cyan);font-weight:700}
.del{margin-top:4px;padding:4px 8px;border-radius:6px;background:rgba(255,107,107,.15);color:#ffb3b3;text-decoration:line-through;text-decoration-color:rgba(255,107,107,.7)}
.add{margin-top:4px;padding:4px 8px;border-radius:6px;background:rgba(52,224,161,.16);color:#bff5de;animation:flash 2s .8s 2}
@keyframes flash{50%{box-shadow:0 0 0 4px rgba(52,224,161,.35)}}
.askbar{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:999px;border:1px solid rgba(46,230,255,.4);background:rgba(46,230,255,.07);font-size:12px;margin-bottom:12px}
.askbar i{color:var(--cyan);font-style:normal}.askbar span{flex:1}.askbar em{font-style:normal;padding:2px 12px;border-radius:999px;background:var(--grad)}
.paper .sheet{position:relative;padding:14px;border-radius:8px;background:#f1f4fa;color:#1c2540;font-size:11px;overflow:hidden;min-height:150px}
.paper .sheet p{margin-bottom:8px}
.hl{background:rgba(255,224,102,.55);padding:2px 6px;border-radius:3px;width:max-content;animation:slideUp .5s .8s both}
.hl.h2{animation-delay:1.1s}.hl.h3{animation-delay:1.4s}
.dim{height:7px;border-radius:4px;background:#d5dbea;width:90%}.dim.s{width:60%}
.scanline{position:absolute;left:0;right:0;height:3px;background:var(--cyan);box-shadow:0 0 14px 4px rgba(46,230,255,.8);animation:scanv 2.4s ease-in-out infinite}
@keyframes scanv{0%,100%{top:0}50%{top:100%}}

@media(max-width:960px){
  .arch-in{grid-template-columns:1fr}
  .arch-ai{grid-template-columns:1fr}
  .flow-arrow{transform:rotate(90deg);padding:14px 0}
}
@media(max-width:720px){
  .mock .app{grid-template-columns:1fr}
  .app aside{display:none}
  .v-row,.diff{grid-template-columns:1fr}
  .kanban{grid-template-columns:1fr 1fr}
  .orbit{transform:scale(.78);margin:-36px auto}
  .arch-list{grid-template-columns:1fr}
  .arch{padding:20px}
  .next-card{padding:30px 24px}.next-card i{display:none}
  .page-hero{padding:110px 0 40px}
  .flinks{flex-wrap:wrap}
}

/* 布局微调：列宽与单行省略 */
.v-row{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}
.v-row.chat-row{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}
.v-docs li span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v-docs li small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.donut{width:92px}
.v-leg{min-width:0}
.v-leg li b{font-weight:600}
.v-donut{gap:8px}
.panel{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:30px}
.bars.big .bpair i{width:40px}
.bars.big{gap:8px}
@media(max-width:960px){.panel{grid-template-columns:1fr}}
