/* ============================================================
   绿链风格样式层（借鉴 cfootprint.neep.shop 设计架构）
   作用域：仅首页新区块（gl- 前缀），不干扰其他页面
   主色：#03ac88（清新绿）+ 白底浅灰 + 圆角卡片
   ============================================================ */

:root {
  --gl-green: #03ac88;
  --gl-green-dark: #029a7a;
  --gl-green-deep: #065f46;
  --gl-green-light: #e6f7f2;
  --gl-ink: #333;
  --gl-gray: #666;
  --gl-line: #e8efec;
}

/* ---------- 全屏 Hero 轮播 ---------- */
.gl-hero {
  position: relative;
  height: calc(100vh - 118px);
  min-height: 560px;
  max-height: 860px;
  overflow: hidden;
  /* 深绿高级感底色：多层渐变（视频/图片加载前也好看） */
  background:
    radial-gradient(1100px 480px at 85% -10%, rgba(74,222,178,.20), transparent 60%),
    radial-gradient(900px 560px at -8% 112%, rgba(5,80,58,.60), transparent 62%),
    linear-gradient(165deg, #04291f 0%, #07503a 40%, #0c7a58 74%, #0a5c44 100%);
}
.gl-hero .carousel-track,
.gl-hero .carousel-slide {
  position: absolute; inset: 0; display: block;
}
.gl-hero .carousel-slide {
  opacity: 0; transition: opacity .9s ease;
  display: flex; align-items: center; justify-content: center;
}
.gl-hero .carousel-slide.active { opacity: 1; z-index: 1; }

/* ---------- 背景装饰层（网格 + 分子网络 + 山峦剪影 + 浮游粒子） ---------- */
.gl-hero .gl-hero-deco { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }
.gl-hero .gl-hero-deco i { position: absolute; display: block; }
/* 科技网格：中心亮、边缘淡出 */
.gl-hero .gl-hero-deco .d-grid {
  inset: 0; width: 100%; height: 100%;
  background-image:
    linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
  background-size: 56px 56px;
  -webkit-mask-image: radial-gradient(78% 92% at 50% 32%, #000 28%, transparent 100%);
          mask-image: radial-gradient(78% 92% at 50% 32%, #000 28%, transparent 100%);
}
/* 低碳分子网络（右上角） */
.gl-hero .gl-hero-deco .d-net {
  width: 560px; height: 560px; right: -70px; top: -70px; opacity: .95;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400'%3E%3Cg fill='none' stroke='rgba(255,255,255,0.13)' stroke-width='1'%3E%3Cpath d='M60 300 L150 200 L260 240 L330 130'/%3E%3Cpath d='M150 200 L120 90 L230 60'/%3E%3Cpath d='M120 90 L60 300'/%3E%3Cpath d='M230 60 L260 240'/%3E%3C/g%3E%3Cg fill='rgba(255,255,255,0.20)'%3E%3Ccircle cx='60' cy='300' r='5'/%3E%3Ccircle cx='150' cy='200' r='7'/%3E%3Ccircle cx='260' cy='240' r='5'/%3E%3Ccircle cx='330' cy='130' r='6'/%3E%3Ccircle cx='120' cy='90' r='5'/%3E%3Ccircle cx='230' cy='60' r='7'/%3E%3C/g%3E%3Cg fill='rgba(110,231,183,0.38)'%3E%3Ccircle cx='150' cy='200' r='2.5'/%3E%3Ccircle cx='230' cy='60' r='2.5'/%3E%3Ccircle cx='330' cy='130' r='2.5'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat;
}
/* 山峦剪影（底部，双层压深文字区） */
.gl-hero .gl-hero-deco .d-hills {
  left: 0; bottom: -2px; width: 100%; height: 36%;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 320' preserveAspectRatio='xMidYMax slice'%3E%3Cpath fill='rgba(7,64,47,0.55)' d='M0,200 C220,150 400,185 640,140 C880,95 1140,165 1440,110 L1440,320 L0,320 Z'/%3E%3Cpath fill='rgba(4,42,31,0.88)' d='M0,262 C280,215 520,248 780,210 C1030,175 1250,232 1440,200 L1440,320 L0,320 Z'/%3E%3C/svg%3E") bottom/cover no-repeat;
}
/* 浮游微粒（低碳粒子意象） */
.gl-hero .gl-hero-deco .d-orb { border-radius: 50%; filter: blur(2px); background: rgba(255,255,255,.35); animation: glFloat 14s ease-in-out infinite; }
.gl-hero .gl-hero-deco .d-orb.o1 { width: 10px; height: 10px; left: 18%; top: 60%; }
.gl-hero .gl-hero-deco .d-orb.o2 { width: 6px;  height: 6px;  left: 71%; top: 68%; animation-delay: -5s; animation-duration: 18s; }
.gl-hero .gl-hero-deco .d-orb.o3 { width: 8px;  height: 8px;  left: 46%; top: 76%; animation-delay: -9s; animation-duration: 16s; background: rgba(110,231,183,.5); }
@keyframes glFloat { 0%,100% { transform: translateY(0); opacity: .55; } 50% { transform: translateY(-46px); opacity: .12; } }

/* 视频背景：铺满 + 双层遮罩（中央聚焦压暗 + 上下渐变）保证文字可读 */
.gl-hero .gl-hero-video {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; z-index: 0; pointer-events: none;
}
.gl-hero .gl-hero-video-mask {
  position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background:
    radial-gradient(92% 72% at 50% 44%, rgba(3,36,26,.26), transparent 68%),
    linear-gradient(180deg, rgba(4,42,31,.40) 0%, rgba(6,63,48,.12) 36%, rgba(3,34,25,.58) 100%);
}
.gl-hero .banner-inner { text-align: center; color: #fff; position: relative; z-index: 2; padding-bottom: 40px; }
.gl-hero .kicker {
  display: inline-block; font-size: 15px; letter-spacing: 4px;
  opacity: .92; margin-bottom: 18px; color: #eafff8;
}
.gl-hero h2 {
  font-size: 52px; font-weight: 700; letter-spacing: 2px; line-height: 1.3;
  text-shadow: 0 4px 24px rgba(4, 60, 45, .35);
}
.gl-hero h2 em { font-style: normal; font-size: 30px; font-weight: 500; opacity: .95; }
.gl-hero .gl-hero-sub {
  display: inline-block; margin-top: 26px; padding: 10px 34px;
  font-size: 17px; color: #fff; letter-spacing: 2px;
  background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.35);
  border-radius: 999px; backdrop-filter: blur(3px);
}
.gl-hero .banner-actions { margin-top: 30px; }
.gl-hero .gl-hero-btn {
  display: inline-block; padding: 12px 44px; font-size: 16px; color: #065f46;
  background: #fff; border-radius: 999px; text-decoration: none; font-weight: 600;
  box-shadow: 0 8px 24px rgba(4, 60, 45, .25); transition: transform .2s, box-shadow .2s;
}
.gl-hero .gl-hero-btn:hover { transform: translateY(-2px); box-shadow: 0 12px 30px rgba(4,60,45,.32); }
/* 装饰：柔和光斑 */
.gl-hero::before, .gl-hero::after {
  content: ""; position: absolute; border-radius: 50%; pointer-events: none; z-index: 1;
}
.gl-hero::before { width: 640px; height: 640px; left: -180px; top: -220px;
  background: radial-gradient(circle, rgba(255,255,255,.16), transparent 65%); }
.gl-hero::after { width: 720px; height: 720px; right: -220px; bottom: -280px;
  background: radial-gradient(circle, rgba(16,185,129,.26), transparent 65%); }

/* 滑动提示（鼠标图标） */
.gl-scroll-hint {
  position: absolute; left: 50%; bottom: 26px; transform: translateX(-50%);
  color: rgba(255,255,255,.85); font-size: 13px; letter-spacing: 2px;
  text-align: center; z-index: 3;
}
.gl-scroll-hint .mouse {
  display: block; width: 22px; height: 36px; margin: 8px auto 0;
  border: 2px solid rgba(255,255,255,.8); border-radius: 12px; position: relative;
}
.gl-scroll-hint .mouse::after {
  content: ""; position: absolute; left: 50%; top: 7px; transform: translateX(-50%);
  width: 3px; height: 8px; border-radius: 2px; background: #fff;
  animation: glWheel 1.6s ease-in-out infinite;
}
@keyframes glWheel { 0%,100% { opacity: 1; top: 7px; } 60% { opacity: .2; top: 16px; } }

/* 轮播箭头与圆点 */
.gl-hero .carousel-prev, .gl-hero .carousel-next {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 4;
  width: 46px; height: 46px; border-radius: 50%; border: none; cursor: pointer;
  background: rgba(255,255,255,.18); color: #fff; font-size: 22px; line-height: 1;
  transition: background .2s;
}
.gl-hero .carousel-prev:hover, .gl-hero .carousel-next:hover { background: rgba(255,255,255,.34); }
.gl-hero .carousel-prev { left: 26px; }
.gl-hero .carousel-next { right: 26px; }
.gl-hero .carousel-dots {
  position: absolute; right: 34px; bottom: 30px; z-index: 4; display: flex; gap: 8px;
}
.gl-hero .carousel-dots .dot {
  width: 26px; height: 4px; border-radius: 2px; background: rgba(255,255,255,.45);
  cursor: pointer; transition: background .2s;
}
.gl-hero .carousel-dots .dot.active { background: #fff; }

/* ---------- 通用区块标题 ---------- */
.gl-sec { padding: 78px 0; }
.gl-sec-head { text-align: center; margin-bottom: 46px; }
.gl-sec-title {
  display: inline-flex; align-items: center; gap: 16px;
  font-size: 30px; font-weight: 700; color: var(--gl-ink); letter-spacing: 1px;
}
.gl-sec-title::before, .gl-sec-title::after {
  content: ""; width: 26px; height: 5px; border-radius: 3px; background: var(--gl-green);
  transform: skewX(-30deg);
}
.gl-sec-sub { margin-top: 14px; font-size: 15px; color: var(--gl-gray); letter-spacing: 1px; }

/* ---------- 数据大卡（三组） ---------- */
.gl-stats-bg { background: linear-gradient(180deg, #f3faf8 0%, #ffffff 100%); }
.gl-stat-groups {
  max-width: 1200px; margin: 0 auto; padding: 0 20px;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px;
}
.gl-stat-card {
  background: #fff; border-radius: 16px; padding: 34px 34px 28px;
  box-shadow: 0 10px 34px rgba(9, 88, 66, .08);
  border-top: 4px solid var(--gl-green);
  transition: transform .25s, box-shadow .25s;
}
.gl-stat-card:hover { transform: translateY(-6px); box-shadow: 0 18px 44px rgba(9,88,66,.14); }
.gl-stat-card h3 {
  font-size: 20px; font-weight: 700; color: var(--gl-green); margin-bottom: 22px; letter-spacing: 1px;
}
.gl-stat-item { display: flex; align-items: center; justify-content: space-between; padding: 12px 0; }
.gl-stat-item + .gl-stat-item { border-top: 1px dashed var(--gl-line); }
.gl-stat-item .lbl { display: block; font-size: 14px; color: var(--gl-gray); margin-bottom: 6px; }
.gl-stat-item .num { font-size: 34px; font-weight: 700; color: var(--gl-green); line-height: 1.1; }
.gl-stat-item .num em { font-style: normal; font-size: 15px; font-weight: 500; color: var(--gl-gray); margin-left: 6px; }
.gl-stat-item .ico {
  width: 58px; height: 58px; border-radius: 14px; background: var(--gl-green-light);
  display: flex; align-items: center; justify-content: center; font-size: 26px; flex: none;
}

/* ---------- 服务四卡 ---------- */
.gl-eyebrow {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 12px; font-weight: 600; letter-spacing: 4px; color: #0a8d6f;
  background: rgba(10,141,111,.07); border: 1px solid rgba(10,141,111,.22);
  padding: 6px 16px; border-radius: 99px; margin-bottom: 16px;
}
.gl-eyebrow::before {
  content: ""; width: 6px; height: 6px; border-radius: 50%; background: #0cb98c;
  box-shadow: 0 0 0 3px rgba(12,185,140,.18);
  animation: dotPulse 2.2s ease-in-out infinite;
}
@keyframes dotPulse {
  0%, 100% { box-shadow: 0 0 0 3px rgba(12,185,140,.18); }
  50% { box-shadow: 0 0 0 7px rgba(12,185,140,.05); }
}
.gl-sec#services {
  background:
    repeating-linear-gradient(115deg, rgba(9,88,66,.028) 0 1px, transparent 1px 34px),
    radial-gradient(620px 300px at 12% 0%, rgba(3,172,136,.09), transparent 70%),
    radial-gradient(620px 300px at 88% 100%, rgba(3,172,136,.07), transparent 70%),
    linear-gradient(180deg, #f6fbf9 0%, #ffffff 100%);
}
.gl-service-grid {
  max-width: 1200px; margin: 0 auto; padding: 0 20px;
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px;
}
.gl-service-card {
  position: relative; border-radius: 18px; overflow: hidden; color: #fff;
  background:
    repeating-linear-gradient(115deg, rgba(255,255,255,.04) 0 1px, transparent 1px 26px),
    radial-gradient(190px 190px at 88% -10%, rgba(255,255,255,.16), transparent 70%),
    linear-gradient(160deg, #12bd92 0%, #0a8d6f 78%, #076b56 100%);
  padding: 32px 26px 26px; min-height: 262px;
  display: flex; flex-direction: column; text-decoration: none;
  box-shadow: 0 12px 30px rgba(6, 97, 82, .20), inset 0 0 0 1px rgba(255,255,255,.14);
  transform: perspective(800px) translateY(0) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));
  transition: transform .18s ease-out, box-shadow .25s;
  will-change: transform;
}
/* 四色递进：从亮绿到深绿，形成进阶节奏（纹理层继承首卡的） */
.gl-service-card:nth-child(2) { background:
  repeating-linear-gradient(115deg, rgba(255,255,255,.04) 0 1px, transparent 1px 26px),
  radial-gradient(190px 190px at 88% -10%, rgba(255,255,255,.15), transparent 70%),
  linear-gradient(160deg, #0eae85 0%, #077a61 78%, #055c4b 100%); }
.gl-service-card:nth-child(3) { background:
  repeating-linear-gradient(115deg, rgba(255,255,255,.04) 0 1px, transparent 1px 26px),
  radial-gradient(190px 190px at 88% -10%, rgba(255,255,255,.15), transparent 70%),
  linear-gradient(160deg, #0a9d78 0%, #066c54 78%, #044f40 100%); }
.gl-service-card:nth-child(4) { background:
  repeating-linear-gradient(115deg, rgba(255,255,255,.04) 0 1px, transparent 1px 26px),
  radial-gradient(190px 190px at 88% -10%, rgba(255,255,255,.15), transparent 70%),
  linear-gradient(160deg, #078c6b 0%, #055f49 78%, #034232 100%); }
/* 顶部高光线 + 右上光斑 */
.gl-service-card::before {
  content: ""; position: absolute; top: 0; left: 10%; right: 10%; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.55), transparent);
}
.gl-service-card::after {
  content: ""; position: absolute; width: 170px; height: 170px; right: -55px; top: -55px;
  border-radius: 50%; background: radial-gradient(circle, rgba(255,255,255,.15), transparent 70%);
  pointer-events: none; animation: blobFloat 7s ease-in-out infinite alternate;
}
@keyframes blobFloat {
  from { transform: translate(0, 0); }
  to { transform: translate(-16px, 12px) scale(1.08); }
}
/* 光泽扫过层 */
.gl-service-card .s-sheen {
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(115deg, transparent 38%, rgba(255,255,255,.20) 50%, transparent 62%);
  transform: translateX(-130%);
}
.gl-service-card:hover .s-sheen { animation: sheenSweep .9s ease; }
@keyframes sheenSweep { to { transform: translateX(130%); } }
/* 入场逐卡上浮（JS IntersectionObserver 触发） */
.gl-service-grid.anim-ready .gl-service-card { opacity: 0; }
.gl-service-grid.svc-in .gl-service-card {
  opacity: 1;
  animation: svcUp .75s cubic-bezier(.18,.7,.3,1.1) backwards, cardBob 4.6s ease-in-out infinite;
}
.gl-service-grid.svc-in .gl-service-card:nth-child(2) { animation-delay: .12s, -1.15s; }
.gl-service-grid.svc-in .gl-service-card:nth-child(3) { animation-delay: .24s, -2.3s; }
.gl-service-grid.svc-in .gl-service-card:nth-child(4) { animation-delay: .36s, -3.45s; }
@keyframes svcUp {
  from { opacity: 0; transform: perspective(800px) translateY(32px) scale(.97); }
}
/* 卡片常驻呼吸浮动：用独立 translate 属性，与 3D 倾斜/hover transform 互不冲突 */
.gl-service-card { animation: cardBob 4.6s ease-in-out infinite; }
.gl-service-card:nth-child(2) { animation-delay: -1.15s; }
.gl-service-card:nth-child(3) { animation-delay: -2.3s; }
.gl-service-card:nth-child(4) { animation-delay: -3.45s; }
@keyframes cardBob {
  0%, 100% { translate: 0 0; }
  50% { translate: 0 -8px; }
}
/* 图标轻浮动（错拍） */
.gl-service-card .s-ico { animation: icoFloat 3.8s ease-in-out infinite; }
.gl-service-card:nth-child(2) .s-ico { animation-delay: -0.95s; }
.gl-service-card:nth-child(3) .s-ico { animation-delay: -1.9s; }
.gl-service-card:nth-child(4) .s-ico { animation-delay: -2.85s; }
@keyframes icoFloat {
  0%, 100% { translate: 0 0; }
  50% { translate: 0 -4px; }
}
@media (prefers-reduced-motion: reduce) {
  .gl-service-card, .gl-service-card::after, .gl-eyebrow::before, .gl-service-card .s-sheen, .gl-service-card .s-ico { animation: none !important; transition: none !important; }
  .gl-service-grid.anim-ready .gl-service-card { opacity: 1; }
}
.gl-service-card:hover { transform: perspective(800px) translateY(-8px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)); box-shadow: 0 24px 50px rgba(6,97,82,.34), inset 0 0 0 1px rgba(255,255,255,.14); }
/* 图标容器：白色线性 SVG + 毛玻璃质感方块 */
.gl-service-card .s-ico {
  width: 54px; height: 54px; border-radius: 14px;
  background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.35);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.28);
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 18px; flex: none; transition: background .25s;
}
.gl-service-card .s-ico svg { width: 26px; height: 26px; }
.gl-service-card:hover .s-ico { background: rgba(255,255,255,.26); transform: scale(1.08) rotate(-4deg); }
.gl-service-card .s-ico { transition: background .25s, transform .25s; }
.gl-service-card .s-more .arr { font-style: normal; transition: transform .25s; }
.gl-service-card h3 { position: relative; font-size: 20px; font-weight: 700; letter-spacing: .5px; padding-bottom: 12px; }
.gl-service-card h3::after {
  content: ""; position: absolute; left: 0; bottom: 0; width: 30px; height: 3px; border-radius: 2px;
  background: rgba(255,255,255,.55); transition: width .3s;
}
.gl-service-card:hover h3::after { width: 58px; }
.gl-service-card p { margin-top: 13px; font-size: 14px; line-height: 1.85; color: rgba(255,255,255,.88); }
.gl-service-card .s-more {
  align-self: flex-start; margin-top: auto; padding: 7px 16px 7px 18px;
  font-size: 13px; color: #fff; border-radius: 99px;
  border: 1px solid rgba(255,255,255,.45); background: rgba(255,255,255,.08);
  display: inline-flex; align-items: center; gap: 6px; transition: background .25s, color .25s, border-color .25s;
}
.gl-service-card:hover .s-more { background: #fff; color: #0a8d6f; border-color: #fff; }
.gl-service-card:hover .s-more .arr { transform: translateX(5px); }

/* ---------- 资讯星系 ---------- */
.gl-galaxy-bg { background: radial-gradient(ellipse at center, #ffffff 0%, #f2faf7 58%, #e8f5f0 100%); overflow: hidden; }
.gl-galaxy { position: relative; max-width: 1150px; height: 560px; margin: 0 auto; }
.gl-galaxy svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.gl-core {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%);
  width: 120px; height: 120px; border-radius: 28px; z-index: 5;
  background: linear-gradient(145deg, #0fc39a, #056a55);
  color: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center;
  font-weight: 700; letter-spacing: 2px; box-shadow: 0 16px 40px rgba(5,106,85,.35);
  cursor: default; text-align: center;
}
.gl-core .big { font-size: 30px; line-height: 1.15; }
.gl-core .small { font-size: 12px; font-weight: 400; opacity: .85; margin-top: 4px; letter-spacing: 4px; }
.gl-node {
  position: absolute; z-index: 4; display: flex; flex-direction: column; align-items: center; gap: 8px;
  text-decoration: none; transform: translate(-50%,-50%); transition: transform .25s;
}
.gl-node .n-ico {
  width: 62px; height: 62px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-size: 24px; color: #fff; background: linear-gradient(145deg, #9fb4ad, #7e968f);
  box-shadow: 0 8px 20px rgba(70, 100, 90, .22); transition: box-shadow .25s;
}
.gl-node.major .n-ico { background: linear-gradient(145deg, #17c9a1, #07806a); box-shadow: 0 10px 26px rgba(6,128,106,.35); }
.gl-node:hover { transform: translate(-50%,-50%) scale(1.12); }
.gl-node:hover .n-ico { box-shadow: 0 14px 32px rgba(6,128,106,.45); }
.gl-node .n-txt { font-size: 13px; color: var(--gl-ink); background: rgba(255,255,255,.85); padding: 3px 12px; border-radius: 999px; white-space: nowrap; }

/* ---------- 合作企业横滚 ---------- */
.gl-partners-bg { background: linear-gradient(135deg, #0eb48d 0%, #0a8a6e 55%, #07735c 100%); }
.gl-partners-bg .gl-sec-title { color: #fff; }
.gl-partners-bg .gl-sec-title::before, .gl-partners-bg .gl-sec-title::after { background: rgba(255,255,255,.85); }
.gl-marquee { overflow: hidden; position: relative; max-width: 1240px; margin: 0 auto; -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.gl-marquee-track { display: flex; gap: 22px; width: max-content; animation: glScroll 36s linear infinite; }
.gl-marquee:hover .gl-marquee-track { animation-play-state: paused; }
@keyframes glScroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.gl-partner-card {
  width: 300px; background: #fff; border-radius: 14px; padding: 18px 20px;
  display: flex; align-items: center; gap: 14px; box-shadow: 0 10px 26px rgba(4, 70, 56, .25); flex: none;
}
.gl-partner-card .p-logo {
  width: 76px; height: 56px; border-radius: 8px; flex: none;
  display: flex; align-items: center; justify-content: center; font-size: 28px;
  background: linear-gradient(145deg, #e8f7f2, #cdeee4);
}
.gl-partner-card .p-name { font-size: 14px; font-weight: 600; color: var(--gl-green-dark); line-height: 1.5; }

/* ---------- CO2 行动区 ---------- */
.gl-action {
  position: relative; overflow: hidden; text-align: center;
  padding: 130px 20px 150px;
  background: linear-gradient(180deg, #e2f4ee 0%, #cdeadf 45%, #a9dcca 100%);
}
.gl-action h2 { position: relative; z-index: 2; font-size: 34px; font-weight: 700; color: var(--gl-ink); letter-spacing: 2px; }
.gl-action p { position: relative; z-index: 2; margin-top: 14px; font-size: 16px; color: #4a6b60; letter-spacing: 1px; }
.gl-action .gl-btn-more {
  position: relative; z-index: 2; display: inline-block; margin-top: 30px;
  padding: 12px 52px; border: 1.5px solid var(--gl-green); color: var(--gl-green-dark);
  border-radius: 999px; font-size: 16px; text-decoration: none; letter-spacing: 2px;
  background: rgba(255,255,255,.6); transition: all .25s;
}
.gl-action .gl-btn-more:hover { background: var(--gl-green); color: #fff; box-shadow: 0 12px 28px rgba(3,172,136,.35); }
.gl-co2 {
  position: absolute; right: 4%; bottom: -60px; z-index: 1;
  font-size: 300px; font-weight: 800; line-height: 1; letter-spacing: -8px;
  color: rgba(255,255,255,.75); text-shadow: 0 20px 60px rgba(70,120,105,.18);
  user-select: none; pointer-events: none;
}
.gl-co2 sub { font-size: 120px; }

/* ---------- 装饰下拉引导 ---------- */
.gl-hero + .gl-stats-bg { margin-top: 0; }

/* ---------- 响应式 ---------- */
@media (max-width: 1024px) {
  .gl-stat-groups { grid-template-columns: 1fr 1fr; }
  .gl-service-grid { grid-template-columns: 1fr 1fr; }
  .gl-hero h2 { font-size: 38px; }
  .gl-co2 { font-size: 180px; }
}
@media (max-width: 640px) {
  .gl-stat-groups, .gl-service-grid { grid-template-columns: 1fr; }
  .gl-hero h2 { font-size: 28px; }
  .gl-hero .gl-hero-sub { font-size: 14px; padding: 8px 20px; }
  .gl-galaxy { height: 420px; transform: scale(.72); transform-origin: top center; }
  .gl-action { padding: 80px 16px 110px; }
  .gl-co2 { font-size: 120px; right: 0; }
}

/* ---------- 在线留言区 ---------- */
.gl-msg-band {
  background:
    repeating-linear-gradient(115deg, rgba(255,255,255,.035) 0 1px, transparent 1px 30px),
    radial-gradient(600px 280px at 90% 10%, rgba(74,222,178,.14), transparent 70%),
    linear-gradient(150deg, #06392c 0%, #075040 55%, #0a6b52 100%);
  padding: 58px 0 62px; position: relative; overflow: hidden;
}
.gl-msg-band::after {
  content: ""; position: absolute; width: 220px; height: 220px; left: -70px; bottom: -80px;
  border-radius: 50%; background: radial-gradient(circle, rgba(255,255,255,.10), transparent 70%);
  pointer-events: none;
}
.gl-msg-head { text-align: center; margin-bottom: 30px; }
.gl-msg-head h3 { color: #fff; font-size: 26px; font-weight: 700; letter-spacing: 2px; }
.gl-msg-head p { margin-top: 10px; color: rgba(255,255,255,.72); font-size: 14px; letter-spacing: 1px; }
.gl-msg-form {
  position: relative; max-width: 780px; margin: 0 auto;
  background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.18);
  border-radius: 16px; padding: 24px 26px; backdrop-filter: blur(6px);
  box-shadow: 0 16px 40px rgba(3,40,30,.30);
}
.gl-msg-form .gl-hp { position: absolute; left: -9999px; top: -9999px; height: 0; width: 0; opacity: 0; }
.gl-msg-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.gl-msg-form input[type="text"], .gl-msg-form textarea {
  width: 100%; background: rgba(255,255,255,.10); border: 1px solid rgba(255,255,255,.22);
  border-radius: 10px; padding: 11px 14px; color: #fff; font-size: 14px; font-family: inherit;
  outline: none; transition: border-color .2s, background .2s; box-sizing: border-box;
}
.gl-msg-form textarea { margin-top: 14px; resize: vertical; min-height: 96px; line-height: 1.7; }
.gl-msg-form input::placeholder, .gl-msg-form textarea::placeholder { color: rgba(255,255,255,.45); }
.gl-msg-form input:focus, .gl-msg-form textarea:focus { border-color: rgba(74,222,178,.75); background: rgba(255,255,255,.14); }
.gl-msg-ops { display: flex; align-items: center; justify-content: space-between; margin-top: 16px; gap: 12px; }
.gl-msg-tip { font-size: 13px; color: rgba(255,255,255,.85); min-height: 18px; }
.gl-msg-tip.ok { color: #7bf5cf; }
.gl-msg-tip.err { color: #ffb3a7; }
.gl-msg-btn {
  flex: none; cursor: pointer; border: none; border-radius: 99px; padding: 10px 30px;
  font-size: 14px; font-weight: 600; letter-spacing: 2px; color: #065a45;
  background: linear-gradient(135deg, #7bf5cf, #34d3a4);
  box-shadow: 0 8px 22px rgba(52,211,164,.35); transition: transform .2s, box-shadow .2s, opacity .2s;
}
.gl-msg-btn:hover { transform: translateY(-2px); box-shadow: 0 12px 28px rgba(52,211,164,.45); }
.gl-msg-btn:disabled { opacity: .6; cursor: wait; transform: none; }
@media (max-width: 640px) {
  .gl-msg-row { grid-template-columns: 1fr; }
  .gl-msg-form { padding: 18px 16px; }
}
