[add]添加本地JS文件

[update]更新页面内容,更新中国版到Logo后面
dev-about
huyuanxiang 6 days ago
parent 72632f097b
commit 1ffc0e9be6

@ -8,13 +8,11 @@
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com" rel="preconnect"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;700;900&family=Montserrat:wght@400;500;700;800;900&family=Inter:wght@400;500;700;800;900&family=JetBrains+Mono:wght@500&display=swap" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;700;900&family=Montserrat:wght@400;500;700;800;900&family=Inter:wght@400;500;700;800;900&family=JetBrains+Mono:wght@500&display=swap" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/11.0.5/swiper-bundle.min.css" />
<!-- AOS Animation Library -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/aos/2.3.4/aos.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/vanilla-tilt/1.7.2/vanilla-tilt.min.js"></script>
<!-- Tailwind & Config -->
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<script id="tailwind-config">
tailwind.config = {
@ -23,11 +21,12 @@
extend: {
colors: {
"primary": "#13eca4",
"primary-dark": "#0da670", // Added for contrast on light mode
"background-light": "#f8fcfa",
"background-dark": "#10221c",
"pearlescent": "#f0f7f5",
"silver-accent": "#e2e8f0",
"about-us": "#ff6b00"
"accent": "#ff6b00"
},
fontFamily: {
"display": ["Montserrat", "sans-serif"],
@ -35,131 +34,72 @@
"mono": ["JetBrains Mono", "Montserrat"],
"inter": ["Inter", "Montserrat"],
},
borderRadius: {
"DEFAULT": "0.5rem",
"lg": "1rem",
"xl": "1.5rem",
"2xl": "2rem",
"3xl": "3rem",
"full": "9999px"
},
backgroundImage: {
'liquid-gradient': 'linear-gradient(135deg, #f8fcfa 0%, #e8f5f1 50%, #dcfce7 100%)',
'glass-gradient': 'linear-gradient(180deg, rgba(255, 255, 255, 0.6) 0%, rgba(255, 255, 255, 0.3) 100%)',
'aurora': 'linear-gradient(135deg, rgba(19,236,164,0.1) 0%, rgba(13,166,112,0.05) 50%, rgba(248,252,250,0) 100%)',
'mesh': 'radial-gradient(at 40% 20%, rgba(19,236,164,0.08) 0px, transparent 50%), radial-gradient(at 80% 0%, rgba(16,34,28,0.05) 0px, transparent 50%), radial-gradient(at 0% 50%, rgba(19,236,164,0.05) 0px, transparent 50%)',
'glass-gradient': 'linear-gradient(180deg, rgba(255, 255, 255, 0.8) 0%, rgba(255, 255, 255, 0.4) 100%)',
'aurora': 'linear-gradient(135deg, rgba(19,236,164,0.15) 0%, rgba(13,166,112,0.08) 50%, rgba(248,252,250,0) 100%)',
},
boxShadow: {
// 将光效统一映射为 primary 颜色 (13eca4 的 RGBA)
'glow': '0 0 20px rgba(19, 236, 164, 0.4)',
'glow-lg': '0 10px 30px rgba(19, 236, 164, 0.4)',
'bento': '0 20px 40px -15px rgba(0,0,0,0.05), 0 0 0 1px rgba(0,0,0,0.02)',
'bento-hover': '0 30px 60px -20px rgba(19,236,164,0.15), 0 0 0 1px rgba(19,236,164,0.3)',
'bento-dark': '0 30px 60px -15px rgba(0,0,0,0.3), 0 0 0 1px rgba(255,255,255,0.1)',
'bento': '0 20px 40px -15px rgba(0,0,0,0.05), 0 0 0 1px rgba(255,255,255,0.6)',
'bento-hover': '0 30px 60px -20px rgba(19,236,164,0.25), 0 0 0 1px rgba(19,236,164,0.5)',
'glass': '0 8px 32px 0 rgba(13, 166, 112, 0.1)',
},
keyframes: {
fadeIn: {
'0%': { opacity: '0', transform: 'translateY(10px)' },
'100%': { opacity: '1', transform: 'translateY(0)' },
},
scan: {
'0%': { top: '-10%', opacity: '0' },
'10%': { opacity: '1' },
'90%': { opacity: '1' },
'100%': { top: '110%', opacity: '0' },
},
rotateGlobe: {
'0%': { transform: 'rotate(0deg)' },
'100%': { transform: 'rotate(360deg)' },
},
dash: {
'0%': { strokeDashoffset: '1000' },
'100%': { strokeDashoffset: '0' },
},
globePulse: {
'0%': { boxShadow: '0 0 0px rgba(19,236,164,0)' },
'50%': { boxShadow: '0 0 50px rgba(19,236,164,0.4)', transform: 'scale(1.02)' },
'100%': { boxShadow: '0 0 0px rgba(19,236,164,0)' },
},
// 高级交互动画
pulseGlow: {
'0%': { textShadow: '0 0 10px rgba(19, 236, 164, 0.4)' },
'100%': { textShadow: '0 0 30px #ff6b00' }
},
sweep: { '100%': { left: '200%' } },
cardFlip: {
'0%': { opacity: '0', transform: 'rotateY(-90deg) translateZ(50px)' },
'100%': { opacity: '1', transform: 'rotateY(0deg) translateZ(0)' }
},
floatY: {
'0%, 100%': { transform: 'translateY(0)' },
'50%': { transform: 'translateY(-15px)' }
},
textShimmer: {
'0%': { backgroundPosition: '0% 50%' },
'100%': { backgroundPosition: '100% 50%' },
},
blobSpin: {
'0%': { transform: 'rotate(0deg) scale(1)' },
'50%': { transform: 'rotate(180deg) scale(1.1)' },
'100%': { transform: 'rotate(360deg) scale(1)' },
}
},
animation: {
'fade-in': 'fadeIn 0.5s ease-out forwards',
'scan-slow': 'scan 6s linear infinite',
'spin-slow': 'rotateGlobe 60s linear infinite',
'dash-flow': 'dash 3s linear infinite',
'globe-select': 'globePulse 0.8s ease-out',
'pulse-glow': 'pulseGlow 2s infinite alternate',
'sweep': 'sweep 3s infinite',
'flip-in': 'cardFlip 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards',
'float-1': 'floatY 3s ease-in-out infinite',
'float-2': 'floatY 3s ease-in-out infinite 1s',
'float-3': 'floatY 3s ease-in-out infinite 2s',
'text-shimmer': 'textShimmer 3s ease-out infinite alternate',
'blob-spin': 'blobSpin 20s infinite cubic-bezier(0.4, 0, 0.2, 1)',
}
},
},
}
</script>
</head>
<body class="bg-[#0a0f0d] text-gray-200 font-sans antialiased overflow-x-hidden selection:bg-[#ff8c00] selection:text-white">
<body class="bg-liquid-gradient text-background-dark font-sans antialiased overflow-x-hidden selection:bg-primary selection:text-white min-h-screen">
<div id="canvas-container" class="fixed inset-0 z-0 pointer-events-none opacity-90"></div>
<div class="fixed inset-0 bg-gradient-to-t from-[#0a0f0d] via-[#0a0f0d]/50 to-transparent z-0 pointer-events-none"></div>
<!-- Three.js Canvas Container -->
<div id="canvas-container" class="fixed inset-0 z-0 pointer-events-none opacity-80"></div>
<div class="fixed inset-0 bg-gradient-to-t from-background-light via-background-light/40 to-transparent z-0 pointer-events-none"></div>
<main class="relative z-10 max-w-[1200px] mx-auto px-6">
<main class="relative z-10 mx-auto ">
<!-- === Hero Section === -->
<section id="mod-hero" class="min-h-screen flex flex-col justify-center text-center">
<span class="text-[#ff8c00] font-mono text-sm tracking-[0.3em] uppercase mb-6" data-aos="fade-down">
<span class="text-primary font-mono text-sm tracking-[0.3em] uppercase mb-6 " data-aos="fade-down">
Smart Energy System
</span>
<h1 class="text-4xl md:text-[2.66rem] leading-none tracking-tighter text-white mb-8 drop-shadow-2xl" data-aos="zoom-in">
<h1 class="text-4xl md:text-[2.66rem] leading-tight tracking-tighter text-background-dark mb-8 drop-shadow-sm" data-aos="zoom-in">
INTEGRATED INDEPENDENT
<span class="text-[#13eca4]">INTELLIGENT.</span>
<span class="text-primary">INTELLIGENT.</span>
</h1>
<p class="text-[1rem] text-gray-400 font-light max-w-4xl mx-auto leading-relaxed md:text-center" data-aos="fade-up">
<p class="text-[1rem] text-background-dark/70 font-medium max-w-4xl mx-auto leading-relaxed md:text-center" data-aos="fade-up">
The Next Generation of Microgrid Solutions Empowering industrial parks and zero-carbon communities with seamless, green, and autonomous energy.
</p>
</section>
<!-- === 新增:系统拓扑图模块 === -->
<section id="mod-topology" class="min-h-screen flex flex-col justify-center items-center text-center py-24 relative z-10 overflow-hidden bg-[#020504]/50">
<!-- === 系统拓扑图模块 === -->
<section id="mod-topology" class="min-h-screen flex flex-col justify-center items-center text-center py-24 relative z-10 overflow-hidden">
<div class="absolute inset-0 z-0 opacity-[0.15] pointer-events-none hex-bg"></div>
<div class="absolute inset-0 z-0 opacity-[0.1] pointer-events-none" style="background-image: linear-gradient(rgba(19,236,164,0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(19,236,164,0.1) 1px, transparent 1px); background-size: 60px 60px; transform: perspective(800px) rotateX(60deg) scale(2.5) translateY(-50px); transform-origin: top center;"></div>
<!-- 明亮网格背景 -->
<div class="absolute inset-0 z-0 opacity-[0.4] pointer-events-none hex-bg"></div>
<div class="absolute inset-0 z-0 opacity-[0.5] pointer-events-none" style="background-image: linear-gradient(rgba(19,236,164,0.2) 1px, transparent 1px), linear-gradient(90deg, rgba(19,236,164,0.2) 1px, transparent 1px); background-size: 60px 60px; transform: perspective(800px) rotateX(60deg) scale(2.5) translateY(-50px); transform-origin: top center;"></div>
<style>
/* 样式部分完全保留你的原始代码 */
.hex-bg { background-image: url("data:image/svg+xml,%3Csvg width='24' height='40' viewBox='0 0 24 40' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 10L12 3l12 7v14l-12 7-12-7V10z' stroke='rgba(19,236,164,0.05)' fill='none' fill-rule='evenodd'/%3E%3C/svg%3E"); }
.hex-bg { background-image: url("data:image/svg+xml,%3Csvg width='24' height='40' viewBox='0 0 24 40' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 10L12 3l12 7v14l-12 7-12-7V10z' stroke='rgba(13,166,112,0.1)' fill='none' fill-rule='evenodd'/%3E%3C/svg%3E"); }
.cyber-clip { clip-path: polygon(0 15px, 15px 0, 100% 0, 100% calc(100% - 15px), calc(100% - 15px) 100%, 0 100%); }
.cyber-hub { clip-path: polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%); }
.tilt-card { transform-style: preserve-3d; will-change: transform; transform: perspective(1000px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) scale3d(1, 1, 1); transition: transform 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94), border-color 0.4s ease; }
.tilt-card.reset { transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94), border-color 0.4s ease; }
.svg-circuit-line { fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.svg-circuit-line { fill: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.flow-packet { stroke-dasharray: 15, 150; animation: dashFlow 3s linear infinite; }
@keyframes dashFlow { 0% { stroke-dashoffset: 165; } 100% { stroke-dashoffset: 0; } }
.layer-stats { opacity: 1; transition: opacity 0.3s ease, transform 0.3s ease; transform: translateY(0); }
@ -169,362 +109,335 @@
</style>
<div class="relative z-30 mb-20" data-aos="fade-down">
<h2 class="text-4xl md:text-[2.66rem] mb-4 uppercase tracking-[0.2em] text-white flex items-center justify-center gap-4 drop-shadow-lg">
<!-- <span class="text-[#13eca4] opacity-50 font-light">&lt;</span> -->
Core Architecture of Microgrid System
<!-- <span class="text-[#13eca4] opacity-50 font-light">&gt;</span> -->
<h2 class="text-4xl md:text-[2.66rem] mb-4 uppercase tracking-[0.2em] text-background-dark flex items-center justify-center gap-4">
CORE ARCHITECTURE OF MICROGRID SYSTEM
</h2>
<div class="flex items-center justify-center gap-4 text-[#13eca4] font-mono text-xs tracking-[0.4em]">
<span class="w-8 h-[1px] bg-gradient-to-r from-transparent to-[#13eca4]"></span>
<div class="flex items-center justify-center gap-4 text-primary font-mono text-xs tracking-[0.4em] ">
<span class="w-8 h-[2px] bg-gradient-to-r from-transparent to-primary-dark"></span>
INTELLIGENT MICROGRID NETWORK
<span class="w-8 h-[1px] bg-gradient-to-l from-transparent to-[#13eca4]"></span>
<span class="w-8 h-[2px] bg-gradient-to-l from-transparent to-primary-dark"></span>
</div>
</div>
<div class="relative w-full max-w-[1400px] mx-auto z-30 flex items-center justify-center px-10 lg:px-20 min-h-[500px]">
<div class="hidden lg:block absolute inset-0 z-0 pointer-events-none">
<svg class="w-full h-full drop-shadow-[0_0_8px_rgba(19,236,164,0.6)]" preserveAspectRatio="xMidYMid meet" viewBox="0 0 1400 500">
<path d="M 380 130 L 450 130 Q 480 130 480 160 L 480 250 L 550 250" class="svg-circuit-line stroke-[#13eca4]/20" />
<path d="M 380 130 L 450 130 Q 480 130 480 160 L 480 250 L 550 250" class="svg-circuit-line stroke-[#13eca4] flow-packet" />
<path d="M 380 370 L 450 370 Q 480 370 480 340 L 480 250 L 550 250" class="svg-circuit-line stroke-[#ff8c00]/20" />
<path d="M 380 370 L 450 370 Q 480 370 480 340 L 480 250 L 550 250" class="svg-circuit-line stroke-[#ff8c00] flow-packet" style="animation-duration: 2.5s; animation-direction: reverse; filter: drop-shadow(0 0 8px #ff8c00);" />
<path d="M 850 250 L 1020 250" class="svg-circuit-line stroke-white/20" />
<path d="M 850 250 L 1020 250" class="svg-circuit-line stroke-white flow-packet" style="stroke-dasharray: 20, 100; animation-duration: 1.5s; filter: drop-shadow(0 0 8px #fff);" />
<svg class="w-full h-full drop-shadow-[0_0_8px_rgba(19,236,164,0.4)]" preserveAspectRatio="xMidYMid meet" viewBox="0 0 1400 500">
<path d="M 380 130 L 450 130 Q 480 130 480 160 L 480 250 L 550 250" class="svg-circuit-line stroke-primary/30" />
<path d="M 380 130 L 450 130 Q 480 130 480 160 L 480 250 L 550 250" class="svg-circuit-line stroke-primary-dark flow-packet" />
<path d="M 380 370 L 450 370 Q 480 370 480 340 L 480 250 L 550 250" class="svg-circuit-line stroke-accent/30" />
<path d="M 380 370 L 450 370 Q 480 370 480 340 L 480 250 L 550 250" class="svg-circuit-line stroke-accent flow-packet" style="animation-duration: 2.5s; animation-direction: reverse;" />
<path d="M 850 250 L 1020 250" class="svg-circuit-line stroke-primary/30" />
<path d="M 850 250 L 1020 250" class="svg-circuit-line stroke-primary-dark flow-packet" style="stroke-dasharray: 20, 100; animation-duration: 1.5s;" />
</svg>
</div>
<div class="grid grid-cols-1 lg:grid-cols-[minmax(300px,1.2fr)_auto_minmax(300px,1.2fr)] gap-8 lg:gap-16 w-full relative z-10 items-center">
<div class="flex flex-col gap-8 relative z-10">
<div class="tilt-card relative bg-[#060d0a]/90 backdrop-blur-md border border-[#13eca4]/20 p-8 cyber-clip cursor-pointer hover:border-[#13eca4]/80 shadow-xl text-left w-full lg:w-[290px] ml-auto group">
<!-- Card 1 -->
<div class="tilt-card relative bg-white/70 backdrop-blur-xl border border-white p-8 cyber-clip cursor-pointer hover:border-primary/50 shadow-glass text-left w-full lg:w-[290px] ml-auto group">
<div class="flex items-start justify-between mb-6 relative z-10">
<div class="flex items-center gap-4">
<div class="w-12 h-12 bg-[#13eca4]/10 rounded flex items-center justify-center border border-[#13eca4]/40 text-[#13eca4] group-hover:bg-[#13eca4] group-hover:text-black transition-colors duration-300">
<div class="w-12 h-12 bg-primary/10 rounded flex items-center justify-center border border-primary/30 text-primary group-hover:bg-primary group-hover:text-white transition-colors duration-300 shadow-sm">
<span class="material-symbols-outlined text-2xl">&#xec0f;</span>
</div>
<div>
<h3 class="text-xl text-white tracking-wider">Power Generation</h3>
<div class="text-[10px] text-[#13eca4] font-mono mt-1 opacity-70">NODE_TYPE: GEN_01</div>
<h3 class="text-xl text-background-dark tracking-wide">Power Gen</h3>
<div class="text-[10px] text-primary font-mono mt-1 ">NODE: GEN_01</div>
</div>
</div>
</div>
<div class="relative h-[80px] w-full">
<div class="layer-stats absolute inset-0 w-full grid grid-cols-2 gap-3 font-mono text-xs">
<div class="bg-[#13eca4]/10 border border-[#13eca4]/20 p-3 text-[#13eca4] flex flex-col justify-center">
<span class="text-white/50 text-[10px] mb-1">VOLTAGE OUT</span>
<span class="text-base">400V DC</span>
<div class="bg-primary/5 border border-primary/20 p-3 text-primary flex flex-col justify-center rounded-sm">
<span class="text-background-dark/50 text-[10px] mb-1 ">VOLTAGE OUT</span>
<span class="text-base ">400V DC</span>
</div>
<div class="bg-[#13eca4]/10 border border-[#13eca4]/20 p-3 text-[#13eca4] flex flex-col justify-center">
<span class="text-white/50 text-[10px] mb-1">STATUS</span>
<span class="text-base text-[#13eca4] animate-pulse">STABLE</span>
<div class="bg-primary/5 border border-primary/20 p-3 text-primary flex flex-col justify-center rounded-sm">
<span class="text-background-dark/50 text-[10px] mb-1 ">STATUS</span>
<span class="text-base animate-pulse">STABLE</span>
</div>
</div>
<div class="layer-text absolute inset-0 w-full overflow-hidden">
<p class="decrypt-text text-[13px] text-gray-300 leading-relaxed font-light" data-target="Harnessing renewable and conventional energy for consistent supply.">>_ Awaiting command...</p>
<p class="decrypt-text text-[13px] text-background-dark/70 font-medium leading-relaxed" data-target="Harnessing renewable and conventional energy for consistent supply.">>_ Awaiting command...</p>
</div>
</div>
<div class="absolute bottom-0 right-0 w-6 h-6 border-b-2 border-r-2 border-[#13eca4]/30 group-hover:border-[#13eca4] transition-colors m-1"></div>
<div class="absolute bottom-0 right-0 w-6 h-6 border-b-2 border-r-2 border-primary/40 group-hover:border-primary-dark transition-colors m-1"></div>
</div>
<div class="tilt-card relative bg-[#060d0a]/90 backdrop-blur-md border border-[#ff8c00]/20 p-8 cyber-clip cursor-pointer hover:border-[#ff8c00]/80 shadow-xl text-left w-full lg:w-[290px] ml-auto group">
<!-- Card 2 -->
<div class="tilt-card relative bg-white/70 backdrop-blur-xl border border-white p-8 cyber-clip cursor-pointer hover:border-accent/50 shadow-glass text-left w-full lg:w-[290px] ml-auto group">
<div class="flex items-start justify-between mb-6 relative z-10">
<div class="flex items-center gap-4">
<div class="w-12 h-12 bg-[#ff8c00]/10 rounded flex items-center justify-center border border-[#ff8c00]/40 text-[#ff8c00] group-hover:bg-[#ff8c00] group-hover:text-black transition-colors duration-300">
<div class="w-12 h-12 bg-accent/10 rounded flex items-center justify-center border border-accent/30 text-accent group-hover:bg-accent group-hover:text-white transition-colors duration-300 shadow-sm">
<span class="material-symbols-outlined text-2xl">&#xe1a3;</span>
</div>
<div>
<h3 class="text-xl text-white tracking-wider">Energy Storage</h3>
<div class="text-[10px] text-[#ff8c00] font-mono mt-1 opacity-70">NODE_TYPE: BATT_X</div>
<h3 class="text-xl text-background-dark tracking-wide">Energy Storage</h3>
<div class="text-[10px] text-accent font-mono mt-1 ">NODE: BATT_X</div>
</div>
</div>
</div>
<div class="relative h-[80px] w-full">
<div class="layer-stats absolute inset-0 w-full grid grid-cols-2 gap-3 font-mono text-xs">
<div class="bg-[#ff8c00]/10 border border-[#ff8c00]/20 p-3 text-[#ff8c00] flex flex-col justify-center">
<span class="text-white/50 text-[10px] mb-1">CAPACITY</span>
<span class="text-base">500 kWh</span>
<div class="bg-accent/5 border border-accent/20 p-3 text-accent flex flex-col justify-center rounded-sm">
<span class="text-background-dark/50 text-[10px] mb-1 ">CAPACITY</span>
<span class="text-base ">500 kWh</span>
</div>
<div class="bg-[#ff8c00]/10 border border-[#ff8c00]/20 p-3 text-[#ff8c00] flex flex-col justify-center">
<span class="text-white/50 text-[10px] mb-1">MODE</span>
<span class="text-base text-[#ff8c00] animate-pulse">CHARGE</span>
<div class="bg-accent/5 border border-accent/20 p-3 text-accent flex flex-col justify-center rounded-sm">
<span class="text-background-dark/50 text-[10px] mb-1 ">MODE</span>
<span class="text-base animate-pulse">CHARGE</span>
</div>
</div>
<div class="layer-text absolute inset-0 w-full overflow-hidden">
<p class="decrypt-text text-[13px] text-gray-300 leading-relaxed font-light" data-target="Storing surplus electricity to stabilize the grid day and night.">>_ Interfacing...</p>
<p class="decrypt-text text-[13px] text-background-dark/70 font-medium leading-relaxed" data-target="Storing surplus electricity to stabilize the grid day and night.">>_ Interfacing...</p>
</div>
</div>
<div class="absolute bottom-0 right-0 w-6 h-6 border-b-2 border-r-2 border-[#ff8c00]/30 group-hover:border-[#ff8c00] transition-colors m-1"></div>
<div class="absolute bottom-0 right-0 w-6 h-6 border-b-2 border-r-2 border-accent/40 group-hover:border-accent transition-colors m-1"></div>
</div>
</div>
<!-- Central Hub -->
<div class="flex justify-center items-center relative z-20 mx-4 py-8 lg:py-0">
<div class="relative flex flex-col items-center justify-center p-12 bg-[#020504]/90 backdrop-blur-lg border border-[#13eca4]/30 cyber-hub hover:border-[#13eca4] transition-all duration-500 w-[300px] h-[360px] shadow-[0_0_30px_rgba(19,236,164,0.05)] group">
<div class="relative flex flex-col items-center justify-center p-12 bg-white/80 backdrop-blur-2xl border-2 border-white cyber-hub hover:border-primary/50 transition-all duration-500 w-[300px] h-[360px] shadow-glass group">
<div class="relative w-32 h-32 flex items-center justify-center mb-8">
<div class="absolute inset-0 rounded-full border border-dashed border-[#13eca4]/30 animate-[spin_10s_linear_infinite]"></div>
<div class="absolute inset-2 rounded-full border-t-2 border-[#13eca4]/60 animate-[spin_3s_linear_infinite]"></div>
<div class="absolute inset-6 rounded bg-[#0a120e] border border-[#13eca4]/50 flex items-center justify-center overflow-hidden z-10 group-hover:shadow-[0_0_20px_rgba(19,236,164,0.4)] transition-shadow duration-500">
<span class="material-symbols-outlined text-[#13eca4] text-4xl">&#xe322;</span>
<div class="absolute inset-0 rounded-full border border-dashed border-primary-dark/40 animate-[spin_10s_linear_infinite]"></div>
<div class="absolute inset-2 rounded-full border-t-4 border-primary/80 animate-[spin_3s_linear_infinite]"></div>
<div class="absolute inset-6 rounded-full bg-white border border-primary/30 flex items-center justify-center overflow-hidden z-10 group-hover:shadow-[0_0_20px_rgba(19,236,164,0.6)] transition-shadow duration-500">
<span class="material-symbols-outlined text-primary text-4xl">&#xe322;</span>
</div>
</div>
<div class="bg-[#13eca4]/10 border border-[#13eca4]/30 px-3 py-1 rounded-sm text-[#13eca4] font-mono text-[10px] mb-4 flex gap-2 items-center tracking-widest">
<span class="w-1.5 h-1.5 bg-[#13eca4] rounded-full animate-ping"></span> CONVERTER
<div class="bg-primary/10 border border-primary/30 px-3 py-1 rounded-full text-primary font-mono text-[10px] mb-4 flex gap-2 items-center tracking-widest ">
<span class="w-2 h-2 bg-primary rounded-full animate-ping"></span> CONVERTER
</div>
<h3 class="text-xl text-white tracking-widest mb-2 z-10 group-hover:text-[#13eca4] transition-colors">Power Conversion</h3>
<p class="text-[11px] text-gray-400 font-mono tracking-widest opacity-80 text-center mt-2">AC/DC ⇌ DC/AC<br>EFF: <span class="text-[#13eca4]">99.1%</span></p>
<h3 class="text-2xl text-background-dark tracking-wide mb-2 z-10 group-hover:text-primary transition-colors">Power Conversion</h3>
<p class="text-[12px] text-background-dark/60 font-mono tracking-widest text-center mt-2 ">AC/DC ⇌ DC/AC<br>EFF: <span class="text-primary">99.1%</span></p>
</div>
</div>
<!-- Card 3 -->
<div class="flex flex-col justify-center relative z-10">
<div class="tilt-card relative bg-[#060d0a]/90 backdrop-blur-md border border-white/20 p-8 cyber-clip cursor-pointer hover:border-white/80 shadow-xl text-left w-full lg:w-[290px] group">
<div class="tilt-card relative bg-white/70 backdrop-blur-xl border border-white p-8 cyber-clip cursor-pointer hover:border-primary-dark/50 shadow-glass text-left w-full lg:w-[290px] group">
<div class="flex items-start justify-between mb-6 relative z-10">
<div class="flex items-center gap-4">
<div class="w-12 h-12 bg-white/10 rounded flex items-center justify-center border border-white/40 text-white group-hover:bg-white group-hover:text-black transition-colors duration-300">
<div class="w-12 h-12 bg-primary-dark/10 rounded flex items-center justify-center border border-primary-dark/30 text-primary group-hover:bg-primary-dark group-hover:text-white transition-colors duration-300 shadow-sm">
<span class="material-symbols-outlined text-2xl">&#xe7ee;</span>
</div>
<div>
<h3 class="text-xl text-white tracking-wider">Demand Management</h3>
<div class="text-[10px] text-gray-400 font-mono mt-1 opacity-70">NODE_TYPE: LOAD_END</div>
<h3 class="text-xl text-background-dark tracking-wide">Demand Mgt</h3>
<div class="text-[10px] text-background-dark/50 font-mono mt-1 ">NODE: LOAD_END</div>
</div>
</div>
</div>
<div class="relative h-[80px] w-full">
<div class="layer-stats absolute inset-0 w-full grid grid-cols-2 gap-3 font-mono text-xs">
<div class="bg-white/5 border border-white/10 p-3 text-white flex flex-col justify-center">
<span class="text-white/50 text-[10px] mb-1">REAL POWER</span>
<span class="text-base">120 kW</span>
<div class="bg-gray-100 border border-gray-200 p-3 text-background-dark flex flex-col justify-center rounded-sm">
<span class="text-background-dark/50 text-[10px] mb-1 ">REAL POWER</span>
<span class="text-base ">120 kW</span>
</div>
<div class="bg-white/5 border border-white/10 p-3 text-white flex flex-col justify-center">
<span class="text-white/50 text-[10px] mb-1">POWER FACTOR</span>
<span class="text-base">0.98</span>
<div class="bg-gray-100 border border-gray-200 p-3 text-background-dark flex flex-col justify-center rounded-sm">
<span class="text-background-dark/50 text-[10px] mb-1 ">POWER FACTOR</span>
<span class="text-base ">0.98</span>
</div>
</div>
<div class="layer-text absolute inset-0 w-full overflow-hidden">
<p class="decrypt-text text-[13px] text-gray-300 leading-relaxed font-light" data-target="Distributing power smartly to meet diverse load requirements.">>_ Connecting...</p>
<p class="decrypt-text text-[13px] text-background-dark/70 font-medium leading-relaxed" data-target="Distributing power smartly to meet diverse load requirements.">>_ Connecting...</p>
</div>
</div>
<div class="absolute bottom-0 right-0 w-6 h-6 border-b-2 border-r-2 border-white/30 group-hover:border-white transition-colors m-1"></div>
<div class="absolute bottom-0 right-0 w-6 h-6 border-b-2 border-r-2 border-primary-dark/40 group-hover:border-primary-dark transition-colors m-1"></div>
</div>
</div>
</div>
</div>
</section>
<script>
document.addEventListener("DOMContentLoaded", () => {
// 1. 极致轻量的 JS 3D Hover 引擎 (仅修改 CSS 变量)
const cards = document.querySelectorAll('.tilt-card');
cards.forEach(card => {
card.addEventListener('mousemove', e => {
// 移除恢复动画,防止移动时卡顿
card.classList.remove('reset');
const rect = card.getBoundingClientRect();
const x = e.clientX - rect.left;
const y = e.clientY - rect.top;
// 减弱偏转幅度,最大限制在 3 度以内,防止视差引起的边缘闪烁
const centerX = rect.width / 2;
const centerY = rect.height / 2;
const rotateX = ((y - centerY) / centerY) * -3;
const rotateY = ((x - centerX) / centerX) * 3;
// 将计算结果推给 CSS 变量,让 GPU 处理动画
card.style.setProperty('--rx', `${rotateX}deg`);
card.style.setProperty('--ry', `${rotateY}deg`);
});
card.addEventListener('mouseleave', () => {
// 鼠标移出时添加平滑恢复 class
card.classList.add('reset');
card.style.setProperty('--rx', `0deg`);
card.style.setProperty('--ry', `0deg`);
// 重置打字机文本
const decryptEl = card.querySelector('.decrypt-text');
if(decryptEl) {
decryptEl.dataset.isAnimating = "false";
decryptEl.innerHTML = `>_ Awaiting command...`;
}
});
// 2. 优化版的文本解密引擎 (使用 requestAnimationFrame 防抖)
card.addEventListener('mouseenter', () => {
const decryptEl = card.querySelector('.decrypt-text');
if(!decryptEl || decryptEl.dataset.isAnimating === "true") return;
decryptEl.dataset.isAnimating = "true";
const targetText = decryptEl.getAttribute('data-target');
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%&*';
let iteration = 0;
let cursorColor = "text-[#13eca4]";
if(card.innerHTML.includes('#ff8c00')) cursorColor = "text-[#ff8c00]";
else if(card.innerHTML.includes('border-white')) cursorColor = "text-white";
function decryptFrame() {
if(decryptEl.dataset.isAnimating === "false") return; // 如果鼠标移开提前打断
decryptEl.innerHTML = targetText.split("").map((letter, index) => {
if(index < iteration) {
return letter;
}
return chars[Math.floor(Math.random() * chars.length)];
}).join("") + `<span class="animate-pulse ${cursorColor} ml-1">_</span>`;
if(iteration < targetText.length) {
iteration += 1; // 加快解密速度
// 使用 setTimeout 配合 requestAnimationFrame 控制帧率,防止刷新过快导致视觉抖动
setTimeout(() => requestAnimationFrame(decryptFrame), 20);
} else {
decryptEl.dataset.isAnimating = "false";
decryptEl.innerHTML = targetText + `<span class="animate-pulse ${cursorColor} ml-1">_</span>`;
}
}
requestAnimationFrame(decryptFrame);
});
});
});
</script>
<!-- Features Sections (Glassmorphism & Bright Theme) -->
<section id="mod-security" class="min-h-screen flex items-center">
<div class="max-w-xl bg-[#0a0f0d]/80 backdrop-blur-md p-10 border-l-4 border-[#ff8c00] rounded-r-3xl shadow-2xl">
<span class="material-symbols-outlined text-5xl text-[#ff8c00] mb-6">&#xe32a;</span>
<h2 class="text-3xl mb-4 text-white">Safe &<br>Reliable</h2>
<p class="text-lg text-gray-400 leading-relaxed">Sustains island operation without disconnection, backed by multi-power redundancy to guarantee zero downtime for critical loads.</p>
<div class="max-w-xl bg-white/80 backdrop-blur-xl p-10 border-l-4 border-accent rounded-r-3xl shadow-glass">
<span class="material-symbols-outlined text-5xl text-accent mb-6">&#xe32a;</span>
<h2 class="text-4xl mb-4 text-background-dark">Safe &<br>Reliable</h2>
<p class="text-lg text-background-dark/70 leading-relaxed font-medium">Sustains island operation without disconnection, backed by multi-power redundancy to guarantee zero downtime for critical loads.</p>
</div>
</section>
<section id="mod-efficiency" class="min-h-screen flex items-center justify-end text-right">
<div class="max-w-xl bg-[#0a0f0d]/80 backdrop-blur-md p-10 border-r-4 border-[#13eca4] rounded-l-3xl shadow-2xl">
<span class="material-symbols-outlined text-5xl text-[#13eca4] mb-6">&#xf0cf;</span>
<h2 class="text-3xl mb-4 text-white">Smart &<br>Efficient</h2>
<p class="text-lg text-gray-400 leading-relaxed">Intelligent optimization and dispatch enable peak shaving and valley filling, effectively reducing electricity costs and energy consumption.</p>
<div class="max-w-xl bg-white/80 backdrop-blur-xl p-10 border-r-4 border-primary rounded-l-3xl shadow-glass">
<span class="material-symbols-outlined text-5xl text-primary mb-6">&#xf0cf;</span>
<h2 class="text-4xl mb-4 text-background-dark">Smart &<br>Efficient</h2>
<p class="text-lg text-background-dark/70 leading-relaxed font-medium">Intelligent optimization and dispatch enable peak shaving and valley filling, effectively reducing electricity costs and energy consumption.</p>
</div>
</section>
<section id="mod-netzero" class="min-h-screen flex items-center">
<div class="max-w-xl bg-[#0a0f0d]/80 backdrop-blur-md p-10 border-l-4 border-white rounded-r-3xl shadow-2xl">
<span class="material-symbols-outlined text-5xl text-white mb-6">&#xea35;</span>
<h2 class="text-3xl mb-4 text-white">Green &<br>Low-Carbon</h2>
<p class="text-lg text-gray-400 leading-relaxed">Efficiently absorbs renewable energy and reduces carbon emissions, facilitating the realization of dual-carbon goals.</p>
<div class="max-w-xl bg-white/80 backdrop-blur-xl p-10 border-l-4 border-primary-dark rounded-r-3xl shadow-glass">
<span class="material-symbols-outlined text-5xl text-primary mb-6">&#xea35;</span>
<h2 class="text-4xl mb-4 text-background-dark">Green &<br>Low-Carbon</h2>
<p class="text-lg text-background-dark/70 leading-relaxed font-medium">Efficiently absorbs renewable energy and reduces carbon emissions, facilitating the realization of dual-carbon goals.</p>
</div>
</section>
<section id="mod-autonomous" class="min-h-screen flex items-center justify-end text-right">
<div class="max-w-xl bg-[#0a0f0d]/80 backdrop-blur-md p-10 border-r-4 border-[#ff8c00] rounded-l-3xl shadow-2xl">
<span class="material-symbols-outlined text-5xl text-[#ff8c00] mb-6">&#xe97a;</span>
<h2 class="text-3xl mb-4 text-white">Autonomous &<br>Controllable</h2>
<p class="text-lg text-gray-400 leading-relaxed">Operates independently of the external grid, significantly enhancing energy autonomy and risk resilience.</p>
<div class="max-w-xl bg-white/80 backdrop-blur-xl p-10 border-r-4 border-accent rounded-l-3xl shadow-glass">
<span class="material-symbols-outlined text-5xl text-accent mb-6">&#xe97a;</span>
<h2 class="text-4xl mb-4 text-background-dark">Autonomous &<br>Controllable</h2>
<p class="text-lg text-background-dark/70 leading-relaxed font-medium">Operates independently of the external grid, significantly enhancing energy autonomy and risk resilience.</p>
</div>
</section>
<section id="mod-scenarios" class="min-h-screen flex flex-col justify-center items-center text-center pb-20 relative z-10" style="perspective: 2000px;">
<h2 class="text-4xl md:text-[2.66rem] mb-12 uppercase tracking-widest text-white mt-10 relative z-30">Applicable Scenarios</h2>
<!-- === Scenarios === -->
<section id="mod-scenarios" class="min-h-[80vh] flex flex-col justify-center items-center text-center pb-20 relative z-10" style="perspective: 2000px;">
<h2 class="text-4xl md:text-[2.66rem] mb-12 uppercase tracking-widest text-background-dark mt-10 relative z-30">Applicable Scenarios</h2>
<div class="flex flex-wrap justify-center gap-6 font-mono text-sm max-w-4xl relative z-30" id="scenario-buttons">
<button class="scenario-btn px-8 py-3 border border-gray-700 bg-[#0a0f0d] hover:border-[#13eca4] hover:text-[#13eca4] transition-all duration-300 rounded-full focus:outline-none">Industrial Parks</button>
<button class="scenario-btn px-8 py-3 border border-gray-700 bg-[#0a0f0d] hover:border-[#13eca4] hover:text-[#13eca4] transition-all duration-300 rounded-full focus:outline-none">Data Centers</button>
<button class="scenario-btn px-8 py-3 border border-gray-700 bg-[#0a0f0d] hover:border-[#13eca4] hover:text-[#13eca4] transition-all duration-300 rounded-full focus:outline-none">Commercial Complexes</button>
<button class="scenario-btn px-8 py-3 border border-gray-700 bg-[#0a0f0d] hover:border-[#13eca4] hover:text-[#13eca4] transition-all duration-300 rounded-full focus:outline-none">Hospitals & Schools</button>
<button class="scenario-btn px-8 py-3 border border-gray-700 bg-[#0a0f0d] hover:border-[#13eca4] hover:text-[#13eca4] transition-all duration-300 rounded-full focus:outline-none">Remote Regions</button>
<button class="scenario-btn px-8 py-3 border border-gray-700 bg-[#0a0f0d] hover:border-[#13eca4] hover:text-[#13eca4] transition-all duration-300 rounded-full focus:outline-none">Islands</button>
<button class="scenario-btn active-scenario px-8 py-3 bg-[#13eca4]/10 border border-[#13eca4] text-[#13eca4] shadow-[0_0_15px_rgba(19,236,164,0.3)] transition-all duration-300 rounded-full focus:outline-none">Zero-Carbon Communities</button>
<button class="scenario-btn px-8 py-3 border border-gray-700 bg-[#0a0f0d] hover:border-[#13eca4] hover:text-[#13eca4] transition-all duration-300 rounded-full focus:outline-none">New Energy Stations</button>
<div class="flex flex-wrap justify-center gap-4 font-mono text-sm max-w-4xl relative z-30 " id="scenario-buttons">
<button class="scenario-btn px-6 py-2 border border-primary/20 bg-white/80 hover:border-primary-dark hover:text-primary transition-all duration-300 rounded-full shadow-sm text-background-dark/70">Industrial Parks</button>
<button class="scenario-btn px-6 py-2 border border-primary/20 bg-white/80 hover:border-primary-dark hover:text-primary transition-all duration-300 rounded-full shadow-sm text-background-dark/70">Data Centers</button>
<button class="scenario-btn px-6 py-2 border border-primary/20 bg-white/80 hover:border-primary-dark hover:text-primary transition-all duration-300 rounded-full shadow-sm text-background-dark/70">Commercial Complexes</button>
<button class="scenario-btn px-6 py-2 border border-primary/20 bg-white/80 hover:border-primary-dark hover:text-primary transition-all duration-300 rounded-full shadow-sm text-background-dark/70">Hospitals & Schools</button>
<button class="scenario-btn px-6 py-2 border border-primary/20 bg-white/80 hover:border-primary-dark hover:text-primary transition-all duration-300 rounded-full shadow-sm text-background-dark/70">Remote Regions</button>
<button class="scenario-btn px-6 py-2 border border-primary/20 bg-white/80 hover:border-primary-dark hover:text-primary transition-all duration-300 rounded-full shadow-sm text-background-dark/70">Islands</button>
<button class="scenario-btn active-scenario px-6 py-2 bg-primary/10 border border-primary text-primary shadow-[0_4px_15px_rgba(19,236,164,0.3)] transition-all duration-300 rounded-full">Zero-Carbon Communities</button>
<button class="scenario-btn px-6 py-2 border border-primary/20 bg-white/80 hover:border-primary-dark hover:text-primary transition-all duration-300 rounded-full shadow-sm text-background-dark/70">New Energy Stations</button>
</div>
<div id="card-wrapper" class="relative mt-12 w-full max-w-5xl h-[450px] z-20" style="transform-style: preserve-3d;">
<div id="scenario-card" class="absolute inset-0 w-full h-full rounded-3xl overflow-hidden border border-white/20 shadow-[0_50px_100px_rgba(0,0,0,0.8)] bg-[#0a0f0d]/90 backdrop-blur-xl opacity-0" style="transform: translateZ(-500px) rotateX(20deg); pointer-events: none;">
<div id="scenario-card" class="absolute inset-0 w-full h-full rounded-3xl overflow-hidden border-4 border-white shadow-2xl bg-white opacity-0" style="transform: translateZ(-500px) rotateX(20deg); pointer-events: none;">
<div class="absolute inset-0 z-0 overflow-hidden">
<img id="card-img" src="" class="w-full h-full object-cover opacity-80" alt="Scenario Image" />
<img id="card-img" src="" class="w-full h-full object-cover opacity-90" alt="Scenario Image" />
</div>
<div class="absolute inset-0 bg-gradient-to-t from-[#0a0f0d] via-transparent to-transparent z-10"></div>
<!-- Light theme inner gradient -->
<div class="absolute inset-0 bg-gradient-to-t from-white via-white/80 to-transparent z-10"></div>
<div class="absolute bottom-12 left-12 z-20 text-left">
<h3 id="card-title" class="text-3xl font-display text-[#13eca4] mb-4 tracking-tighter"></h3>
<p id="card-desc" class="text-lg text-gray-300 max-w-2xl leading-relaxed font-light"></p>
<h3 id="card-title" class="text-4xl font-display text-background-dark mb-4 tracking-tighter"></h3>
<p id="card-desc" class="text-lg text-background-dark/80 max-w-2xl leading-relaxed font-medium"></p>
</div>
</div>
</div>
</section>
<section id="mod-contact" class="w-full py-24 relative z-10 overflow-hidden bg-gradient-to-b from-transparent to-[#0a0f0d]">
<!-- === Contact === -->
<section id="mod-contact" class="w-full py-24 relative z-10 overflow-hidden bg-white/50 border-t border-white shadow-[0_-10px_40px_rgba(13,166,112,0.05)]">
<div class="max-w-7xl mx-auto px-6">
<div class="flex items-center gap-4 mb-12" data-aos="fade-right">
<div class="h-[1px] w-12 bg-[#13eca4]"></div>
<span class="text-[#13eca4] font-mono text-xs uppercase tracking-[0.4em]">Get in Touch</span>
<div class="h-[2px] w-12 bg-primary-dark"></div>
<span class="text-primary font-mono text-xs uppercase tracking-[0.4em] ">Get in Touch</span>
</div>
<div class="flex flex-col lg:flex-row lg:items-end lg:justify-between gap-12">
<div data-aos="fade-up" data-aos-delay="100">
<h2 class="text-gray-500 text-sm font-mono uppercase tracking-widest mb-2">Microgrid Project Leader</h2>
<h2 class="text-background-dark/50 text-sm font-mono uppercase tracking-widest mb-2 ">Microgrid Project Leader</h2>
<div class="flex items-baseline gap-6">
<span class="text-4xl md:text-[2.66rem] font-mono tracking-tighter text-[#13eca4]">Yan</span>
<span class="text-5xl tracking-tighter text-background-dark">Yan</span>
</div>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4 w-full lg:max-w-2xl" data-aos="fade-left" data-aos-delay="200">
<a href="mailto:sheyanxin@nenghui.com" class="group relative p-6 bg-white/[0.02] border border-white/10 rounded-2xl overflow-hidden transition-all duration-500 hover:border-[#13eca4]/50">
<div class="absolute inset-0 bg-gradient-to-r from-[#13eca4]/10 to-transparent translate-x-[-100%] group-hover:translate-x-[100%] transition-transform duration-1000"></div>
<a href="mailto:sheyanxin@nenghui.com" class="group relative p-6 bg-white border border-primary/20 rounded-2xl overflow-hidden transition-all duration-500 hover:border-primary hover:shadow-lg">
<div class="absolute inset-0 bg-gradient-to-r from-primary/5 to-transparent translate-x-[-100%] group-hover:translate-x-[0%] transition-transform duration-500"></div>
<div class="relative flex items-center gap-4">
<div class="w-12 h-12 rounded-full bg-[#13eca4]/10 flex items-center justify-center text-[#13eca4]">
<div class="w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center text-primary">
<span class="material-symbols-outlined">&#xe158;</span>
</div>
<div>
<div class="text-gray-500 text-[10px] uppercase tracking-widest">Send Email</div>
<div class="text-white font-medium group-hover:text-[#13eca4] transition-colors">sheyanxin@nenghui.com</div>
<div class="text-background-dark/50 text-[10px] uppercase tracking-widest ">Send Email</div>
<div class="text-background-dark group-hover:text-primary transition-colors">sheyanxin@nenghui.com</div>
</div>
</div>
</a>
<a href="tel:8619120593729" class="group relative p-6 bg-white/[0.02] border border-white/10 rounded-2xl overflow-hidden transition-all duration-500 hover:border-[#13eca4]/50">
<div class="absolute inset-0 bg-gradient-to-r from-[#13eca4]/10 to-transparent translate-x-[-100%] group-hover:translate-x-[100%] transition-transform duration-1000"></div>
<a href="tel:8619120593729" class="group relative p-6 bg-white border border-primary/20 rounded-2xl overflow-hidden transition-all duration-500 hover:border-primary hover:shadow-lg">
<div class="absolute inset-0 bg-gradient-to-r from-primary/5 to-transparent translate-x-[-100%] group-hover:translate-x-[0%] transition-transform duration-500"></div>
<div class="relative flex items-center gap-4">
<div class="w-12 h-12 rounded-full bg-[#13eca4]/10 flex items-center justify-center text-[#13eca4]">
<div class="w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center text-primary">
<span class="material-symbols-outlined">&#xe0b0;</span>
</div>
<div>
<div class="text-gray-500 text-[10px] uppercase tracking-widest">Call Directly</div>
<div class="text-white font-medium group-hover:text-[#13eca4] transition-colors">+86 191 2059 3729</div>
<div class="text-background-dark/50 text-[10px] uppercase tracking-widest ">Call Directly</div>
<div class="text-background-dark group-hover:text-primary transition-colors">+86 191 2059 3729</div>
</div>
</div>
</a>
</div>
</div>
</div>
</section>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.128.0/examples/js/loaders/GLTFLoader.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/ScrollTrigger.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/aos/2.3.4/aos.js"></script>
<!-- Swiper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/11.0.5/swiper-bundle.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/aos/2.3.4/aos.js"></script>
<!-- JavaScript Logic & Animations -->
<script>
AOS.init({ once: true });
gsap.registerPlugin(ScrollTrigger);
// --- 基础场景设置 ---
// --- 卡片倾斜与打字机特效 (保持不变) ---
document.addEventListener("DOMContentLoaded", () => {
const cards = document.querySelectorAll('.tilt-card');
cards.forEach(card => {
card.addEventListener('mousemove', e => {
card.classList.remove('reset');
const rect = card.getBoundingClientRect();
const x = e.clientX - rect.left;
const y = e.clientY - rect.top;
const centerX = rect.width / 2;
const centerY = rect.height / 2;
const rotateX = ((y - centerY) / centerY) * -4;
const rotateY = ((x - centerX) / centerX) * 4;
card.style.setProperty('--rx', `${rotateX}deg`);
card.style.setProperty('--ry', `${rotateY}deg`);
});
card.addEventListener('mouseleave', () => {
card.classList.add('reset');
card.style.setProperty('--rx', `0deg`);
card.style.setProperty('--ry', `0deg`);
const decryptEl = card.querySelector('.decrypt-text');
if(decryptEl) {
decryptEl.dataset.isAnimating = "false";
decryptEl.innerHTML = `>_ Awaiting command...`;
}
});
card.addEventListener('mouseenter', () => {
const decryptEl = card.querySelector('.decrypt-text');
if(!decryptEl || decryptEl.dataset.isAnimating === "true") return;
decryptEl.dataset.isAnimating = "true";
const targetText = decryptEl.getAttribute('data-target');
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%&*';
let iteration = 0;
function decryptFrame() {
if(decryptEl.dataset.isAnimating === "false") return;
decryptEl.innerHTML = targetText.split("").map((letter, index) => {
if(index < iteration) return letter;
return chars[Math.floor(Math.random() * chars.length)];
}).join("") + `<span class="animate-pulse text-primary ml-1">_</span>`;
if(iteration < targetText.length) {
iteration += 1;
setTimeout(() => requestAnimationFrame(decryptFrame), 15);
} else {
decryptEl.dataset.isAnimating = "false";
decryptEl.innerHTML = targetText + `<span class="animate-pulse text-primary ml-1">_</span>`;
}
}
requestAnimationFrame(decryptFrame);
});
});
});
// --- Three.js 亮色主题粒子引擎 ---
const scene = new THREE.Scene();
// 增加雾化效果,让远处的粒子融入背景
scene.fog = new THREE.FogExp2(0xf8fcfa, 0.0015);
const camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 2000);
camera.position.z = 500;
function updateCameraFOV() {
if (window.innerWidth < 768) {
camera.fov = 75;
} else {
camera.fov = 55;
}
camera.fov = window.innerWidth < 768 ? 75 : 55;
camera.updateProjectionMatrix();
}
updateCameraFOV();
@ -534,7 +447,6 @@ document.addEventListener("DOMContentLoaded", () => {
renderer.setSize(window.innerWidth, window.innerHeight);
document.getElementById('canvas-container').appendChild(renderer.domElement);
// --- 粒子系统基础参数 ---
const particleCount = window.innerWidth < 768 ? 9000 : 12000;
const geometry = new THREE.BufferGeometry();
@ -544,18 +456,19 @@ document.addEventListener("DOMContentLoaded", () => {
const targetPos = new Float32Array(particleCount * 3);
const colors = new Float32Array(particleCount * 3);
const colorPrimary = new THREE.Color(0x13eca4);
const colorAccent = new THREE.Color(0xff8c00);
const colorGray = new THREE.Color(0x555555);
// --- 核心改动:适合亮色背景的粒子颜色 ---
const colorPrimary = new THREE.Color('#09ab75'); // 深翠绿,保证在白底上清晰
const colorAccent = new THREE.Color('#64e8bc'); // 亮绿色用于点缀
const colorGray = new THREE.Color('#94a3b8'); // 蓝灰色替代原有的银白色
for (let i = 0; i < particleCount; i++) {
const mix = Math.random();
const color = colorPrimary.clone().lerp(colorAccent, mix * 0.3);
const color = colorPrimary.clone().lerp(colorAccent, mix * 0.5);
colors.set([color.r, color.g, color.b], i * 3);
}
geometry.setAttribute('color', new THREE.BufferAttribute(colors, 3));
// --- 形状预计算 ---
// 形状生成器 (保持原有计算逻辑)
const shapesGen = {
text: () => {
const canvas = document.createElement('canvas');
@ -581,7 +494,6 @@ document.addEventListener("DOMContentLoaded", () => {
}
return arr;
},
nestedPolyhedron: () => {
const arr = new Float32Array(particleCount * 3);
for (let i = 0; i < particleCount; i++) {
@ -596,12 +508,10 @@ document.addEventListener("DOMContentLoaded", () => {
}
return arr;
},
symbioticLeaf: () => {
const arr = new Float32Array(particleCount * 3);
const leafParticles = Math.floor(particleCount * 0.85);
const carbonParticles = particleCount - leafParticles;
for (let i = 0; i < leafParticles; i++) {
const t = Math.random();
const y = t * 400 - 150;
@ -609,7 +519,6 @@ document.addEventListener("DOMContentLoaded", () => {
const maxWidth = 160;
let x, z;
const isVein = Math.random() < 0.4;
if (isVein) {
if (Math.random() < 0.3) {
x = (Math.random() - 0.5) * 4;
@ -629,7 +538,6 @@ document.addEventListener("DOMContentLoaded", () => {
const bend = Math.sin(t * Math.PI) * 30;
arr.set([x + bend, y, z], i * 3);
}
for (let i = 0; i < carbonParticles; i++) {
const idx = (leafParticles + i) * 3;
arr.set([
@ -640,7 +548,6 @@ document.addEventListener("DOMContentLoaded", () => {
}
return arr;
},
concentricSphere: () => {
const arr = new Float32Array(particleCount * 3);
for (let i = 0; i < particleCount; i++) {
@ -651,7 +558,6 @@ document.addEventListener("DOMContentLoaded", () => {
}
return arr;
},
barGraph: () => {
const arr = new Float32Array(particleCount * 3);
for (let i = 0; i < particleCount; i++) {
@ -662,54 +568,39 @@ document.addEventListener("DOMContentLoaded", () => {
}
return arr;
},
shield: () => {
const arr = new Float32Array(particleCount * 3);
for (let i = 0; i < particleCount; i++) {
let x = (Math.random() - 0.5) * 200;
let y, z;
let topEdge = 100 + 15 * Math.cos(x * Math.PI / 100);
let bottomEdge = -120 + 220 * Math.pow(Math.abs(x) / 100, 2);
let t = Math.random();
if (Math.random() > 0.6) {
t = Math.random() > 0.5 ? Math.random() * 0.1 : 0.9 + Math.random() * 0.1;
}
y = bottomEdge + t * (topEdge - bottomEdge);
let maxZ = 30 * (1 - Math.pow(Math.abs(x) / 100, 2));
if (Math.abs(x) < 8 || Math.abs(y - 10) < 8) {
maxZ += 10;
}
if (Math.abs(x) < 8 || Math.abs(y - 10) < 8) maxZ += 10;
z = (Math.random() - 0.5) * maxZ;
arr.set([x, y, z], i * 3);
}
return arr;
},
torusKnot: () => {
const arr = new Float32Array(particleCount * 3);
for (let i = 0; i < particleCount; i++) {
const t = Math.random() * Math.PI * 2;
const p = 2;
const q = 3;
const p = 2; const q = 3;
const r = 50 * (2 + Math.cos(q * t));
const x = r * Math.cos(p * t);
const y = r * Math.sin(p * t);
const z = 50 * Math.sin(q * t);
const noise = 15;
arr.set([
x + (Math.random() - 0.5) * noise,
y + (Math.random() - 0.5) * noise,
z + (Math.random() - 0.5) * noise
], i * 3);
arr.set([x + (Math.random() - 0.5) * noise, y + (Math.random() - 0.5) * noise, z + (Math.random() - 0.5) * noise], i * 3);
}
return arr;
},
networkNode: () => {
const arr = new Float32Array(particleCount * 3);
const nodes = [
@ -763,12 +654,13 @@ document.addEventListener("DOMContentLoaded", () => {
renderPositions.set(precalculatedShapes.text);
geometry.setAttribute('position', new THREE.BufferAttribute(renderPositions, 3));
// --- 核心改动:必须使用 NormalBlending 才能在白底上显示颜色 ---
const material = new THREE.PointsMaterial({
size: window.innerWidth < 768 ? 3.5 : 4.0,
vertexColors: true,
transparent: true,
opacity: 0.9,
blending: THREE.AdditiveBlending,
opacity: 0.8,
blending: THREE.NormalBlending, // AdditiveBlending 会在白底上完全消失!
sizeAttenuation: true,
depthWrite: false
});
@ -782,7 +674,6 @@ document.addEventListener("DOMContentLoaded", () => {
const rotationSpeed = { x: 0, y: 0 };
const waveConfig = { amplitude: 20 };
const leafConfigs = { carbonOpacity: 1.0, carbonYOffset: 0 };
function morphTo(shapeKey) {
if (currentShapeKey === shapeKey) return;
@ -790,7 +681,6 @@ document.addEventListener("DOMContentLoaded", () => {
if (morphTween) morphTween.kill();
// 颜色过渡处理
const colorAttribute = geometry.attributes.color;
const targetColors = new Float32Array(particleCount * 3);
const leafParticles = Math.floor(particleCount * 0.85);
@ -804,7 +694,7 @@ document.addEventListener("DOMContentLoaded", () => {
color = colorGray.clone();
}
} else {
color = colorPrimary.clone().lerp(colorAccent, Math.random() * 0.3);
color = colorPrimary.clone().lerp(colorAccent, Math.random() * 0.4);
}
targetColors.set([color.r, color.g, color.b], i * 3);
}
@ -816,7 +706,6 @@ document.addEventListener("DOMContentLoaded", () => {
onUpdate: () => colorAttribute.needsUpdate = true
});
// 形状平滑过渡
for (let i = 0; i < currentPositions.length; i++) {
startPos[i] = currentPositions[i];
}
@ -834,7 +723,6 @@ document.addEventListener("DOMContentLoaded", () => {
}
});
// 视角及其他动画
if (shapeKey === 'text') {
gsap.to(rotationSpeed, { x: 0, y: 0, duration: 1.5 });
const targetX = Math.round(particles.rotation.x / (Math.PI * 2)) * (Math.PI * 2);
@ -846,8 +734,6 @@ document.addEventListener("DOMContentLoaded", () => {
gsap.to(particles.rotation, { x: targetX, duration: 2.0 });
} else if (shapeKey === 'symbioticLeaf') {
gsap.to(rotationSpeed, { x: 0.0005, y: 0.001, duration: 1.5 });
leafConfigs.carbonOpacity = 1.0;
leafConfigs.carbonYOffset = 0;
} else if (shapeKey === 'barGraph') {
gsap.to(rotationSpeed, { x: 0, y: 0.002, duration: 1.5 });
const targetX = Math.round(particles.rotation.x / (Math.PI * 2)) * (Math.PI * 2);
@ -861,8 +747,6 @@ document.addEventListener("DOMContentLoaded", () => {
amplitude: (shapeKey === 'text') ? 20 : 0
});
}
// --- 渲染循环与动态动画 ---
function animate() {
requestAnimationFrame(animate);
@ -888,14 +772,12 @@ document.addEventListener("DOMContentLoaded", () => {
positions[idx + 1] = baseY;
positions[idx + 2] = baseZ + r * Math.sin(angle);
}
} else {
positions[idx] = baseX + Math.sin(time + baseY * 0.1) * 2;
positions[idx + 1] = baseY;
positions[idx + 2] = baseZ;
}
}
} else if (waveConfig.amplitude > 0.01) {
const phase = baseX * 0.006 + time;
const waveY = Math.sin(phase) * (waveConfig.amplitude * 0.4);
@ -918,9 +800,7 @@ document.addEventListener("DOMContentLoaded", () => {
opacity = THREE.MathUtils.lerp(1.0, 0.0, (y + 150) / 100);
}
if (y > -50) opacity = 0;
positions[idx + 1] = y;
colorsArray[idx] = colorGray.r * opacity;
colorsArray[idx + 1] = colorGray.g * opacity;
colorsArray[idx + 2] = colorGray.b * opacity;
@ -947,7 +827,6 @@ document.addEventListener("DOMContentLoaded", () => {
updateCameraFOV();
});
// --- 滚动监听:新增对拓扑图的监控数组 ---
const shapeList = ['text', 'shield', 'concentricSphere', 'symbioticLeaf', 'torusKnot', 'networkNode', 'barGraph', 'nestedPolyhedron'];
const sections = ['#mod-hero', '#mod-security', '#mod-efficiency', '#mod-netzero', '#mod-autonomous', '#mod-topology', '#mod-scenarios', '#mod-contact'];
@ -963,7 +842,7 @@ document.addEventListener("DOMContentLoaded", () => {
</script>
<script>
// --- 场景卡片 3D 跃出动画 ---
// --- 场景卡片 3D 动画 ---
const scenarioData = {
"Industrial Parks": { img: "https://nenghui.com/wp-content/uploads/2026/03/icrogrid-Industrial-parks.jpg", desc: "Optimize energy consumption and reduce operational costs for smart industrial zones with intelligent management." },
"Data Centers": { img: "https://nenghui.com/wp-content/uploads/2026/03/icrogrid-data-center.jpg", desc: "Ensuring continuous mission-critical power supply for data centers with robust and resilient microgrids." },
@ -984,6 +863,7 @@ document.addEventListener("DOMContentLoaded", () => {
let currentActiveBtn = document.querySelector('.active-scenario');
function updateCardContent(scenarioName) {
if(!scenarioData[scenarioName]) return;
const data = scenarioData[scenarioName];
const tl = gsap.timeline();
@ -1004,10 +884,10 @@ document.addEventListener("DOMContentLoaded", () => {
if (btn === currentActiveBtn) return;
scenarioButtons.forEach(b => {
b.classList.remove('active-scenario', 'bg-[#13eca4]/10', 'border-[#13eca4]', 'text-[#13eca4]', 'shadow-[0_0_15px_rgba(19,236,164,0.3)]');
b.classList.add('border-gray-700', 'bg-[#0a0f0d]');
b.classList.remove('active-scenario', 'bg-primary/10', 'border-primary', 'text-primary', 'shadow-[0_4px_15px_rgba(19,236,164,0.3)]');
b.classList.add('border-primary/20', 'bg-white/80', 'text-background-dark/70');
});
btn.classList.add('active-scenario', 'bg-[#13eca4]/10', 'border-[#13eca4]', 'text-[#13eca4]', 'shadow-[0_0_15px_rgba(19,236,164,0.3)]');
btn.classList.add('active-scenario', 'bg-primary/10', 'border-primary', 'text-primary', 'shadow-[0_4px_15px_rgba(19,236,164,0.3)]');
currentActiveBtn = btn;
updateCardContent(btn.innerText.trim());
@ -1016,9 +896,11 @@ document.addEventListener("DOMContentLoaded", () => {
if (currentActiveBtn) {
const data = scenarioData[currentActiveBtn.innerText.trim()];
cardImg.src = data.img;
cardTitle.innerText = currentActiveBtn.innerText.trim();
cardDesc.innerText = data.desc;
if (data) {
cardImg.src = data.img;
cardTitle.innerText = currentActiveBtn.innerText.trim();
cardDesc.innerText = data.desc;
}
}
ScrollTrigger.create({

@ -11,10 +11,8 @@
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;700;900&family=Montserrat:wght@400;500;700;800;900&family=Inter:wght@400;500;700;800;900&family=JetBrains+Mono:wght@500&display=swap" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/11.0.5/swiper-bundle.min.css" />
<!-- AOS Animation Library -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/aos/2.3.4/aos.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/vanilla-tilt/1.7.2/vanilla-tilt.min.js"></script>
<!-- Tailwind & Config -->
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<script id="tailwind-config">
tailwind.config = {
@ -102,8 +100,8 @@
},
blobSpin: {
'0%': { transform: 'rotate(0deg) scale(1)' },
'50%': { transform: 'rotate(180deg) scale(1.1)' },
'100%': { transform: 'rotate(360deg) scale(1)' },
'50%': { transform: 'rotate(180deg) translate(-80%, 50%) scale(1.1)' },
'100%': { transform: 'rotate(360deg) translate(0) scale(1)' },
}
},
animation: {
@ -125,7 +123,6 @@
},
}
</script>
<!-- Tailwind 基础样式注入 -->
<style type="text/tailwindcss">
@layer utilities {
@ -173,7 +170,7 @@
}
}
. {
.text-3d {
text-shadow:
0 1px 0 #e2e8f0, /* 亮银色顶边 */
0 2px 0 #cbd5e1,
@ -203,7 +200,7 @@
/* 4. 远距离大范围柔和投影 */
15px 15px 30px rgba(0, 0, 0, 0.6),
/* 5. 核心点睛之笔:在阴影反方向及底部映射出 #13eca4 (Primary) 的环境光晕 */
-5px -5px 30px rgba(19, 236, 164, 0.1),
-5px -5px 30px rgba(18, 181, 127, 0.1),
10px 10px 40px rgba(19, 236, 164, 0.25);
}
/* Tab 状态管控:选中时变为 primary 背景与深色字体 */
@ -214,9 +211,8 @@
</style>
</head>
<body class="bg-background-dark text-slate-300 font-sans overflow-x-hidden selection:bg-primary selection:text-black cursor-default">
<body class="bg-liquid-gradient text-slate-700 font-sans overflow-x-hidden selection:bg-primary selection:text-white cursor-default">
<!-- 高级交互定制 CSS -->
<style>
html { scroll-behavior: smooth; }
@media (min-width: 768px) {
@ -249,19 +245,17 @@
margin-right: 1.5rem; /* space-x-6 的等效值 24px */
}
/* Swiper 案例轮播图定制样式 */
.swiper { padding-bottom: 60px !important; }
.swiper-wrapper { cursor: grab; }
.swiper-wrapper:active { cursor: grabbing; }
/* EPC (绿色系) 分页器 */
.epc-swiper .swiper-pagination-bullet { background: rgba(255,255,255,0.3); opacity: 1; transition: all 0.3s; }
.epc-swiper .swiper-pagination-bullet { background: rgba(0,0,0,0.2); opacity: 1; transition: all 0.3s; }
.epc-swiper .swiper-pagination-bullet-active { background: #13eca4; width: 24px; border-radius: 4px; box-shadow: 0 0 10px rgba(19, 236, 164, 0.5); }
/* EMC (橙色系) 分页器 */
.emc-swiper .swiper-pagination-bullet { background: rgba(255,255,255,0.3); opacity: 1; transition: all 0.3s; }
.emc-swiper .swiper-pagination-bullet { background: rgba(0,0,0,0.2); opacity: 1; transition: all 0.3s; }
.emc-swiper .swiper-pagination-bullet-active { background: #ff6b00; width: 24px; border-radius: 4px; box-shadow: 0 0 10px rgba(255, 107, 0, 0.5); }
#energy-cursor {
@ -277,13 +271,14 @@
height 0.3s cubic-bezier(0.25, 1, 0.5, 1),
background-color 0.3s ease,
box-shadow 0.3s ease, border 0.3s ease;
mix-blend-mode: screen;
/* 修正明亮模式下的光标融合效果 */
mix-blend-mode: multiply;
backdrop-filter: blur(4px);
}
#energy-cursor.active {
width: 80px; height: 80px;
background: rgba(19, 236, 164, 0.1);
background: rgba(19, 236, 164, 0.2);
border: 1px solid rgba(19, 236, 164, 0.5);
box-shadow: 0 0 20px rgba(19, 236, 164, 0.4);
}
@ -326,221 +321,173 @@
visibility 0s step-start;
z-index: 10;
}
/* ::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: #060c09; }
::-webkit-scrollbar-thumb { background: #1a2e26; border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: #13eca4; } */
</style>
<!-- 自定义光标节点 -->
<div id="energy-cursor" class="hidden md:block"></div>
<!-- 英雄主视区 -->
<main class="relative pt-40 pb-24 overflow-hidden bg-mesh min-h-screen flex items-center parallax-container">
<div class="parallax-bg absolute top-1/4 -right-1/4 w-[800px] h-[800px] bg-primary/10 rounded-full blur-[120px] animate-blob-spin pointer-events-none" data-speed="-0.03"></div>
<main class="relative pt-40 pb-24 overflow-hidden min-h-[85vh] flex items-center parallax-container">
<div class="parallax-bg absolute top-1/4 -right-1/4 w-[800px] h-[800px] bg-primary/20 rounded-full blur-[120px] animate-blob-spin pointer-events-none" data-speed="-0.03"></div>
<div class="parallax-bg absolute bottom-0 left-0 w-[600px] h-[600px] bg-[#ff6b00]/10 rounded-full blur-[100px] animate-blob-spin pointer-events-none" style="animation-direction: reverse;" data-speed="0.03"></div>
<div class="container mx-auto px-6 relative z-10 text-center">
<div class="inline-block px-4 py-1 mb-8 rounded-full border border-primary/30 bg-primary/10 text-primary font-mono text-sm tracking-widest uppercase shadow-glow animate-fade-in">
Global Energy Transition Standard
</div>
<h1 class="text-4xl md:text-[2.66rem] -ultra mb-8 leading-[1.1] animate-fade-in" style="animation-delay: 0.2s;">
Mastering the <br/>
<span class="text-transparent bg-clip-text bg-gradient-to-r from-primary to-green-300 animate-text-shimmer" style="background-size: 200% auto;">Zero-Carbon</span> Equation.
<span class="text-transparent bg-clip-text bg-gradient-to-r from-primary to-green-500 animate-text-shimmer" style="background-size: 200% auto;">Zero-Carbon</span> Equation.
</h1>
<p class="max-w-3xl mx-auto text-[1rem] text-slate-400 mb-12 font-inter leading-relaxed animate-fade-in" style="animation-delay: 0.4s;">
<p class="max-w-3xl mx-auto text-[1rem] text-slate-600 mb-12 font-inter leading-relaxed animate-fade-in" style="animation-delay: 0.4s;">
Empowering industrial giants and commercial leaders worldwide through elite Turnkey EPC execution and Zero-CAPEX Energy Management Contracting (EMC/PPA).
</p>
<!-- <div class="flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-6 animate-fade-in" style="animation-delay: 0.6s;">
<a href="#models" class="magnetic-btn hover-trigger bg-primary text-black px-10 py-4 rounded-full text-lg hover:shadow-[0_0_40px_rgba(19,236,164,0.6)] transition-all duration-300 w-full sm:w-auto flex items-center justify-center relative overflow-hidden group">
<div class="absolute inset-0 bg-white/20 translate-y-full group-hover:translate-y-0 transition-transform duration-300 ease-out pointer-events-none"></div>
<span class="pointer-events-none">Explore Models</span>
</a>
<a href="#cases" class="magnetic-btn hover-trigger bg-white/5 border border-white/20 text-white px-10 py-4 rounded-full text-lg hover:bg-white/10 transition-all duration-300 w-full sm:w-auto flex items-center justify-center">
<span class="material-symbols-outlined mr-2 pointer-events-none">&#xe143;</span> <span class="pointer-events-none">View Track Record</span>
</a>
</div> -->
</div>
</main>
<!-- 核心商业模式 (EPC & EMC Bento Grid) -->
<section id="models" class="container mx-auto px-6 py-24 relative z-10 -mt-20">
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
<div data-aos="fade-right" class="hover-trigger relative group p-10 lg:p-14 rounded-[2.5rem] bg-[#0d1613] border border-white/5 shadow-bento-dark hover:shadow-bento-hover hover:border-primary/30 transition-all duration-500 overflow-hidden backdrop-blur-xl" data-tilt>
<div data-aos="fade-right" class="hover-trigger relative group p-10 lg:p-14 rounded-[2.5rem] bg-white/70 border border-silver-accent shadow-bento hover:shadow-bento-hover hover:border-primary/50 transition-all duration-500 overflow-hidden backdrop-blur-xl" data-tilt>
<div class="absolute top-0 right-0 w-64 h-64 bg-primary/10 blur-[80px] rounded-full group-hover:bg-primary/20 transition-all duration-700 pointer-events-none"></div>
<div class="flex items-center justify-between mb-8 relative z-10">
<h2 class="text-3xl text-white ">EPC</h2>
<!-- engineering -> &#xea3d; -->
<span class="material-symbols-outlined text-5xl text-primary opacity-50 group-hover:opacity-100 group-hover:rotate-12 transition-all duration-500">&#xea3d;</span>
<h2 class="text-3xl text-slate-900 ">EPC</h2>
<span class="material-symbols-outlined text-5xl text-primary opacity-70 group-hover:opacity-100 group-hover:rotate-12 transition-all duration-500">&#xea3d;</span>
</div>
<h3 class="text-xl text-primary font-mono mb-6 uppercase tracking-widest border-l-2 border-primary pl-4 relative z-10">Engineering, Procurement, Construction</h3>
<p class="text-slate-400 mb-10 leading-relaxed text-lg relative z-10">
<p class="text-slate-600 mb-10 leading-relaxed text-lg relative z-10">
A traditional, robust model for clients holding CAPEX. We deliver end-to-end turnkey infrastructure, ensuring absolute quality control, timeline adherence, and tier-1 component integration.
</p>
<div class="grid grid-cols-2 gap-4 font-inter text-slate-300 text-sm relative z-10 pointer-events-none">
<!-- architecture -> &#xea3b; -->
<div class="bg-white/5 p-4 rounded-2xl border border-white/5"><span class="material-symbols-outlined text-primary block mb-2">&#xea3b;</span>Site-Specific Design</div>
<!-- inventory_2 -> &#xe1a1; -->
<div class="bg-white/5 p-4 rounded-2xl border border-white/5"><span class="material-symbols-outlined text-primary block mb-2">&#xe1a1;</span>Global Sourcing</div>
<!-- construction -> &#xea3c; -->
<div class="bg-white/5 p-4 rounded-2xl border border-white/5"><span class="material-symbols-outlined text-primary block mb-2">&#xea3c;</span>Certified Build</div>
<!-- verified -> &#xe86c; -->
<div class="bg-white/5 p-4 rounded-2xl border border-white/5"><span class="material-symbols-outlined text-primary block mb-2">&#xe86c;</span>Grid Handover</div>
<div class="grid grid-cols-2 gap-4 font-inter text-slate-700 text-sm relative z-10 pointer-events-none">
<div class="bg-white/90 p-4 rounded-2xl border border-silver-accent shadow-sm"><span class="material-symbols-outlined text-primary block mb-2">&#xea3b;</span>Site-Specific Design</div>
<div class="bg-white/90 p-4 rounded-2xl border border-silver-accent shadow-sm"><span class="material-symbols-outlined text-primary block mb-2">&#xe1a1;</span>Global Sourcing</div>
<div class="bg-white/90 p-4 rounded-2xl border border-silver-accent shadow-sm"><span class="material-symbols-outlined text-primary block mb-2">&#xea3c;</span>Certified Build</div>
<div class="bg-white/90 p-4 rounded-2xl border border-silver-accent shadow-sm"><span class="material-symbols-outlined text-primary block mb-2">&#xe86c;</span>Grid Handover</div>
</div>
</div>
<div data-aos="fade-left" class="hover-trigger hover-emc relative group p-10 lg:p-14 rounded-[2.5rem] bg-[#0d1613] border border-white/5 shadow-bento-dark hover:shadow-bento-hover hover:border-[#ff6b00]/30 transition-all duration-500 overflow-hidden backdrop-blur-xl" data-tilt>
<div data-aos="fade-left" class="hover-trigger hover-emc relative group p-10 lg:p-14 rounded-[2.5rem] bg-white/70 border border-silver-accent shadow-bento hover:shadow-bento-hover hover:border-[#ff6b00]/50 transition-all duration-500 overflow-hidden backdrop-blur-xl" data-tilt>
<div class="absolute bottom-0 right-0 w-64 h-64 bg-[#ff6b00]/10 blur-[80px] rounded-full group-hover:bg-[#ff6b00]/20 transition-all duration-700 pointer-events-none"></div>
<div class="flex items-center justify-between mb-8 relative z-10">
<h2 class="text-3xl text-white ">EMC/PPA</h2>
<!-- handshake -> &#xebcb; -->
<span class="material-symbols-outlined text-5xl text-[#ff6b00] opacity-50 group-hover:opacity-100 group-hover:-rotate-12 transition-all duration-500">&#xebcb;</span>
<h2 class="text-3xl text-slate-900 ">EMC/PPA</h2>
<span class="material-symbols-outlined text-5xl text-[#ff6b00] opacity-70 group-hover:opacity-100 group-hover:-rotate-12 transition-all duration-500">&#xebcb;</span>
</div>
<h3 class="text-xl text-[#ff6b00] font-mono mb-6 uppercase tracking-widest border-l-2 border-[#ff6b00] pl-4 relative z-10">Energy Management Contracting</h3>
<p class="text-slate-400 mb-10 leading-relaxed text-lg relative z-10">
<p class="text-slate-600 mb-10 leading-relaxed text-lg relative z-10">
The modern standard for risk-free upgrades. We finance 100% of the project. You enjoy immediate utility savings. We share the profit derived exclusively from the generated energy efficiency.
</p>
<div class="grid grid-cols-2 gap-4 font-inter text-slate-300 text-sm relative z-10 pointer-events-none">
<!-- account_balance -> &#xe84d; -->
<div class="bg-white/5 p-4 rounded-2xl border border-white/5"><span class="material-symbols-outlined text-[#ff6b00] block mb-2">&#xe84d;</span>Zero CAPEX Required</div>
<!-- monitoring -> &#xf190; -->
<div class="bg-white/5 p-4 rounded-2xl border border-white/5"><span class="material-symbols-outlined text-[#ff6b00] block mb-2">&#xf190;</span>Guaranteed Savings</div>
<!-- support_agent -> &#xf0e2; -->
<div class="bg-white/5 p-4 rounded-2xl border border-white/5"><span class="material-symbols-outlined text-[#ff6b00] block mb-2">&#xf0e2;</span>Free O&M Included</div>
<!-- trending_down -> &#xe8e3; -->
<div class="bg-white/5 p-4 rounded-2xl border border-white/5"><span class="material-symbols-outlined text-[#ff6b00] block mb-2">&#xe8e3;</span>Immediate ROI</div>
<div class="grid grid-cols-2 gap-4 font-inter text-slate-700 text-sm relative z-10 pointer-events-none">
<div class="bg-white/90 p-4 rounded-2xl border border-silver-accent shadow-sm"><span class="material-symbols-outlined text-[#ff6b00] block mb-2">&#xe84d;</span>Zero CAPEX Required</div>
<div class="bg-white/90 p-4 rounded-2xl border border-silver-accent shadow-sm"><span class="material-symbols-outlined text-[#ff6b00] block mb-2">&#xf190;</span>Guaranteed Savings</div>
<div class="bg-white/90 p-4 rounded-2xl border border-silver-accent shadow-sm"><span class="material-symbols-outlined text-[#ff6b00] block mb-2">&#xf0e2;</span>Free O&M Included</div>
<div class="bg-white/90 p-4 rounded-2xl border border-silver-accent shadow-sm"><span class="material-symbols-outlined text-[#ff6b00] block mb-2">&#xe8e3;</span>Immediate ROI</div>
</div>
</div>
</div>
</section>
<!-- ======================================================= -->
<!-- 核心更新:极度丝滑双轨执行流程 -->
<!-- ======================================================= -->
<section id="dual-workflow" class="py-24 relative overflow-hidden bg-[#060c09]">
<section id="dual-workflow" class="py-24 relative overflow-hidden bg-pearlescent border-y border-silver-accent">
<div class="container mx-auto px-6 relative z-10">
<!-- 头部切换器 -->
<div class="text-center mb-24" data-aos="zoom-in">
<h2 class="text-4xl md:text-[2.66rem] text-white mb-8 -subtitle">Execution Pathways</h2>
<div class="inline-flex bg-black/50 border border-white/10 p-1.5 rounded-full backdrop-blur-md relative overflow-hidden shadow-bento-dark">
<!-- 滑动背景块 -->
<h2 class="text-4xl md:text-[2.66rem] text-slate-900 mb-8 ">Execution Pathways</h2>
<div class="inline-flex bg-white/80 border border-silver-accent p-1.5 rounded-full backdrop-blur-md relative overflow-hidden shadow-sm">
<div id="tab-slider" class="absolute top-1.5 left-1.5 bottom-1.5 w-[calc(50%-6px)] bg-primary rounded-full transition-all duration-500 cubic-bezier(0.34, 1.56, 0.64, 1) ease-in-out"></div>
<button id="btn-epc" class="tab-btn hover-trigger relative z-10 px-6 md:px-10 py-3 md:py-4 rounded-full text-black transition-colors duration-300 flex items-center">
<!-- engineering -> &#xea3d; -->
<button id="btn-epc" class="tab-btn hover-trigger relative z-10 px-6 md:px-10 py-3 md:py-4 rounded-full text-slate-900 transition-colors duration-300 flex items-center">
<span class="material-symbols-outlined mr-2 text-base md:text-lg pointer-events-none">&#xea3d;</span> <span class="pointer-events-none">EPC Workflow</span>
</button>
<button id="btn-emc" class="tab-btn hover-trigger hover-emc relative z-10 px-6 md:px-10 py-3 md:py-4 rounded-full text-slate-400 hover:text-white transition-colors duration-300 flex items-center">
<!-- handshake -> &#xebcb; -->
<button id="btn-emc" class="tab-btn hover-trigger hover-emc relative z-10 px-6 md:px-10 py-3 md:py-4 rounded-full text-slate-500 hover:text-slate-900 transition-colors duration-300 flex items-center ">
<span class="material-symbols-outlined mr-2 text-base md:text-lg pointer-events-none">&#xebcb;</span> <span class="pointer-events-none">EMC/PPA Workflow</span>
</button>
</div>
</div>
<!-- 使用 Grid Wrapper 包裹 -->
<div class="tab-wrapper w-full relative">
<!-- EPC 流程内容 (6个步骤) -->
<div id="content-epc" class="tab-content active">
<div class="relative flex flex-col lg:flex-row justify-between items-start space-y-12 lg:space-y-0 lg:space-x-4 before:absolute before:content-[''] before:w-[2px] lg:before:w-full lg:before:h-[2px] before:bg-white/10 before:left-[23px] lg:before:top-[24px] lg:before:left-0 z-0">
<div class="relative flex flex-col lg:flex-row justify-between items-start space-y-12 lg:space-y-0 lg:space-x-4 before:absolute before:content-[''] before:w-[2px] lg:before:w-full lg:before:h-[2px] before:bg-slate-300 before:left-[23px] lg:before:top-[24px] lg:before:left-0 z-0">
<div class="hidden lg:block absolute top-[24px] left-0 h-[2px] bg-gradient-to-r from-transparent via-primary to-transparent z-0 animate-sweep" style="width: 400px; animation-duration: 4s;"></div>
<div class="relative z-10 flex lg:flex-col items-center group flex-1 px-2 hover-trigger">
<!-- my_location -> &#xe55c; -->
<div class="w-12 h-12 rounded-full bg-background-dark border-2 border-primary flex items-center justify-center shadow-glow mb-0 lg:mb-6 shrink-0 group-hover:scale-110 transition-transform duration-500"><span class="material-symbols-outlined text-primary text-xl">&#xe55c;</span></div>
<div class="w-12 h-12 rounded-full bg-white border-2 border-primary flex items-center justify-center shadow-sm mb-0 lg:mb-6 shrink-0 group-hover:scale-110 transition-transform duration-500"><span class="material-symbols-outlined text-primary text-xl">&#xe55c;</span></div>
<div class="ml-6 lg:ml-0 lg:text-center">
<h4 class="text-lg text-white mb-2">Site Survey</h4>
<p class="text-slate-500 text-xs leading-relaxed">Comprehensive assessment of roof integrity, shading, and electrical infrastructure.</p>
<h4 class="text-lg text-slate-900 mb-2">Site Survey</h4>
<p class="text-slate-600 text-xs leading-relaxed">Comprehensive assessment of roof integrity, shading, and electrical infrastructure.</p>
</div>
</div>
<div class="relative z-10 flex lg:flex-col items-center group flex-1 px-2 hover-trigger">
<!-- architecture -> &#xea3b; -->
<div class="w-12 h-12 rounded-full bg-background-dark border-2 border-white/30 group-hover:border-primary flex items-center justify-center mb-0 lg:mb-6 shrink-0 transition-colors duration-500"><span class="material-symbols-outlined text-white group-hover:text-primary transition-colors text-xl">&#xea3b;</span></div>
<div class="w-12 h-12 rounded-full bg-white border-2 border-slate-200 group-hover:border-primary flex items-center justify-center mb-0 lg:mb-6 shrink-0 transition-colors duration-500"><span class="material-symbols-outlined text-slate-400 group-hover:text-primary transition-colors text-xl">&#xea3b;</span></div>
<div class="ml-6 lg:ml-0 lg:text-center">
<h4 class="text-lg text-white mb-2">Engineering</h4>
<p class="text-slate-500 text-xs leading-relaxed">Precision CAD/3D design optimized for maximum energy density.</p>
<h4 class="text-lg text-slate-900 mb-2">Engineering</h4>
<p class="text-slate-600 text-xs leading-relaxed">Precision CAD/3D design optimized for maximum energy density.</p>
</div>
</div>
<div class="relative z-10 flex lg:flex-col items-center group flex-1 px-2 hover-trigger">
<!-- inventory_2 -> &#xe1a1; -->
<div class="w-12 h-12 rounded-full bg-background-dark border-2 border-white/30 group-hover:border-primary flex items-center justify-center mb-0 lg:mb-6 shrink-0 transition-colors duration-500"><span class="material-symbols-outlined text-white group-hover:text-primary transition-colors text-xl">&#xe1a1;</span></div>
<div class="w-12 h-12 rounded-full bg-white border-2 border-slate-200 group-hover:border-primary flex items-center justify-center mb-0 lg:mb-6 shrink-0 transition-colors duration-500"><span class="material-symbols-outlined text-slate-400 group-hover:text-primary transition-colors text-xl">&#xe1a1;</span></div>
<div class="ml-6 lg:ml-0 lg:text-center">
<h4 class="text-lg text-white mb-2">Procurement</h4>
<p class="text-slate-500 text-xs leading-relaxed">Sourcing high-efficiency components through our robust supply chain.</p>
<h4 class="text-lg text-slate-900 mb-2">Procurement</h4>
<p class="text-slate-600 text-xs leading-relaxed">Sourcing high-efficiency components through our robust supply chain.</p>
</div>
</div>
<div class="relative z-10 flex lg:flex-col items-center group flex-1 px-2 hover-trigger">
<!-- construction -> &#xea3c; -->
<div class="w-12 h-12 rounded-full bg-background-dark border-2 border-white/30 group-hover:border-primary flex items-center justify-center mb-0 lg:mb-6 shrink-0 transition-colors duration-500"><span class="material-symbols-outlined text-white group-hover:text-primary transition-colors text-xl">&#xea3c;</span></div>
<div class="w-12 h-12 rounded-full bg-white border-2 border-slate-200 group-hover:border-primary flex items-center justify-center mb-0 lg:mb-6 shrink-0 transition-colors duration-500"><span class="material-symbols-outlined text-slate-400 group-hover:text-primary transition-colors text-xl">&#xea3c;</span></div>
<div class="ml-6 lg:ml-0 lg:text-center">
<h4 class="text-lg text-white mb-2">Construction</h4>
<p class="text-slate-500 text-xs leading-relaxed">Rigorous on-site management following international safety & quality standards.</p>
<h4 class="text-lg text-slate-900 mb-2">Construction</h4>
<p class="text-slate-600 text-xs leading-relaxed">Rigorous on-site management following international safety & quality standards.</p>
</div>
</div>
<div class="relative z-10 flex lg:flex-col items-center group flex-1 px-2 hover-trigger">
<!-- electrical_services -> &#xf102; -->
<div class="w-12 h-12 rounded-full bg-background-dark border-2 border-white/30 group-hover:border-primary flex items-center justify-center mb-0 lg:mb-6 shrink-0 transition-colors duration-500"><span class="material-symbols-outlined text-white group-hover:text-primary transition-colors text-xl">&#xf102;</span></div>
<div class="w-12 h-12 rounded-full bg-white border-2 border-slate-200 group-hover:border-primary flex items-center justify-center mb-0 lg:mb-6 shrink-0 transition-colors duration-500"><span class="material-symbols-outlined text-slate-400 group-hover:text-primary transition-colors text-xl">&#xf102;</span></div>
<div class="ml-6 lg:ml-0 lg:text-center">
<h4 class="text-lg text-white mb-2">Grid & Testing</h4>
<p class="text-slate-500 text-xs leading-relaxed">Handling all PEA/MEA permits and conducting strict pre-commissioning tests.</p>
<h4 class="text-lg text-slate-900 mb-2">Grid & Testing</h4>
<p class="text-slate-600 text-xs leading-relaxed">Handling all PEA/MEA permits and conducting strict pre-commissioning tests.</p>
</div>
</div>
<div class="relative z-10 flex lg:flex-col items-center group flex-1 px-2 hover-trigger">
<!-- support_agent -> &#xf0e2; -->
<div class="w-12 h-12 rounded-full bg-background-dark border-2 border-primary flex items-center justify-center mb-0 lg:mb-6 shrink-0 group-hover:bg-primary transition-colors duration-500"><span class="material-symbols-outlined text-primary group-hover:text-black transition-colors text-xl">&#xf0e2;</span></div>
<div class="w-12 h-12 rounded-full bg-white border-2 border-primary flex items-center justify-center mb-0 lg:mb-6 shrink-0 group-hover:bg-primary transition-colors duration-500"><span class="material-symbols-outlined text-primary group-hover:text-white transition-colors text-xl">&#xf0e2;</span></div>
<div class="ml-6 lg:ml-0 lg:text-center">
<h4 class="text-lg text-white mb-2">O&M</h4>
<p class="text-slate-500 text-xs leading-relaxed">24/7 remote monitoring and localized cleaning/repair services.</p>
<h4 class="text-lg text-slate-900 mb-2">O&M</h4>
<p class="text-slate-600 text-xs leading-relaxed">24/7 remote monitoring and localized cleaning/repair services.</p>
</div>
</div>
</div>
</div>
<!-- EMC 流程内容 (5个步骤) -->
<div id="content-emc" class="tab-content">
<div class="relative flex flex-col lg:flex-row justify-between items-start space-y-12 lg:space-y-0 lg:space-x-6 before:absolute before:content-[''] before:w-[2px] lg:before:w-full lg:before:h-[2px] before:bg-white/10 before:left-[23px] lg:before:top-[24px] lg:before:left-0 z-0">
<div class="relative flex flex-col lg:flex-row justify-between items-start space-y-12 lg:space-y-0 lg:space-x-6 before:absolute before:content-[''] before:w-[2px] lg:before:w-full lg:before:h-[2px] before:bg-slate-300 before:left-[23px] lg:before:top-[24px] lg:before:left-0 z-0">
<div class="hidden lg:block absolute top-[24px] left-0 h-[2px] bg-gradient-to-r from-transparent via-[#ff6b00] to-transparent z-0 animate-sweep" style="width: 400px; animation-duration: 4s;"></div>
<div class="relative z-10 flex lg:flex-col items-center group flex-1 px-2 hover-trigger hover-emc">
<!-- query_stats -> &#xe4fc; -->
<div class="w-12 h-12 rounded-full bg-background-dark border-2 border-[#ff6b00] flex items-center justify-center shadow-[0_0_15px_rgba(255,107,0,0.4)] mb-0 lg:mb-6 shrink-0 group-hover:scale-110 transition-transform duration-500"><span class="material-symbols-outlined text-[#ff6b00] text-xl">&#xe4fc;</span></div>
<div class="w-12 h-12 rounded-full bg-white border-2 border-[#ff6b00] flex items-center justify-center shadow-sm mb-0 lg:mb-6 shrink-0 group-hover:scale-110 transition-transform duration-500"><span class="material-symbols-outlined text-[#ff6b00] text-xl">&#xe4fc;</span></div>
<div class="ml-6 lg:ml-0 lg:text-center">
<h4 class="text-lg text-white mb-2">Evaluation</h4>
<p class="text-slate-500 text-xs leading-relaxed">Financial feasibility study based on your historical electricity bills.</p>
<h4 class="text-lg text-slate-900 mb-2">Evaluation</h4>
<p class="text-slate-600 text-xs leading-relaxed">Financial feasibility study based on your historical electricity bills.</p>
</div>
</div>
<div class="relative z-10 flex lg:flex-col items-center group flex-1 px-2 hover-trigger hover-emc">
<!-- contract -> &#xf0c9; -->
<div class="w-12 h-12 rounded-full bg-background-dark border-2 border-white/30 group-hover:border-[#ff6b00] flex items-center justify-center mb-0 lg:mb-6 shrink-0 transition-colors duration-500"><span class="material-symbols-outlined text-white group-hover:text-[#ff6b00] transition-colors text-xl">&#xebc7;</span></div>
<div class="w-12 h-12 rounded-full bg-white border-2 border-slate-200 group-hover:border-[#ff6b00] flex items-center justify-center mb-0 lg:mb-6 shrink-0 transition-colors duration-500"><span class="material-symbols-outlined text-slate-400 group-hover:text-[#ff6b00] transition-colors text-xl">&#xebc7;</span></div>
<div class="ml-6 lg:ml-0 lg:text-center">
<h4 class="text-lg text-white mb-2">Agreement</h4>
<p class="text-slate-500 text-xs leading-relaxed">Clear, transparent PPA (Power Purchase Agreement) with no hidden fees.</p>
<h4 class="text-lg text-slate-900 mb-2">Agreement</h4>
<p class="text-slate-600 text-xs leading-relaxed">Clear, transparent PPA (Power Purchase Agreement) with no hidden fees.</p>
</div>
</div>
<div class="relative z-10 flex lg:flex-col items-center group flex-1 px-2 hover-trigger hover-emc">
<!-- precision_manufacturing -> &#xf049; -->
<div class="w-12 h-12 rounded-full bg-background-dark border-2 border-white/30 group-hover:border-[#ff6b00] flex items-center justify-center mb-0 lg:mb-6 shrink-0 transition-colors duration-500"><span class="material-symbols-outlined text-white group-hover:text-[#ff6b00] transition-colors text-xl">&#xf049;</span></div>
<div class="w-12 h-12 rounded-full bg-white border-2 border-slate-200 group-hover:border-[#ff6b00] flex items-center justify-center mb-0 lg:mb-6 shrink-0 transition-colors duration-500"><span class="material-symbols-outlined text-slate-400 group-hover:text-[#ff6b00] transition-colors text-xl">&#xf049;</span></div>
<div class="ml-6 lg:ml-0 lg:text-center">
<h4 class="text-lg text-white mb-2">Deployment</h4>
<p class="text-slate-500 text-xs leading-relaxed">Rapid installation and commissioning by our expert engineering team.</p>
<h4 class="text-lg text-slate-900 mb-2">Deployment</h4>
<p class="text-slate-600 text-xs leading-relaxed">Rapid installation and commissioning by our expert engineering team.</p>
</div>
</div>
<div class="relative z-10 flex lg:flex-col items-center group flex-1 px-2 hover-trigger hover-emc">
<!-- energy_savings_leaf -> &#xec46; -->
<div class="w-12 h-12 rounded-full bg-background-dark border-2 border-white/30 group-hover:border-[#ff6b00] flex items-center justify-center mb-0 lg:mb-6 shrink-0 transition-colors duration-500"><span class="material-symbols-outlined text-white group-hover:text-[#ff6b00] transition-colors text-xl">&#xe6df;</span></div>
<div class="w-12 h-12 rounded-full bg-white border-2 border-slate-200 group-hover:border-[#ff6b00] flex items-center justify-center mb-0 lg:mb-6 shrink-0 transition-colors duration-500"><span class="material-symbols-outlined text-slate-400 group-hover:text-[#ff6b00] transition-colors text-xl">&#xe6df;</span></div>
<div class="ml-6 lg:ml-0 lg:text-center">
<h4 class="text-lg text-white mb-2">Management</h4>
<p class="text-slate-500 text-xs leading-relaxed">Intelligent dispatching of solar and storage to optimize self-consumption.</p>
<h4 class="text-lg text-slate-900 mb-2">Management</h4>
<p class="text-slate-600 text-xs leading-relaxed">Intelligent dispatching of solar and storage to optimize self-consumption.</p>
</div>
</div>
<div class="relative z-10 flex lg:flex-col items-center group flex-1 px-2 hover-trigger hover-emc">
<!-- savings -> &#xe2eb; -->
<div class="w-12 h-12 rounded-full bg-background-dark border-2 border-[#ff6b00] flex items-center justify-center mb-0 lg:mb-6 shrink-0 group-hover:bg-[#ff6b00] transition-colors duration-500"><span class="material-symbols-outlined text-[#ff6b00] group-hover:text-black transition-colors text-xl">&#xe2eb;</span></div>
<div class="w-12 h-12 rounded-full bg-white border-2 border-[#ff6b00] flex items-center justify-center mb-0 lg:mb-6 shrink-0 group-hover:bg-[#ff6b00] transition-colors duration-500"><span class="material-symbols-outlined text-[#ff6b00] group-hover:text-white transition-colors text-xl">&#xe2eb;</span></div>
<div class="ml-6 lg:ml-0 lg:text-center">
<h4 class="text-lg text-white mb-2">Benefit Share</h4>
<p class="text-slate-500 text-xs leading-relaxed">Pay only for the solar energy generated at a rate significantly lower than the grid.</p>
<h4 class="text-lg text-slate-900 mb-2">Benefit Share</h4>
<p class="text-slate-600 text-xs leading-relaxed">Pay only for the solar energy generated at a rate significantly lower than the grid.</p>
</div>
</div>
</div>
@ -549,197 +496,164 @@
</div>
</section>
<!-- 信任枢纽:运维 SLA、资质与顶级供应链生态 (大气专业版) -->
<section id="trust" class="py-32 bg-[#030604] border-y border-white/5 relative overflow-hidden">
<!-- 宏大的背景全局光晕 -->
<div class="absolute top-0 left-1/2 -translate-x-1/2 w-full max-w-[1200px] h-[600px] bg-gradient-to-b from-primary/5 to-transparent blur-[120px] pointer-events-none"></div>
<section id="trust" class="py-32 bg-background-light border-y border-silver-accent relative overflow-hidden">
<div class="absolute top-0 left-1/2 -translate-x-1/2 w-full max-w-[1200px] h-[600px] bg-gradient-to-b from-primary/10 to-transparent blur-[120px] pointer-events-none"></div>
<div class="container mx-auto px-6 relative z-10">
<!-- 模块标题 -->
<div class="text-center mb-20" data-aos="fade-up">
<div class="text-primary font-mono text-sm tracking-widest mb-4 uppercase flex justify-center items-center inline-block px-3 py-1 rounded-full">Trust & Service</div>
<h3 class="text-4xl md:text-[2.66rem] text-white -subtitle">Built on Absolute Reliability.</h3>
<div class="text-primary font-mono text-sm tracking-widest mb-4 uppercase flex justify-center items-center inline-block px-3 py-1 ">Trust & Service</div>
<h3 class="text-4xl md:text-[2.66rem] text-slate-900 ">Built on Absolute Reliability.</h3>
</div>
<!-- 上半部:运维服务 SLA 与 国际资质 (水平全宽布局) -->
<div class="grid grid-cols-1 lg:grid-cols-3 gap-8 mb-8">
<!-- 运维 SLA 核心卡片 (占据 2 列,展现大气) -->
<div data-aos="fade-right" class="lg:col-span-2 hover-trigger group bg-[#0a110e] border border-white/5 rounded-[2rem] p-10 md:p-14 hover:border-primary/30 transition-colors duration-500 relative overflow-hidden flex flex-col justify-center">
<div data-aos="fade-right" class="lg:col-span-2 hover-trigger group bg-white border border-silver-accent rounded-[2rem] p-10 md:p-14 hover:border-primary/50 shadow-bento hover:shadow-bento-hover transition-all duration-500 relative overflow-hidden flex flex-col justify-center">
<div class="absolute top-0 right-0 w-full h-1 bg-gradient-to-r from-transparent via-primary/50 to-transparent -translate-x-full group-hover:translate-x-full transition-transform duration-1000 ease-in-out"></div>
<div class="flex items-center mb-10">
<!-- support_agent -> &#xf0e2; -->
<span class="material-symbols-outlined text-primary text-4xl mr-4">&#xf0e2;</span>
<div>
<h4 class="text-2xl md:text-3xl text-white">Localized O&M Support</h4>
<p class="text-slate-400 mt-1">24/7/365 lifecycle protection for your energy assets.</p>
<h4 class="text-2xl md:text-3xl text-slate-900">Localized O&M Support</h4>
<p class="text-slate-600 mt-1">24/7/365 lifecycle protection for your energy assets.</p>
</div>
</div>
<div class="grid grid-cols-1 md:grid-cols-3 gap-8 divide-y md:divide-y-0 md:divide-x divide-white/10">
<!-- SLA 1: 2H -->
<div class="grid grid-cols-1 md:grid-cols-3 gap-8 divide-y md:divide-y-0 md:divide-x divide-slate-200">
<div class="pt-6 md:pt-0 md:pr-8 group-hover:pl-2 transition-all duration-300">
<div class="text-4xl font-mono text-white mb-2 flex items-baseline">2<span class="text-primary text-xl ml-1">H</span></div>
<div class="text-4xl font-mono text-slate-800 mb-2 flex items-baseline">2<span class="text-primary text-xl ml-1">H</span></div>
<div class="text-xs text-primary uppercase tracking-widest mb-2 ">Consultation</div>
<p class="text-sm text-slate-500 leading-relaxed">Technical Consultation Response within 2 hours.</p>
<p class="text-sm text-slate-600 leading-relaxed">Technical Consultation Response within 2 hours.</p>
</div>
<!-- SLA 2: 24H -->
<div class="pt-6 md:pt-0 md:px-8 group-hover:pl-10 transition-all duration-300 delay-75">
<div class="text-4xl font-mono text-white mb-2 flex items-baseline">24<span class="text-[#ff6b00] text-xl ml-1">H</span></div>
<div class="text-4xl font-mono text-slate-800 mb-2 flex items-baseline">24<span class="text-[#ff6b00] text-xl ml-1">H</span></div>
<div class="text-xs text-[#ff6b00] uppercase tracking-widest mb-2 ">Diagnosis</div>
<p class="text-sm text-slate-500 leading-relaxed">Remote Diagnosis & Solution proposition.</p>
<p class="text-sm text-slate-600 leading-relaxed">Remote Diagnosis & Solution proposition.</p>
</div>
<!-- SLA 3: 48H -->
<div class="pt-6 md:pt-0 md:pl-8 group-hover:pl-10 transition-all duration-300 delay-150">
<div class="text-4xl font-mono text-white mb-2 flex items-baseline">48<span class="text-white text-xl ml-1">H</span></div>
<div class="text-xs text-slate-300 uppercase tracking-widest mb-2 ">On-Site</div>
<p class="text-sm text-slate-500 leading-relaxed">On-site Engineering Support deployment.</p>
<div class="text-4xl font-mono text-slate-800 mb-2 flex items-baseline">48<span class="text-slate-500 text-xl ml-1">H</span></div>
<div class="text-xs text-slate-500 uppercase tracking-widest mb-2 ">On-Site</div>
<p class="text-sm text-slate-600 leading-relaxed">On-site Engineering Support deployment.</p>
</div>
</div>
</div>
<!-- 国际资质证书卡片 (占据 1 列,纵向排列) -->
<div data-aos="fade-left" class="hover-trigger group bg-[#0a110e] border border-white/5 rounded-[2rem] p-10 md:p-14 flex flex-col justify-center relative overflow-hidden">
<div class="absolute inset-0 bg-gradient-to-br from-white/[0.03] to-transparent pointer-events-none"></div>
<div data-aos="fade-left" class="hover-trigger group bg-white border border-silver-accent rounded-[2rem] p-10 md:p-14 flex flex-col justify-center relative shadow-bento hover:shadow-bento-hover overflow-hidden transition-all duration-500">
<div class="absolute inset-0 bg-gradient-to-br from-slate-50 to-transparent pointer-events-none"></div>
<div class="mb-8 relative z-10">
<!-- verified -> &#xe86c; -->
<span class="material-symbols-outlined text-white/50 text-4xl mb-4 block">&#xe86c;</span>
<h4 class="text-3xl text-white mb-2">Global Quality Benchmarks</h4>
<p class="text-slate-400 text-sm">Strictest adherence to global standards.</p>
<span class="material-symbols-outlined text-slate-300 text-4xl mb-4 block">&#xe86c;</span>
<h4 class="text-3xl text-slate-900 mb-2">Global Quality Benchmarks</h4>
<p class="text-slate-600 text-sm">Strictest adherence to global standards.</p>
</div>
<div class="flex flex-col gap-4 relative z-10">
<div class="w-full px-5 py-3.5 rounded-xl bg-black/50 border border-white/5 text-slate-300 font-mono text-sm flex items-center group-hover:border-primary transition-colors"><span class="w-1.5 h-1.5 rounded-full bg-primary mr-3"></span> ISO 9001 : 2015</div>
<div class="w-full px-5 py-3.5 rounded-xl bg-black/50 border border-white/5 text-slate-300 font-mono text-sm flex items-center group-hover:border-primary transition-colors"><span class="w-1.5 h-1.5 rounded-full bg-primary mr-3"></span> ISO 14001 : 2015</div>
<div class="w-full px-5 py-3.5 rounded-xl bg-black/50 border border-white/5 text-slate-300 font-mono text-sm flex items-center group-hover:border-[#ff6b00] transition-colors"><span class="w-1.5 h-1.5 rounded-full bg-[#ff6b00] mr-3"></span> ISO 45001 / CE</div>
<div class="w-full px-5 py-3.5 rounded-xl bg-white border border-silver-accent text-slate-700 font-mono text-sm flex items-center shadow-sm group-hover:border-primary transition-colors"><span class="w-1.5 h-1.5 rounded-full bg-primary mr-3"></span> ISO 9001 : 2015</div>
<div class="w-full px-5 py-3.5 rounded-xl bg-white border border-silver-accent text-slate-700 font-mono text-sm flex items-center shadow-sm group-hover:border-primary transition-colors"><span class="w-1.5 h-1.5 rounded-full bg-primary mr-3"></span> ISO 14001 : 2015</div>
<div class="w-full px-5 py-3.5 rounded-xl bg-white border border-silver-accent text-slate-700 font-mono text-sm flex items-center shadow-sm group-hover:border-[#ff6b00] transition-colors"><span class="w-1.5 h-1.5 rounded-full bg-[#ff6b00] mr-3"></span> ISO 45001 / CE</div>
</div>
</div>
</div>
<!-- 下半部Tier-1 全球供应链联盟 (全宽横向跑马灯版) -->
<div data-aos="fade-up" class="hover-trigger group bg-gradient-to-b from-[#0a110e] to-black border border-white/5 rounded-[2rem] p-10 md:p-14 relative overflow-hidden flex flex-col">
<div class="absolute top-0 left-1/2 -translate-x-1/2 w-[60%] h-[1px] bg-gradient-to-r from-transparent via-white/20 to-transparent pointer-events-none"></div>
<div data-aos="fade-up" class="hover-trigger group bg-gradient-to-b from-pearlescent to-white border border-silver-accent rounded-[2rem] shadow-bento p-10 md:p-14 relative overflow-hidden flex flex-col">
<div class="absolute top-0 left-1/2 -translate-x-1/2 w-[60%] h-[1px] bg-gradient-to-r from-transparent via-primary/30 to-transparent pointer-events-none"></div>
<!-- 联盟说明文字 -->
<div class="flex flex-col md:flex-row md:items-end justify-between mb-12 border-b border-white/10 pb-8 gap-6 pointer-events-none">
<div class="flex flex-col md:flex-row md:items-end justify-between mb-12 border-b border-slate-200 pb-8 gap-6 pointer-events-none">
<div class="max-w-xl">
<!-- hub -> &#xe9f4; -->
<span class="material-symbols-outlined text-white/30 text-3xl mb-4 block">&#xe9f4;</span>
<h4 class="text-2xl md:text-3xl text-white mb-3">Tier-1 Ecosystem</h4>
<p class="text-slate-400 text-sm leading-relaxed relative z-10">Forging Strategic Alliances with Global Leaders in PV manufacturing and inverter technology, backed by our <span id="dynamic-years" class="text-white font-mono mx-1 border-b border-primary/50"></span>years of industry expertise, ensuring lifecycle performance and uncompromised safety.</p>
<span class="material-symbols-outlined text-slate-300 text-3xl mb-4 block">&#xe9f4;</span>
<h4 class="text-2xl md:text-3xl text-slate-900 mb-3">Tier-1 Ecosystem</h4>
<p class="text-slate-600 text-sm leading-relaxed relative z-10">Forging Strategic Alliances with Global Leaders in PV manufacturing and inverter technology, backed by our <span id="dynamic-years" class="text-primary font-mono mx-1 border-b border-primary/50"></span>years of industry expertise, ensuring lifecycle performance and uncompromised safety.</p>
</div>
<div class="text-left md:text-right shrink-0">
<div class="text-sm font-mono text-white ">100%</div>
<div class="text-sm font-mono text-slate-900 ">100%</div>
<div class="text-[10px] text-slate-500 uppercase tracking-widest mt-1">Authentic Component Sourcing</div>
</div>
</div>
<!-- 核心更新:横向无缝跑马灯容器 (绝对等宽版) -->
<div data-no-translation class="marquee-container relative w-full overflow-hidden mask-edges-x py-2 cursor-default">
<!-- 去除了 gap-x-6改用 CSS 控制间距以保证总体宽度的绝对数学精度 -->
<div class="animate-marquee-x">
<!-- ================= 第一组名单 (9个品牌) ================= -->
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-primary/20 transition-all duration-300 hover:bg-white/5">
<span class="text-xl font-display text-slate-300 tracking-wider pointer-events-none">LONGi</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-primary/50 transition-all duration-300 hover:bg-white">
<span class="text-xl font-display text-slate-800 tracking-wider pointer-events-none">LONGi</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-primary/20 transition-all duration-300 hover:bg-white/5">
<span class="text-xl font-display text-slate-300 tracking-wider pointer-events-none">JA Solar</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-primary/50 transition-all duration-300 hover:bg-white">
<span class="text-xl font-display text-slate-800 tracking-wider pointer-events-none">JA Solar</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-[#ff6b00]/20 transition-all duration-300 hover:bg-white/5">
<span class="text-xl font-display text-slate-300 tracking-wider pointer-events-none">Trina Solar</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-[#ff6b00]/50 transition-all duration-300 hover:bg-white">
<span class="text-xl font-display text-slate-800 tracking-wider pointer-events-none">Trina Solar</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-primary/20 transition-all duration-300 hover:bg-white/5">
<span class="text-xl font-display text-slate-300 tracking-wider pointer-events-none">Huawei</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-primary/50 transition-all duration-300 hover:bg-white">
<span class="text-xl font-display text-slate-800 tracking-wider pointer-events-none">Huawei</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-[#ff6b00]/20 transition-all duration-300 hover:bg-white/5">
<span class="text-xl font-display text-slate-300 tracking-wider pointer-events-none">Sungrow</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-[#ff6b00]/50 transition-all duration-300 hover:bg-white">
<span class="text-xl font-display text-slate-800 tracking-wider pointer-events-none">Sungrow</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-white/20 transition-all duration-300 hover:bg-white/5">
<span class="text-lg font-display text-slate-400 pointer-events-none">Ginlong</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-primary/50 transition-all duration-300 hover:bg-white">
<span class="text-lg font-display text-slate-600 pointer-events-none">Ginlong</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-white/20 transition-all duration-300 hover:bg-white/5">
<span class="text-lg font-display text-slate-400 pointer-events-none">Chint</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-primary/50 transition-all duration-300 hover:bg-white">
<span class="text-lg font-display text-slate-600 pointer-events-none">Chint</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-white/20 transition-all duration-300 hover:bg-white/5">
<span class="text-lg font-display text-slate-400 pointer-events-none">GoodWe</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-primary/50 transition-all duration-300 hover:bg-white">
<span class="text-lg font-display text-slate-600 pointer-events-none">GoodWe</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-white/20 transition-all duration-300 hover:bg-white/5">
<span class="text-lg font-display text-slate-400 pointer-events-none">Deye</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-primary/50 transition-all duration-300 hover:bg-white">
<span class="text-lg font-display text-slate-600 pointer-events-none">Deye</span>
</div>
<!-- ================= 第二组名单 (完美复制,保证衔接不跳帧) ================= -->
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-primary/20 transition-all duration-300 hover:bg-white/5">
<span class="text-xl font-display text-slate-300 tracking-wider pointer-events-none">LONGi</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-primary/50 transition-all duration-300 hover:bg-white">
<span class="text-xl font-display text-slate-800 tracking-wider pointer-events-none">LONGi</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-primary/20 transition-all duration-300 hover:bg-white/5">
<span class="text-xl font-display text-slate-300 tracking-wider pointer-events-none">JA Solar</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-primary/50 transition-all duration-300 hover:bg-white">
<span class="text-xl font-display text-slate-800 tracking-wider pointer-events-none">JA Solar</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-[#ff6b00]/20 transition-all duration-300 hover:bg-white/5">
<span class="text-xl font-display text-slate-300 tracking-wider pointer-events-none">Trina Solar</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-[#ff6b00]/50 transition-all duration-300 hover:bg-white">
<span class="text-xl font-display text-slate-800 tracking-wider pointer-events-none">Trina Solar</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-primary/20 transition-all duration-300 hover:bg-white/5">
<span class="text-xl font-display text-slate-300 tracking-wider pointer-events-none">Huawei</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-primary/50 transition-all duration-300 hover:bg-white">
<span class="text-xl font-display text-slate-800 tracking-wider pointer-events-none">Huawei</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-[#ff6b00]/20 transition-all duration-300 hover:bg-white/5">
<span class="text-xl font-display text-slate-300 tracking-wider pointer-events-none">Sungrow</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-[#ff6b00]/50 transition-all duration-300 hover:bg-white">
<span class="text-xl font-display text-slate-800 tracking-wider pointer-events-none">Sungrow</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-white/20 transition-all duration-300 hover:bg-white/5">
<span class="text-lg font-display text-slate-400 pointer-events-none">Ginlong</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-primary/50 transition-all duration-300 hover:bg-white">
<span class="text-lg font-display text-slate-600 pointer-events-none">Ginlong</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-white/20 transition-all duration-300 hover:bg-white/5">
<span class="text-lg font-display text-slate-400 pointer-events-none">Chint</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-primary/50 transition-all duration-300 hover:bg-white">
<span class="text-lg font-display text-slate-600 pointer-events-none">Chint</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-white/20 transition-all duration-300 hover:bg-white/5">
<span class="text-lg font-display text-slate-400 pointer-events-none">GoodWe</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-primary/50 transition-all duration-300 hover:bg-white">
<span class="text-lg font-display text-slate-600 pointer-events-none">GoodWe</span>
</div>
<div class="marquee-item h-20 flex justify-center items-center bg-black/40 rounded-xl border border-white/5 hover:border-white/20 transition-all duration-300 hover:bg-white/5">
<span class="text-lg font-display text-slate-400 pointer-events-none">Deye</span>
<div class="marquee-item h-20 flex justify-center items-center bg-white/80 rounded-xl border border-silver-accent shadow-sm hover:border-primary/50 transition-all duration-300 hover:bg-white">
<span class="text-lg font-display text-slate-600 pointer-events-none">Deye</span>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- 6. 标杆案例 (双轨 Swiper) -->
<section id="cases" class="py-32 bg-[#060c09] overflow-hidden relative">
<div class="absolute top-0 right-0 w-[500px] h-[500px] bg-primary/5 blur-[150px] pointer-events-none"></div>
<div class="absolute bottom-0 left-0 w-[500px] h-[500px] bg-[#ff6b00]/5 blur-[150px] pointer-events-none"></div>
<section id="cases" class="py-32 bg-aurora overflow-hidden relative">
<div class="absolute top-0 right-0 w-[500px] h-[500px] bg-primary/10 blur-[150px] pointer-events-none"></div>
<div class="absolute bottom-0 left-0 w-[500px] h-[500px] bg-[#ff6b00]/10 blur-[150px] pointer-events-none"></div>
<div class="container mx-auto px-6 relative z-10">
<div class="text-center mb-20" data-aos="fade-up">
<div class="text-primary font-mono text-sm tracking-widest mb-4 uppercase flex justify-center items-center inline-block px-3 py-1 rounded-full">Success Stories</div>
<h3 class="text-4xl md:text-[2.66rem] text-white ">Our Portfolio</h3>
<div class="text-primary font-mono text-sm tracking-widest mb-4 uppercase flex justify-center items-center inline-block px-3 py-1 ">Success Stories</div>
<h3 class="text-4xl md:text-[2.66rem] text-slate-900 ">Our Portfolio</h3>
</div>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-10 lg:gap-16">
<!-- ================= 左侧EPC 轨道 (绿色系) ================= -->
<div data-aos="fade-right">
<div class="flex items-center justify-between mb-6 border-b border-white/10 pb-4">
<div class="flex items-center justify-between mb-6 border-b border-slate-200 pb-4">
<div class="flex items-center">
<!-- engineering -> &#xea3d; -->
<span class="material-symbols-outlined text-primary text-3xl mr-3">&#xea3d;</span>
<h4 class="text-3xl text-white">Turnkey EPC</h4>
<h4 class="text-3xl text-slate-900">Turnkey EPC</h4>
</div>
<div class="flex space-x-2 relative z-50">
<!-- arrow_back -> &#xe5c4; -->
<button id="epc-btn-prev" class="w-10 h-10 rounded-full border border-white/20 flex items-center justify-center text-white hover:border-primary hover:text-primary transition-colors cursor-pointer hover-trigger"><span class="material-symbols-outlined text-sm pointer-events-none">&#xe5c4;</span></button>
<!-- arrow_forward -> &#xe5c8; -->
<button id="epc-btn-next" class="w-10 h-10 rounded-full border border-white/20 flex items-center justify-center text-white hover:border-primary hover:text-primary transition-colors cursor-pointer hover-trigger"><span class="material-symbols-outlined text-sm pointer-events-none">&#xe5c8;</span></button>
<button id="epc-btn-prev" class="w-10 h-10 rounded-full border border-slate-300 bg-white shadow-sm flex items-center justify-center text-slate-600 hover:border-primary hover:text-primary transition-colors cursor-pointer hover-trigger"><span class="material-symbols-outlined text-sm pointer-events-none">&#xe5c4;</span></button>
<button id="epc-btn-next" class="w-10 h-10 rounded-full border border-slate-300 bg-white shadow-sm flex items-center justify-center text-slate-600 hover:border-primary hover:text-primary transition-colors cursor-pointer hover-trigger"><span class="material-symbols-outlined text-sm pointer-events-none">&#xe5c8;</span></button>
</div>
</div>
<div class="swiper epc-swiper rounded-[2rem] overflow-hidden shadow-bento-dark h-[450px]">
<div class="swiper epc-swiper rounded-[2rem] overflow-hidden shadow-bento h-[450px]">
<div class="swiper-wrapper">
<!-- EPC Case 1 -->
<div class="swiper-slide hover-trigger group relative bg-black h-full cursor-grab active:cursor-grabbing">
<div class="absolute inset-0 transition-transform duration-700 pointer-events-none group-hover:scale-105">
<div class="absolute inset-0 bg-[url('https://nenghui.com/wp-content/uploads/2026/03/contact-us_epc5.avif')] bg-cover bg-center opacity-80 group-hover:opacity-100 transition-opacity duration-500"></div>
@ -748,8 +662,6 @@
<div class="absolute inset-0 p-8 flex flex-col justify-between pointer-events-none">
<div class="flex justify-between items-start">
<span class="px-4 py-1.5 bg-primary text-black text-[10px] rounded-full uppercase tracking-wider shadow-glow">Wind Power</span>
<!-- location_on -> &#xe0c8; -->
<!-- <span class="text-white font-mono text-sm flex items-center drop-shadow-md bg-black/30 px-3 py-1 rounded-full backdrop-blur-sm"><span class="material-symbols-outlined text-sm mr-1">&#xe0c8;</span> Yulin, CN</span> -->
</div>
<div class="mb-6">
<h3 class="text-2xl text-white mb-3 group-hover:text-primary transition-colors leading-tight line-clamp-2 drop-shadow-lg">Yulins Wind Frontier: A Global Benchmark</h3>
@ -761,7 +673,6 @@
</div>
</div>
</div>
<!-- EPC Case 2 -->
<div class="swiper-slide hover-trigger group relative bg-black h-full cursor-grab active:cursor-grabbing">
<div class="absolute inset-0 transition-transform duration-700 pointer-events-none group-hover:scale-105">
<div class="absolute inset-0 bg-[url('https://nenghui.com/wp-content/uploads/2026/03/contact-us_epc6.avif')] bg-cover bg-center opacity-80 group-hover:opacity-100 transition-opacity duration-500"></div>
@ -770,7 +681,6 @@
<div class="absolute inset-0 p-8 flex flex-col justify-between pointer-events-none">
<div class="flex justify-between items-start">
<span class="px-4 py-1.5 bg-primary text-black text-[10px] rounded-full uppercase tracking-wider shadow-glow">Dual-Axis Solar</span>
<!-- <span class="text-white font-mono text-sm flex items-center drop-shadow-md bg-black/30 px-3 py-1 rounded-full backdrop-blur-sm"><span class="material-symbols-outlined text-sm mr-1">&#xe0c8;</span> Southwest, CN</span> -->
</div>
<div class="mb-6">
<h3 class="text-2xl text-white mb-3 group-hover:text-primary transition-colors leading-tight line-clamp-2 drop-shadow-lg">The Solar Sentinel</h3>
@ -782,7 +692,6 @@
</div>
</div>
</div>
<!-- EPC Case 3 -->
<div class="swiper-slide hover-trigger group relative bg-black h-full cursor-grab active:cursor-grabbing">
<div class="absolute inset-0 transition-transform duration-700 pointer-events-none group-hover:scale-105">
<div class="absolute inset-0 bg-[url('https://nenghui.com/wp-content/uploads/2026/03/contact-us_epc.avif')] bg-cover bg-center opacity-80 group-hover:opacity-100 transition-opacity duration-500"></div>
@ -791,10 +700,9 @@
<div class="absolute inset-0 p-8 flex flex-col justify-between pointer-events-none">
<div class="flex justify-between items-start">
<span class="px-4 py-1.5 bg-primary text-black text-[10px] rounded-full uppercase tracking-wider shadow-glow">Grid Integration</span>
<!-- <span class="text-white font-mono text-sm flex items-center drop-shadow-md bg-black/30 px-3 py-1 rounded-full backdrop-blur-sm"><span class="material-symbols-outlined text-sm mr-1">&#xe0c8;</span> Regional, CN</span> -->
</div>
<div class="mb-6">
<h3 class="text-2xl text-white mb-3 group-hover:text-primary transition-colors leading-tight line-clamp-2 drop-shadow-lg">The Grid-Ready Blueprint</h3>
<h3 class="text-2xl text-white mb-3 group-hover:text-primary transition-colors leading-tight line-clamp-2 drop-shadow-lg">The Grid-Ready Blueprint</h3>
<p class="text-slate-200 text-sm mb-6 max-w-md line-clamp-3 drop-shadow-md">Optimized 110kV substation and localized 35kV collection lines ensuring ultra-fast, seamless connection to the regional power grid.</p>
<div class="flex space-x-6 border-t border-white/30 pt-4">
<div><div class="text-2xl font-mono text-white drop-shadow-md">40<span class="text-primary text-sm ml-1">MW</span></div><div class="text-[10px] text-slate-300 uppercase tracking-wider mt-1 ">Capacity</div></div>
@ -803,7 +711,6 @@
</div>
</div>
</div>
<!-- EPC Case 4 -->
<div class="swiper-slide hover-trigger group relative bg-black h-full cursor-grab active:cursor-grabbing">
<div class="absolute inset-0 transition-transform duration-700 pointer-events-none group-hover:scale-105">
<div class="absolute inset-0 bg-[url('https://nenghui.com/wp-content/uploads/2026/03/contact-us_epc1.png')] bg-cover bg-center opacity-80 group-hover:opacity-100 transition-opacity duration-500"></div>
@ -812,10 +719,9 @@
<div class="absolute inset-0 p-8 flex flex-col justify-between pointer-events-none">
<div class="flex justify-between items-start">
<span class="px-4 py-1.5 bg-primary text-black text-[10px] rounded-full uppercase tracking-wider shadow-glow">Agrivoltaics</span>
<!-- <span class="text-white font-mono text-sm flex items-center drop-shadow-md bg-black/30 px-3 py-1 rounded-full backdrop-blur-sm"><span class="material-symbols-outlined text-sm mr-1">&#xe0c8;</span> Terrain, CN</span> -->
</div>
<div class="mb-6">
<h3 class="text-2xl text-white mb-3 group-hover:text-primary transition-colors leading-tight line-clamp-2 drop-shadow-lg">The Green Synergy Blueprint</h3>
<h3 class="text-2xl text-white mb-3 group-hover:text-primary transition-colors leading-tight line-clamp-2 drop-shadow-lg">The Green Synergy Blueprint</h3>
<p class="text-slate-200 text-sm mb-6 max-w-md line-clamp-3 drop-shadow-md">Customized panel height and irrigation-friendly design with optimized electrical safety to harmonize solar and agriculture.</p>
<div class="flex space-x-6 border-t border-white/30 pt-4">
<div><div class="text-2xl font-mono text-white drop-shadow-md">70<span class="text-primary text-sm ml-1">MWp</span></div><div class="text-[10px] text-slate-300 uppercase tracking-wider mt-1 ">Capacity</div></div>
@ -829,25 +735,20 @@
</div>
</div>
<!-- ================= 右侧EMC 轨道 (橙色系) ================= -->
<div data-aos="fade-left" data-aos-delay="100">
<div class="flex items-center justify-between mb-6 border-b border-white/10 pb-4">
<div class="flex items-center justify-between mb-6 border-b border-slate-200 pb-4">
<div class="flex items-center">
<!-- handshake -> &#xebcb; -->
<span class="material-symbols-outlined text-[#ff6b00] text-3xl mr-3">&#xebcb;</span>
<h4 class="text-3xl text-white">EMC/PPA Contracts</h4>
<h4 class="text-3xl text-slate-900">EMC/PPA Contracts</h4>
</div>
<div class="flex space-x-2 relative z-50">
<!-- arrow_back -> &#xe5c4; -->
<button id="emc-btn-prev" class="w-10 h-10 rounded-full border border-white/20 flex items-center justify-center text-white hover:border-[#ff6b00] hover:text-[#ff6b00] transition-colors cursor-pointer hover-trigger hover-emc"><span class="material-symbols-outlined text-sm pointer-events-none">&#xe5c4;</span></button>
<!-- arrow_forward -> &#xe5c8; -->
<button id="emc-btn-next" class="w-10 h-10 rounded-full border border-white/20 flex items-center justify-center text-white hover:border-[#ff6b00] hover:text-[#ff6b00] transition-colors cursor-pointer hover-trigger hover-emc"><span class="material-symbols-outlined text-sm pointer-events-none">&#xe5c8;</span></button>
<button id="emc-btn-prev" class="w-10 h-10 rounded-full border border-slate-300 bg-white shadow-sm flex items-center justify-center text-slate-600 hover:border-[#ff6b00] hover:text-[#ff6b00] transition-colors cursor-pointer hover-trigger hover-emc"><span class="material-symbols-outlined text-sm pointer-events-none">&#xe5c4;</span></button>
<button id="emc-btn-next" class="w-10 h-10 rounded-full border border-slate-300 bg-white shadow-sm flex items-center justify-center text-slate-600 hover:border-[#ff6b00] hover:text-[#ff6b00] transition-colors cursor-pointer hover-trigger hover-emc"><span class="material-symbols-outlined text-sm pointer-events-none">&#xe5c8;</span></button>
</div>
</div>
<div class="swiper emc-swiper rounded-[2rem] overflow-hidden shadow-[0_30px_60px_-15px_rgba(0,0,0,0.5)] h-[450px]">
<div class="swiper emc-swiper rounded-[2rem] overflow-hidden shadow-bento h-[450px]">
<div class="swiper-wrapper">
<!-- EMC Case 1 -->
<div class="swiper-slide hover-trigger hover-emc group relative bg-black h-full cursor-grab active:cursor-grabbing">
<div class="absolute inset-0 transition-transform duration-700 pointer-events-none group-hover:scale-105">
<div class="absolute inset-0 bg-[url('https://nenghui.com/wp-content/uploads/2026/03/contact-us_emc2.avif')] bg-cover bg-center opacity-80 group-hover:opacity-100 transition-opacity duration-500"></div>
@ -856,7 +757,6 @@
<div class="absolute inset-0 p-8 flex flex-col justify-between pointer-events-none">
<div class="flex justify-between items-start">
<span class="px-4 py-1.5 bg-[#ff6b00] text-white text-[10px] rounded-full uppercase tracking-wider shadow-[0_0_10px_rgba(255,107,0,0.5)]">Industrial Park</span>
<!-- <span class="text-white font-mono text-sm flex items-center drop-shadow-md bg-black/40 px-3 py-1 rounded-full backdrop-blur-sm"><span class="material-symbols-outlined text-sm mr-1">&#xe0c8;</span> Zhuhai, CN</span> -->
</div>
<div class="mb-5">
<h3 class="text-2xl text-white mb-2 group-hover:text-[#ff6b00] transition-colors leading-tight line-clamp-2 drop-shadow-lg">10MWp Distributed Solar PV Empowerment</h3>
@ -874,7 +774,6 @@
</div>
</div>
</div>
<!-- EMC Case 2 -->
<div class="swiper-slide hover-trigger hover-emc group relative bg-black h-full cursor-grab active:cursor-grabbing">
<div class="absolute inset-0 transition-transform duration-700 pointer-events-none group-hover:scale-105">
<div class="absolute inset-0 bg-[url('https://nenghui.com/wp-content/uploads/2026/03/contact-us_emc3.avif')] bg-cover bg-center opacity-80 group-hover:opacity-100 transition-opacity duration-500"></div>
@ -883,7 +782,6 @@
<div class="absolute inset-0 p-8 flex flex-col justify-between pointer-events-none">
<div class="flex justify-between items-start">
<span class="px-4 py-1.5 bg-[#ff6b00] text-white text-[10px] rounded-full uppercase tracking-wider shadow-[0_0_10px_rgba(255,107,0,0.5)]">Tier-1 Hub</span>
<!-- <span class="text-white font-mono text-sm flex items-center drop-shadow-md bg-black/40 px-3 py-1 rounded-full backdrop-blur-sm"><span class="material-symbols-outlined text-sm mr-1">&#xe0c8;</span> B7 Mfg, CN</span> -->
</div>
<div class="mb-5">
<h3 class="text-2xl text-white mb-2 group-hover:text-[#ff6b00] transition-colors leading-tight line-clamp-2 drop-shadow-lg">5.2MWp High-Efficiency PV System</h3>
@ -901,7 +799,6 @@
</div>
</div>
</div>
<!-- EMC Case 3 -->
<div class="swiper-slide hover-trigger hover-emc group relative bg-black h-full cursor-grab active:cursor-grabbing">
<div class="absolute inset-0 transition-transform duration-700 pointer-events-none group-hover:scale-105">
<div class="absolute inset-0 bg-[url('https://nenghui.com/wp-content/uploads/2026/03/contact-us_emc1.avif')] bg-cover bg-center opacity-80 group-hover:opacity-100 transition-opacity duration-500"></div>
@ -910,7 +807,6 @@
<div class="absolute inset-0 p-8 flex flex-col justify-between pointer-events-none">
<div class="flex justify-between items-start">
<span class="px-4 py-1.5 bg-[#ff6b00] text-white text-[10px] rounded-full uppercase tracking-wider shadow-[0_0_10px_rgba(255,107,0,0.5)]">Logistics Park</span>
<!-- <span class="text-white font-mono text-sm flex items-center drop-shadow-md bg-black/40 px-3 py-1 rounded-full backdrop-blur-sm"><span class="material-symbols-outlined text-sm mr-1">&#xe0c8;</span> Xinfei, CN</span> -->
</div>
<div class="mb-5">
<h3 class="text-2xl text-white mb-2 group-hover:text-[#ff6b00] transition-colors leading-tight line-clamp-2 drop-shadow-lg">4.99MWp Rooftop PV Project</h3>
@ -928,7 +824,6 @@
</div>
</div>
</div>
<!-- EMC Case 4 -->
<div class="swiper-slide hover-trigger hover-emc group relative bg-black h-full cursor-grab active:cursor-grabbing">
<div class="absolute inset-0 transition-transform duration-700 pointer-events-none group-hover:scale-105">
<div class="absolute inset-0 bg-[url('https://nenghui.com/wp-content/uploads/2026/03/contact-us_emc4.avif')] bg-cover bg-center opacity-80 group-hover:opacity-100 transition-opacity duration-500"></div>
@ -937,7 +832,6 @@
<div class="absolute inset-0 p-8 flex flex-col justify-between pointer-events-none">
<div class="flex justify-between items-start">
<span class="px-4 py-1.5 bg-[#ff6b00] text-white text-[10px] rounded-full uppercase tracking-wider shadow-[0_0_10px_rgba(255,107,0,0.5)]">Manufacturing</span>
<!-- <span class="text-white font-mono text-sm flex items-center drop-shadow-md bg-black/40 px-3 py-1 rounded-full backdrop-blur-sm"><span class="material-symbols-outlined text-sm mr-1">&#xe0c8;</span> Cheng-Ou, CN</span> -->
</div>
<div class="mb-5">
<h3 class="text-2xl text-white mb-2 group-hover:text-[#ff6b00] transition-colors leading-tight line-clamp-2 drop-shadow-lg">5.86MWp Integrated PV Solution</h3>
@ -963,32 +857,25 @@
</div>
</section>
<!-- 行动呼吁 -->
<section id="contact" class="py-24 relative bg-[#0a1410]">
<section id="contact" class="py-24 relative bg-liquid-gradient">
<div class="container mx-auto px-6 text-center z-10 relative" data-aos="zoom-in">
<h2 class="text-4xl md:text-[2.66rem] text-white mb-8">Ready to Decarbonize?</h2>
<p class="text-[1rem] text-slate-400 mb-10 max-w-2xl mx-auto">Whether you are looking for a Turnkey EPC build or a Zero-CAPEX EMC/PPA partnership, our engineering teams are ready to assess your site.</p>
<h2 class="text-4xl md:text-[2.66rem] text-slate-900 mb-8 drop-shadow-sm">Ready to Decarbonize?</h2>
<p class="text-[1rem] text-slate-600 mb-10 max-w-2xl mx-auto">Whether you are looking for a Turnkey EPC build or a Zero-CAPEX EMC/PPA partnership, our engineering teams are ready to assess your site.</p>
<div class="flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-6">
<a href="/contact-us" class="magnetic-btn hover-trigger bg-primary text-black px-12 py-5 rounded-full text-lg hover:shadow-[0_0_40px_rgba(19,236,164,0.4)] transition-all flex items-center justify-center">
<!-- description -> &#xe873; -->
<a href="/contact-us" class="magnetic-btn hover-trigger bg-primary text-black px-12 py-5 rounded-full text-lg shadow-sm hover:shadow-[0_0_40px_rgba(19,236,164,0.4)] transition-all flex items-center justify-center">
<span class="material-symbols-outlined mr-2 pointer-events-none">&#xe873;</span> <span class="pointer-events-none">Connect with Local Experts</span>
</a>
<!-- <button class="magnetic-btn hover-trigger hover-emc bg-transparent border border-white/20 text-white px-12 py-5 rounded-full text-lg hover:border-[#ff6b00] hover:text-[#ff6b00] transition-all">
<span class="pointer-events-none">Become a Channel Partner</span>
</button> -->
</div>
</div>
</section>
<!-- ================= 核心依赖与高级 JS 交互引擎 ================= -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/aos/2.3.4/aos.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vanilla-tilt/1.7.2/vanilla-tilt.min.js"></script>
<!-- 引入 Swiper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/11.0.5/swiper-bundle.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', () => {
// 动态计算公司成立年份 (从 2009 年起算)
// 动态计算公司成立年份
const calculateYearsOfExperience = () => {
const startYear = 2009;
const currentYear = new Date().getFullYear();
@ -1005,7 +892,7 @@
if(typeof AOS !== 'undefined') AOS.init({ duration: 800, once: true, offset: 50 });
if(typeof VanillaTilt !== 'undefined') VanillaTilt.init(document.querySelectorAll("[data-tilt]"), { max: 5, speed: 400, glare: true, "max-glare": 0.05, scale: 1.02 });
// 2. 双轨流程切换交互 (Tab Workflows)
// 2. 双轨流程切换交互 (Tab Workflows) - 针对亮色系修正文字颜色反馈
const btnEpc = document.getElementById('btn-epc');
const btnEmc = document.getElementById('btn-emc');
const contentEpc = document.getElementById('content-epc');
@ -1014,10 +901,10 @@
const switchTab = (tab) => {
if (tab === 'epc') {
btnEpc.classList.add('text-black');
btnEpc.classList.remove('text-slate-400');
btnEmc.classList.remove('text-black');
btnEmc.classList.add('text-slate-400');
btnEpc.classList.add('text-slate-900');
btnEpc.classList.remove('text-slate-500');
btnEmc.classList.remove('text-slate-900');
btnEmc.classList.add('text-slate-500');
slider.style.transition = 'all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1)';
slider.style.transform = 'translateX(0)';
@ -1026,10 +913,10 @@
contentEmc.classList.remove('active');
contentEpc.classList.add('active');
} else {
btnEmc.classList.add('text-black');
btnEmc.classList.remove('text-slate-400');
btnEpc.classList.remove('text-black');
btnEpc.classList.add('text-slate-400');
btnEmc.classList.add('text-slate-900');
btnEmc.classList.remove('text-slate-500');
btnEpc.classList.remove('text-slate-900');
btnEpc.classList.add('text-slate-500');
slider.style.transition = 'all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1)';
slider.style.transform = 'translateX(100%)';
@ -1042,20 +929,6 @@
if(btnEpc) btnEpc.addEventListener('click', () => switchTab('epc'));
if(btnEmc) btnEmc.addEventListener('click', () => switchTab('emc'));
// 3. 导航栏滚效 (虽然 HTML 移除了,但保留 JS 防报错)
const nav = document.getElementById('main-nav');
if(nav) {
window.addEventListener('scroll', () => {
if(window.scrollY > 50) {
nav.classList.add('bg-background-dark/80', 'backdrop-blur-xl', 'py-4', 'border-white/5');
nav.classList.remove('bg-transparent', 'py-6', 'border-transparent');
} else {
nav.classList.remove('bg-background-dark/80', 'backdrop-blur-xl', 'py-4', 'border-white/5');
nav.classList.add('bg-transparent', 'py-6', 'border-transparent');
}
});
}
// 4. 自定义光标
const cursor = document.getElementById('energy-cursor');
const hoverTriggers = document.querySelectorAll('a, button, .hover-trigger');
@ -1105,39 +978,6 @@
});
}
// 7. 滚动数字
const counters = document.querySelectorAll('.count-up');
const counterSection = document.getElementById('counter-section');
let started = false;
const runCounter = () => {
counters.forEach(counter => {
const target = parseFloat(counter.getAttribute('data-target'));
const isFloat = counter.getAttribute('data-is-float') === 'true';
const totalFrames = Math.round(2000 / (1000 / 60));
let currentFrame = 0;
const updateCounter = () => {
currentFrame++;
const progress = currentFrame / totalFrames === 1 ? 1 : 1 - Math.pow(2, -10 * (currentFrame / totalFrames));
const currentVal = target * progress;
counter.innerText = isFloat ? currentVal.toFixed(1) : Math.floor(currentVal);
if (currentFrame < totalFrames) requestAnimationFrame(updateCounter);
else counter.innerText = target;
};
updateCounter();
});
};
if (counterSection) {
if( 'IntersectionObserver' in window) {
const observer = new IntersectionObserver((entries) => {
if (entries[0].isIntersecting && !started) {
started = true; runCounter();
}
}, { threshold: 0.5 });
observer.observe(counterSection);
}
}
// 8. Swiper 左右画中画初始化
if (typeof Swiper !== 'undefined') {
const commonConfig = {
@ -1166,7 +1006,4 @@
});
</script>
</body>
</html>
</html>

File diff suppressed because it is too large Load Diff

@ -294,7 +294,7 @@
-->
<div data-category="residential" class="product-card break-inside-avoid bg-white dark:bg-card-dark rounded-xl overflow-hidden border border-[#e5e7eb] dark:border-[#2a3441] shadow-sm hover:shadow-card-hover hover:border-primary/40 group" data-aos="fade-up" data-aos-delay="0">
<div class="skeleton-wrapper relative h-64 w-full bg-gradient-to-b from-[#787878] to-white dark:from-[#333] dark:to-[#111318] flex items-center justify-center p-6 transition-all duration-500 group-hover:from-[#666666] group-hover:to-[#e6fcf5]">
<div class="absolute top-4 right-4 bg-white/90 dark:bg-[#2a3441]/90 backdrop-blur text-primary text-xs px-2.5 py-1 rounded shadow-sm border border-primary/10 z-10">
<div class="absolute top-4 right-4 bg-white/90 dark:bg-[#2a3441]/90 backdrop-blur text-[#295ca8] text-xs px-2.5 py-1 rounded shadow-sm border border-primary/10 z-10">
≥93% Efficiency
</div>
<div class="lazy-target w-full h-full bg-center bg-no-repeat bg-contain transform group-hover:scale-105 transition-transform duration-500" data-alt="Liquid-cooled Battery Cabinet 418kWh"
@ -328,7 +328,7 @@
<p class="text-[#5f6e8c] dark:text-gray-400 text-sm leading-relaxed mb-6 line-clamp-4">
Nenghui all-in-one liquid-cooled ESS cabinet adopts advanced cabinet-level liquid cooling and temperature balancing strategy. The cell temperature difference is less than 3°C, which further improves the consistency of cell temperature and extends the battery life. The modular design makes the parallel solution more flexible and has a higher energy density, which significantly improves the economy, safety and construction convenience of ESS projects.
</p>
<a href="https://nenghui.com/products/ne418l/">
<a href="/products/ne418l/">
<button class="w-full flex items-center justify-center gap-2 h-11 rounded-lg bg-[#f0f1f5] dark:bg-[#2a3441] text-[#111318] dark:text-white text-sm hover:bg-[#e0e2e8] dark:hover:bg-[#374151] transition-all group-hover:bg-primary group-hover:text-white group-hover:shadow-glow">
<span>View Datasheet</span>
<span class="material-symbols-outlined text-[18px] group-hover:translate-x-1 transition-transform">&#xe5c8;</span>
@ -378,7 +378,7 @@
</div>-->
<div data-category="residential" class="product-card break-inside-avoid bg-white dark:bg-card-dark rounded-xl overflow-hidden border border-[#e5e7eb] dark:border-[#2a3441] shadow-sm hover:shadow-card-hover hover:border-primary/40 group" data-aos="fade-up" data-aos-delay="0">
<div class=" skeleton-wrapper relative h-64 w-full bg-gradient-to-b from-[#787878] to-white dark:from-[#333] dark:to-[#111318] flex items-center justify-center p-6 transition-all duration-500 group-hover:from-[#666666] group-hover:to-[#e6fcf5]">
<div class="absolute top-4 right-4 bg-white/90 dark:bg-[#2a3441]/90 backdrop-blur text-primary text-xs px-2.5 py-1 rounded shadow-sm border border-primary/10 z-10">
<div class="absolute top-4 right-4 bg-white/90 dark:bg-[#2a3441]/90 backdrop-blur text-[#295ca8] text-xs px-2.5 py-1 rounded shadow-sm border border-primary/10 z-10">
≥90% Efficiency
</div>
<div class="lazy-target w-full h-full bg-center bg-no-repeat bg-contain transform group-hover:scale-105 transition-transform duration-500" data-alt="All-in-one Liquid-cooled ESS Cabinet 233kWh"
@ -412,7 +412,7 @@
<p class="text-[#5f6e8c] dark:text-gray-400 text-sm leading-relaxed mb-6 line-clamp-4">
Nenghui all-in-one liquid-cooled ESS cabinet adopts advanced cabinet-level liquid cooling and temperature balancing strategy. The cell temperature difference is less than 3°C, which further improves the consistency of cell temperature and extends the battery life. The modular design makes the parallel solution more flexible and has a higher energy density, which significantly improves the economy, safety and construction convenience of ESS projects.
</p>
<a href="https://nenghui.com/products/ne233l/">
<a href="/products/ne233l/">
<button class="w-full flex items-center justify-center gap-2 h-11 rounded-lg bg-[#f0f1f5] dark:bg-[#2a3441] text-[#111318] dark:text-white text-sm hover:bg-[#e0e2e8] dark:hover:bg-[#374151] transition-all group-hover:bg-primary group-hover:text-white group-hover:shadow-glow">
<span>View Datasheet</span>
<span class="material-symbols-outlined text-[18px] group-hover:translate-x-1 transition-transform">&#xe5c8;</span>
@ -456,7 +456,7 @@
-->
<div data-category="residential" class="product-card break-inside-avoid bg-white dark:bg-card-dark rounded-xl overflow-hidden border border-[#e5e7eb] dark:border-[#2a3441] shadow-sm hover:shadow-card-hover hover:border-primary/40 group" data-aos="fade-up" data-aos-delay="0">
<div class=" skeleton-wrapper relative h-64 w-full bg-gradient-to-b from-[#787878] to-white dark:from-[#333] dark:to-[#111318] flex items-center justify-center p-6 transition-all duration-500 group-hover:from-[#666666] group-hover:to-[#e6fcf5]">
<div class="absolute top-4 right-4 bg-white/90 dark:bg-[#2a3441]/90 backdrop-blur text-primary text-xs px-2.5 py-1 rounded shadow-sm border border-primary/10 z-10">
<div class="absolute top-4 right-4 bg-white/90 dark:bg-[#2a3441]/90 backdrop-blur text-[#295ca8] text-xs px-2.5 py-1 rounded shadow-sm border border-primary/10 z-10">
≥90% Efficiency
</div>
<div class="lazy-target w-full h-full bg-center bg-no-repeat bg-contain transform group-hover:scale-105 transition-transform duration-500"
@ -492,7 +492,7 @@
Nenghui all-in-one liquid-cooled ESS cabinet adopts advanced cabinet-level liquid cooling and temperature balancing strategy. The cell temperature difference is less than 3°C, which further improves the consistency of cell temperature and extends the battery life. The modular design makes the parallel solution more flexible and has a higher energy density, which significantly improves the economy, safety and construction convenience of ESS projects.
</p>
<a href="https://nenghui.com/products/ne261l/">
<a href="/products/ne261l/">
<button class="w-full flex items-center justify-center gap-2 h-11 rounded-lg bg-[#f0f1f5] dark:bg-[#2a3441] text-[#111318] dark:text-white text-sm hover:bg-[#e0e2e8] dark:hover:bg-[#374151] transition-all group-hover:bg-primary group-hover:text-white group-hover:shadow-glow">
<span>View Datasheet</span>
<span class="material-symbols-outlined text-[18px] group-hover:translate-x-1 transition-transform">&#xe5c8;</span>
@ -534,7 +534,7 @@
</div>-->
<div data-category="residential" class="product-card break-inside-avoid bg-white dark:bg-card-dark rounded-xl overflow-hidden border border-[#e5e7eb] dark:border-[#2a3441] shadow-sm hover:shadow-card-hover hover:border-primary/40 group" data-aos="fade-up" data-aos-delay="0">
<div class="skeleton-wrapper relative h-64 w-full bg-gradient-to-b from-[#787878] to-white dark:from-[#333] dark:to-[#111318] flex items-center justify-center p-6 transition-all duration-500 group-hover:from-[#666666] group-hover:to-[#e6fcf5]">
<div class="absolute top-4 right-4 bg-white/90 dark:bg-[#2a3441]/90 backdrop-blur text-primary text-xs px-2.5 py-1 rounded shadow-sm border border-primary/10 z-10">
<div class="absolute top-4 right-4 bg-white/90 dark:bg-[#2a3441]/90 backdrop-blur text-[#295ca8] text-xs px-2.5 py-1 rounded shadow-sm border border-primary/10 z-10">
≥93% Efficiency
</div>
<div class="lazy-target w-full h-full bg-center bg-no-repeat bg-contain transform group-hover:scale-105 transition-transform duration-500"
@ -569,7 +569,7 @@
<p class="text-[#5f6e8c] dark:text-gray-400 text-sm leading-relaxed mb-6 line-clamp-4">
Nenghuis N20HC5000 factory-assembled DC battery storage container ships with 12 battery racks on the 5.015MWh 20ft container, power distribution cabinet, fire suppression system and advanced liquid-cooling system. And the module is made up of 1P104S LFP prismatic cells. Each cell undergoes strict quality inspections to ensure high energy density, wide operating temperature range, extended battery life, as well as the highest protection and safety features.
</p>
<a href="https://nenghui.com/products/n20hc5000/">
<a href="/products/n20hc5000/">
<button class="w-full flex items-center justify-center gap-2 h-11 rounded-lg bg-[#f0f1f5] dark:bg-[#2a3441] text-[#111318] dark:text-white text-sm hover:bg-[#e0e2e8] dark:hover:bg-[#374151] transition-all group-hover:bg-primary group-hover:text-white group-hover:shadow-glow">
<span>View Datasheet</span>
<span class="material-symbols-outlined text-[18px] group-hover:translate-x-1 transition-transform">&#xe5c8;</span>
@ -581,12 +581,12 @@
<!-- Card 5: High Performance Residential -->
<div data-category="residential" class="product-card break-inside-avoid bg-white dark:bg-card-dark rounded-xl overflow-hidden border border-[#e5e7eb] dark:border-[#2a3441] shadow-sm hover:shadow-card-hover hover:border-primary/40 group" data-aos="fade-up" data-aos-delay="100">
<div class="skeleton-wrapper relative h-64 w-full bg-gradient-to-b from-[#787878] to-white dark:from-[#333] dark:to-[#111318] flex items-center justify-center p-6 transition-all duration-500 group-hover:from-[#666666] group-hover:to-[#e6fcf5]">
<div class="absolute top-4 right-4 bg-white/90 dark:bg-[#2a3441]/90 backdrop-blur text-primary text-xs px-2.5 py-1 rounded shadow-sm border border-primary/10 z-10">
<div class="absolute top-4 right-4 bg-white/90 dark:bg-[#2a3441]/90 backdrop-blur text-[#295ca8] text-xs px-2.5 py-1 rounded shadow-sm border border-primary/10 z-10">
≥95% Efficiency
</div>
<div class="lazy-target w-full h-full bg-center bg-no-repeat bg-contain transform group-hover:scale-105 transition-transform duration-500"
data-alt="Max EV Charging Power: 180kW ESS: 261kWh"
data-bg="https://nenghui.com/wp-content/uploads/2026/02/product-NH-ICS180-261-scaled.jpg"></div>
data-bg="https://nenghui.com/wp-content/uploads/2026/03/NH-ICS180-261-2-1.jpg"></div>
</div>
<div class="p-5">
<div class="flex items-center gap-2 mb-3">
@ -616,7 +616,7 @@
<!-- Our premium solid-state solution offering higher energy density and improved safety profile in a slimmer form factor. -->
Nenghui ESS-Charger integrated charging and storage solution combines DC fast charging with a built-in 261 kWh battery. It enables peak shaving and load shifting to reduce grid impact and enhances operational flexibility. It delivers efficient and reliable fast charging (1*180kw or 2*90kw) while maintaining compatibility with multiple global charging standards. An intelligent operation platform supports OCPP integration, real-time load balancing, and remote monitoring, ensuring optimized asset utilization and seamless coordination with the overall power system.
</p>
<a href="https://nenghui.com/products/nh-ics180-261/">
<a href="/products/nh-ics180-261/">
<button class="w-full flex items-center justify-center gap-2 h-11 rounded-lg bg-[#f0f1f5] dark:bg-[#2a3441] text-[#111318] dark:text-white text-sm hover:bg-[#e0e2e8] dark:hover:bg-[#374151] transition-all group-hover:bg-primary group-hover:text-white group-hover:shadow-glow">
<span>View Datasheet</span>
</button>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -57,7 +57,7 @@
</div>
<div class="footer-nav-column">
<h3 class="footer-nav-title">PRODUCTS & SOLUTIONNS</h3>
<h3 class="footer-nav-title">PRODUCTS & SOLUTIONS</h3>
<ul class="footer-nav-list">
<li><a href="/pros/">Products</a></li>
<li><a href="/epc-solutions">EPC & Energy Solutions</a></li>

@ -29,7 +29,9 @@
"background-dark": "#10221c",
"pearlescent": "#f0f7f5",
"silver-accent": "#e2e8f0",
"about-us": "#ff6b00"
"about-us": "#ff6b00",
"primary-dark": "#0da670", // Added for contrast on light mode
"accent": "#ff6b00"
},
fontFamily: {
"display": ["Montserrat", "sans-serif"],
@ -104,8 +106,8 @@
},
blobSpin: {
'0%': { transform: 'rotate(0deg) scale(1)' },
'50%': { transform: 'rotate(180deg) scale(1.1)' },
'100%': { transform: 'rotate(360deg) scale(1)' },
'50%': { transform: 'rotate(180deg) translate(-80%, 50%) scale(1.1)' },
'100%': { transform: 'rotate(360deg) translate(0) scale(1)' },
}
},
animation: {
@ -218,7 +220,7 @@
<body <?php body_class(); ?>>
<nav class="main-nav">
<div class="nav-container">
<div class="nav-logo">
<div class="nav-logo flex items-center">
<a class="flex flex-col" href="<?php echo home_url(); ?>">
<?php
$logo = get_theme_mod('site_logo');
@ -227,8 +229,12 @@
<?php else: ?>
<img src="https://nenghui.com/wp-content/uploads/2025/11/logo-2.png" alt="logo">
<?php endif; ?>
<p class="text-[12px] text-[#517bb9] text-justify pl-1">Smart Energy, Digital Future </p>
<p data-no-translation class="text-[12px] text-[#517bb9] text-justify pl-1 max-w-[12rem] hover:text-normal">Cleaner Energy. Greater Value. </p>
</a>
<a href="https://cn.nenghui.com/" class="ml-[2rem] text-[#295ca8] cursor-pointer relative group hover:text-[#295ca8]" data-no-translation>
中国版
<div class="absolute bottom-0 left-0 w-0 h-[2px] bg-[#295ca8] transition-all duration-300 group-hover:w-full"></"></div>
</a>
</div>
<button class="menu-toggle" aria-label="菜单">

@ -360,7 +360,7 @@
}
/* 响应式设计 */
@media screen and (max-width: 768px) {
@media screen and (max-width: 1225px) {
.menu-toggle {
display: block;
}

@ -31,7 +31,7 @@ if (empty($banner_url)) {
</div>
</div>
<!-- 产品详情内容 -->
<div class="container mt-5">
<div class="container mt-5" style="margin: 1rem auto; ">
<?php
// 获取产品特性显示开关
$show_features = get_post_meta(get_the_ID(), '_show_product_features', true);

Loading…
Cancel
Save