/* NR Web Chart Engine — adapted from colleague NR2026-webchart; scoped under .wce
   相对原稿尺寸放大 120%，适配 100% 系统缩放下的观感 */
.wce {
  --brand: #237fa3;
  --brand-dark: #155f7d;
  --aqua: #1be3e5;
  --ink: #000033;
  --text: #526675;
  --muted: #83939e;
  --pale: #ebf2f6;
  --pale-2: #f7fafc;
  --line: #d9e5eb;
  --white: #fff;
  --black: #050505;
  --shadow: 0 28.8px 72px rgba(32, 78, 98, .13);
  --container: 1344px;
  color: var(--ink);
  background: var(--white);
  font-family: "PingFang SC", "Microsoft YaHei", "Microsoft YaHei UI", Arial, sans-serif;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

.wce *,
.wce *::before,
.wce *::after { box-sizing: border-box; }

.wce img { display: block; max-width: 100%; }
.wce a { color: inherit; text-decoration: none; -webkit-tap-highlight-color: transparent; }

body.page-webchart { scroll-behavior: smooth; scroll-padding-top: 96px; }
body.page-webchart .hadheight { display: block; height: 0; }
.wce .container{
      width: min(calc(100% - 57.6px), var(--container));
      margin-inline: auto;
    }

.wce .button--dark,
.wce .button{
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 14.4px;
      min-height: 52.8px;
      padding: 0 28.8px;
      border: 1.2px solid transparent;
      border-radius: 7.2px;
      font-size: 16.8px;
      cursor: pointer;
      transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease;
    }

.wce .button--dark{
      color: var(--white);
      background: var(--black);
    }

.wce .button--outline{
      color: var(--brand);
      background: rgba(255, 255, 255, .75);
      border-color: var(--brand);
    }

.wce .button--dark:hover,
.wce .button:hover{
      transform: translateY(-2.4px);
      box-shadow: 0 14.4px 28.8px rgba(21, 68, 88, .14);
    }

.wce .dot{
      width: 9.6px;
      height: 9.6px;
      flex: 0 0 auto;
      border-radius: 50%;
      background: var(--aqua);
    }

.wce .hero{
      position: relative;
      min-height: 864px;
      padding: 175.2px 0 86.4px;
      overflow: hidden;
      background:
        radial-gradient(circle at 89% 21%, rgba(27, 227, 229, .24) 0 139.2px, transparent 140.4px),
        radial-gradient(circle at 81% 77%, rgba(35, 127, 163, .09) 0 336px, transparent 337.2px),
        var(--pale);
    }

.wce .hero::before{
      content: "";
      position: absolute;
      inset: 84px 0 0 48%;
      opacity: .48;
      background-image:
        linear-gradient(rgba(139, 164, 176, .22) 1.2px, transparent 1.2px),
        linear-gradient(90deg, rgba(139, 164, 176, .22) 1.2px, transparent 1.2px);
      background-size: 88.8px 79.2px;
      mask-image: linear-gradient(90deg, transparent 0, #000 18%, #000 100%);
      pointer-events: none;
    }

.wce .hero::after{
      content: "";
      position: absolute;
      right: -156px;
      top: 105.6px;
      width: 744px;
      height: 492px;
      opacity: .28;
      border: 1.2px solid var(--brand);
      border-radius: 42% 58% 64% 36% / 53% 46% 54% 47%;
      transform: rotate(16deg);
      box-shadow:
        -55.2px 54px 0 -54px var(--brand),
        -108px 108px 0 -106.8px var(--brand),
        -163.2px 162px 0 -160.8px var(--brand);
      pointer-events: none;
    }

.wce .hero-inner{
      position: relative;
      z-index: 2;
      display: grid;
      grid-template-columns: minmax(504px, .86fr) minmax(672px, 1.14fr);
      align-items: center;
      gap: 64.8px;
    }

.wce .eyebrow{
      display: inline-flex;
      flex-direction: column;
      gap: 10.8px;
      color: var(--brand);
      font-family: Arial, sans-serif;
      font-size: 13.2px;
      letter-spacing: .02em;
      text-transform: uppercase;
    }

.wce .eyebrow::after{
      content: "";
      width: 50.4px;
      height: 4.8px;
      border-radius: 118.8px;
      background: var(--aqua);
    }

.wce .hero h1{
      margin: 33.6px 0 26.4px;
      font-size: clamp(55.2px, 6vw, 86.4px);
      line-height: 1.05;
      letter-spacing: -.035em;
      font-weight: 600;
    }

.wce .hero h1 .product-name{
      display: block;
      margin-top: 14.4px;
      font-size: .76em;
      letter-spacing: -.045em;
    }

.wce .hero-lead{
      margin: 0 0 15.6px;
      font-size: 25.2px;
      font-weight: 600;
    }

.wce .hero-copy{
      max-width: 588px;
      margin: 0;
      color: var(--text);
      font-size: 18px;
    }

.wce .hero-actions{
      display: flex;
      flex-wrap: wrap;
      gap: 16.8px;
      margin-top: 40.8px;
    }

.wce .metrics{
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 21.6px;
      margin-top: 55.2px;
    }

.wce .metric{
      min-width: 0;
      padding-left: 16.8px;
      border-left: 1.2px solid rgba(35, 127, 163, .45);
    }

.wce .metric strong,
.wce .metric span{ display: block; }

.wce .metric strong{ font-size: 18px; }

.wce .metric span{
      margin-top: 3.6px;
      color: var(--muted);
      font-family: Arial, sans-serif;
      font-size: 12px;
      white-space: nowrap;
    }

.wce .hero-visual{
      position: relative;
      min-height: 564px;
    }

.wce .browser-window{
      position: absolute;
      top: 50.4px;
      right: 0;
      width: min(100%, 768px);
      overflow: hidden;
      border: 8.4px solid rgba(255, 255, 255, .9);
      border-radius: 19.2px;
      background: var(--white);
      box-shadow: 0 33.6px 84px rgba(32, 78, 98, .16);
    }

.wce .browser-bar{
      position: relative;
      height: 40.8px;
      display: flex;
      align-items: center;
      gap: 10.8px;
      padding: 0 19.2px;
      background: #f5f8fa;
    }

.wce .browser-dot{
      width: 9.6px;
      height: 9.6px;
      border-radius: 50%;
    }

.wce .browser-dot:nth-child(1){ background: #ff746c; }

.wce .browser-dot:nth-child(2){ background: #ffcb43; }

.wce .browser-dot:nth-child(3){ background: #39c16c; }

.wce .browser-address{
      position: absolute;
      left: 50%;
      top: 9.6px;
      width: 44%;
      height: 21.6px;
      padding-top: 2.4px;
      border-radius: 12px;
      color: #9da9af;
      background: var(--white);
      transform: translateX(-50%);
      text-align: center;
      font-family: Arial, sans-serif;
      font-size: 9.6px;
    }

.wce .browser-window > img{
      width: 100%;
      aspect-ratio: 1.78 / 1;
      object-fit: cover;
      object-position: center;
    }

.wce .visual-label{
      position: absolute;
      left: 21.6px;
      bottom: 21.6px;
      z-index: 3;
      display: inline-flex;
      align-items: center;
      gap: 10.8px;
      padding: 9.6px 14.4px;
      border: 1.2px solid rgba(255, 255, 255, .28);
      border-radius: 6px;
      color: var(--white);
      background: rgba(0, 26, 63, .76);
      box-shadow: 0 12px 28.8px rgba(0, 26, 63, .16);
      backdrop-filter: blur(8.4px);
      font-size: 13.2px;
    }

.wce .chart-badge{
      position: absolute;
      right: 21.6px;
      top: 62.4px;
      z-index: 3;
      display: flex;
      flex-direction: column;
      align-items: flex-end;
      padding: 9.6px 13.2px;
      border: 1.2px solid rgba(255, 255, 255, .58);
      border-radius: 6px;
      color: var(--ink);
      background: rgba(255, 255, 255, .88);
      box-shadow: 0 12px 28.8px rgba(26, 66, 84, .11);
      backdrop-filter: blur(8.4px);
    }

.wce .chart-badge strong{
      font-size: 13.2px;
      line-height: 1.2;
    }

.wce .chart-badge small{
      margin-top: 2.4px;
      color: var(--brand);
      font-family: Arial, sans-serif;
      font-size: 9.6px;
      letter-spacing: .06em;
    }

.wce .floating-visual{
      position: absolute;
      right: 64.8px;
      bottom: 0;
      z-index: 4;
      width: 360px;
      margin: 0;
      overflow: hidden;
      border: 7.2px solid rgba(255, 255, 255, .94);
      border-radius: 16.8px;
      background: var(--white);
      box-shadow: 0 24px 57.6px rgba(32, 78, 98, .18);
    }

.wce .floating-visual img{
      width: 100%;
      aspect-ratio: 2.14 / 1;
      object-fit: cover;
    }

.wce .floating-visual span{
      position: absolute;
      left: 14.4px;
      bottom: 13.2px;
      padding: 7.2px 13.2px;
      border-radius: 6px;
      color: var(--white);
      background: rgba(0, 0, 51, .74);
      font-family: Arial, sans-serif;
      font-size: 9.6px;
      letter-spacing: .05em;
    }

.wce .section{
      position: relative;
      padding: 132px 0;
    }

.wce .section--pale{ background: var(--pale); }

.wce .section-heading{
      max-width: 984px;
      margin-bottom: 55.2px;
    }

.wce .section-heading h2{
      margin: 31.2px 0 16.8px;
      font-size: clamp(40.8px, 4.8vw, 60px);
      line-height: 1.18;
      letter-spacing: -.035em;
      font-weight: 600;
    }

.wce .section-heading p{
      margin: 0;
      color: var(--text);
      font-size: 19.2px;
    }

.wce .capability-grid{
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 26.4px;
    }

.wce .capability-card{
      position: relative;
      overflow: hidden;
      border: 1.2px solid rgba(214, 228, 235, .8);
      border-radius: 16.8px;
      background: var(--white);
      box-shadow: 0 14.4px 36px rgba(42, 81, 99, .07);
      transition: transform .28s ease, box-shadow .28s ease;
    }

.wce .capability-card:hover{
      transform: translateY(-9.6px);
      box-shadow: 0 28.8px 57.6px rgba(42, 81, 99, .13);
    }

.wce .card-media{
      position: relative;
      height: 256.8px;
      overflow: hidden;
      background: var(--pale-2);
    }

.wce .card-media img{
      width: 100%;
      height: 100%;
      object-fit: cover;
      transition: transform .6s ease;
    }

.wce .card-media--settings{
      background: #e9f1f6;
    }

.wce .card-media--settings img{
      object-position: center top;
    }

.wce .card-media--settings .card-kicker{
      top: auto;
      bottom: 16.8px;
      background: rgba(0, 0, 51, .76);
      backdrop-filter: blur(6px);
    }

.wce .card-media--query{
      background: #eaf2f7;
    }

.wce .card-media--query img{
      object-position: center top;
    }

.wce .card-media--query .card-kicker{
      top: auto;
      bottom: 16.8px;
      background: rgba(0, 0, 51, .76);
      backdrop-filter: blur(6px);
    }

.wce .card-media--service{
      background: #e7f0f5;
    }

.wce .card-media--service img{
      object-position: center;
    }

.wce .card-media--service .card-kicker{
      top: auto;
      bottom: 16.8px;
      background: rgba(0, 0, 51, .76);
      backdrop-filter: blur(6px);
    }

.wce .waypoint-label-layer{
      position: absolute;
      inset: 0;
      z-index: 2;
      pointer-events: none;
      transform-origin: center;
      transition: transform .6s ease;
    }

.wce .waypoint-label{
      position: absolute;
      padding: 3.6px 6px;
      border-radius: 4.8px;
      color: var(--white);
      background: rgba(0, 18, 62, .88);
      box-shadow: 0 2.4px 9.6px rgba(0, 0, 0, .2);
      font: 700 12px/1 Arial, sans-serif;
      letter-spacing: .02em;
      white-space: nowrap;
    }

.wce .waypoint-label--1{ left: 26.8%; top: 74.3%; }

.wce .waypoint-label--2{ left: 38.0%; top: 65.0%; }

.wce .waypoint-label--3{ left: 47.5%; top: 59.4%; }

.wce .waypoint-label--4{ left: 61.1%; top: 56.2%; }

.wce .waypoint-label--5{ left: 65.5%; top: 46.2%; }

.wce .waypoint-label--7{ left: 74.0%; top: 24.0%; }

.wce .service-waypoint-count{
      position: absolute;
      left: 82.0%;
      top: 12.2%;
      z-index: 2;
      padding: 3.6px 6px;
      border-radius: 3.6px;
      color: #214166;
      background: rgba(248, 251, 253, .97);
      font: 700 12px/1 Arial, sans-serif;
      white-space: nowrap;
      pointer-events: none;
    }

.wce .capability-card:hover .card-media--service .waypoint-label-layer,
.wce .capability-card:hover .card-media--service .service-waypoint-count{
      transform: scale(1.035);
    }

@media (max-width: 984px)  {
.wce .waypoint-label{
        padding: 2.4px 4.8px;
        font-size: 10.8px;
      }

.wce .service-waypoint-count{
        padding: 2.4px 4.8px;
        font-size: 10.8px;
      }
}

.wce .capability-card:hover .card-media img{ transform: scale(1.035); }

.wce .card-kicker{
      position: absolute;
      left: 21.6px;
      top: 19.2px;
      padding: 7.2px 14.4px;
      border-radius: 6px;
      color: var(--white);
      background: rgba(0, 0, 0, .62);
      font-family: Arial, sans-serif;
      font-size: 10.8px;
      letter-spacing: .04em;
    }

.wce .card-body{ padding: 32.4px 30px 31.2px; }

.wce .card-body h3{ margin: 0 0 12px; font-size: 27.6px; }

.wce .card-body p{ min-height: 62.4px; margin: 0; color: var(--text); font-size: 16.8px; }

.wce .card-link{
      display: inline-flex;
      align-items: center;
      gap: 12px;
      margin-top: 25.2px;
      font-size: 15.6px;
    }

.wce .fusion-layout{
      display: grid;
      grid-template-columns: .9fr 1.1fr;
      align-items: center;
      gap: 57.6px;
    }

.wce .fusion-copy h2{
      margin: 31.2px 0 24px;
      font-size: clamp(43.2px, 3.8vw, 52.8px);
      line-height: 1.12;
      letter-spacing: -.035em;
      font-weight: 600;
    }

.wce .fusion-copy h2 .title-line{
      display: block;
      margin-top: 9.6px;
      font-size: .86em;
      white-space: nowrap;
    }

.wce .fusion-copy > p{
      max-width: 564px;
      margin: 0;
      color: var(--text);
      font-size: 18px;
      line-height: 1.75;
    }

.wce .feature-list{
      display: grid;
      grid-template-columns: 1fr;
      gap: 0;
      margin: 36px 0 0;
      padding: 0;
      border-top: 1.2px solid rgba(35, 127, 163, .2);
      list-style: none;
    }

.wce .feature-list li{
      display: grid;
      grid-template-columns: 50.4px minmax(0, 1fr);
      align-items: start;
      min-height: 0;
      padding: 18px 0 16.8px;
      border: 0;
      border-bottom: 1.2px solid rgba(35, 127, 163, .2);
      border-radius: 0;
      background: transparent;
    }

.wce .feature-index{
      padding-top: 3.6px;
      color: var(--brand);
      font-family: Arial, sans-serif;
      font-size: 12px;
      font-weight: 700;
      letter-spacing: .12em;
    }

.wce .feature-content strong{
      display: block;
      margin-bottom: 3.6px;
      color: var(--ink);
      font-size: 16.8px;
      font-weight: 600;
    }

.wce .feature-content small{
      display: block;
      color: var(--text);
      font-size: 14.4px;
      line-height: 1.65;
    }

.wce .fusion-gallery{
      display: grid;
      grid-template-columns: repeat(6, minmax(0, 1fr));
      align-items: start;
      gap: 16.8px;
    }

.wce .gallery-item{
      position: relative;
      grid-column: span 3;
      aspect-ratio: 4 / 3;
      margin: 0;
      overflow: hidden;
      border: 7.2px solid rgba(255, 255, 255, .94);
      border-radius: 16.8px;
      background: var(--white);
      box-shadow: 0 18px 40.8px rgba(38, 77, 95, .12);
    }

.wce .gallery-item img{ width: 100%; height: 100%; object-fit: cover; }

.wce .gallery-item span{
      position: absolute;
      left: 14.4px;
      bottom: 14.4px;
      padding: 7.2px 13.2px;
      border-radius: 6px;
      color: var(--white);
      background: rgba(0, 0, 51, .72);
      font-size: 13.2px;
    }

.wce .weather-group{
      grid-column: 1 / -1;
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 16.8px;
      min-width: 0;
    }

.wce .weather-tile{
      position: relative;
      aspect-ratio: 1;
      min-width: 0;
      margin: 0;
      overflow: hidden;
      border: 6px solid rgba(255, 255, 255, .94);
      border-radius: 16.8px;
      background: var(--brand);
      box-shadow: 0 18px 40.8px rgba(38, 77, 95, .12);
    }

.wce .weather-tile::after{
      content: "";
      position: absolute;
      inset: 45% 0 0;
      background: linear-gradient(180deg, transparent, rgba(0, 19, 45, .42));
      pointer-events: none;
    }

.wce .weather-tile img{
      width: 100%;
      height: 100%;
      object-fit: cover;
    }

.wce .weather-tile figcaption{
      position: absolute;
      z-index: 1;
      left: 13.2px;
      bottom: 13.2px;
      padding: 7.2px 12px;
      border-radius: 6px;
      color: var(--white);
      background: rgba(0, 0, 51, .72);
      backdrop-filter: blur(6px);
      font-size: 13.2px;
      font-weight: 500;
      line-height: 1;
    }

.wce .deployment{
      padding: 88.8px 0;
      background: var(--white);
    }

.wce .deployment-panel{
      display: grid;
      grid-template-columns: 1fr 1.15fr auto;
      align-items: center;
      gap: 43.2px;
      padding: 40.8px 45.6px;
      border: 1.2px solid var(--line);
      border-radius: 14.4px;
      background: var(--pale-2);
    }

.wce .deployment-panel h2,
.wce .deployment-panel p{ margin: 0; }

.wce .deployment-panel h2{ font-size: 28.8px; }

.wce .deployment-panel p{ color: var(--text); font-size: 16.8px; }

.wce .platforms{
      display: flex;
      flex-wrap: wrap;
      gap: 12px;
    }

.wce .platforms span{
      padding: 9.6px 14.4px;
      border-radius: 7.2px;
      color: var(--brand-dark);
      background: var(--white);
      border: 1.2px solid var(--line);
      font-family: Arial, sans-serif;
      font-size: 14.4px;
    }

.wce .contact-section{
      position: relative;
      overflow: hidden;
      padding: 120px 0;
      color: var(--white);
      background: #062a3c;
    }

.wce .contact-section::before,
.wce .contact-section::after{
      content: "";
      position: absolute;
      border: 1.2px solid rgba(27, 227, 229, .24);
      border-radius: 50%;
    }

.wce .contact-section::before{ width: 504px; height: 504px; right: -144px; top: -228px; }

.wce .contact-section::after{ width: 372px; height: 372px; right: -78px; top: -162px; }

.wce .contact-grid{
      position: relative;
      z-index: 2;
      display: grid;
      grid-template-columns: 1fr auto;
      align-items: center;
      gap: 64.8px;
    }

.wce .contact-copy .eyebrow{ color: #83dcf0; }

.wce .contact-copy h2{ margin: 30px 0 19.2px; font-size: clamp(40.8px, 4.8vw, 60px); }

.wce .contact-copy p{ max-width: 828px; margin: 0; color: rgba(255, 255, 255, .73); }

.wce .contact-lines{
      display: flex;
      flex-wrap: wrap;
      gap: 16.8px 38.4px;
      margin-top: 36px;
      font-size: 16.8px;
      color: rgba(255, 255, 255, .9);
    }

.wce .qr-card{
      width: 196.8px;
      padding: 18px;
      border-radius: 13.2px;
      color: var(--ink);
      background: var(--white);
      text-align: center;
      box-shadow: 0 24px 60px rgba(0, 0, 0, .18);
    }

.wce .qr-card img{ width: 160.8px; height: 160.8px; margin: auto; }

.wce .qr-card span{ display: block; margin-top: 9.6px; font-size: 14.4px; }

.wce .reveal{
      opacity: 0;
      transform: translateY(33.6px);
      transition: opacity .7s ease, transform .7s ease;
    }

.wce .reveal.is-visible{
      opacity: 1;
      transform: none;
    }

@media (prefers-reduced-motion: reduce)  {
.wce *::before,
.wce *::after{ transition-duration: .01ms !important; animation-duration: .01ms !important; }

.wce .reveal{ opacity: 1; transform: none; }
}

@media (max-width: 1248px)  {
.wce .hero{ min-height: auto; }

.wce .hero-inner{ grid-template-columns: 1fr; }

.wce .hero-copy{ max-width: 744px; }

.wce .hero-visual{ min-height: 648px; }

.wce .browser-window{ left: 0; right: auto; width: min(100%, 816px); }

.wce .floating-visual{ left: 408px; right: auto; }

.wce .fusion-layout{ grid-template-columns: 1fr; gap: 57.6px; }

.wce .fusion-copy{ max-width: 864px; }

.wce .fusion-gallery{ width: min(100%, 864px); margin-inline: auto; }

.wce .deployment-panel{ grid-template-columns: 1fr 1fr; }

.wce .deployment-panel .button{ justify-self: start; }
}

@media (max-width: 984px)  {
.wce .container{ width: min(calc(100% - 43.2px), var(--container)); }

.wce .hero{ padding-top: 151.2px; }

.wce .hero h1{ font-size: 60px; }

.wce .metrics{ grid-template-columns: 1fr; max-width: 324px; }

.wce .hero-visual{ min-height: 528px; }

.wce .floating-visual{ left: 46%; right: auto; width: 48%; }

.wce .capability-grid{ grid-template-columns: 1fr; }

.wce .card-body p{ min-height: auto; }

.wce .deployment-panel{ grid-template-columns: 1fr; }

.wce .contact-grid{ grid-template-columns: 1fr; }

.wce .qr-card{ margin-top: 12px; }
}

@media (max-width: 672px)  {
.wce .hero{ padding-bottom: 62.4px; }

.wce .hero h1{ font-size: 48px; }

.wce .hero-lead{ font-size: 21.6px; }

.wce .hero-copy{ font-size: 16.8px; }

.wce .hero-actions{ flex-direction: column; align-items: stretch; }

.wce .button{ width: 100%; }

.wce .hero-visual{ min-height: 360px; margin-top: 12px; }

.wce .browser-window{ width: 100%; border-width: 6px; }

.wce .visual-label{ left: 14.4px; bottom: 14.4px; font-size: 12px; }

.wce .chart-badge{ display: none; }

.wce .floating-visual{ display: none; }

.wce .section{ padding: 93.6px 0; }

.wce .section-heading h2,
.wce .fusion-copy h2{ font-size: 40.8px; }

.wce .fusion-copy h2 .title-line{ white-space: normal; }

.wce .feature-list{ grid-template-columns: 1fr; }

.wce .fusion-gallery{ grid-template-columns: 1fr; gap: 14.4px; }

.wce .gallery-item{ grid-column: 1; aspect-ratio: 16 / 10; }

.wce .weather-group{ grid-column: 1; gap: 9.6px; }

.wce .weather-tile{ border-width: 4.8px; border-radius: 13.2px; }

.wce .weather-tile figcaption{ left: 8.4px; bottom: 8.4px; padding: 6px 9.6px; font-size: 12px; }

.wce .deployment{ padding: 64.8px 0; }

.wce .contact-section{ padding: 93.6px 0; }

.wce .contact-lines{ flex-direction: column; gap: 9.6px; }
}

