{
    "id": 3529,
    "date": "2021-09-10T13:35:04",
    "date_gmt": "2021-09-10T13:35:04",
    "guid": {
        "rendered": "http:\/\/dummy.xtemos.com\/woodmart2\/elementor\/?page_id=3529"
    },
    "modified": "2026-03-19T18:00:54",
    "modified_gmt": "2026-03-19T10:00:54",
    "slug": "home-hardware",
    "status": "publish",
    "type": "page",
    "link": "https:\/\/cn.inffnitech.com\/en\/",
    "title": {
        "rendered": "Home Hardware"
    },
    "content": {
        "rendered": "<div data-elementor-type=\"wp-page\" data-elementor-id=\"3529\" class=\"elementor elementor-3529\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1b04060 e-con-full e-flex e-con e-parent\" data-id=\"1b04060\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ccbf83d elementor-widget elementor-widget-inffni-360\" data-id=\"ccbf83d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"inffni-360.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"inffni-360-widget-container\" data-arrow-hover-effect=\"scale-up\"\n     data-arrow-color-hover=\"#56D0D5\">\n\t\t\t<div class=\"inffni-360-carousel swiper arrow-vis-desktop-hover\" data-inffni-settings=\"{&quot;autoplay_enabled&quot;:true,&quot;default_duration&quot;:5000,&quot;pause_on_hover&quot;:true,&quot;loop&quot;:true,&quot;speed&quot;:800,&quot;effect&quot;:&quot;fade&quot;}\">\n\t\t\t\t<div class=\"swiper-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide inffni-slide elementor-repeater-item-574bdb0\" data-type=\"video\" data-title=\"Rover X1\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<!-- Media -->\n\t\t\t\t\t\t\t<div class=\"inffni-media-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<video src=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/01\/DOBOT_ROVER_X1_15s_COMPANION_4K-1.mp4\" class=\"inffni-media-element inffni-video\" playsinline muted loop data-video-autoplay=\"yes\"><\/video>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<!-- Content -->\n\t\t\t\t\t\t\t<div class=\"inffni-overlay-container\">\n\t\t\t\t\t\t\t\t<div class=\"inffni-overlay-inner\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h3 class=\"inffni-slide-title\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tRover X1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/h3>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"inffni-slide-subtitle\">Your First Robot Dog<\/div>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"inffni-buttons-row\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/cn.inffnitech.com\/zh\/rover-x1\/\" class=\"inffni-btn inffni-btn-learn\">Learn More<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3c542c8 e-flex e-con-boxed e-con e-parent\" data-id=\"3c542c8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-8fc7e7b e-con-full e-flex e-con e-child\" data-id=\"8fc7e7b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-ed93238 e-con-full e-flex e-con e-child\" data-id=\"ed93238\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c30b102 elementor-widget elementor-widget-rover_series_slider\" data-id=\"c30b102\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"rover_series_slider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t\t\t<div class=\"rover-series-wrapper rs-anim-fade-up rs-hover-none\" id=\"rs-l2l-c30b102\">\n\t\t\t\t\t\n\t\t\t\t\t<!-- Top Bar -->\n\t\t\t\t\t<div class=\"rs-l2l-top-bar\">\n\t\t\t\t\t\t<div class=\"rs-l2l-tabs swiper-pagination-custom\"><\/div>\n\t\t\t\t\t\t<div class=\"rs-l2l-progress-container\">\n\t\t\t\t\t\t\t<div class=\"rs-l2l-progress-track\">\n\t\t\t\t\t\t\t\t<div class=\"rs-l2l-progress-fill\"><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<!-- Slider -->\n\t\t\t\t\t<div class=\"swiper rs-l2l-swiper\">\n\t\t\t\t\t\t<div class=\"swiper-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide rs-l2l-slide\">\n\t\t\t\t\t\t\t\t\t<div class=\"rs-l2l-image-container\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/\u5fae\u4fe1\u56fe\u7247_20260319174454_942_1505-scaled.jpg\" alt=\"Rover Series\" \/>\n\t\t\t\t\t\t\t\t\t\t<div class=\"rs-l2l-content\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"rs-l2l-content-inner\">\n\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"rs-l2l-title rs-anim-el\">Rover Series<\/h2>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"rs-l2l-desc rs-anim-el\">From Lab to Life.<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/cn.inffnitech.com\/zh\/rover-x1\/\" class=\"rs-l2l-btn rs-anim-el\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tLearn More\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t<style>\n\t\t\t\t\t#rs-l2l-c30b102 { position: relative; width: 100%; }\n\t\t\t\t\t#rs-l2l-c30b102 .rs-l2l-top-bar { display: flex; justify-content: space-between; align-items: center; }\n\t\t\t\t\t#rs-l2l-c30b102 .rs-l2l-tabs { display: flex; flex-wrap: wrap; }\n\t\t\t\t\t\n\t\t\t\t\t#rs-l2l-c30b102 .swiper-pagination-bullet.rs-l2l-tab-bullet {\n\t\t\t\t\t\twidth: auto !important; height: auto !important; opacity: 1 !important;\n\t\t\t\t\t\tborder-radius: 0; display: inline-flex !important; align-items: center; justify-content: center;\n\t\t\t\t\t\tbackground: none; margin: 0 !important; text-indent: 0 !important; box-sizing: border-box !important;\n\t\t\t\t\t}\n\n\t\t\t\t\t#rs-l2l-c30b102 .swiper-button-next, \n\t\t\t\t\t#rs-l2l-c30b102 .swiper-button-prev {\n\t\t\t\t\t\tdisplay: flex; align-items: center; justify-content: center; z-index: 50; background-image: none !important; \n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t#rs-l2l-c30b102 .rs-l2l-progress-track { width: 100%; background: #e0e0e0; position: relative; }\n\t\t\t\t\t#rs-l2l-c30b102 .rs-l2l-progress-fill { width: 0%; height: 100%; background: #3CDBC0; position: absolute; left: 0; top: 0; transition: width 0.3s linear; }\n\t\t\t\t\t#rs-l2l-c30b102 .rs-l2l-swiper { width: 100%; overflow: hidden; }\n\t\t\t\t\t#rs-l2l-c30b102 .rs-l2l-image-container { position: relative; overflow: hidden; }\n\t\t\t\t\t#rs-l2l-c30b102 .rs-l2l-slide img { width: 100%; height: auto; display: block; transform-origin: center; will-change: transform; }\n\t\t\t\t\t#rs-l2l-c30b102 .rs-l2l-content { position: absolute; z-index: 10; display: block; }\n\t\t\t\t\t#rs-l2l-c30b102 .rs-l2l-content-inner { display: flex; flex-direction: column; width: 100%; }\n\t\t\t\t\t#rs-l2l-c30b102 .rs-l2l-btn { display: inline-block; text-decoration: none; margin-top: 10px; width: fit-content; transition: all 0.3s ease; }\n\n\t\t\t\t\t\/* --- HOVER EFFECTS --- *\/\n\t\t\t\t\t#rs-l2l-c30b102.rs-hover-zoom-in .rs-l2l-image-container:hover img { transform: scale(1.1); }\n\t\t\t\t\t#rs-l2l-c30b102.rs-hover-zoom-out .rs-l2l-image-container:hover img { transform: scale(0.95); }\n\t\t\t\t\t#rs-l2l-c30b102.rs-hover-grayscale-color img { filter: grayscale(100%); transition: all 0.5s ease; }\n\t\t\t\t\t#rs-l2l-c30b102.rs-hover-grayscale-color .rs-l2l-image-container:hover img { filter: grayscale(0%); }\n\t\t\t\t\t#rs-l2l-c30b102.rs-hover-opacity .rs-l2l-image-container:hover img { opacity: 0.8; }\n\n\t\t\t\t\t\/* --- TEXT ANIMATION CORE --- *\/\n\t\t\t\t\t\/* 1. Hide Elements by default if animation is selected *\/\n\t\t\t\t\t#rs-l2l-c30b102:not(.rs-anim-none) .rs-anim-el {\n\t\t\t\t\t\topacity: 0;\n\t\t\t\t\t\twill-change: transform, opacity;\n\t\t\t\t\t}\n\n\t\t\t\t\t\/* 2. When 'play-anim' class is added via JS (after slide stop), trigger animation *\/\n\t\t\t\t\t#rs-l2l-c30b102:not(.rs-anim-none) .swiper-slide-active.play-anim .rs-anim-el {\n\t\t\t\t\t\tanimation-duration: 0.8s;\n\t\t\t\t\t\tanimation-timing-function: cubic-bezier(0.25, 1, 0.5, 1);\n\t\t\t\t\t\tanimation-fill-mode: forwards;\n\t\t\t\t\t}\n\n\t\t\t\t\t\/* 3. Stagger Delays *\/\n\t\t\t\t\t#rs-l2l-c30b102 .swiper-slide-active.play-anim .rs-anim-el:nth-child(1) { animation-delay: 0.1s; } \/* Title *\/\n\t\t\t\t\t#rs-l2l-c30b102 .swiper-slide-active.play-anim .rs-anim-el:nth-child(2) { animation-delay: 0.2s; } \/* Desc *\/\n\t\t\t\t\t#rs-l2l-c30b102 .swiper-slide-active.play-anim .rs-anim-el:nth-child(3) { animation-delay: 0.3s; } \/* Btn *\/\n\n\t\t\t\t\t\/* --- KEYFRAMES (9 TYPES) --- *\/\n\t\t\t\t\t\n\t\t\t\t\t\/* Fade Up *\/\n\t\t\t\t\t@keyframes rsFadeUp { from { opacity: 0; transform: translateY(50px); } to { opacity: 1; transform: translateY(0); } }\n\t\t\t\t\t#rs-l2l-c30b102.rs-anim-fade-up .swiper-slide-active.play-anim .rs-anim-el { animation-name: rsFadeUp; }\n\n\t\t\t\t\t\/* Fade Down *\/\n\t\t\t\t\t@keyframes rsFadeDown { from { opacity: 0; transform: translateY(-50px); } to { opacity: 1; transform: translateY(0); } }\n\t\t\t\t\t#rs-l2l-c30b102.rs-anim-fade-down .swiper-slide-active.play-anim .rs-anim-el { animation-name: rsFadeDown; }\n\n\t\t\t\t\t\/* Fade Left *\/\n\t\t\t\t\t@keyframes rsFadeLeft { from { opacity: 0; transform: translateX(50px); } to { opacity: 1; transform: translateX(0); } }\n\t\t\t\t\t#rs-l2l-c30b102.rs-anim-fade-left .swiper-slide-active.play-anim .rs-anim-el { animation-name: rsFadeLeft; }\n\n\t\t\t\t\t\/* Fade Right *\/\n\t\t\t\t\t@keyframes rsFadeRight { from { opacity: 0; transform: translateX(-50px); } to { opacity: 1; transform: translateX(0); } }\n\t\t\t\t\t#rs-l2l-c30b102.rs-anim-fade-right .swiper-slide-active.play-anim .rs-anim-el { animation-name: rsFadeRight; }\n\n\t\t\t\t\t\/* Zoom In *\/\n\t\t\t\t\t@keyframes rsZoomIn { from { opacity: 0; transform: scale(0.5); } to { opacity: 1; transform: scale(1); } }\n\t\t\t\t\t#rs-l2l-c30b102.rs-anim-zoom-in .swiper-slide-active.play-anim .rs-anim-el { animation-name: rsZoomIn; }\n\n\t\t\t\t\t\/* Zoom Out *\/\n\t\t\t\t\t@keyframes rsZoomOut { from { opacity: 0; transform: scale(1.5); } to { opacity: 1; transform: scale(1); } }\n\t\t\t\t\t#rs-l2l-c30b102.rs-anim-zoom-out .swiper-slide-active.play-anim .rs-anim-el { animation-name: rsZoomOut; }\n\n\t\t\t\t\t\/* Blur In *\/\n\t\t\t\t\t@keyframes rsBlurIn { from { opacity: 0; filter: blur(20px); transform: scale(1.1); } to { opacity: 1; filter: blur(0); transform: scale(1); } }\n\t\t\t\t\t#rs-l2l-c30b102.rs-anim-blur-in .swiper-slide-active.play-anim .rs-anim-el { animation-name: rsBlurIn; }\n\n\t\t\t\t\t\/* Flip Up *\/\n\t\t\t\t\t@keyframes rsFlipUp { from { opacity: 0; transform: perspective(1000px) rotateX(90deg); } to { opacity: 1; transform: perspective(1000px) rotateX(0); } }\n\t\t\t\t\t#rs-l2l-c30b102.rs-anim-flip-up .swiper-slide-active.play-anim .rs-anim-el { animation-name: rsFlipUp; }\n\n\t\t\t\t\t\/* Bounce Up *\/\n\t\t\t\t\t@keyframes rsBounceUp { \n\t\t\t\t\t\t0% { opacity: 0; transform: translateY(50px); } \n\t\t\t\t\t\t60% { opacity: 1; transform: translateY(-10px); } \n\t\t\t\t\t\t100% { opacity: 1; transform: translateY(0); } \n\t\t\t\t\t}\n\t\t\t\t\t#rs-l2l-c30b102.rs-anim-bounce-up .swiper-slide-active.play-anim .rs-anim-el { animation-name: rsBounceUp; }\n\n\t\t\t\t<\/style>\n\n\t\t\t\t<script>\n\t\t\t\tjQuery(document).ready(function($) {\n\t\t\t\t\tconst uid = 'rs-l2l-c30b102';\n\t\t\t\t\tconst container = $('#' + uid);\n\t\t\t\t\tconst tabLabels = [\n\t\t\t\t\t\t\"INFFNI Rover X1\",\t\t\t\t\t];\n\n\t\t\t\t\tconst autoplayConfig = false;\n\t\t\t\t\tconst loopConfig = true;\n\n\t\t\t\t\tconst swiper = new Swiper(container.find('.rs-l2l-swiper')[0], {\n\t\t\t\t\t\tslidesPerView: 1,\n\t\t\t\t\t\teffect: 'slide',\n\t\t\t\t\t\tspeed: 600, \n\t\t\t\t\t\tloop: loopConfig,\n\t\t\t\t\t\tautoplay: autoplayConfig,\n\t\t\t\t\t\tnavigation: {\n\t\t\t\t\t\t\tnextEl: container.find('.swiper-button-next')[0],\n\t\t\t\t\t\t\tprevEl: container.find('.swiper-button-prev')[0],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpagination: {\n\t\t\t\t\t\t\tel: container.find('.rs-l2l-tabs')[0],\n\t\t\t\t\t\t\tclickable: true,\n\t\t\t\t\t\t\ttype: 'bullets', \n\t\t\t\t\t\t\trenderBullet: function (index, className) {\n\t\t\t\t\t\t\t\tlet label = tabLabels[index] ? tabLabels[index] : 'Slide ' + (index+1);\n\t\t\t\t\t\t\t\treturn '<span class=\"' + className + ' rs-l2l-tab-bullet\">' + label + '<\/span>';\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\ton: {\n\t\t\t\t\t\t\tinit: function() { \n\t\t\t\t\t\t\t\tupdateProgress(this);\n\t\t\t\t\t\t\t\ttriggerAnimation(this); \/\/ Play on load\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tslideChange: function() { \n\t\t\t\t\t\t\t\tupdateProgress(this);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\/\/ IMPORTANT: Reset animation class when moving\n\t\t\t\t\t\t\tslideChangeTransitionStart: function() {\n\t\t\t\t\t\t\t\tcontainer.find('.swiper-slide').removeClass('play-anim');\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\/\/ IMPORTANT: Add class ONLY when slide stops. \n\t\t\t\t\t\t\t\/\/ This forces the browser to treat it as a new event, making animations visually obvious.\n\t\t\t\t\t\t\tslideChangeTransitionEnd: function() {\n\t\t\t\t\t\t\t\ttriggerAnimation(this);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tfunction triggerAnimation(swiper) {\n\t\t\t\t\t\t\/\/ Add 'play-anim' to the active slide (and duplicates if looping)\n\t\t\t\t\t\t$(swiper.slides[swiper.activeIndex]).addClass('play-anim');\n\t\t\t\t\t\t\n\t\t\t\t\t\t\/\/ If Swiper loop is on, activeIndex might refer to a cloned slide.\n\t\t\t\t\t\t\/\/ We ensure the visual active slide gets the class.\n\t\t\t\t\t\tcontainer.find('.swiper-slide-active').addClass('play-anim');\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction updateProgress(swiper) {\n\t\t\t\t\t\tlet totalSlides = tabLabels.length; \n\t\t\t\t\t\tlet currentRealIndex = swiper.realIndex; \n\t\t\t\t\t\tlet progress = (currentRealIndex + 1) \/ totalSlides;\n\t\t\t\t\t\tlet widthPercent = progress * 100;\n\t\t\t\t\t\tcontainer.find('.rs-l2l-progress-fill').css('width', widthPercent + '%');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t<\/script>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d844b6d elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con-boxed elementor-invisible e-con e-parent\" data-id=\"d844b6d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInUp&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-3a323b9 e-con-full e-flex e-con e-child\" data-id=\"3a323b9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-3090e7a e-con-full e-flex e-con e-child\" data-id=\"3090e7a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-4c2c888 e-con-full e-flex e-con e-child\" data-id=\"4c2c888\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-e2d9933 e-con-full e-flex e-con e-child\" data-id=\"e2d9933\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-424091d elementor-align-center elementor-widget__width-initial elementor-widget elementor-widget-button\" data-id=\"424091d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Rover<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6b21b19 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"6b21b19\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Hexplorer<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c91c45c elementor-align-center elementor-widget elementor-widget-button\" data-id=\"c91c45c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Hexplorer<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2541610 e-con-full e-flex e-con e-child\" data-id=\"2541610\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1fadf1e elementor-widget elementor-widget-image\" data-id=\"1fadf1e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"300\" height=\"2\" src=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/Group-17.png\" class=\"attachment-full size-full wp-image-28640\" alt=\"\" srcset=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/Group-17.png 300w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/Group-17-150x2.png 150w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/Group-17-100x2.png 100w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/Group-17-50x2.png 50w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4399f2f e-con-full e-flex e-con e-child\" data-id=\"4399f2f\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-31ac08d e-con-full e-flex e-con e-child\" data-id=\"31ac08d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dd61975 elementor-widget elementor-widget-image\" data-id=\"dd61975\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"24\" height=\"24\" src=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/Expand_right_light-2.png\" class=\"attachment-full size-full wp-image-28642\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-27291f9 elementor-widget elementor-widget-image\" data-id=\"27291f9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"24\" height=\"24\" src=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/Expand_right_light-3.png\" class=\"attachment-full size-full wp-image-28643\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7a600d0 e-con-full e-flex e-con e-child\" data-id=\"7a600d0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-7bfcf84 e-con-full e-flex e-con e-child\" data-id=\"7bfcf84\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-be5e717 elementor-widget elementor-widget-heading\" data-id=\"be5e717\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Rover Series<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f4a4166 elementor-widget elementor-widget-heading\" data-id=\"f4a4166\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">From Lab to Life.\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-141c2eb elementor-align-left elementor-widget elementor-widget-button\" data-id=\"141c2eb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">EXPLORE<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-45c268e e-flex e-con-boxed e-con e-parent\" data-id=\"45c268e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-f14a110 e-con-full e-flex e-con e-child\" data-id=\"f14a110\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-149055a e-con-full e-flex e-con e-child\" data-id=\"149055a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-d5096fc e-con-full e-flex e-con e-child\" data-id=\"d5096fc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4bc69b7 elementor-widget elementor-widget-heading\" data-id=\"4bc69b7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u65b0\u95fb\u4e2d\u5fc3<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-31e619d elementor-widget elementor-widget-heading\" data-id=\"31e619d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\n\t\t\t\t\t\t\t\t\u8d8a\u7586\u673a\u5668\u4eba\u7684\u6700\u65b0\u52a8\u6001\n\t\t\t\t\t\t\t<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-29efa15 e-flex e-con-boxed e-con e-parent\" data-id=\"29efa15\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-bdabfed e-con-full e-flex e-con e-child\" data-id=\"bdabfed\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2c66a7c elementor-widget elementor-widget-image\" data-id=\"2c66a7c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1280\" src=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/caocao-list.jpg\" class=\"attachment-full size-full wp-image-31012\" alt=\"\" srcset=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/caocao-list.jpg 1920w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/caocao-list-400x267.jpg 400w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/caocao-list-1200x800.jpg 1200w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/caocao-list-768x512.jpg 768w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/caocao-list-1536x1024.jpg 1536w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/caocao-list-18x12.jpg 18w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/caocao-list-430x287.jpg 430w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/caocao-list-700x467.jpg 700w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-64afdc7 elementor-widget__width-initial elementor-absolute elementor-widget elementor-widget-heading\" data-id=\"64afdc7\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\n\t\t\t\t\t\t\t\t\t\t\t\u516c\u53f8\u65b0\u95fb\n\t\t\t\t\t\t\t\t\t\t<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8c670ab e-con-full e-flex e-con e-child\" data-id=\"8c670ab\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-37e42d2 elementor-widget elementor-widget-heading\" data-id=\"37e42d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u66f9\u64cd\u51fa\u884c\u4e0e\u8d8a\u7586\u8fbe\u6210\u6218\u7565\u5408\u4f5c\uff0c\u4eba\u5f62\u673a\u5668\u4eba\u5165\u9a7b\u884c\u4e1a\u9996\u4e2a\u201c\u7eff\u8272\u667a\u80fd\u901a\u884c\u5c9b\u201d<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2c33c4a e-con-full e-flex e-con e-child\" data-id=\"2c33c4a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-932ba79 elementor-widget elementor-widget-heading\" data-id=\"932ba79\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u57fa\u4e8e\u6df1\u539a\u573a\u666f\u7406\u89e3\u4e0e\u6280\u672f\u521b\u65b0\u7ecf\u9a8c\uff0c\u8d8a\u7586\u5c06\u4e3aRobotaxi\u667a\u80fd\u5316\u5347\u7ea7\u63d0\u4f9b\u9886\u5148\u673a\u5668\u4eba\u6280\u672f\u548c\u4ea7\u54c1\u3002<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9519eca e-con-full e-flex e-con e-child\" data-id=\"9519eca\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0e65fd2 elementor-widget elementor-widget-heading\" data-id=\"0e65fd2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/www.dobot.cn\/news\/blog\/1440.html\">\u4e86\u89e3\u66f4\u591a &gt;<\/a><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-be8acff elementor-widget elementor-widget-heading\" data-id=\"be8acff\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">2025-12-03<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5debaf0 e-con-full e-flex e-con e-child\" data-id=\"5debaf0\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-301ce4b elementor-widget elementor-widget-image\" data-id=\"301ce4b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1625\" height=\"1080\" src=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/jili-list.jpg\" class=\"attachment-full size-full wp-image-31013\" alt=\"\" srcset=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/jili-list.jpg 1625w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/jili-list-400x266.jpg 400w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/jili-list-1204x800.jpg 1204w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/jili-list-768x510.jpg 768w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/jili-list-1536x1021.jpg 1536w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/jili-list-18x12.jpg 18w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/jili-list-430x286.jpg 430w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/jili-list-700x465.jpg 700w\" sizes=\"(max-width: 1625px) 100vw, 1625px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fd4f0ee elementor-widget__width-initial elementor-absolute elementor-widget elementor-widget-heading\" data-id=\"fd4f0ee\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\n\t\t\t\t\t\t\t\t\t\t\t\u516c\u53f8\u65b0\u95fb\n\t\t\t\t\t\t\t\t\t\t<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-12575b6 e-con-full e-flex e-con e-child\" data-id=\"12575b6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-356e7fb elementor-widget elementor-widget-heading\" data-id=\"356e7fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u8d8a\u7586\u673a\u5668\u4eba\u4eae\u76f8\u5409\u5229\u6c7d\u8f66\u6280\u672f\u5c55\uff0c\u5177\u8eab\u667a\u80fd\u673a\u5668\u4eba\u8d4b\u80fd\u6c7d\u8f66\u9ad8\u6548\u67d4\u6027\u667a\u9020<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6d89205 e-con-full e-flex e-con e-child\" data-id=\"6d89205\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-edb252a elementor-widget elementor-widget-heading\" data-id=\"edb252a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u8d8a\u7586\u673a\u5668\u4eba\u8d2f\u7a7f\u6c7d\u8f66\u5236\u9020\u6838\u5fc3\u5de5\u827a\uff0c\u8d4b\u80fd\u5168\u6d41\u7a0b\u7cbe\u76ca\u667a\u9020<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8b4c939 e-con-full e-flex e-con e-child\" data-id=\"8b4c939\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0e22215 elementor-widget elementor-widget-heading\" data-id=\"0e22215\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/www.dobot.cn\/news\/blog\/1441.html\">\u4e86\u89e3\u66f4\u591a &gt;<\/a><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-62525c3 elementor-widget elementor-widget-heading\" data-id=\"62525c3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">2025-12-03<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c200e46 e-con-full e-flex e-con e-child\" data-id=\"c200e46\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-544923e elementor-widget elementor-widget-image\" data-id=\"544923e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"427\" src=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/list.jpg\" class=\"attachment-full size-full wp-image-31014\" alt=\"\" srcset=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/list.jpg 640w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/list-400x267.jpg 400w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/list-18x12.jpg 18w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2026\/03\/list-430x287.jpg 430w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7b05cac elementor-widget__width-initial elementor-absolute elementor-widget elementor-widget-heading\" data-id=\"7b05cac\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\n\t\t\t\t\t\t\t\t\t\t\t\u516c\u53f8\u65b0\u95fb\n\t\t\t\t\t\t\t\t\t\t<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d623f89 e-con-full e-flex e-con e-child\" data-id=\"d623f89\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6777245 elementor-widget elementor-widget-heading\" data-id=\"6777245\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u8d8a\u7586\u673a\u5668\u4eba\u4eae\u76f8\u5409\u5229\u6c7d\u8f66\u6280\u672f\u5c55\uff0c\u5177\u8eab\u667a\u80fd\u673a\u5668\u4eba\u8d4b\u80fd\u6c7d\u8f66\u9ad8\u6548\u67d4\u6027\u667a\u9020<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f111fb0 e-con-full e-flex e-con e-child\" data-id=\"f111fb0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-09b35cf elementor-widget elementor-widget-heading\" data-id=\"09b35cf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u8d8a\u7586\u673a\u5668\u4eba\u8d2f\u7a7f\u6c7d\u8f66\u5236\u9020\u6838\u5fc3\u5de5\u827a\uff0c\u8d4b\u80fd\u5168\u6d41\u7a0b\u7cbe\u76ca\u667a\u9020<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a300a1f e-con-full e-flex e-con e-child\" data-id=\"a300a1f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c9c6c8a elementor-widget elementor-widget-heading\" data-id=\"c9c6c8a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/www.dobot.cn\/news\/blog\/1441.html\">\u4e86\u89e3\u66f4\u591a &gt;<\/a><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e5f0037 elementor-widget elementor-widget-heading\" data-id=\"e5f0037\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">2025-12-03<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ce5cd3e e-flex e-con-boxed e-con e-parent\" data-id=\"ce5cd3e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;,&quot;animation&quot;:&quot;none&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-90a104d e-con-full e-flex e-con e-child\" data-id=\"90a104d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-21ec56f elementor-widget__width-inherit elementor-widget elementor-widget-threejs_tech_globe_v43\" data-id=\"21ec56f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"threejs_tech_globe_v43.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t            \n            <style>\n                .globe-widget-container { position: relative; width: 100%; overflow: hidden; background: transparent; box-sizing: border-box; }\n                \n                \/* [CRITICAL FIX] Device Specific Selector with ID for specificity *\/\n                                @media (max-height: 850px) and (min-width: 768px) {\n                    #globe-container-21ec56f {\n                        height: 140vh !important;\n                        min-height: auto !important;\n                    }\n                }\n                \n                .globe-bg-overlay { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 100%; height: 100%; background: radial-gradient(circle at center, rgba(0, 50, 100, 0.4) 0%, rgba(0, 0, 0, 0) 70%); z-index: 0; pointer-events: none; opacity: 0; }\n                .globe-canvas-wrapper { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; }\n                #three-canvas-21ec56f { width: 100%; height: 100%; outline: none; display: block; }\n                \n                \/* Responsive Intro Container (REQ 3) *\/\n                .globe-intro-container { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 15; opacity: 0; text-align: center; pointer-events: none; display: flex; flex-direction: column; align-items: center; }\n                .globe-intro-title { margin: 0; }\n                .globe-intro-subtitle { margin: 0; display: block; }\n                .globe-intro-desc { margin-top: 15px; }\n                \n                .globe-content-col { position: absolute; z-index: 20; display: flex; flex-direction: column; opacity: 0; pointer-events: none; box-sizing: border-box; justify-content: center; }\n                .globe-content-inner { pointer-events: auto; width: 100%; }\n                \n                                                            .globe-content-col { top: 0; right: 0; height: 100%; transform: translateY(150px); }\n                        .globe-stats-wrapper { display: flex; flex-direction: column; }\n                                                    \n                .globe-subtitle { display: block; margin-bottom: 10px; }\n                .globe-title { display: block; margin-bottom: 20px; }\n                .globe-desc { display: block; line-height: 1.6; }\n                \/* Main Text Margin (REQ 4) - handled by selector in control *\/\n                \n                .globe-stat-item { display: flex; flex-direction: column; border-bottom: 1px solid rgba(255,255,255,0.1); padding-bottom: 15px; margin-bottom: 25px; box-sizing: border-box; }\n                .stat-number { display: block; font-weight: bold; }\n                .stat-label { display: block; }\n                .globe-stat-images { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }\n                .globe-stat-img { transition: transform 0.3s ease; cursor: pointer; object-fit: cover; }\n                \n                .globe-3d-label { position: absolute; top: 0; left: 0; color: #aaccff; font-size: 14px; font-weight: bold; text-shadow: 0 0 5px rgba(0,0,0,0.8); pointer-events: none; display: flex; flex-direction: column; align-items: center; opacity: 0; z-index: 100; will-change: transform, opacity; font-family: sans-serif; }\n                .globe-3d-label::after { content: ''; display: block; width: 2px; height: 50px; background: linear-gradient(to bottom, #ffffff 0%, #00ccff 50%, rgba(0, 204, 255, 0) 100%); margin-top: 4px; box-shadow: 0 0 8px rgba(0, 204, 255, 0.8); }\n                .globe-3d-label-dot { width: 4px; height: 4px; background-color: #88bbff; border: 1px solid #4488ff; border-radius: 50%; margin-bottom: 2px; }\n                \n                @media (max-width: 768px) {\n                    .globe-widget-container { height: auto !important; min-height: 100vh; overflow: visible; display: flex; flex-direction: column; }\n                    \/* [REQ 2] Mobile Canvas Height - Handled by Responsive Control, but we ensure position relative here *\/\n                    .globe-canvas-wrapper { position: relative !important; width: 100% !important; }\n                    .globe-intro-container { display: none !important; }\n                    .globe-content-col { position: relative !important; width: 100% !important; height: auto !important; top: auto !important; bottom: auto !important; left: auto !important; right: auto !important; transform: none !important; opacity: 1 !important; padding: 30px 20px !important; background: transparent !important; }\n                    \n                    \/* [REQ 1] Mobile Stats Grid Implementation *\/\n                    .globe-stats-wrapper { \n                        display: flex !important; \n                        flex-direction: row !important; \n                        flex-wrap: wrap !important;\n                        gap: 15px;\n                    }\n                    \/* 1 Per Row *\/\n                    .mobile-stats-1 .globe-stat-item { width: 100% !important; margin-bottom: 20px !important; }\n                    \/* 2 Per Row *\/\n                    .mobile-stats-2 .globe-stat-item { \n                        width: 48% !important; \n                        flex: 0 0 48% !important; \n                        margin-bottom: 20px !important; \n                    }\n                }\n            <\/style>\n\n            <div id=\"globe-container-21ec56f\" class=\"globe-widget-container globe-trigger-21ec56f globe-layout-right mobile-stats-2\" data-config='{\"showContent\":true,\"position\":\"right\",\"globeScale\":{\"desktop\":0.95,\"tablet\":0.9,\"mobile\":1.5},\"overlayEnable\":true,\"globeOffset\":13,\"mapImage\":\"http:\\\/\\\/cn.inffnitech.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/earth_lights_2048.png\",\"introPersist\":false,\"persistTop\":\"0%\",\"scrollDist\":150,\"offset\":{\"x\":{\"desktop\":13,\"tablet\":9,\"mobile\":0},\"y\":{\"desktop\":0,\"tablet\":0,\"mobile\":0}}}'>\n                                <div class=\"globe-bg-overlay\" id=\"bg-overlay-21ec56f\"><\/div>\n                                <div class=\"globe-canvas-wrapper\" id=\"canvas-wrapper-21ec56f\">\n                    <div id=\"three-canvas-21ec56f\"><\/div>\n                <\/div>\n                <div class=\"globe-intro-container\" id=\"intro-wrap-21ec56f\">\n                    <h2 class=\"globe-intro-title\">How Was INFFNI Born?<\/h2>\n                                        <h3 class=\"globe-intro-subtitle\">Powered by DOBOT<\/h3>\n                                        <div class=\"globe-intro-desc\"><\/div>\n                <\/div>\n                                <div class=\"globe-content-col\" id=\"content-col-21ec56f\">\n                    <div class=\"globe-content-inner\">\n                                                <div class=\"globe-text-top\">\n                            <span class=\"globe-subtitle\">INFFNI Global<\/span>\n                            <span class=\"globe-title\">powered by dobot<\/span>\n                            <p class=\"globe-desc\">Built on DOBOT\u2019s decade of global leadership in collaborative robotics\u2014100,000+ cobots deployed across 100+ countries\u2014INFFNI inherits a world-class foundation of precision engineering, AI capability, and international service infrastructure.\n<br><br>\nWhat began as university-lab experiments in walking, balancing, and adaptive locomotion has grown into INFFNI\u2019s revolutionary embodied-AI platform, bringing lifelike robotic companions from industrial-grade reliability to everyday life.<\/p>\n                        <\/div>\n                                                                        <div class=\"globe-stats-wrapper\">\n                                                                                                <div class=\"globe-stat-item\">\n                                                                                <span class=\"stat-number\" \n                                              data-target=\"1300\" \n                                              data-suffix=\"+\">0<\/span>\n                                                                                <span class=\"stat-label\">Patents<\/span>\n                                                                            <\/div>\n                                                                    <div class=\"globe-stat-item\">\n                                                                                <span class=\"stat-number\" \n                                              data-target=\"80\" \n                                              data-suffix=\"+\">0<\/span>\n                                                                                <span class=\"stat-label\">Fortune  500 clients<\/span>\n                                                                            <\/div>\n                                                                    <div class=\"globe-stat-item\">\n                                                                                <span class=\"stat-number\" \n                                              data-target=\"140\" \n                                              data-suffix=\"+\">0<\/span>\n                                                                                <span class=\"stat-label\">Countries<\/span>\n                                                                            <\/div>\n                                                                    <div class=\"globe-stat-item\">\n                                                                                <span class=\"stat-number\" \n                                              data-target=\"100000\" \n                                              data-suffix=\"+\">0<\/span>\n                                                                                <span class=\"stat-label\">Cobots<\/span>\n                                                                            <\/div>\n                                                                                    <\/div>\n                                            <\/div>\n                <\/div>\n                            <\/div>\n\n            <script>\njQuery(window).on('elementor\/frontend\/init', function() {\n    elementorFrontend.hooks.addAction('frontend\/element_ready\/threejs_tech_globe_v43.default', function($scope, $) {\n        \n        const container = $scope.find('.globe-widget-container');\n        if (!container.length) return;\n\n        const uid = container.attr('class').match(\/globe-trigger-(\\w+)\/)[1];\n        const config = container.data('config');\n        \n        const containerEl = document.getElementById(\"three-canvas-\" + uid);\n        const wrapperEl = document.getElementById(\"canvas-wrapper-\" + uid);\n        const contentEl = document.getElementById(\"content-col-\" + uid);\n        const introEl = document.getElementById(\"intro-wrap-\" + uid);\n        const bgOverlayEl = document.getElementById(\"bg-overlay-\" + uid);\n        const triggerEl = container[0];\n\n        if (!containerEl || typeof THREE === 'undefined') return;\n\n        \/\/ \u2705 \u7b49\u5f85\u5e03\u5c40\u7a33\u5b9a\n        const waitForLayout = () => {\n            return new Promise(resolve => {\n                requestAnimationFrame(() => {\n                    requestAnimationFrame(() => {\n                        resolve();\n                    });\n                });\n            });\n        };\n\n        \/\/ \u2705 \u786e\u4fdd\u5bb9\u5668\u6709\u5c3a\u5bf8\n        const ensureContainerSize = () => {\n            return new Promise(resolve => {\n                const checkSize = () => {\n                    const width = containerEl.clientWidth;\n                    const height = containerEl.clientHeight;\n                    \n                    if (width > 0 && height > 0) {\n                        \/\/console.log('\u2705 Container size ready:', width, 'x', height);\n                        resolve({ width, height });\n                    } else {\n                        requestAnimationFrame(checkSize);\n                    }\n                };\n                checkSize();\n            });\n        };\n\n        \/\/ \u2705 [HELPER] Get Current Device Settings\n        const getDeviceSettings = () => {\n            const width = window.innerWidth;\n            if (width <= 767) return 'mobile';\n            if (width <= 1440) return 'tablet';\n            return 'desktop';\n        };\n\n        const runNumberAnimation = () => {\n            if (typeof gsap !== 'undefined' && contentEl) {\n                const counters = contentEl.querySelectorAll('.stat-number');\n                counters.forEach(counter => {\n                    const t = parseFloat(counter.getAttribute('data-target'));\n                    const s = counter.getAttribute('data-suffix');\n                    gsap.to(counter, { \n                        innerHTML: t, \n                        duration: 2, \n                        snap: { innerHTML: 1 }, \n                        onUpdate: function() { \n                            this.targets()[0].innerHTML = Math.ceil(this.targets()[0].innerHTML) + s; \n                        } \n                    });\n                });\n            }\n        };\n\n        \/\/ \u2705 \u4e3b\u521d\u59cb\u5316\u51fd\u6570\n        const init = async () => {\n            try {\n                \/\/ \u7b49\u5f85\u5e03\u5c40\u548c\u5c3a\u5bf8\n                await waitForLayout();\n                const { width, height } = await ensureContainerSize();\n\n                const labels = [];\n\n                \/\/ --- 3D Scene Setup ---\n                const scene = new THREE.Scene();\n                const camera = new THREE.PerspectiveCamera(45, width \/ height, 0.1, 1000);\n                camera.position.set(0, 0, 45); \n                camera.lookAt(0, 0, 0);\n                \n                const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\n                renderer.setSize(width, height);\n                renderer.setPixelRatio(window.devicePixelRatio);\n                \n                while (containerEl.firstChild) containerEl.removeChild(containerEl.firstChild);\n                containerEl.appendChild(renderer.domElement);\n                \n                const existingLabels = wrapperEl.querySelectorAll('.globe-3d-label');\n                existingLabels.forEach(el => el.remove());\n                \n                const handleResize = () => {\n                    const rect = containerEl.getBoundingClientRect();\n                    const w = rect.width;\n                    const h = rect.height;\n                    \n                    if (w === 0 || h === 0) return;\n\n                    \/\/ --- \u4fee\u590d\u53d8\u5f62 ---\n                    camera.aspect = w \/ h;\n                    \n                    \/\/ --- \u4fee\u590d\u5927\u5c0f ---\n                    const baseHeight = 990; \/\/ \u8bbe\u8ba1\u57fa\u51c6\u9ad8\u5ea6\n                    const baseZ = 45;       \/\/ \u521d\u59cb\u8ddd\u79bb\n                    \n                    \/\/ Math.max \u786e\u4fdd\u76f8\u673a\u6c38\u8fdc\u4e0d\u4f1a\u6bd4 baseZ (45) \u66f4\u8fd1\u3002\n                    \/\/ 1. \u5f53\u6d4f\u89c8\u5668\u7f29\u5c0f(\u9ad8\u5ea6>800)\u65f6\uff0c\u540e\u534a\u90e8\u5206\u751f\u6548\uff0c\u76f8\u673a\u540e\u9000\uff0c\u5730\u7403\u53d8\u5c0f\u3002\n                    \/\/ 2. \u5f53\u6309F12(\u9ad8\u5ea6<800)\u65f6\uff0cMath.max \u53d6 45\uff0c\u76f8\u673a\u4f4d\u7f6e\u56fa\u5b9a\uff0c\u5730\u7403\u4f1a\u968f Canvas \u81ea\u52a8\u7f29\u5c0f\u3002\n                    const newZ = Math.max(baseZ, baseZ * (h \/ baseHeight));\n                    \n                    camera.position.z = newZ;\n                    camera.updateProjectionMatrix();\n\n                    \/\/ --- \u4fee\u590d\u6a21\u7cca\u548c\u5750\u6807 ---\n                    renderer.setPixelRatio(window.devicePixelRatio);\n                    renderer.setSize(w, h, false); \n                    \n                    renderer.domElement.style.width = \"100%\";\n                    renderer.domElement.style.height = \"100%\";\n\n                    \/\/ --- \u7acb\u5373\u91cd\u7ed8 ---\n                    renderer.render(scene, camera);\n                    \n                    \/\/ --- \u5f3a\u5236\u66f4\u65b0\u6807\u7b7e\u4f4d\u7f6e ---\n                    if (typeof labels !== 'undefined') {\n                         labels.forEach(item => {\n                            const tempV = new THREE.Vector3();\n                            item.anchor.getWorldPosition(tempV);\n                            tempV.project(camera);\n                            const x = (tempV.x * .5 + .5) * w;\n                            const y = (tempV.y * -.5 + .5) * h;\n                            item.element.style.transform = `translate(-50%, -100%) translate(${x}px, ${y}px)`;\n                        });\n                    }\n\n                    \/\/ \u5237\u65b0 ScrollTrigger\n                    if (typeof ScrollTrigger !== 'undefined') {\n                        ScrollTrigger.refresh();\n                    }\n                };\n\n                \/\/ 2. \u7b2c\u4e00\u9053\u4fdd\u9669\uff1aResizeObserver (\u76d1\u542c\u5bb9\u5668\u5c3a\u5bf8)\n                const resizeObserver = new ResizeObserver(() => {\n                    handleResize();\n                });\n                resizeObserver.observe(containerEl);\n\n                \/\/ 3. \u7b2c\u4e8c\u9053\u4fdd\u9669\uff1aWindow Resize (\u76d1\u542c\u6d4f\u89c8\u5668\u7a97\u53e3)\n                \/\/ \u52a0\u4e00\u4e2a\u7b80\u5355\u7684\u9632\u6296\uff0c\u786e\u4fdd\u7f29\u653e\u52a8\u753b\u7ed3\u675f\u540e\u518d\u6821\u51c6\u4e00\u6b21\n                let resizeTimeout;\n                window.addEventListener('resize', () => {\n                    handleResize(); \/\/ \u7acb\u5373\u54cd\u5e94\n                    clearTimeout(resizeTimeout);\n                    resizeTimeout = setTimeout(() => {\n                        handleResize(); \/\/ 200ms \u540e\u518d\u6b21\u54cd\u5e94\uff0c\u786e\u4fdd\u7a33\u5b9a\n                        \/\/ console.log('\u2705 Zoom settled, forced update.');\n                    }, 200);\n                });\n\n                \/\/ 4. \u7b2c\u4e09\u9053\u4fdd\u9669\uff1aPixelRatio \u8f6e\u8be2 (\u4e13\u95e8\u89e3\u51b3\u201c\u7f29\u653e\u540e\u4e0d\u5237\u65b0\u4e0d\u884c\u201d\u7684\u95ee\u9898)\n                \/\/ \u6d4f\u89c8\u5668\u7f29\u653e\u6709\u65f6\u4e0d\u4f1a\u89e6\u53d1 resize \u4e8b\u4ef6\uff0c\u6216\u8005\u89e6\u53d1\u987a\u5e8f\u5f88\u5947\u602a\n                \/\/ \u6211\u4eec\u68c0\u6d4b devicePixelRatio \u7684\u53d8\u5316\n                let lastDPR = window.devicePixelRatio;\n                setInterval(() => {\n                    if (window.devicePixelRatio !== lastDPR) {\n                        lastDPR = window.devicePixelRatio;\n                        handleResize(); \/\/ \u50cf\u7d20\u6bd4\u53d8\u4e86\uff0c\u5f3a\u5236\u91cd\u7b97\uff01\n                    }\n                }, 500); \/\/ \u6bcf0.5\u79d2\u68c0\u67e5\u4e00\u6b21\uff0c\u6027\u80fd\u6d88\u8017\u6781\u4f4e\n\n                \/\/ \u521d\u59cb\u5316\u8c03\u7528\u4e00\u6b21\n                handleResize();\n                \n                \/\/ --- Globe Construction ---\n                const mainGroup = new THREE.Group();\n                scene.add(mainGroup);\n                const earthGroup = new THREE.Group();\n                mainGroup.add(earthGroup);\n                const orbitGroup = new THREE.Group();\n                mainGroup.add(orbitGroup);\n                const globeRadius = 8;\n\n                const oceanMat = new THREE.MeshBasicMaterial({ \n                    color: 0x002244, \n                    transparent: true, \n                    opacity: 0.5, \n                    side: THREE.FrontSide, \n                    blending: THREE.AdditiveBlending \n                });\n                earthGroup.add(new THREE.Mesh(new THREE.SphereGeometry(globeRadius - 0.05, 64, 64), oceanMat));\n\n                const shieldMat = new THREE.ShaderMaterial({\n                    uniforms: { color: { value: new THREE.Color(0x00ffcc) } },\n                    vertexShader: `\n                        varying vec2 vUv; \n                        varying vec3 vNormal; \n                        varying vec3 vViewPosition; \n                        void main() { \n                            vUv = uv; \n                            vNormal = normalize(normalMatrix * normal); \n                            vec4 mvPosition = modelViewMatrix * vec4(position, 1.0); \n                            vViewPosition = -mvPosition.xyz; \n                            gl_Position = projectionMatrix * mvPosition; \n                        }\n                    `,\n                    fragmentShader: `\n                        uniform vec3 color; \n                        varying vec2 vUv; \n                        varying vec3 vNormal; \n                        varying vec3 vViewPosition; \n                        void main() { \n                            vec2 uv = vUv * 200.0; \n                            vec2 grid = fract(uv) - 0.5; \n                            float dist = length(grid); \n                            float dotPattern = smoothstep(0.4, 0.02, dist); \n                            vec3 normal = normalize(vNormal); \n                            vec3 viewDir = normalize(vViewPosition); \n                            float fresnel = 1.0 - abs(dot(normal, viewDir)); \n                            float direction = -(normal.x * 0.7 + normal.y * 0.7); \n                            float dirMask = smoothstep(-0.2, 0.8, direction); \n                            float cornerHaze = dirMask * pow(fresnel, 4.0) * 0.2; \n                            float dotAlpha = dotPattern * (0.05 + pow(fresnel, 7.0) * 2.0); \n                            gl_FragColor = vec4(color, dotAlpha + cornerHaze); \n                        }\n                    `,\n                    transparent: true, \n                    side: THREE.FrontSide, \n                    blending: THREE.AdditiveBlending, \n                    depthWrite: false\n                });\n                earthGroup.add(new THREE.Mesh(new THREE.SphereGeometry(globeRadius + 0.5, 64, 64), shieldMat));\n                \n                const blackSphereGeo = new THREE.SphereGeometry(globeRadius - 0.1, 64, 64);\n                const blackSphere = new THREE.Mesh(blackSphereGeo, new THREE.MeshBasicMaterial({ color: 0x000000 }));\n                earthGroup.add(blackSphere);\n                \n                const glowMat = new THREE.ShaderMaterial({\n                    uniforms: { \n                        glowColor: { value: new THREE.Color(0x001133) }, \n                        viewVector: { value: camera.position } \n                    },\n                    vertexShader: `\n                        uniform vec3 viewVector; \n                        varying float intensity; \n                        void main() { \n                            vec3 vNormal = normalize(normalMatrix * normal); \n                            vec3 vNormel = normalize(normalMatrix * viewVector); \n                            intensity = pow(1.0 - dot(vNormal, vNormel), 7.5); \n                            gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); \n                        }\n                    `,\n                    fragmentShader: `\n                        uniform vec3 glowColor; \n                        varying float intensity; \n                        void main() { \n                            float a = clamp(intensity, 0.0, 1.0); \n                            gl_FragColor = vec4(glowColor, a); \n                        }\n                    `,\n                    side: THREE.BackSide, \n                    blending: THREE.AdditiveBlending, \n                    transparent: true, \n                    depthWrite: false\n                });\n                mainGroup.add(new THREE.Mesh(new THREE.SphereGeometry(globeRadius + 1.5, 64, 64), glowMat));\n\n                \/\/ --- Orbit and Photon System ---\n                function latLonToVector3(lat, lon, radius) {\n                    const phi = (90 - lat) * (Math.PI \/ 180); \n                    const theta = (lon + 90) * (Math.PI \/ 180);\n                    const x = -(radius * Math.sin(phi) * Math.cos(theta)); \n                    const z = (radius * Math.sin(phi) * Math.sin(theta)); \n                    const y = (radius * Math.cos(phi));\n                    return new THREE.Vector3(x, y, z);\n                }\n                \n                const activePhotons = [];\n                \n                function createOrbit(rX, rY, rot) {\n                    const curve = new THREE.EllipseCurve(0, 0, rX, rY, 0, 2 * Math.PI, false, 0);\n                    const pts = curve.getPoints(100).map(p => new THREE.Vector3(p.x, p.y, 0));\n                    const c3d = new THREE.CatmullRomCurve3(pts); \n                    c3d.closed = true;\n                    \n                    const mat = new THREE.ShaderMaterial({\n                        uniforms: { \n                            color1: { value: new THREE.Color(0x00ffff) }, \n                            color2: { value: new THREE.Color(0x004455) } \n                        },\n                        vertexShader: `\n                            varying vec2 vUv; \n                            void main() { \n                                vUv = uv; \n                                gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); \n                            }\n                        `,\n                        fragmentShader: `\n                            uniform vec3 color1; \n                            uniform vec3 color2; \n                            varying vec2 vUv; \n                            void main() { \n                                float g = sin(vUv.x * 6.28) * 0.5 + 0.5; \n                                vec3 c = mix(color2, color1, g); \n                                float d = abs(vUv.y - 0.5) * 2.0; \n                                float a = pow(1.0 - smoothstep(0.0, 1.0, d), 3.0); \n                                gl_FragColor = vec4(c, a * 0.8); \n                            }\n                        `,\n                        transparent: true, \n                        blending: THREE.AdditiveBlending, \n                        side: THREE.DoubleSide, \n                        depthWrite: false\n                    });\n                    \n                    const mesh = new THREE.Mesh(new THREE.TubeGeometry(c3d, 64, 0.02, 8, true), mat);\n                    mesh.rotation.copy(rot);\n                    orbitGroup.add(mesh);\n                    \n                    if (Math.random() > 0.5) {\n                        const spd = 0.0001 + Math.random() * 0.0002; \n                        const st = Math.random();\n                        for (let i = 0; i < 3; i++) {\n                            const p = new THREE.Mesh(\n                                new THREE.SphereGeometry([0.09, 0.06, 0.04][i], 8, 8), \n                                new THREE.MeshBasicMaterial({ color: i===0?0xffffff:0x00ffff })\n                            );\n                            if (i===0) p.add(new THREE.PointLight(0x00ffff, 0.8, 2));\n                            mesh.add(p);\n                            let pos = st - (i*0.025); \n                            if(pos<0) pos+=1;\n                            activePhotons.push({ mesh: p, curve: curve, speed: spd, pos: pos });\n                        }\n                    }\n                }\n                \n                createOrbit(globeRadius + 0.5, globeRadius + 0.5, new THREE.Euler(Math.PI\/2, 0, 0));\n                for(let i=0; i<10; i++) {\n                    createOrbit(\n                        globeRadius+0.5+Math.random()*2.5, \n                        globeRadius+0.5+Math.random()*2.5, \n                        new THREE.Euler(Math.random()*Math.PI, Math.random()*Math.PI, 0)\n                    );\n                }\n\n                \/\/ --- Map Texture Loading ---\n                const mapUrl = config.mapImage ? config.mapImage : 'https:\/\/raw.githubusercontent.com\/mrdoob\/three.js\/master\/examples\/textures\/planets\/earth_lights_2048.png';\n                const img = new Image();\n                if (mapUrl.indexOf(window.location.hostname) === -1) { \n                    img.crossOrigin = \"Anonymous\"; \n                }\n                \n                const imageLoaded = new Promise(resolve => {\n                    img.onload = function() {\n                        const c = document.createElement('canvas'); \n                        c.width = img.width; \n                        c.height = img.height;\n                        const ctx = c.getContext('2d'); \n                        ctx.drawImage(img, 0, 0);\n                        const d = ctx.getImageData(0, 0, c.width, c.height).data;\n                        const p=[], cl=[]; \n                        const c1=new THREE.Color(0x0044aa), c2=new THREE.Color(0x00ccff);\n                        const step = 2;\n                        \n                        for(let y=0; y<c.height; y+=step) {\n                            for(let x=0; x<c.width; x+=step) {\n                                const i=(y*c.width+x)*4;\n                                if(d[i]>38) {\n                                    const lat=90-(y\/c.height)*180; \n                                    const lon=(x\/c.width)*360-180;\n                                    const v=latLonToVector3(lat, lon, globeRadius);\n                                    p.push(v.x, v.y, v.z);\n                                    let col=new THREE.Color(); \n                                    col.copy(c1).lerp(c2, d[i]\/255).multiplyScalar(1.5);\n                                    cl.push(col.r, col.g, col.b);\n                                }\n                            }\n                        }\n                        \n                        const geo=new THREE.BufferGeometry();\n                        geo.setAttribute('position', new THREE.Float32BufferAttribute(p, 3));\n                        geo.setAttribute('color', new THREE.Float32BufferAttribute(cl, 3));\n                        earthGroup.add(new THREE.Points(geo, new THREE.PointsMaterial({ \n                            size: 0.13, \n                            vertexColors: true, \n                            transparent: true, \n                            opacity: 0.8, \n                            blending: THREE.AdditiveBlending \n                        })));\n                        \n                        \/\/console.log('\u2705 Map texture loaded');\n                        resolve();\n                    };\n                    img.onerror = () => {\n                        \/\/console.warn('\u26a0\ufe0f Map texture failed to load');\n                        resolve();\n                    };\n                });\n                img.src = mapUrl;\n\n                \/\/ --- 3D Labels ---\n                const locations = [\n                    { name: \"Germany\", lat: 51.16, lon: 10.45 }, \n                    { name: \"China\", lat: 35.86, lon: 104.19 },\n                    { name: \"Japan\", lat: 36.20, lon: 138.25 }, \n                    { name: \"Malaysia\", lat: 4.21, lon: 101.97 },\n                    { name: \"Thailand\", lat: 15.87, lon: 100.99 }, \n                    { name: \"USA\", lat: 37.09, lon: -95.71 },\n                    { name: \"Mexico\", lat: 23.63, lon: -102.55 }\n                ];\n                \n                \/\/ const labels = [];\n                const tempV = new THREE.Vector3();\n                const raycaster = new THREE.Raycaster(); \n                \n                locations.forEach(loc => {\n                    const div = document.createElement('div'); \n                    div.className = 'globe-3d-label';\n                    div.innerHTML = `<div class=\"globe-3d-label-dot\"><\/div><div>${loc.name}<\/div>`;\n                    wrapperEl.appendChild(div);\n                    \n                    const anchor = new THREE.Mesh(\n                        new THREE.SphereGeometry(0.01), \n                        new THREE.MeshBasicMaterial({ visible: false })\n                    );\n                    anchor.position.copy(latLonToVector3(loc.lat, loc.lon, globeRadius));\n                    earthGroup.add(anchor);\n                    labels.push({ element: div, anchor: anchor });\n                });\n\n                \/\/ --- Animation Loop ---\n                function animate() {\n                    if (!document.body.contains(containerEl)) return;\n                    requestAnimationFrame(animate);\n                    \n                    earthGroup.rotation.y += 0.0006;\n                    orbitGroup.rotation.y -= 0.0002;\n                    orbitGroup.rotation.x = Math.sin(Date.now() * 0.00005) * 0.05;\n                    \n                    activePhotons.forEach(p => { \n                        p.pos += p.speed; \n                        if(p.pos>=1) p.pos-=1; \n                        const pt=p.curve.getPoint(p.pos); \n                        p.mesh.position.set(pt.x, pt.y, 0); \n                    });\n                    \n                    scene.updateMatrixWorld();\n                    \n                    labels.forEach(item => {\n                        item.anchor.getWorldPosition(tempV); \n                        const screenV = tempV.clone();\n                        screenV.project(camera);\n                        const x = (screenV.x * .5 + .5) * containerEl.clientWidth;\n                        const y = (screenV.y * -.5 + .5) * containerEl.clientHeight;\n                        \n                        raycaster.set(camera.position, tempV.clone().sub(camera.position).normalize());\n                        const intersects = raycaster.intersectObject(blackSphere);\n                        const distToAnchor = camera.position.distanceTo(tempV);\n                        let isVisible = true;\n                        \n                        if (intersects.length > 0) {\n                            if (intersects[0].distance < distToAnchor - 0.5) isVisible = false;\n                        }\n                        \n                        if (isVisible) {\n                            item.element.style.transform = `translate(-50%, -100%) translate(${x}px, ${y}px)`; \n                            item.element.style.opacity = 1;\n                        } else { \n                            item.element.style.opacity = 0; \n                        }\n                    });\n                    \n                    renderer.render(scene, camera);\n                }\n                \n                earthGroup.rotation.y = 4.5; \n                earthGroup.rotation.x = 0.5;\n                earthGroup.rotation.z = 0;\n\n                \/\/ \u2705 \u7b49\u5f85\u56fe\u7247\u52a0\u8f7d\u5b8c\u6210\n                await imageLoaded;\n\n                \/\/ --- Animation Logic ---\n                const deviceMode = getDeviceSettings();\n                const isMobile = deviceMode === 'mobile';\n                \n                \/\/ Resolve Responsive Values\n                const targetScale = config.globeScale[deviceMode];\n                const targetOffsetX = config.offset.x[deviceMode];\n                const targetOffsetY = config.offset.y[deviceMode];\n\n                if (elementorFrontend.isEditMode()) {\n                    \/\/ Editor Preview\n                    gsap.set(wrapperEl, { filter: \"blur(0px) brightness(1) hue-rotate(0deg)\", scale: 1 });\n                    if (bgOverlayEl) gsap.set(bgOverlayEl, { width: \"50%\", opacity: 1 }); \n                    \n                    let offset = config.offset.x.desktop;\n                    let offsetY = config.offset.y.desktop;\n                    let moveX = 0, moveY = offsetY, moveZ = 10;\n                    if (config.position === 'right') moveX = -offset;\n                    else if (config.position === 'left') moveX = offset;\n                    else if (config.position === 'top') { moveY = -6 + offsetY; moveZ = 10; }\n                    else if (config.position === 'bottom') { moveY = 6 + offsetY; moveZ = 10; }\n                    \n                    gsap.set(mainGroup.position, { x: moveX, y: moveY, z: moveZ });\n                    gsap.set(mainGroup.scale, { x: config.globeScale.desktop, y: config.globeScale.desktop, z: config.globeScale.desktop });\n                    gsap.set(contentEl, { opacity: 1, y: 0 });\n                    gsap.set(introEl, { opacity: 0 }); \n\n                } else {\n                    if (isMobile) {\n                        \/\/ Mobile Static Layout\n                        gsap.set(wrapperEl, { filter: \"blur(0px)\", scale: 1 });\n                        gsap.set(mainGroup.position, { x: targetOffsetX, y: targetOffsetY, z: 0 }); \n                        gsap.set(mainGroup.scale, { x: targetScale, y: targetScale, z: targetScale });\n                        gsap.set(contentEl, { opacity: 1, y: 0 });\n                        gsap.set(introEl, { display: 'none' }); \n                        \n                        if (typeof gsap !== 'undefined' && typeof ScrollTrigger !== 'undefined') {\n                            ScrollTrigger.create({\n                                trigger: contentEl,\n                                start: \"top 85%\",\n                                onEnter: () => runNumberAnimation()\n                            });\n                        }\n\n                    } else {\n                        \/\/ Desktop\/Tablet Animated Layout\n                        if (typeof gsap !== 'undefined' && typeof ScrollTrigger !== 'undefined') {\n                            gsap.registerPlugin(ScrollTrigger);\n                            \n                            const triggers = ScrollTrigger.getAll();\n                            triggers.forEach(t => { \n                                if(t.vars.trigger === triggerEl) t.kill(); \n                            });\n                            \n                            \/\/ Initial State (Center)\n                            gsap.set(mainGroup.position, { x:0, y: -10, z:0 });\n                            gsap.set(mainGroup.scale, { x: 0.5, y: 0.5, z: 0.5 });\n                            gsap.set(wrapperEl, { filter: \"blur(10px) brightness(1.2) hue-rotate(-10deg)\", scale: 1.1 });\n                            gsap.set(introEl, { opacity: 0, y: 50 });\n                            gsap.set(contentEl, { opacity: 0, y: 150 });\n                            if (bgOverlayEl) gsap.set(bgOverlayEl, { width: \"100%\", opacity: 0 });\n\n                            \/\/ \u2705 \u5f3a\u5236\u6e32\u67d3\u4e00\u5e27\n                            renderer.render(scene, camera);\n\n                            \/\/ \u2705 \u5ef6\u8fdf\u521b\u5efa ScrollTrigger\n                            await new Promise(resolve => setTimeout(resolve, 150));\n\n                            \/\/ \u2705 \u5237\u65b0\u540e\u521b\u5efa\n                            ScrollTrigger.refresh();\n\n                            const tl = gsap.timeline({\n                                scrollTrigger: {\n                                    trigger: triggerEl, \n                                    start: \"top top\", \n                                    end: \"+=\" + config.scrollDist + \"%\",\n                                    scrub: 1, \n                                    pin: true,\n                                    anticipatePin: 1,\n                                    invalidateOnRefresh: true,\n                                    onRefresh: () => {\n                                        \/\/console.log('\u2705 ScrollTrigger refreshed');\n                                    }\n                                }\n                            });\n\n                            \/\/ Stage 1: Intro\n                            tl.to(mainGroup.position, { y: 0, duration: 1 })\n                              .to(mainGroup.scale, { x: 1, y: 1, z: 1, duration: 1 }, \"<\")\n                              .to(wrapperEl, { filter: \"blur(0px) brightness(1) hue-rotate(0deg)\", duration: 1 }, \"<\")\n                              .to(introEl, { opacity: 1, y: 0, duration: 1 }, \"<\");\n                            \n                            if (bgOverlayEl) {\n                                tl.to(bgOverlayEl, { opacity: 1, width: \"100%\", duration: 1 }, \"<\");\n                            }\n                            tl.to({}, { duration: 0.5 }); \n\n                            \/\/ Stage 2: Layout\n                            if (config.showContent) {\n                                let moveX = 0, moveY = targetOffsetY, moveZ = 10;\n                                \n                                if (config.position === 'right') moveX = -targetOffsetX;\n                                else if (config.position === 'left') moveX = targetOffsetX;\n                                else if (config.position === 'top') { moveY = -6 + targetOffsetY; moveZ = 10; }\n                                else if (config.position === 'bottom') {\n                                    moveY = 6 + targetOffsetY; \n                                    moveZ = 10;\n                                    if (config.introPersist) moveY = 0 + targetOffsetY; \n                                }\n\n                                if (config.introPersist) {\n                                    tl.to(introEl, { top: config.persistTop, y: 0, duration: 1.5, ease: \"power2.inOut\" }, \"<\");\n                                } else {\n                                    tl.to(introEl, { opacity: 0, y: -50, duration: 1 }, \"<\");\n                                }\n                                \n                                if (bgOverlayEl) {\n                                    if (config.position === 'right' || config.position === 'left') {\n                                        tl.to(bgOverlayEl, { width: \"50%\", duration: 1.5, ease: \"power2.inOut\" }, \"<\");\n                                    }\n                                }\n                                \n                                tl.to(mainGroup.position, { x: moveX, y: moveY, z: moveZ, duration: 1.5, ease: \"power2.inOut\" }, \"<\")\n                                  .to(mainGroup.scale, { x: targetScale, y: targetScale, z: targetScale, duration: 1.5 }, \"<\")\n                                  .to(contentEl, { opacity: 1, y: 0, duration: 1.5, ease: \"power2.out\" }, \"<\");\n                            }\n                            tl.to({}, { duration: 2 }); \n\n                            ScrollTrigger.create({\n                                trigger: triggerEl, \n                                start: \"top top\",\n                                onEnter: () => runNumberAnimation()\n                            });\n\n                            \/\/ \u2705 \u6700\u7ec8\u5237\u65b0\n                            setTimeout(() => {\n                                ScrollTrigger.refresh();\n                                \/\/console.log('\u2705 Final ScrollTrigger refresh completed');\n                            }, 200);\n                        }\n                    }\n                }\n\n                \/\/ \u2705 \u542f\u52a8\u52a8\u753b\u5faa\u73af\n                animate();\n\n            } catch (error) {\n                console.error('\u274c Globe initialization error:', error);\n            }\n        };\n\n        \/\/ \u2705 \u542f\u52a8\u521d\u59cb\u5316\n        init();\n    });\n});\n<\/script>\n\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-541d054 e-con-full e-flex e-con e-parent\" data-id=\"541d054\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-f713ab1 e-con-full e-flex e-con e-child\" data-id=\"f713ab1\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-a2a5325 e-con-full e-flex e-con e-child\" data-id=\"a2a5325\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-8081464 e-con-full e-flex e-con e-child\" data-id=\"8081464\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5ecd428 elementor-widget elementor-widget-heading\" data-id=\"5ecd428\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u8054\u7cfb\u6211\u4eec<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-029898f e-con-full elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con e-child\" data-id=\"029898f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-48c20ab elementor-align-center elementor-widget elementor-widget-button\" data-id=\"48c20ab\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"http:\/\/cn.inffnitech.com\/en\/faq\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">FAQ<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d1e54d2 elementor-align-center elementor-widget__width-initial elementor-widget elementor-widget-button\" data-id=\"d1e54d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"http:\/\/cn.inffnitech.com\/en\/product\/rover-x1-your-first-robot-dog-%e9%a2%84%e5%94%ae\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Order<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3e4a105 e-con-full e-flex e-con e-child\" data-id=\"3e4a105\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-f520120 e-con-full e-flex e-con e-child\" data-id=\"f520120\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-10f22ce elementor-widget elementor-widget-image\" data-id=\"10f22ce\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1333\" height=\"606\" src=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/lQDPKGidMsX8hvPNEF3NGIuwG5tov0rzNAcJAnyNHf4GAA_6283_4189-\u62f7\u8d1d-1.png\" class=\"attachment-full size-full wp-image-28684\" alt=\"\" srcset=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/lQDPKGidMsX8hvPNEF3NGIuwG5tov0rzNAcJAnyNHf4GAA_6283_4189-\u62f7\u8d1d-1.png 1333w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/lQDPKGidMsX8hvPNEF3NGIuwG5tov0rzNAcJAnyNHf4GAA_6283_4189-\u62f7\u8d1d-1-400x182.png 400w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/lQDPKGidMsX8hvPNEF3NGIuwG5tov0rzNAcJAnyNHf4GAA_6283_4189-\u62f7\u8d1d-1-1300x591.png 1300w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/lQDPKGidMsX8hvPNEF3NGIuwG5tov0rzNAcJAnyNHf4GAA_6283_4189-\u62f7\u8d1d-1-768x349.png 768w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/lQDPKGidMsX8hvPNEF3NGIuwG5tov0rzNAcJAnyNHf4GAA_6283_4189-\u62f7\u8d1d-1-430x195.png 430w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/lQDPKGidMsX8hvPNEF3NGIuwG5tov0rzNAcJAnyNHf4GAA_6283_4189-\u62f7\u8d1d-1-700x318.png 700w\" sizes=\"(max-width: 1333px) 100vw, 1333px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a89b83a e-con-full elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con e-child\" data-id=\"a89b83a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-2831b17 e-con-full INFFNIServicec e-flex elementor-invisible e-con e-child\" data-id=\"2831b17\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;animation&quot;:&quot;fadeInUp&quot;,&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ddb70ae elementor-widget elementor-widget-image\" data-id=\"ddb70ae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/cn.inffnitech.com\/en\/shop\/\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"60\" height=\"60\" src=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/\u4eba\u5de5\u667a\u80fd.png\" class=\"attachment-full size-full wp-image-28686\" alt=\"\" srcset=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/\u4eba\u5de5\u667a\u80fd.png 60w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/\u4eba\u5de5\u667a\u80fd-50x50.png 50w\" sizes=\"(max-width: 60px) 100vw, 60px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-82f21ed INFFNIService-a elementor-widget elementor-widget-heading\" data-id=\"82f21ed\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><a href=\"http:\/\/cn.inffnitech.com\/en\/shop\/\">shop with expert<\/a><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1bb5b90 e-con-full INFFNIServicec e-flex elementor-invisible e-con e-child\" data-id=\"1bb5b90\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInUp&quot;,&quot;animation_delay&quot;:3}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7cc7d44 elementor-widget elementor-widget-image\" data-id=\"7cc7d44\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/cn.inffnitech.com\/en\/support\/\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"60\" height=\"60\" src=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/\u4ea7\u54c1\u670d\u52a1.png\" class=\"attachment-full size-full wp-image-28685\" alt=\"\" srcset=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/\u4ea7\u54c1\u670d\u52a1.png 60w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/\u4ea7\u54c1\u670d\u52a1-50x50.png 50w\" sizes=\"(max-width: 60px) 100vw, 60px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fb1fd73 INFFNIService-a elementor-widget elementor-widget-heading\" data-id=\"fb1fd73\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><a href=\"http:\/\/cn.inffnitech.com\/en\/support\/\">Product support<\/a><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1e88c7c e-con-full INFFNIServicec e-flex elementor-invisible e-con e-child\" data-id=\"1e88c7c\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInUp&quot;,&quot;animation_delay&quot;:6}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5f3dd5f elementor-widget elementor-widget-image\" data-id=\"5f3dd5f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/cn.inffnitech.com\/en\/downloads\/\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"60\" height=\"60\" src=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/\u4e0b\u8f7d.png\" class=\"attachment-full size-full wp-image-28688\" alt=\"\" srcset=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/\u4e0b\u8f7d.png 60w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/\u4e0b\u8f7d-50x50.png 50w\" sizes=\"(max-width: 60px) 100vw, 60px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-da3abd3 INFFNIService-a elementor-widget elementor-widget-heading\" data-id=\"da3abd3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><a href=\"http:\/\/cn.inffnitech.com\/en\/downloads\/\">Downloads<\/a><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-755eba1 e-con-full INFFNIServicec e-flex elementor-invisible e-con e-child\" data-id=\"755eba1\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInUp&quot;,&quot;animation_delay&quot;:6}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a6ee0aa elementor-widget elementor-widget-image\" data-id=\"a6ee0aa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/cn.inffnitech.com\/en\/after-sales-policy\/\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"60\" height=\"60\" src=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/\u552e\u540e.png\" class=\"attachment-full size-full wp-image-28687\" alt=\"\" srcset=\"https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/\u552e\u540e.png 60w, https:\/\/cn.inffnitech.com\/wp-content\/uploads\/2025\/12\/\u552e\u540e-50x50.png 50w\" sizes=\"(max-width: 60px) 100vw, 60px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-448f732 INFFNIService-a elementor-widget elementor-widget-heading\" data-id=\"448f732\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><a href=\"http:\/\/cn.inffnitech.com\/en\/after-sales-policy\/\">After-sales services<\/a><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>",
        "protected": false
    },
    "excerpt": {
        "rendered": "<p>Rover X1 Your First Robot Dog Learn More Rover Series From Lab to Life. Learn More Rover Hexplorer Hexplorer Rover [&hellip;]<\/p>",
        "protected": false
    },
    "author": 2,
    "featured_media": 0,
    "parent": 0,
    "menu_order": 0,
    "comment_status": "closed",
    "ping_status": "closed",
    "template": "elementor_header_footer",
    "meta": {
        "_coblocks_attr": "",
        "_coblocks_dimensions": "",
        "_coblocks_responsive_height": "",
        "_coblocks_accordion_ie_support": "",
        "site-sidebar-layout": "default",
        "site-content-layout": "",
        "ast-site-content-layout": "default",
        "site-content-style": "default",
        "site-sidebar-style": "default",
        "ast-global-header-display": "",
        "ast-banner-title-visibility": "",
        "ast-main-header-display": "",
        "ast-hfb-above-header-display": "",
        "ast-hfb-below-header-display": "",
        "ast-hfb-mobile-header-display": "",
        "site-post-title": "",
        "ast-breadcrumbs-content": "",
        "ast-featured-img": "",
        "footer-sml-layout": "",
        "ast-disable-related-posts": "",
        "theme-transparent-header-meta": "",
        "adv-header-id-meta": "",
        "stick-header-meta": "",
        "header-above-stick-meta": "",
        "header-main-stick-meta": "",
        "header-below-stick-meta": "",
        "astra-migrate-meta-layouts": "default",
        "ast-page-background-enabled": "default",
        "ast-page-background-meta": {
            "desktop": {
                "background-color": "var(--ast-global-color-5)",
                "background-image": "",
                "background-repeat": "repeat",
                "background-position": "center center",
                "background-size": "auto",
                "background-attachment": "scroll",
                "background-type": "",
                "background-media": "",
                "overlay-type": "",
                "overlay-color": "",
                "overlay-opacity": "",
                "overlay-gradient": ""
            },
            "tablet": {
                "background-color": "",
                "background-image": "",
                "background-repeat": "repeat",
                "background-position": "center center",
                "background-size": "auto",
                "background-attachment": "scroll",
                "background-type": "",
                "background-media": "",
                "overlay-type": "",
                "overlay-color": "",
                "overlay-opacity": "",
                "overlay-gradient": ""
            },
            "mobile": {
                "background-color": "",
                "background-image": "",
                "background-repeat": "repeat",
                "background-position": "center center",
                "background-size": "auto",
                "background-attachment": "scroll",
                "background-type": "",
                "background-media": "",
                "overlay-type": "",
                "overlay-color": "",
                "overlay-opacity": "",
                "overlay-gradient": ""
            }
        },
        "ast-content-background-meta": {
            "desktop": {
                "background-color": "var(--ast-global-color-4)",
                "background-image": "",
                "background-repeat": "repeat",
                "background-position": "center center",
                "background-size": "auto",
                "background-attachment": "scroll",
                "background-type": "",
                "background-media": "",
                "overlay-type": "",
                "overlay-color": "",
                "overlay-opacity": "",
                "overlay-gradient": ""
            },
            "tablet": {
                "background-color": "var(--ast-global-color-4)",
                "background-image": "",
                "background-repeat": "repeat",
                "background-position": "center center",
                "background-size": "auto",
                "background-attachment": "scroll",
                "background-type": "",
                "background-media": "",
                "overlay-type": "",
                "overlay-color": "",
                "overlay-opacity": "",
                "overlay-gradient": ""
            },
            "mobile": {
                "background-color": "var(--ast-global-color-4)",
                "background-image": "",
                "background-repeat": "repeat",
                "background-position": "center center",
                "background-size": "auto",
                "background-attachment": "scroll",
                "background-type": "",
                "background-media": "",
                "overlay-type": "",
                "overlay-color": "",
                "overlay-opacity": "",
                "overlay-gradient": ""
            }
        },
        "footnotes": ""
    },
    "class_list": [
        "post-3529",
        "page",
        "type-page",
        "status-publish",
        "hentry"
    ],
    "_links": {
        "self": [
            {
                "href": "https:\/\/cn.inffnitech.com\/en\/wp-json\/wp\/v2\/pages\/3529",
                "targetHints": {
                    "allow": [
                        "GET"
                    ]
                }
            }
        ],
        "collection": [
            {
                "href": "https:\/\/cn.inffnitech.com\/en\/wp-json\/wp\/v2\/pages"
            }
        ],
        "about": [
            {
                "href": "https:\/\/cn.inffnitech.com\/en\/wp-json\/wp\/v2\/types\/page"
            }
        ],
        "author": [
            {
                "embeddable": true,
                "href": "https:\/\/cn.inffnitech.com\/en\/wp-json\/wp\/v2\/users\/2"
            }
        ],
        "replies": [
            {
                "embeddable": true,
                "href": "https:\/\/cn.inffnitech.com\/en\/wp-json\/wp\/v2\/comments?post=3529"
            }
        ],
        "version-history": [
            {
                "count": 885,
                "href": "https:\/\/cn.inffnitech.com\/en\/wp-json\/wp\/v2\/pages\/3529\/revisions"
            }
        ],
        "predecessor-version": [
            {
                "id": 31342,
                "href": "https:\/\/cn.inffnitech.com\/en\/wp-json\/wp\/v2\/pages\/3529\/revisions\/31342"
            }
        ],
        "wp:attachment": [
            {
                "href": "https:\/\/cn.inffnitech.com\/en\/wp-json\/wp\/v2\/media?parent=3529"
            }
        ],
        "curies": [
            {
                "name": "wp",
                "href": "https:\/\/api.w.org\/{rel}",
                "templated": true
            }
        ]
    }
}