/* ==========================================================================
   Nova 首页 · 轮播以下区域视觉打磨
   --------------------------------------------------------------------------
   只作用于首页（body.nv-home），不改动购物车 / 会员中心。
   原则：卡片不位移（沿用「悬停静默」的设定），只做圆角、描边、投影、配色与图标轻动效。
   ========================================================================== */

body.nv-home{background:#f7faff}

/* ---------- 全页方正直角（不留任何弧角）---------- */
body.nv-home,
body.nv-home *{border-radius:0!important}
/* 例外：右下角 AI 悬浮按钮保持圆形（全站统一） */
body.nv-home .qcaa-launcher-btn,
body.nv-home .qcaa-launcher-btn__wrap,
body.nv-home .qcaa-launcher-video,
body.nv-home .pls-floatbar-button{border-radius:50%!important}

/* 合作机房滚动墙拆成两段：标题栏排在「全球基础设施」上方，旗帜滚动条留在其下方 */
body.nv-home .nv-wall-section{background:#f7faff}
body.nv-home .nv-wall-head .tpm-portal-section__inner{padding-top:56px;padding-bottom:0}
/* 标题栏左右留白与其它区块标题一致（标题在 logo 墙那一节的 panel 内，直接给标题加内边距，避免影响通栏滚动） */
body.nv-home .nv-wall-head .tpm-portal-panel{padding-top:0;padding-bottom:0}
body.nv-home .nv-wall-head .tpm-portal-panel__hd{margin-bottom:0}
body.nv-home .nv-wall-body .tpm-portal-section__inner{padding-top:8px;padding-bottom:52px}
body.nv-home .nv-wall-body .tpm-portal-panel{padding-top:0}
/* 图标墙标题：与其它区块标题统一——上方小标签（蓝色竖线 + 小字），下方大字主标题 */
body.nv-home .nv-wall-heading{text-align:left;margin:0 0 24px;padding:0 64px}
body.nv-home .nv-wall-heading__tag{display:inline-block;color:#1c4b8b;font-size:11px;font-weight:600;
  letter-spacing:2.4px;line-height:1.3;padding-left:10px;border-left:2px solid #1659c9}
body.nv-home .nv-wall-heading__title{margin-top:10px;font-size:32px;line-height:40px;font-weight:600;color:#0b2545;letter-spacing:-.4px}
@media(max-width:768px){
  body.nv-home .nv-wall-heading{padding:0 16px}
  body.nv-home .nv-wall-heading__title{font-size:24px;line-height:32px}}
/* 基础设施原来的「服务保障条」已移除，这里补回区块底部留白 */
body.nv-home .tpm-portal-infrastructure__section .tpm-portal-section__inner{padding-bottom:56px}
/* 地球图是绝对定位、不占布局高度：保障条一去掉，区块高度就只剩左侧两组数字（约 192px），
   而地球在各断点实际渲染高度是 350 / 384 / 408 —— 地球下半截连同圆点的悬浮提示都被
   .tpm-portal-section 的 overflow:hidden 裁掉，看上去就是被下方「我们支持什么」压住了。
   这里按断点给模块兜底高度，把地球和提示完整放回区块内。 */
body.nv-home .nv-infra .tpm-portal-module{min-height:352px}
@media(min-width:1400px){body.nv-home .nv-infra .tpm-portal-module{min-height:386px}}
@media(min-width:1600px){body.nv-home .nv-infra .tpm-portal-module{min-height:410px}}
@media(max-width:768px){body.nv-home .nv-infra .tpm-portal-module{min-height:0}}

/* 首屏轮播左右通栏：去掉背景层左右各 12% 的渐隐遮罩与 2048px 宽度上限，背景图铺满整个视口 */
body.nv-home .tpm-portal-hero__bgs{-webkit-mask:none;mask:none;max-width:none}
body.nv-home .tpm-portal-hero__bg{background-size:cover;background-position:50% 50%}
/* 轮播视频用 cover 铺满：原样式 width:auto + height:100% 会按比例居中，左右露出底色 */
body.nv-home .tpm-portal-hero__video{width:100%;height:100%;object-fit:cover;object-position:50% 50%}

/* 首屏轮播文案整体上移 30px（标题 / 描述 / 按钮一起走，不改动原有排版） */
body.nv-home .tpm-portal-hero__item-content{transform:translateY(-30px)}
/* 轮播左侧指示条同步上移 35px */
body.nv-home .tpm-portal-hero__ctrls-wrap{transform:translateY(-35px)}
/* 指示器切换动画：高亮条随当前项平滑滑动，文案/标签淡入过渡 */
body.nv-home .tpm-portal-hero__ctrl-mask{transition:top .45s cubic-bezier(.22,.9,.28,1)}
body.nv-home .tpm-portal-hero__ctrl{transition:opacity .35s ease}
body.nv-home .tpm-portal-hero__ctrl:not(.active){opacity:.72}
body.nv-home .tpm-portal-hero__ctrl.active{opacity:1}
body.nv-home .tpm-portal-hero__ctrl-tag,
body.nv-home .tpm-portal-hero__ctrl-text{transition:color .35s ease,opacity .35s ease,transform .35s ease}
body.nv-home .tpm-portal-hero__ctrl.active .tpm-portal-hero__ctrl-tag{transform:translateX(-2px)}
/* 轮播指示器进度条：纯白色 */
body.nv-home .tpm-portal-hero__ctrl-progress{background:#fff}

/* 指示列的「标语标签」（安全/企业/极速）排在标题文字右侧（不越过竖线） */
body.nv-home .tpm-portal-hero__ctrl-tag{order:2;margin-right:0;margin-left:8px}
body.nv-home .tpm-portal-hero__ctrl-text{order:1}

/* ---------- 区块标题与节奏 ---------- */
body.nv-home .tpm-portal-section__inner{padding-top:64px;padding-bottom:64px}
body.nv-home .tpm-portal-section__tag{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;
  border-radius:999px;background:#eef4ff;color:#1256d4;font-weight:600;letter-spacing:.4px}
body.nv-home .tpm-portal-section__title{font-weight:600;letter-spacing:-.6px;color:#0b1526}
body.nv-home .tpm-portal-section__link{color:#0d3f9e;font-weight:600;transition:color .2s ease}
body.nv-home .tpm-portal-section__link:hover{color:#1256d4}

/* ---------- 首屏下方 4 个入口卡：方正直角 + 白色半透明磨砂 ---------- */
/* 整排上移，压住轮播底部约一半高度（卡片本身不位移，只调整这一排的位置） */
body.nv-home .tpm-portal-entry{position:relative;z-index:3;margin-top:-66px;background:transparent;
  border-bottom:0;padding:0}
body.nv-home .tpm-portal-entry__inner{max-width:1680px;padding:0 24px 8px;gap:14px}
body.nv-home .tpm-portal-entry__item{margin:0;border-radius:0;
  padding:16px 40px 16px 16px;
  -webkit-backdrop-filter:blur(16px) saturate(150%);
  backdrop-filter:blur(16px) saturate(150%);
  box-shadow:0 12px 30px -22px rgba(8,30,70,.45);
  transition:border-color .25s ease,box-shadow .25s ease,background .25s ease}
/* style.css 里给四张卡写了 nth-child 蓝底（优先级 0,4,0），这里用更高优先级统一成白色磨砂 */
body.nv-home .tpm-portal-entry__inner>.tpm-portal-entry__item:nth-child(n){
  background:rgba(255,255,255,.66);border:1px solid rgba(255,255,255,.72);border-radius:0}
body.nv-home .tpm-portal-entry__inner>.tpm-portal-entry__item:nth-child(n):hover{
  background:rgba(255,255,255,.82);border-color:rgba(188,214,250,.95);
  box-shadow:0 18px 36px -24px rgba(18,86,212,.55)}
/* 不支持毛玻璃时退回高不透明白，保证文字清晰 */
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  body.nv-home .tpm-portal-entry__inner>.tpm-portal-entry__item:nth-child(n){background:rgba(255,255,255,.95)}
}
body.nv-home .tpm-portal-entry__item+.tpm-portal-entry__item:before{display:none}
/* 图标保持原站 72px 精灵动效（16 帧 × 72px = -1152px）：
   这里只用 transform 缩小视觉尺寸，不改 width/height、不改 background-position，帧不会错位 */
body.nv-home .tpm-portal-entry__icon{transform:scale(.82);transform-origin:left center;margin-right:18px}
body.nv-home .tpm-portal-entry__tag{border-radius:0;padding:1px 7px;font-size:11.5px;font-weight:600}
body.nv-home .tpm-portal-entry__title p:first-child{font-size:14px}
body.nv-home .tpm-portal-entry__title p:last-child{font-size:12px}
body.nv-home .tpm-portal-entry__arrow{right:20px}

/* ---------- 活动条 ---------- */
body.nv-home .tpm-portal-act-bar__item{border:1px solid #e8eefb;border-radius:16px;background:#fff!important;
  box-shadow:0 10px 26px -24px rgba(15,40,90,.4);
  transition:border-color .25s ease,box-shadow .25s ease}
body.nv-home .tpm-portal-act-bar__item:hover{border-color:#c9dcfb;
  box-shadow:0 18px 36px -26px rgba(18,86,212,.55)}
body.nv-home .tpm-portal-act-bar__item-arrow{background:linear-gradient(135deg,#eaf1ff,#d9e7ff)}

/* ---------- 上云售卖 ---------- */
body.nv-home .tpm-portal-sell{gap:16px}
body.nv-home .tpm-portal-sell__card{border:1px solid #e8eefb;border-radius:16px;background:#fff;
  box-shadow:0 10px 24px -22px rgba(15,40,90,.4);
  transition:border-color .25s ease,box-shadow .25s ease}
body.nv-home .tpm-portal-sell__card:hover{border-color:#c9dcfb;
  box-shadow:0 18px 36px -26px rgba(18,86,212,.5)}
body.nv-home .tpm-portal-sell__btn{border-radius:9px;border-color:#c9dcfb;color:#0d3f9e;transition:all .2s ease}
body.nv-home .tpm-portal-sell__btn:hover{background:#1256d4;border-color:#1256d4;color:#fff}

/* ---------- 帮助与支持：大图卡 + 右侧四宫格 ---------- */
body.nv-home .tpm-portal-developer__label{border-radius:16px;overflow:hidden}
body.nv-home .tpm-portal-developer__item-list{border-radius:16px;overflow:hidden;
  box-shadow:0 16px 40px -30px rgba(15,40,90,.45)}
body.nv-home .tpm-portal-developer__item{transition:background .2s ease}
body.nv-home .tpm-portal-developer__item:hover{background:rgba(255,255,255,.92)}

/* ---------- 服务生态左面板：关键指标条 + 带勾选的特性标签（保留美化层次，仅做适度收紧） ---------- */
body.nv-home .tpm-portal-market__panel-title{font-size:24px;line-height:32px;color:#0b2545}
body.nv-home .tpm-portal-market__panel-desc{margin-top:10px;line-height:22px}
/* 描述里的高亮词（算力 / 网络）用主题蓝渐变，避免整段黑字显得素 */
body.nv-home .tpm-portal-market__panel-desc .linear{font-weight:700;
  background:linear-gradient(90deg,#0052d9,#2f7cff);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
body.nv-home .tpm-portal-market__stats{display:grid;grid-template-columns:repeat(3,1fr);margin:12px 0 14px;padding:10px 0;
  border-top:1px solid #e3ecff;border-bottom:1px solid #e3ecff}
body.nv-home .tpm-portal-market__stat b{display:block;font-size:22px;line-height:1.15;font-weight:700;color:#0052d9;letter-spacing:-.5px}
body.nv-home .tpm-portal-market__stat b i{margin-left:1px;font-style:normal;font-size:13px;font-weight:600}
body.nv-home .tpm-portal-market__stat span{display:block;margin-top:2px;font-size:12px;letter-spacing:.2px;color:#6b7a93}
/* 特性标签做成「勾选 + 文字」的浅蓝胶囊，两行自适应排列（比纯文字更有层次） */
body.nv-home .tpm-portal-market__features{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
body.nv-home .tpm-portal-market__feature-item{display:inline-flex;align-items:center;gap:6px;width:calc(50% - 4px);box-sizing:border-box;
  margin-top:0;padding:5px 12px 5px 9px;background:#f2f7ff;border:1px solid #e0eaff;
  font-size:13px;line-height:20px;color:#41506b;
  transition:background .2s ease,border-color .2s ease,color .2s ease}
body.nv-home .tpm-portal-market__feature-item:hover{background:#e8f1ff;border-color:#bfd7fa;color:#0052d9}
/* 原样式用 :before 画图标，和新增的内联 SVG 重复，这里只保留 SVG，尺寸与原 16px 图标一致 */
body.nv-home .tpm-portal-market__feature-item:before{display:none}
body.nv-home .tpm-portal-market__feature-icon{flex:none;width:14px;height:14px;color:#0052d9}
body.nv-home .tpm-portal-market__panel-footer{margin-top:20px}
body.nv-home .tpm-portal-market__panel-btn{height:36px}
/* 市场轮播：鼠标拖动 + 轻推引导（不无限循环，拖到边界抖动提醒） */
body.nv-home .tpm-portal-market__swiper{cursor:grab;-webkit-user-select:none;user-select:none}
body.nv-home .tpm-portal-market__swiper.is-dragging{cursor:grabbing}
body.nv-home .tpm-portal-market__card-photo{-webkit-user-drag:none}
body.nv-home .tpm-portal-market__card-link{cursor:pointer;text-decoration:none}
/* 拖到头了：朝反方向轻抖一下提醒（is-edge-l=已到最左，is-edge-r=已到最右） */
@keyframes nvMktEdgeL{0%,100%{transform:translateX(0)}25%{transform:translateX(12px)}55%{transform:translateX(-5px)}80%{transform:translateX(2px)}}
@keyframes nvMktEdgeR{0%,100%{transform:translateX(0)}25%{transform:translateX(-12px)}55%{transform:translateX(5px)}80%{transform:translateX(-2px)}}
body.nv-home .tpm-portal-market__swiper .swiper-wrapper.is-edge-l{animation:nvMktEdgeL .45s ease}
body.nv-home .tpm-portal-market__swiper .swiper-wrapper.is-edge-r{animation:nvMktEdgeR .45s ease}

/* ---------- 服务生态卡片 ---------- */
body.nv-home .tpm-portal-market__card{overflow:hidden;border:1px solid #e6eeff;
  box-shadow:0 10px 26px -24px rgba(15,40,90,.45);
  transition:transform .35s cubic-bezier(.22,.9,.28,1),box-shadow .35s ease,border-color .35s ease;
  will-change:transform}
body.nv-home .tpm-portal-market__card:hover{transform:translateY(-4px);border-color:#cfe0ff;
  box-shadow:0 20px 40px -22px rgba(18,86,212,.38)}
body.nv-home .tpm-portal-market__card-media{overflow:hidden}
body.nv-home .tpm-portal-market__card-photo{transition:transform .55s cubic-bezier(.22,.9,.28,1);will-change:transform}
body.nv-home .tpm-portal-market__card:hover .tpm-portal-market__card-photo{transform:scale(1.045)}
/* 特征列表：原来的 grid-template-rows:0fr→1fr 过渡会在 hover 时逐帧重排整张卡片（明显卡顿），
   改成最大高度 + 淡入上滑 —— 视觉意图不变，只动简单盒模型与合成层属性 */
body.nv-home .tpm-portal-market__card-features{display:block;grid-template-rows:none;
  max-height:0;opacity:0;overflow:hidden;transform:translateY(6px);contain:layout paint;
  transition:max-height .35s cubic-bezier(.22,.9,.28,1),opacity .3s ease,transform .35s cubic-bezier(.22,.9,.28,1)}
body.nv-home .tpm-portal-market__card-body--active{contain:layout paint}
body.nv-home .tpm-portal-market__card-features>div{padding-top:8px}
body.nv-home .tpm-portal-market__card:hover .tpm-portal-market__card-features{max-height:88px;opacity:1;transform:none}
body.nv-home .tpm-portal-market__card-feature:before{background:#0052d9}
body.nv-home .tpm-portal-market__card-link{color:#0052d9;font-weight:600}
body.nv-home .tpm-portal-market__panel-btn{border-radius:9px}

/* ---------- 视频大面板背景：仅循环视频（无遮罩、无叠加特效） ---------- */
body.nv-home .tpm-portal-action-panel{background:#eef5ff}
body.nv-home .tpm-portal-action-panel__bg{overflow:hidden}
body.nv-home .tpm-portal-action-panel__bg:after{background:none}
body.nv-home .tpm-portal-action-panel__video{z-index:0}

/* ---------- 视频大面板按钮（配色统一放在下方企业级段） ---------- */
body.nv-home .tpm-portal-action-panel__btn{border-radius:9px;transition:all .25s ease}

/* ---------- 服务保障条 ---------- */
body.nv-home .pls-footer-service-item{border-radius:12px;padding:10px 14px;transition:background .2s ease}
body.nv-home .pls-footer-service-item:hover{background:#f5f9ff}

/* ---------- 产品介绍卡（图片/视频轮播） ---------- */
body.nv-home .tpm-portal-introduce__card--active{border-radius:18px}
body.nv-home .tpm-portal-introduce__card-inner{border-radius:17px}
body.nv-home .tpm-portal-introduce__card-media{border-radius:12px;overflow:hidden}
body.nv-home .tpm-portal-introduce__card-btn--primary{border-radius:8px}
body.nv-home .tpm-portal-introduce__card-actions a{border-radius:8px}

/* ---------- 行业解决方案（大面板） ---------- */
/* tab 图标：4 个图标的 viewBox 宽高比不同（1213/1072/1024 宽 × 1024 高），
   统一按高度 18px 对齐、宽度随比例自适应，视觉大小一致且与 14px 文字协调；
   未选中用 filter 压成黑色（与 tab 文字同色系），选中/悬停恢复原主题蓝 */
body.nv-home .tpm-portal-solution__tab-icon{width:auto;height:18px;display:inline-flex;align-items:center;justify-content:center}
body.nv-home .tpm-portal-solution__tab-icon .tpm-portal-motion-icon__svg{height:18px;width:auto;max-width:none;max-height:none;
  filter:brightness(0);opacity:.8;transition:filter .2s ease,opacity .2s ease,transform .25s ease}
body.nv-home .tpm-portal-solution__tab-item.is-active .tpm-portal-motion-icon__svg,
body.nv-home .tpm-portal-solution__tab-item:hover .tpm-portal-motion-icon__svg{filter:none;opacity:1;transform:scale(1.04)}
body.nv-home .tpm-portal-solution__content{border-radius:18px;border-color:#e8eefb;
  box-shadow:0 16px 40px -34px rgba(15,40,90,.45)}
/* 案例配图：保持原图清晰，不加任何遮罩/染色；只在图片左边缘做一点点淡出，和左侧信息区衔接 */
body.nv-home .tpm-portal-solution__case-img{opacity:1}
body.nv-home .tpm-portal-solution__case-img:before{
  content:"";position:absolute;left:0;top:0;width:16%;height:100%;pointer-events:none;
  background:linear-gradient(90deg,rgba(246,250,255,.92),rgba(246,250,255,0));
}

/* 内容与元素配色（图片不动，靠蓝色层次和按钮/数字来提升丰富度） */
/* 左侧信息区：中性浅底 + 蓝、紫两团独立光晕各自漂浮（蓝是蓝、紫是紫，不混成一片） */
body.nv-home .tpm-portal-solution__left{
  background:linear-gradient(180deg,#fbfcff 0%,#f6f9ff 100%);
  border-right-color:#e3e8f8}
/* 案例描述：单行最多 26 个全角字（1em/字），到第 27 字立刻换行 */
body.nv-home .tpm-portal-solution__case-desc{max-width:26em;overflow-wrap:break-word}
/* 卖点文案偏蓝灰，勾选图标保持主题蓝 */
body.nv-home .tpm-portal-solution__feature-text{color:#44556f}
/* 云产品：图标默认主题蓝，名称深蓝灰，悬停再压深 */
body.nv-home .tpm-portal-solution__product-icon{color:#2073ff}
body.nv-home .tpm-portal-solution__product-name{color:#243146}
body.nv-home .tpm-portal-solution__product-item:hover .tpm-portal-solution__product-name{color:#0a4fd6}
/* 主按钮：主题蓝渐变 + 蓝色投影；次级链接也用主题蓝 */
body.nv-home .tpm-portal-solution__btn-primary{
  background:linear-gradient(90deg,#0a63f0 0%,#3c8bff 100%);
  box-shadow:0 10px 22px -14px rgba(10,99,240,.65)}
body.nv-home .tpm-portal-solution__btn-link-text{color:#0a63f0}
/* 案例切换条：淡蓝底，激活项白底 + 主题蓝下划线 */
body.nv-home .tpm-portal-solution__case-tabs{
  background:linear-gradient(180deg,#f2f7ff 0%,#e8f1ff 100%);border-bottom-color:#dbe8fb}
body.nv-home .tpm-portal-solution__case-tab.is-active{background:#fff;
  box-shadow:0 8px 20px -16px rgba(15,40,90,.45)}
body.nv-home .tpm-portal-solution__case-tab.is-active:after{
  content:"";position:absolute;left:16px;right:16px;bottom:0;height:2px;
  background:linear-gradient(90deg,#2073ff,#5aa2ff)}
/* 指标数字：主题蓝渐变字，比纯黑更有层次 */
body.nv-home .tpm-portal-solution__metric-number{
  background:linear-gradient(180deg,#2073ff 0%,#0a4fd6 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent}
body.nv-home .tpm-portal-solution__btn-primary,
body.nv-home .tpm-portal-solution__btn-link{border-radius:8px}

/* 案例内容重排：场景标签 + 标题 + 描述 + 实践要点 + 效果指标 + 行动入口 */
/* 内容列限宽 440px：右侧插画从约 455px 开始绘制，留出安全边，文字与指标卡都不会压到图 */
body.nv-home .tpm-portal-solution__case-content{max-width:440px;padding-top:28px;padding-bottom:26px}
/* 场景标签：浅蓝胶囊，先把「这是哪类实践」讲清楚 */
body.nv-home .tpm-portal-solution__case-eyebrow{margin-bottom:10px;display:flex}
body.nv-home .tpm-portal-solution__case-eyebrow-text{display:inline-flex;align-items:center;height:22px;padding:0 9px;
  background:#eef4ff;border:1px solid #dbe8ff;color:#0a4fd6;
  font-size:12px;line-height:22px;font-weight:600;letter-spacing:.3px}
body.nv-home .tpm-portal-solution__case-title{font-size:20px;line-height:30px;font-weight:600;color:#0b2545;letter-spacing:-.2px}
body.nv-home .tpm-portal-solution__case-desc{margin-top:10px;margin-bottom:0;font-size:14px;line-height:24px;color:#4a5b70;max-width:30em}
/* 实践要点：勾选 + 一句话结论，三条刚好把空档填满，也不会压到指标 */
body.nv-home .tpm-portal-solution__case-highlights{margin:14px 0 auto;display:flex;flex-direction:column;gap:8px}
body.nv-home .tpm-portal-solution__case-highlight{display:flex;align-items:flex-start;gap:8px;
  font-size:13px;line-height:21px;color:#41506b}
body.nv-home .tpm-portal-solution__case-highlight-icon{flex:none;width:16px;height:16px;margin-top:2px;color:#0a63f0}
body.nv-home .tpm-portal-solution__case-highlight-icon svg{display:block;width:16px;height:16px}
body.nv-home .tpm-portal-solution__case-highlight-text{flex:1 1 auto}
/* 效果指标：两列半透明小卡片（限制在 284px 内，避免压到右侧插画），
   中间一道细线分隔，数字仍是主题蓝渐变 */
body.nv-home .tpm-portal-solution__metrics{margin-top:14px;padding:8px 12px;max-width:284px;box-sizing:border-box;
  background:linear-gradient(180deg,rgba(248,251,255,.9) 0%,rgba(234,244,255,.9) 100%);
  border:1px solid rgba(219,232,255,.95);
  -webkit-backdrop-filter:blur(10px) saturate(130%);
  backdrop-filter:blur(10px) saturate(130%)}
body.nv-home .tpm-portal-solution__metric-item{flex:1 1 0;min-width:0}
body.nv-home .tpm-portal-solution__metric-item+.tpm-portal-solution__metric-item{
  margin-left:0;padding-left:10px;border-left:1px solid #dfeaff}
body.nv-home .tpm-portal-solution__metric-value{white-space:nowrap;font-size:22px;line-height:26px}
body.nv-home .tpm-portal-solution__metric-number{font-size:22px;line-height:26px;font-weight:700}
body.nv-home .tpm-portal-solution__metric-unit{font-size:12px;line-height:18px}
body.nv-home .tpm-portal-solution__metric-label{margin-top:1px;font-size:11px;line-height:16px;color:#6b7a93}
/* 行动入口：主题蓝文字链，悬停箭头右移 */
body.nv-home .tpm-portal-solution__case-cta{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;
  margin-top:14px;color:#0a63f0;font-size:13px;line-height:22px;font-weight:600;
  transition:color .2s ease}
body.nv-home .tpm-portal-solution__case-cta:after{content:"→";font-size:13px;line-height:1;
  transition:transform .2s ease}
body.nv-home .tpm-portal-solution__case-cta:hover{color:#0043c2}
body.nv-home .tpm-portal-solution__case-cta:hover:after{transform:translateX(3px)}
@media(max-width:768px){
  body.nv-home .tpm-portal-solution__case-content{max-width:none;padding-top:16px;padding-bottom:18px}
  body.nv-home .tpm-portal-solution__case-title{font-size:17px;line-height:26px}
  body.nv-home .tpm-portal-solution__case-desc{font-size:12px;line-height:21px}
  body.nv-home .tpm-portal-solution__case-highlight{font-size:12px;line-height:20px}
  body.nv-home .tpm-portal-solution__metrics{margin-top:12px;padding:10px 12px}
  body.nv-home .tpm-portal-solution__case-cta{font-size:12px}
}

/* ---------- 解决方案模块：动态特效与装饰元素（图片只做轻微呼吸缩放，不遮不染） ---------- */
@media(min-width:769px){
  /* 左侧信息区：蓝色光晕（左下）与紫色光晕（右上），两条路径独立漂浮 */
  body.nv-home .tpm-portal-solution__left:before{
    content:"";position:absolute;left:-90px;bottom:-90px;width:340px;height:340px;z-index:-1;
    border-radius:50%;pointer-events:none;
    background:radial-gradient(closest-side,rgba(20,110,255,.44),rgba(20,110,255,0) 74%);
    -webkit-filter:blur(20px);filter:blur(20px);animation:nvSolOrbBlue 6s ease-in-out infinite}
  body.nv-home .tpm-portal-solution__left:after{
    content:"";position:absolute;right:-20px;top:-140px;width:300px;height:300px;z-index:-1;
    border-radius:50%;pointer-events:none;
    background:radial-gradient(closest-side,rgba(142,70,255,.42),rgba(142,70,255,0) 74%);
    -webkit-filter:blur(20px);filter:blur(20px);animation:nvSolOrbPurple 7s ease-in-out infinite}
  /* 主按钮：悬停时一道白色高光扫过 */
  body.nv-home .tpm-portal-solution__btn-primary:after{
    content:"";position:absolute;top:-10%;left:-70%;width:45%;height:120%;pointer-events:none;
    background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.45),rgba(255,255,255,0));
    opacity:0;transform:skewX(-18deg)}
  body.nv-home .tpm-portal-solution__btn-primary:hover:after{
    animation:nvSolShine .9s ease .05s both}
}
/* 案例配图：极轻微的呼吸缩放，画面本身保持原样 */
body.nv-home .tpm-portal-solution__case-img{animation:nvSolImgFloat 16s ease-in-out infinite}
/* 切案例时，文字与配图各自淡入 */
body.nv-home .tpm-portal-solution__case-panel.is-active .tpm-portal-solution__case-content{
  animation:nvSolFadeUp .5s cubic-bezier(.22,.9,.28,1) both}
body.nv-home .tpm-portal-solution__case-panel.is-active .tpm-portal-solution__case-img{
  animation:nvSolFadeIn .55s ease both,nvSolImgFloat 16s ease-in-out infinite}
/* 案例激活下划线：从左向右展开 */
body.nv-home .tpm-portal-solution__case-tab.is-active:after{
  transform-origin:left center;animation:nvSolLine .45s cubic-bezier(.22,.9,.28,1) both}
/* 指标数字：蓝色渐变缓慢流动 */
body.nv-home .tpm-portal-solution__metric-number{
  background-size:200% 100%;animation:nvSolNum 6s ease-in-out infinite}
/* 蓝光晕：沿左下横向大幅游走（位移 150px 级别），并配合缩放呼吸 */
@keyframes nvSolOrbBlue{
  0%,100%{transform:translate(0,0) scale(1);opacity:.75}
  25%{transform:translate(90px,-38px) scale(1.26);opacity:1}
  50%{transform:translate(150px,14px) scale(1.1);opacity:.9}
  75%{transform:translate(48px,-52px) scale(1.2);opacity:1}}
/* 紫光晕：沿右侧上下大幅滑落（位移 200px 级别） */
@keyframes nvSolOrbPurple{
  0%,100%{transform:translate(0,0) scale(1);opacity:.75}
  30%{transform:translate(-48px,120px) scale(1.24);opacity:1}
  60%{transform:translate(-14px,200px) scale(1.08);opacity:.9}
  80%{transform:translate(-42px,80px) scale(1.18);opacity:1}}
@keyframes nvSolImgFloat{0%,100%{transform:scale(1)}50%{transform:scale(1.016)}}
@keyframes nvSolFadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes nvSolFadeIn{from{opacity:0}to{opacity:1}}
@keyframes nvSolLine{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes nvSolShine{0%{left:-70%;opacity:0}18%{opacity:1}100%{left:120%;opacity:0}}
@keyframes nvSolNum{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
@media(prefers-reduced-motion:reduce){
  body.nv-home .tpm-portal-solution__left:before,
  body.nv-home .tpm-portal-solution__left:after,
  body.nv-home .tpm-portal-solution__case-img,
  body.nv-home .tpm-portal-solution__case-panel.is-active .tpm-portal-solution__case-content,
  body.nv-home .tpm-portal-solution__case-tab.is-active:after,
  body.nv-home .tpm-portal-solution__metric-number,
  body.nv-home .tpm-portal-solution__btn-primary:hover:after{animation:none}
}

/* ---------- 开发者区块右侧 2×2：为什么选择我们（紧凑竖版卡片，替换原 4 个入口） ---------- */
/* 槽位是 50% 宽 / 320~340 高的半透明覆盖层，每格约 360×160，所以图标与标题同行、描述两行、标签贴底 */
/* 原 50% 太挤：整体加宽覆盖层，单格从约 360 提到 420；大屏逐级收窄，避免压住左侧大图文案 */
body.nv-home .tpm-portal-developer__item-list{width:58%}
@media(min-width:1400px){body.nv-home .tpm-portal-developer__item-list{width:56%}}
@media(min-width:1600px){body.nv-home .tpm-portal-developer__item-list{width:54%}}
/* 左右箭头底栏按覆盖层宽度让位（原 calc(50%+48px) 是按 50% 宽算的，加宽后会被卡片盖住） */
@media(min-width:769px){body.nv-home .tpm-portal-developer__footer{padding-right:calc(58% + 48px)}}
@media(min-width:1400px){body.nv-home .tpm-portal-developer__footer{padding-right:calc(56% + 48px)}}
@media(min-width:1600px){body.nv-home .tpm-portal-developer__footer{padding-right:calc(54% + 48px)}}

/* ================= 企业级视觉统一（首页全局） ================= */
/* 企业级 = 深海军蓝文字层级 + 细字距小标签 + 1px 描边与克制的投影，不用彩色柔光 */
body.nv-home{color:#1f2d3d;font-variant-numeric:tabular-nums}

/* 1) 区块标题体系 */
body.nv-home .tpm-portal-section__tag{
  background:none;color:#1c4b8b;font-size:11px;font-weight:600;letter-spacing:2.4px;line-height:1.3;
  padding:0 0 0 10px;border-left:2px solid #1659c9}
body.nv-home .tpm-portal-section__title{color:#0b2545;letter-spacing:-.2px}
body.nv-home .tpm-portal-section__link-text{color:#2a435e;letter-spacing:.3px}
body.nv-home .tpm-portal-section__hd{border-bottom:1px solid #eaeef5;padding-bottom:20px}

/* 2) 服务生态卡片：白底＋细描边，悬停只轻微抬升，不要花哨光晕 */
body.nv-home .tpm-portal-market__card{
  background:#fff;border:1px solid #e5eaf2;box-shadow:none;
  transition:border-color .25s ease,box-shadow .25s ease,transform .25s ease}
body.nv-home .tpm-portal-market__card:hover{
  border-color:#c9d8ea;box-shadow:0 18px 34px -24px rgba(11,37,69,.38);transform:translateY(-2px)}
body.nv-home .tpm-portal-market__card-title{color:#0b2545;font-weight:600;letter-spacing:-.1px}
body.nv-home .tpm-portal-market__card-title p{color:#5d6d84;font-weight:400}
body.nv-home .tpm-portal-market__card-link{color:#1659c9;letter-spacing:.4px}
body.nv-home .tpm-portal-market__panel-title{color:#0b2545}
body.nv-home .tpm-portal-market__panel-btn{background:linear-gradient(90deg,#1670ff,#3d8bff);box-shadow:none}
body.nv-home .tpm-portal-market__panel-btn:hover{background:linear-gradient(90deg,#0f5fe0,#2f7cf5)}

/* 3) 全球基础设施：数字用海军蓝、标签弱化，数据感更强 */
body.nv-home .nv-num__inner{color:#0b2545}
body.nv-home .tpm-portal-infrastructure__item-unit{color:#1659c9}
body.nv-home .tpm-portal-infrastructure__item-title{color:#5d6d84;letter-spacing:.6px}

/* 4) 支持体系（logo 墙） */
body.nv-home .nv-wall-heading__title{color:#0b2545;letter-spacing:-.2px}
body.nv-home .nv-wall-heading__sub{color:#69788c}
body.nv-home .tpm-portal-logo-wall__item{background:#fff;border:1px solid #e6ebf3}
body.nv-home .tpm-portal-logo-wall__link:hover .tpm-portal-logo-wall__item{border-color:#c9d8ea}

/* 5) 底部行动面板：视频背景 + 白色文字 + 亮蓝按钮（文字带轻微投影保证可读） */
body.nv-home .tpm-portal-action-panel__title{color:#fff;letter-spacing:-.2px;text-shadow:0 2px 14px rgba(5,30,80,.35)}
/* 标题里的高亮词用纯白（视频为蓝色调，保持与主标题一致） */
body.nv-home .tpm-portal-action-panel__title .linear{background:none;-webkit-text-fill-color:currentColor;color:#fff}
body.nv-home .tpm-portal-action-panel__feature-text{color:rgba(255,255,255,.88);text-shadow:0 1px 8px rgba(5,30,80,.3)}
body.nv-home .tpm-portal-action-panel__feature-icon{filter:none;opacity:.9}
/* 按钮：白底 + 主题蓝文字，悬停轻微提亮 */
body.nv-home .tpm-portal-action-panel__btn{
  background:#fff;border:0;color:#0052d9;font-weight:600}
body.nv-home .tpm-portal-action-panel__btn:hover{background:#f0f6ff;color:#0f5fe0;border-color:transparent}

/* 6) 开发者 2×2 卡片与导航入口，统一成白底细描边；4 张卡片之间留 12px 间距 */
body.nv-home .tpm-portal-developer__item-list{gap:12px;background:transparent;box-shadow:none;height:auto;-webkit-backdrop-filter:none;backdrop-filter:none}
@media(min-width:769px){
  body.nv-home .tpm-portal-developer__item.nv-dvc{width:calc(50% - 6px)}
}
body.nv-home .tpm-portal-developer__item.nv-dvc{background:#fff;border:1px solid #e5eaf2;box-shadow:none}
body.nv-home .tpm-portal-developer__item.nv-dvc:hover{
  border-color:#c9d8ea;box-shadow:0 16px 30px -24px rgba(11,37,69,.4)}
body.nv-home .nv-dvc__title{color:#0b2545}
body.nv-home .nv-dvc__desc{color:#5d6d84}
body.nv-home .nv-dvc__tags span{color:#2a435e;border-color:#e6ebf3}

/* 7) 解决方案：主按钮压深一档，光晕降为含蓄的企业蓝/紫（动效保留） */
body.nv-home .tpm-portal-solution__btn-primary{
  background:linear-gradient(90deg,#0a4fd6 0%,#2073ff 100%);
  box-shadow:0 12px 24px -16px rgba(10,79,214,.6)}
body.nv-home .tpm-portal-solution__left:before{
  background:radial-gradient(closest-side,rgba(20,110,255,.30),rgba(20,110,255,0) 74%)}
body.nv-home .tpm-portal-solution__left:after{
  background:radial-gradient(closest-side,rgba(142,70,255,.26),rgba(142,70,255,0) 74%)}

/* 8) 首屏与四个入口卡：标题深海军蓝、CTA 用稳重的深蓝，入口卡细描边 */
body.nv-home .tpm-portal-hero__item-title{color:#0b2545;letter-spacing:-.4px}
body.nv-home .tpm-portal-hero__item-desc{color:#4a5b70;letter-spacing:.2px}
body.nv-home .tpm-portal-hero__item-btn{background:linear-gradient(90deg,#0059eb,#2677ff);color:#fff;text-decoration:none}
body.nv-home .tpm-portal-hero__item:hover .tpm-portal-hero__item-btn{background:linear-gradient(90deg,#0a63f2,#3a86ff)}
body.nv-home .tpm-portal-entry__item{background:#fff;border:1px solid #e5eaf2}
body.nv-home .tpm-portal-entry__item:hover{
  border-color:#c9d8ea;box-shadow:0 16px 30px -24px rgba(11,37,69,.35)}
body.nv-home .tpm-portal-entry__tag{color:#1659c9;letter-spacing:.6px}
body.nv-home .tpm-portal-entry__title{color:#0b2545}
/* 左侧大图（label）的文案区与点击区按「可见宽度」收窄，并整体缩小一档字号，
   否则加宽后的卡片覆盖层会压住标题/按钮 */
@media(min-width:769px){
  body.nv-home .tpm-portal-developer__label{padding-right:calc(58% + 48px)}
  body.nv-home .tpm-portal-developer__label-link{width:calc(42% - 24px)}
  body.nv-home .tpm-portal-developer__label-title{font-size:22px;line-height:30px}
  body.nv-home .tpm-portal-developer__label-btn{font-size:14px;line-height:22px}
}
@media(min-width:1400px){
  body.nv-home .tpm-portal-developer__label{padding-right:calc(56% + 48px)}
  body.nv-home .tpm-portal-developer__label-link{width:calc(44% - 24px)}
  body.nv-home .tpm-portal-developer__label-title{font-size:26px;line-height:34px}
  body.nv-home .tpm-portal-developer__label-btn{font-size:15px;line-height:23px}
}
@media(min-width:1600px){
  body.nv-home .tpm-portal-developer__label{padding-right:calc(54% + 48px)}
  body.nv-home .tpm-portal-developer__label-link{width:calc(46% - 24px)}
  body.nv-home .tpm-portal-developer__label-title{font-size:30px;line-height:42px}
}
body.nv-home .tpm-portal-developer__item.nv-dvc{padding:14px 20px;justify-content:flex-start}
body.nv-home .nv-dvc__head{flex:0 0 auto;display:flex;align-items:center;gap:12px;perspective:700px}
/* 图标再放大：容器 66×66 且不留内边距，图片本身再放大 1.08 倍（视觉图形约 70px，原 42px） */
body.nv-home .nv-dvc__icon{flex:0 0 auto;width:66px;height:66px;box-sizing:border-box;padding:0;
  background:#f2f7ff;border:1px solid #dbe7f8;object-fit:contain;transform:scale(1.08);transform-origin:50% 50%;
  transition:transform .65s cubic-bezier(.4,0,.2,1),background .25s ease,border-color .25s ease;will-change:transform}
/* 悬停整格时图标 3D 翻转一圈，移出按原路径翻回来 */
body.nv-home .nv-dvc:hover .nv-dvc__icon{transform:scale(1.08) rotateY(360deg);background:#eaf3ff;border-color:#c3d8f6}
body.nv-home .nv-dvc__title{min-width:0;color:#0b2545;font-size:17px;line-height:24px;font-weight:600;letter-spacing:-.2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 卡片高度只有 160（≥1600 时 200），描述留两行、标签贴底，避免被 item 的 overflow:hidden 裁掉 */
body.nv-home .nv-dvc__desc{margin-top:6px;color:rgba(0,0,0,.65);font-size:12px;line-height:17px;
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
body.nv-home .nv-dvc__tags{margin-top:auto;padding-top:8px;display:flex;flex-wrap:wrap;gap:6px 8px;max-height:46px;overflow:hidden}
body.nv-home .nv-dvc__tags span{color:#000;font-size:11px;line-height:18px;padding:0 6px;border:1px solid #eef0f4;white-space:nowrap}
@media(prefers-reduced-motion:reduce){
  body.nv-home .nv-dvc__icon{transition:none}
  body.nv-home .nv-dvc:hover .nv-dvc__icon{transform:scale(1.08)}
}
@media(max-width:768px){
  /* 移动端 item-list 改成 display:block，卡片改成整行宽，避免半宽卡片错位堆叠 */
  body.nv-home .tpm-portal-developer__item.nv-dvc{width:100%;padding:14px}
  body.nv-home .nv-dvc__icon{width:56px;height:56px;padding:0}
  body.nv-home .nv-dvc__desc{font-size:13px;line-height:20px;-webkit-line-clamp:3}
  body.nv-home .nv-dvc__tags{max-height:none}
}

/* ---------- 服务生态（market）：修「立即体验」被轮播箭头压住 + 卡片无间距 ---------- */
/* 原 blocks.css 的 .tpm-portal-market{margin-top:-68px} 把整块上提，轮播箭头（wrapper top:0）
   正好落到标题行，压住右上角「立即体验」；这里取消上提，并按本主题节奏重排上下留白 */
body.nv-home .nv-market .tpm-portal-section__hd{margin-bottom:48px}
body.nv-home .nv-market .tpm-portal-market{margin-top:0}
/* 区块背景：与「解决方案」左面板一致的蓝紫双光晕，让两团光缓慢游走 + 明暗呼吸
   （12s / 15s 错开节奏，位移幅度加大到 200~300px，肉眼能明显看到「流动」） */
body.nv-home .nv-market .tpm-portal-section__inner{position:relative;z-index:0;overflow:hidden;
  background:linear-gradient(180deg,#f6faff 0%,#ffffff 62%)}
body.nv-home .nv-market .tpm-portal-section__inner:before,
body.nv-home .nv-market .tpm-portal-section__inner:after{
  content:"";position:absolute;z-index:-1;width:660px;height:660px;border-radius:50%;
  filter:blur(90px);opacity:.55;pointer-events:none;will-change:transform,opacity}
body.nv-home .nv-market .tpm-portal-section__inner:before{
  left:-180px;top:20px;background:radial-gradient(circle,rgb(18,105,255) 0%,rgba(18,105,255,0) 70%);
  animation:nvMktGlowA 7s ease-in-out infinite}
body.nv-home .nv-market .tpm-portal-section__inner:after{
  right:-200px;top:140px;background:radial-gradient(circle,rgb(142,70,255) 0%,rgba(142,70,255,0) 70%);
  animation:nvMktGlowB 9s ease-in-out infinite}
@keyframes nvMktGlowA{
  0%{transform:translate3d(0,0,0) scale(.9);opacity:.42}
  35%{transform:translate3d(240px,80px,0) scale(1.2);opacity:.62}
  70%{transform:translate3d(90px,-50px,0) scale(1.34);opacity:.55}
  100%{transform:translate3d(0,0,0) scale(.9);opacity:.42}}
@keyframes nvMktGlowB{
  0%{transform:translate3d(0,0,0) scale(1.06);opacity:.5}
  40%{transform:translate3d(-260px,110px,0) scale(.86);opacity:.66}
  75%{transform:translate3d(-120px,-40px,0) scale(1.22);opacity:.52}
  100%{transform:translate3d(0,0,0) scale(1.06);opacity:.5}}
@media(prefers-reduced-motion:reduce){
  body.nv-home .nv-market .tpm-portal-section__inner:before,
  body.nv-home .nv-market .tpm-portal-section__inner:after{animation:none}}
body.nv-home .nv-market .tpm-portal-market__panel{padding-top:0}
body.nv-home .nv-market .tpm-portal-market__swiper{padding-top:40px}
body.nv-home .nv-market .tpm-portal-market__cards-wrapper:after{top:40px}
/* 卡片间距：原站靠 swiper JS 给 slide 加 20px 行内边距，本主题改用原生滚动，需 CSS 补上（与 JS 的 step=width+20 对齐） */
body.nv-home .nv-market .tpm-portal-market__swiper .swiper-wrapper{column-gap:20px}
/* 标题右侧按钮不被 flex 压缩 */
body.nv-home .nv-market .tpm-portal-section__link{flex:0 0 auto;margin-left:24px}
/* 移动端：留白收紧，间距改 12px（导航箭头在窄屏隐藏） */
@media(max-width:768px){
  body.nv-home .nv-market .tpm-portal-section__hd{margin-bottom:28px}
  body.nv-home .nv-market .tpm-portal-market__swiper{padding-top:0}
  body.nv-home .nv-market .tpm-portal-market__cards-wrapper:after{top:0}
  body.nv-home .nv-market .tpm-portal-market__swiper .swiper-wrapper{column-gap:12px}
  body.nv-home .nv-market .tpm-portal-section__link{margin-left:16px}
}

/* ---------- 移动端收紧 ---------- */
@media(max-width:900px){
  body.nv-home .tpm-portal-section__inner{padding-top:44px;padding-bottom:44px}
  body.nv-home .tpm-portal-entry{margin-top:-40px}
  body.nv-home .tpm-portal-entry__inner{padding:0 16px 8px;gap:10px;flex-wrap:wrap}
  body.nv-home .tpm-portal-entry__item{flex:1 1 calc(50% - 10px);width:auto;padding:16px;border-radius:0}
  body.nv-home .tpm-portal-sell{flex-direction:column}
}
