{"product_id":"aiper-ecosurfer-p1-robotic-solar-powered-cordless-skimmer","title":"Aiper EcoSurfer P1 Robotic Solar-Powered Cordless Skimmer","description":"\n\n\n\u003cmeta charset=\"UTF-8\"\u003e\n\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n\u003ctitle\u003eAiper EcoSurfer P1 Solar Robotic Skimmer\u003c\/title\u003e\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin\u003e\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@300;400;500;600;700\u0026amp;family=DM+Serif+Display:ital@0;1\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\n\u003cstyle\u003e\n*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n:root {\n  --blue-lightest: #e9f7ff;\n  --blue-light: #dff2ff;\n  --blue-mid: #c6e7ff;\n  --blue-border: #d7ebff;\n  --blue-soft: #f3fbff;\n  --blue-accent: #0a79c6;\n  --blue-deep: #0a4f7a;\n  --blue-navy: #071a2b;\n  --blue-mid-dark: #12324b;\n  --blue-hero-grad: #19a6db;\n  --green-accent: #1bbf9a;\n  --sun-accent: #f5a623;\n  --white: #ffffff;\n  --text-main: #071a2b;\n  --text-mid: #12324b;\n  --text-soft: #4a6a82;\n  --sans: 'DM Sans', system-ui, sans-serif;\n  --serif: 'DM Serif Display', Georgia, serif;\n}\n\nhtml { scroll-behavior: smooth; }\nbody {\n  background: var(--white);\n  color: var(--text-main);\n  font-family: var(--sans);\n  font-weight: 300;\n  overflow-x: hidden;\n}\n\n\/* ── SCROLL REVEAL ── *\/\n.reveal {\n  opacity: 0;\n  transform: translateY(32px);\n  transition: opacity 0.75s cubic-bezier(0.22,1,0.36,1), transform 0.75s cubic-bezier(0.22,1,0.36,1);\n}\n.reveal.from-left  { transform: translateX(-36px); }\n.reveal.from-right { transform: translateX(36px); }\n.reveal.scale-in   { transform: scale(0.95); }\n.reveal.visible    { opacity: 1; transform: none; }\n.reveal.delay-1 { transition-delay: 0.1s; }\n.reveal.delay-2 { transition-delay: 0.2s; }\n.reveal.delay-3 { transition-delay: 0.32s; }\n.reveal.delay-4 { transition-delay: 0.46s; }\n.reveal.delay-5 { transition-delay: 0.62s; }\n\n\/* ── HERO ── *\/\n.hero {\n  background: linear-gradient(160deg, #e9f7ff 0%, #f5fbff 45%, #e0f2ff 100%);\n  padding: 90px 48px 80px;\n  position: relative;\n  overflow: hidden;\n}\n.hero-orb {\n  position: absolute;\n  border-radius: 50%;\n  pointer-events: none;\n}\n.hero-orb-1 {\n  width: 600px; height: 600px;\n  background: radial-gradient(circle, rgba(10,121,198,0.08) 0%, transparent 70%);\n  top: -160px; right: -120px;\n}\n.hero-orb-2 {\n  width: 340px; height: 340px;\n  background: radial-gradient(circle, rgba(245,166,35,0.07) 0%, transparent 70%);\n  bottom: -60px; left: -40px;\n}\n.hero-inner {\n  max-width: 1320px;\n  margin: 0 auto;\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 64px;\n  align-items: center;\n  position: relative;\n  z-index: 2;\n}\n.hero-eyebrow {\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n  padding: 8px 16px;\n  border-radius: 999px;\n  background: var(--blue-light);\n  border: 1px solid var(--blue-mid);\n  color: var(--blue-deep);\n  font-size: 11px;\n  font-weight: 600;\n  letter-spacing: 1.5px;\n  text-transform: uppercase;\n  margin-bottom: 22px;\n}\n.hero-title {\n  font-family: var(--serif);\n  font-size: clamp(42px, 5.5vw, 72px);\n  font-weight: 400;\n  line-height: 1.05;\n  letter-spacing: -0.5px;\n  color: var(--blue-navy);\n  margin-bottom: 22px;\n}\n.hero-title em { font-style: italic; color: var(--blue-accent); }\n.hero-sub {\n  font-size: 17px;\n  line-height: 1.75;\n  color: var(--text-mid);\n  max-width: 500px;\n  margin-bottom: 36px;\n}\n.hero-stats {\n  display: flex;\n  gap: 28px;\n  padding: 22px 0;\n  border-top: 1px solid var(--blue-border);\n}\n.hero-stat-num {\n  font-family: var(--serif);\n  font-size: 32px;\n  font-weight: 400;\n  color: var(--blue-navy);\n  line-height: 1;\n}\n.hero-stat-label {\n  font-size: 11px;\n  letter-spacing: 1.5px;\n  text-transform: uppercase;\n  color: var(--text-soft);\n  margin-top: 4px;\n}\n.badge-row {\n  display: flex;\n  gap: 10px;\n  flex-wrap: wrap;\n  margin-top: 26px;\n  align-items: center;\n}\n.badge {\n  display: inline-flex;\n  align-items: center;\n  gap: 6px;\n  padding: 8px 14px;\n  background: var(--white);\n  border: 1px solid var(--blue-border);\n  border-radius: 100px;\n  font-size: 11px;\n  font-weight: 600;\n  letter-spacing: 1px;\n  text-transform: uppercase;\n  color: var(--blue-deep);\n  box-shadow: 0 4px 12px rgba(10,121,198,0.07);\n  line-height: 1;\n  white-space: nowrap;\n  position: relative;\n  z-index: 1;\n}\n.img-frame {\n  position: relative;\n}\n.img-frame img {\n  width: 100%;\n  border-radius: 22px;\n  display: block;\n  border: 1px solid var(--blue-border);\n  box-shadow: 0 32px 64px rgba(7,26,43,0.14), 0 8px 20px rgba(7,26,43,0.08);\n}\n.img-frame-glow {\n  position: absolute;\n  top: -20px; right: -20px;\n  width: 140px; height: 140px;\n  border-radius: 50%;\n  background: radial-gradient(circle, rgba(10,121,198,0.15) 0%, transparent 70%);\n  pointer-events: none;\n}\n.hero-badge {\n  position: absolute;\n  bottom: -18px; left: -18px;\n  background: var(--blue-navy);\n  color: white;\n  border-radius: 16px;\n  padding: 14px 18px;\n  font-size: 11px;\n  font-weight: 600;\n  letter-spacing: 0.5px;\n  box-shadow: 0 12px 32px rgba(7,26,43,0.25);\n}\n.hero-badge span {\n  display: block;\n  font-family: var(--serif);\n  font-size: 20px;\n  font-weight: 400;\n  margin-top: 2px;\n  color: var(--blue-mid);\n}\n\n\/* ── PARALLAX QUOTE BAND ── *\/\n.parallax-band {\n  position: relative;\n  height: 380px;\n  overflow: hidden;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n.parallax-bg {\n  position: absolute;\n  inset: -80px 0;\n  background: linear-gradient(160deg, #071a2b 0%, #0d3352 50%, #071a2b 100%);\n  will-change: transform;\n}\n.parallax-bg-overlay {\n  position: absolute;\n  inset: -80px 0;\n  background-image: url('https:\/\/cdn.shopify.com\/s\/files\/1\/0922\/3326\/9536\/files\/Aiper_EcoSurfer_P1_Cordless_Robotic_Solar-Powered_Skimmer_1.png?v=1772747266');\n  background-size: cover;\n  background-position: center;\n  opacity: 0.07;\n  will-change: transform;\n}\n.parallax-content {\n  position: relative;\n  z-index: 2;\n  text-align: center;\n  padding: 0 24px;\n  max-width: 860px;\n}\n.parallax-content blockquote {\n  font-family: var(--serif);\n  font-size: clamp(26px, 4vw, 46px);\n  font-weight: 400;\n  font-style: italic;\n  color: #ffffff;\n  line-height: 1.22;\n  letter-spacing: -0.3px;\n  text-shadow: 0 2px 20px rgba(0,0,0,0.3);\n}\n.parallax-content cite {\n  display: block;\n  margin-top: 20px;\n  font-family: var(--sans);\n  font-size: 11px;\n  letter-spacing: 2px;\n  text-transform: uppercase;\n  color: #7ecfff;\n  font-style: normal;\n}\n\n\/* ── SECTION SHARED ── *\/\n.section-eyebrow {\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n  padding: 8px 14px;\n  border-radius: 999px;\n  background: var(--blue-soft);\n  border: 1px solid var(--blue-border);\n  color: var(--blue-deep);\n  font-size: 11px;\n  font-weight: 700;\n  letter-spacing: 1.5px;\n  text-transform: uppercase;\n  margin-bottom: 16px;\n}\n.section-title {\n  font-family: var(--serif);\n  font-size: clamp(34px, 4vw, 54px);\n  font-weight: 400;\n  line-height: 1.06;\n  letter-spacing: -0.5px;\n  color: var(--blue-navy);\n  margin-bottom: 18px;\n}\n.section-title em { font-style: italic; color: var(--blue-accent); }\n.section-body {\n  font-size: 16px;\n  line-height: 1.8;\n  color: var(--text-mid);\n  margin-bottom: 28px;\n}\n\n\/* ── FEATURE ROWS ── *\/\n.feature-section {\n  padding: 100px 48px;\n  overflow: hidden;\n}\n.feature-section.light { background: var(--white); }\n.feature-section.soft  { background: var(--blue-soft); }\n.feature-section.lightest { background: var(--blue-lightest); }\n.feature-inner {\n  max-width: 1320px;\n  margin: 0 auto;\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 72px;\n  align-items: center;\n}\n\n\/* ── MINI CARDS ── *\/\n.card-row {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 14px;\n  margin-top: 8px;\n}\n.mini-card {\n  background: linear-gradient(180deg, var(--blue-soft) 0%, var(--white) 100%);\n  border: 1px solid var(--blue-border);\n  border-radius: 18px;\n  padding: 18px 16px;\n  transition: box-shadow 0.3s ease, transform 0.3s ease;\n}\n.mini-card:hover {\n  transform: translateY(-4px);\n  box-shadow: 0 14px 36px rgba(10,121,198,0.12);\n}\n.mini-card-label {\n  font-size: 10px;\n  letter-spacing: 2px;\n  text-transform: uppercase;\n  color: var(--blue-deep);\n  font-weight: 700;\n  margin-bottom: 6px;\n}\n.mini-card-title {\n  font-family: var(--serif);\n  font-size: 17px;\n  font-weight: 400;\n  color: var(--blue-navy);\n  margin-bottom: 6px;\n}\n.mini-card-body {\n  font-size: 13px;\n  color: var(--text-soft);\n  line-height: 1.6;\n}\n\n\/* ── BENEFIT LIST ── *\/\n.benefit-list {\n  list-style: none;\n  display: flex;\n  flex-direction: column;\n  gap: 12px;\n  margin-bottom: 28px;\n}\n.benefit-list li {\n  display: flex;\n  align-items: flex-start;\n  gap: 12px;\n  font-size: 15px;\n  color: var(--text-mid);\n  line-height: 1.55;\n}\n.benefit-list li::before {\n  content: '';\n  display: block;\n  width: 6px; height: 6px;\n  border-radius: 50%;\n  background: var(--blue-accent);\n  margin-top: 7px;\n  flex-shrink: 0;\n}\n\n\/* ── CALLOUT CARD ── *\/\n.callout-card {\n  background: var(--white);\n  border: 1px solid var(--blue-border);\n  border-radius: 20px;\n  padding: 20px 18px;\n  box-shadow: 0 12px 28px rgba(7,26,43,0.07);\n  display: flex;\n  gap: 14px;\n  align-items: flex-start;\n  margin-top: 18px;\n  transition: box-shadow 0.3s ease, transform 0.3s ease;\n}\n.callout-card:hover {\n  transform: translateY(-3px);\n  box-shadow: 0 20px 40px rgba(7,26,43,0.1);\n}\n.callout-icon {\n  width: 44px; height: 44px;\n  border-radius: 14px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  font-size: 20px;\n}\n.callout-text-title {\n  font-size: 14px;\n  font-weight: 700;\n  color: var(--blue-navy);\n  margin-bottom: 4px;\n}\n.callout-text-body {\n  font-size: 14px;\n  color: var(--text-mid);\n  line-height: 1.6;\n}\n\n\/* ── SOLAR BANNER (replaces family banner) ── *\/\n.solar-banner {\n  padding: 80px 48px;\n  background: var(--white);\n}\n.solar-banner-inner {\n  max-width: 1320px;\n  margin: 0 auto;\n}\n.solar-banner-card {\n  border-radius: 26px;\n  background: linear-gradient(90deg, var(--blue-accent) 0%, var(--blue-hero-grad) 55%, #5ad6ff 100%);\n  padding: 52px 32px;\n  box-shadow: 0 20px 48px rgba(7,26,43,0.14);\n}\n.solar-banner-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 40px;\n  align-items: center;\n}\n.solar-banner-title {\n  font-family: var(--serif);\n  font-size: clamp(28px, 3.5vw, 44px);\n  font-weight: 400;\n  color: white;\n  line-height: 1.1;\n  margin-bottom: 14px;\n}\n.solar-banner-body {\n  font-size: 16px;\n  color: rgba(255,255,255,0.88);\n  line-height: 1.75;\n}\n.solar-banner-cards {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 12px;\n}\n.sbc {\n  background: rgba(255,255,255,0.14);\n  border: 1px solid rgba(255,255,255,0.22);\n  border-radius: 18px;\n  padding: 18px 16px;\n  transition: background 0.3s ease, transform 0.3s ease;\n}\n.sbc:hover {\n  background: rgba(255,255,255,0.2);\n  transform: translateY(-3px);\n}\n.sbc-title {\n  font-size: 13px;\n  font-weight: 700;\n  color: white;\n  margin-bottom: 6px;\n}\n.sbc-body {\n  font-size: 13px;\n  color: rgba(255,255,255,0.8);\n  line-height: 1.6;\n}\n\n\/* ── STATS ── *\/\n.stats-section {\n  padding: 90px 48px;\n  background: var(--blue-soft);\n  position: relative;\n  overflow: hidden;\n}\n.stats-ring {\n  position: absolute;\n  border-radius: 50%;\n  border: 1px solid var(--blue-border);\n  pointer-events: none;\n}\n.stats-inner {\n  max-width: 1320px;\n  margin: 0 auto;\n  position: relative;\n  z-index: 2;\n}\n.stats-header {\n  text-align: center;\n  margin-bottom: 56px;\n}\n.stats-grid {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: 2px;\n  background: var(--blue-border);\n  border-radius: 22px;\n  overflow: hidden;\n  box-shadow: 0 16px 40px rgba(7,26,43,0.08);\n}\n.stat-cell {\n  background: var(--white);\n  padding: 44px 28px;\n  text-align: center;\n  transition: background 0.3s ease;\n}\n.stat-cell:hover { background: var(--blue-lightest); }\n.stat-num {\n  font-family: var(--serif);\n  font-size: clamp(38px, 4vw, 58px);\n  font-weight: 400;\n  color: var(--blue-navy);\n  line-height: 1;\n  letter-spacing: -1px;\n}\n.stat-unit {\n  font-family: var(--serif);\n  font-size: 20px;\n  font-weight: 400;\n  color: var(--text-soft);\n}\n.stat-label {\n  font-size: 11px;\n  letter-spacing: 1.5px;\n  text-transform: uppercase;\n  color: var(--text-soft);\n  margin-top: 10px;\n}\n.stat-desc {\n  font-size: 13px;\n  color: var(--text-soft);\n  margin-top: 5px;\n  line-height: 1.5;\n}\n\n\/* ── STICKY HOW IT WORKS ── *\/\n.sticky-wrapper {\n  position: relative;\n  height: 400vh;\n}\n.sticky-stage {\n  position: sticky;\n  top: 0;\n  height: 100vh;\n  background: linear-gradient(160deg, var(--blue-lightest) 0%, #f0faff 50%, var(--blue-soft) 100%);\n  overflow: hidden;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n.sticky-orb {\n  position: absolute;\n  border-radius: 50%;\n  pointer-events: none;\n  transition: all 1.2s cubic-bezier(0.22,1,0.36,1);\n}\n.sticky-inner {\n  max-width: 1320px;\n  width: 100%;\n  padding: 0 48px;\n  position: relative;\n  z-index: 2;\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 80px;\n  align-items: center;\n}\n.sticky-step-indicator {\n  display: flex;\n  gap: 8px;\n  margin-bottom: 28px;\n}\n.step-dot {\n  width: 28px; height: 3px;\n  border-radius: 2px;\n  background: var(--blue-border);\n  transition: background 0.5s ease, width 0.5s ease;\n}\n.step-dot.active {\n  background: var(--blue-accent);\n  width: 48px;\n}\n.sticky-step-label {\n  font-size: 11px;\n  letter-spacing: 2.5px;\n  text-transform: uppercase;\n  color: var(--blue-accent);\n  font-weight: 700;\n  margin-bottom: 10px;\n}\n.sticky-step-title {\n  font-family: var(--serif);\n  font-size: clamp(30px, 3.5vw, 50px);\n  font-weight: 400;\n  color: var(--blue-navy);\n  line-height: 1.1;\n  margin-bottom: 18px;\n  transition: opacity 0.5s ease, transform 0.5s ease;\n}\n.sticky-step-body {\n  font-size: 16px;\n  line-height: 1.8;\n  color: var(--text-mid);\n  max-width: 420px;\n  transition: opacity 0.5s ease;\n}\n.sticky-right {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n\/* solar process visual *\/\n.process-visual {\n  width: 320px; height: 320px;\n  position: relative;\n  flex-shrink: 0;\n}\n.process-ring {\n  position: absolute;\n  border-radius: 50%;\n  border: 1px solid;\n  top: 50%; left: 50%;\n  transform: translate(-50%,-50%);\n}\n.process-ring-1 {\n  width: 320px; height: 320px;\n  border-color: rgba(10,121,198,0.12);\n  animation: rotate-slow 22s linear infinite;\n}\n.process-ring-2 {\n  width: 220px; height: 220px;\n  border-color: rgba(10,121,198,0.2);\n  animation: rotate-slow 15s linear infinite reverse;\n}\n.process-ring-3 {\n  width: 120px; height: 120px;\n  border-color: rgba(245,166,35,0.35);\n  animation: rotate-slow 9s linear infinite;\n}\n@keyframes rotate-slow {\n  from { transform: translate(-50%,-50%) rotate(0deg); }\n  to   { transform: translate(-50%,-50%) rotate(360deg); }\n}\n.process-center {\n  position: absolute;\n  top: 50%; left: 50%;\n  transform: translate(-50%,-50%);\n  width: 76px; height: 76px;\n  border-radius: 50%;\n  background: linear-gradient(160deg, var(--sun-accent) 0%, var(--blue-accent) 100%);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 28px;\n  box-shadow: 0 0 40px rgba(10,121,198,0.3);\n  transition: all 1s cubic-bezier(0.22,1,0.36,1);\n}\n.process-node {\n  position: absolute;\n  width: 44px; height: 44px;\n  border-radius: 50%;\n  background: rgba(10,121,198,0.06);\n  border: 1px solid var(--blue-border);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 18px;\n  transition: all 0.8s cubic-bezier(0.22,1,0.36,1);\n}\n.process-node.active {\n  background: rgba(10,121,198,0.12);\n  border-color: var(--blue-accent);\n  box-shadow: 0 0 20px rgba(10,121,198,0.2);\n}\n#node-0 { top: calc(50% - 160px - 22px); left: calc(50% - 22px); }\n#node-1 { top: calc(50% - 22px);         left: calc(50% + 116px); }\n#node-2 { top: calc(50% + 116px);        left: calc(50% - 22px); }\n#node-3 { top: calc(50% - 22px);         left: calc(50% - 160px); }\n#node-4 { top: calc(50% - 113px - 22px); left: calc(50% + 113px - 22px); }\n\n\/* mobile steps *\/\n.mobile-steps { display: none; }\n.mobile-step-card {\n  background: var(--white);\n  border: 1px solid var(--blue-border);\n  border-radius: 20px;\n  padding: 26px 22px;\n  border-left: 3px solid var(--blue-accent);\n}\n.mobile-step-num {\n  font-size: 10px;\n  letter-spacing: 2.5px;\n  text-transform: uppercase;\n  color: var(--blue-accent);\n  font-weight: 700;\n  margin-bottom: 8px;\n}\n.mobile-step-title {\n  font-family: var(--serif);\n  font-size: 22px;\n  font-weight: 400;\n  color: var(--blue-navy);\n  margin-bottom: 10px;\n}\n.mobile-step-body {\n  font-size: 14px;\n  line-height: 1.75;\n  color: var(--text-mid);\n}\n\n\/* ── BENEFITS GRID ── *\/\n.benefits-section {\n  padding: 110px 48px;\n  background: var(--white);\n}\n.benefits-inner { max-width: 1320px; margin: 0 auto; }\n.benefits-header {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 80px;\n  align-items: end;\n  margin-bottom: 56px;\n}\n.benefits-grid {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: 18px;\n}\n.benefit-card {\n  padding: 28px 22px;\n  border-radius: 20px;\n  border: 1px solid var(--blue-border);\n  background: linear-gradient(180deg, var(--blue-soft) 0%, var(--white) 80%);\n  position: relative;\n  overflow: hidden;\n  transition: transform 0.4s cubic-bezier(0.22,1,0.36,1), box-shadow 0.4s ease;\n}\n.benefit-card::before {\n  content: '';\n  position: absolute;\n  top: 0; left: 0; right: 0;\n  height: 2px;\n  background: linear-gradient(90deg, var(--blue-accent), transparent);\n  opacity: 0;\n  transition: opacity 0.4s ease;\n}\n.benefit-card:hover {\n  transform: translateY(-6px);\n  box-shadow: 0 20px 44px rgba(10,121,198,0.12);\n}\n.benefit-card:hover::before { opacity: 1; }\n.benefit-icon { font-size: 26px; margin-bottom: 14px; display: block; }\n.benefit-title {\n  font-family: var(--serif);\n  font-size: 18px;\n  font-weight: 400;\n  color: var(--blue-navy);\n  margin-bottom: 8px;\n  line-height: 1.25;\n}\n.benefit-body { font-size: 13px; color: var(--text-soft); line-height: 1.7; }\n\n\/* ── SPECS + WARRANTY ── *\/\n.specs-section {\n  padding: 110px 48px;\n  background: var(--blue-soft);\n  overflow: hidden;\n}\n.specs-inner {\n  max-width: 1320px;\n  margin: 0 auto;\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 72px;\n  align-items: start;\n}\n.specs-table {\n  border: 1px solid var(--blue-border);\n  border-radius: 20px;\n  overflow: hidden;\n  background: var(--white);\n  box-shadow: 0 12px 28px rgba(7,26,43,0.06);\n}\n.spec-row {\n  display: flex;\n  align-items: center;\n  padding: 16px 22px;\n  border-bottom: 1px solid var(--blue-border);\n  transition: background 0.2s ease;\n}\n.spec-row:last-child { border-bottom: none; }\n.spec-row:hover { background: var(--blue-lightest); }\n.spec-key {\n  font-size: 11px;\n  letter-spacing: 1.5px;\n  text-transform: uppercase;\n  color: var(--text-soft);\n  font-weight: 600;\n  width: 210px;\n  flex-shrink: 0;\n}\n.spec-val {\n  font-family: var(--serif);\n  font-size: 17px;\n  font-weight: 400;\n  color: var(--blue-navy);\n}\n.warranty-card {\n  background: var(--blue-navy);\n  border-radius: 22px;\n  padding: 36px 30px;\n  color: white;\n  position: relative;\n  overflow: hidden;\n  box-shadow: 0 20px 44px rgba(7,26,43,0.2);\n}\n.warranty-card::before {\n  content: '';\n  position: absolute;\n  top: -80px; right: -80px;\n  width: 260px; height: 260px;\n  border-radius: 50%;\n  background: radial-gradient(circle, rgba(25,166,219,0.15) 0%, transparent 70%);\n}\n.warranty-title {\n  font-family: var(--serif);\n  font-size: 30px;\n  font-weight: 400;\n  font-style: italic;\n  color: white;\n  margin-bottom: 26px;\n  position: relative;\n}\n.warranty-item {\n  display: flex;\n  align-items: flex-start;\n  gap: 14px;\n  padding: 16px 0;\n  border-bottom: 1px solid rgba(255,255,255,0.08);\n}\n.warranty-item:last-of-type { border-bottom: none; }\n.warranty-dot {\n  width: 8px; height: 8px;\n  border-radius: 50%;\n  background: var(--blue-accent);\n  flex-shrink: 0;\n  margin-top: 6px;\n}\n.warranty-text { font-size: 15px; color: rgba(255,255,255,0.75); line-height: 1.5; }\n.warranty-text strong {\n  display: block;\n  font-family: var(--serif);\n  font-size: 20px;\n  font-weight: 400;\n  color: white;\n  margin-bottom: 2px;\n}\n\n\/* ── APP SECTION (dark) ── *\/\n.app-section {\n  padding: 110px 48px;\n  background: linear-gradient(160deg, var(--blue-navy) 0%, #0a2a45 70%, var(--blue-navy) 100%);\n  position: relative;\n  overflow: hidden;\n}\n.app-bg {\n  position: absolute;\n  inset: 0;\n  background: radial-gradient(ellipse 70% 80% at 30% 50%, rgba(25,166,219,0.1) 0%, transparent 65%);\n  pointer-events: none;\n}\n.app-inner {\n  max-width: 1320px;\n  margin: 0 auto;\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 72px;\n  align-items: center;\n  position: relative;\n  z-index: 2;\n}\n.app-eyebrow {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  padding: 8px 14px;\n  border-radius: 999px;\n  background: rgba(255,255,255,0.1);\n  border: 1px solid rgba(255,255,255,0.18);\n  color: #a8e3ff;\n  font-size: 11px;\n  font-weight: 700;\n  letter-spacing: 1.5px;\n  text-transform: uppercase;\n  margin-bottom: 18px;\n}\n.app-title {\n  font-family: var(--serif);\n  font-size: clamp(32px, 4vw, 52px);\n  font-weight: 400;\n  font-style: italic;\n  color: #f0f8ff;\n  line-height: 1.08;\n  margin-bottom: 18px;\n}\n.app-body {\n  font-size: 16px;\n  line-height: 1.8;\n  color: rgba(255,255,255,0.6);\n  margin-bottom: 28px;\n}\n.app-pills {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 10px;\n  margin-bottom: 28px;\n}\n.app-pill {\n  display: inline-block;\n  padding: 8px 16px;\n  border-radius: 100px;\n  border: 1px solid rgba(168,227,255,0.25);\n  font-size: 13px;\n  color: rgba(255,255,255,0.7);\n  transition: all 0.3s ease;\n}\n.app-pill:hover {\n  border-color: #a8e3ff;\n  color: #a8e3ff;\n  background: rgba(168,227,255,0.08);\n}\n.app-callout {\n  padding: 20px 18px;\n  border-left: 2px solid var(--blue-accent);\n  background: rgba(255,255,255,0.05);\n  border-radius: 0 14px 14px 0;\n}\n.app-callout-title { font-size: 14px; font-weight: 700; color: white; margin-bottom: 5px; }\n.app-callout-body  { font-size: 14px; color: rgba(255,255,255,0.5); line-height: 1.7; }\n.app-img img {\n  width: 100%;\n  border-radius: 20px;\n  display: block;\n  border: 1px solid rgba(255,255,255,0.12);\n  box-shadow: 0 32px 64px rgba(0,0,0,0.3);\n}\n\n\/* ── RESPONSIVE ── *\/\n@media (max-width: 960px) {\n  .hero-inner, .feature-inner, .solar-banner-grid, .app-inner,\n  .specs-inner, .benefits-header { grid-template-columns: 1fr; gap: 36px; }\n  .hero { padding: 90px 24px 60px; }\n  .stats-grid, .benefits-grid { grid-template-columns: repeat(2, 1fr); }\n  .feature-section, .solar-banner, .benefits-section,\n  .app-section, .specs-section { padding: 72px 24px; }\n  .stats-section { padding: 72px 24px; }\n  .hero-badge { display: none; }\n\n  .sticky-wrapper { height: auto !important; }\n  .sticky-stage {\n    position: relative !important;\n    height: auto !important;\n    padding: 72px 24px !important;\n    display: block !important;\n  }\n  .sticky-inner { display: none !important; }\n  .mobile-steps {\n    display: flex;\n    flex-direction: column;\n    gap: 16px;\n    position: relative;\n    z-index: 2;\n    max-width: 600px;\n    margin: 0 auto;\n  }\n  .mobile-steps-header { margin-bottom: 24px; }\n  .mobile-steps-eyebrow {\n    font-size: 10px; letter-spacing: 2.5px; text-transform: uppercase;\n    color: var(--blue-accent); font-weight: 700; margin-bottom: 8px;\n  }\n  .mobile-steps-title {\n    font-family: var(--serif); font-size: 28px;\n    font-weight: 400; color: var(--blue-navy);\n  }\n}\n@media (max-width: 600px) {\n  .stats-grid, .benefits-grid, .card-row,\n  .solar-banner-cards { grid-template-columns: 1fr; }\n  .hero-stats { gap: 18px; }\n}\n\u003c\/style\u003e\n\n\n\u003c!-- ═══════════════════════════════════════════════\n     HERO\n═══════════════════════════════════════════════ --\u003e\n\u003csection class=\"hero\"\u003e\n  \u003cdiv class=\"hero-orb hero-orb-1\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"hero-orb hero-orb-2\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"hero-inner\"\u003e\n\n    \u003cdiv\u003e\n      \u003cdiv class=\"hero-eyebrow reveal\"\u003eAiper EcoSurfer P1\u003c\/div\u003e\n      \u003ch2 class=\"hero-title reveal delay-1\"\u003e\n        Your pool, \u003cem\u003ecleaned\u003cbr\u003eby the sun.\u003c\/em\u003e\n      \u003c\/h2\u003e\n      \u003cp class=\"hero-sub reveal delay-2\"\u003e\n        The EcoSurfer P1 is a cordless, solar-powered robotic skimmer that cleans your pool surface 24\/7 — autonomously navigating, recharging itself, and dispensing chlorine, all without you lifting a finger.\n      \u003c\/p\u003e\n      \u003cdiv class=\"hero-stats reveal delay-3\"\u003e\n        \u003cdiv\u003e\n          \u003cdiv class=\"hero-stat-num\"\u003e150\u003cspan style=\"font-size:16px;color:var(--text-soft)\"\u003eµm\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"hero-stat-label\"\u003eUltra-fine filter\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv\u003e\n          \u003cdiv class=\"hero-stat-num\"\u003e24\u003cspan style=\"font-size:16px;color:var(--text-soft)\"\u003e\/7\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"hero-stat-label\"\u003eContinuous cleaning\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv\u003e\n          \u003cdiv class=\"hero-stat-num\"\u003e2\u003cspan style=\"font-size:16px;color:var(--text-soft)\"\u003e modes\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"hero-stat-label\"\u003eDual charging\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"badge-row reveal delay-4\"\u003e\n        \u003cspan class=\"badge\"\u003e☀️ Solar Powered\u003c\/span\u003e\n        \u003cspan class=\"badge\"\u003e📱 App Controlled\u003c\/span\u003e\n        \u003cspan class=\"badge\"\u003e🤖 Fully Autonomous\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"img-frame reveal from-right delay-2\"\u003e\n      \u003cdiv class=\"img-frame-glow\"\u003e\u003c\/div\u003e\n      \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0922\/3326\/9536\/files\/Aiper_EcoSurfer_P1_Cordless_Robotic_Solar-Powered_Skimmer_1.png?v=1772747266\" alt=\"Aiper EcoSurfer P1 Solar Robotic Skimmer\"\u003e\n      \u003cdiv class=\"hero-badge\"\u003eSolarSeeker™\u003cspan\u003eTechnology\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\n\u003c!-- ═══════════════════════════════════════════════\n     PARALLAX QUOTE BAND\n═══════════════════════════════════════════════ --\u003e\n\u003cdiv class=\"parallax-band\"\u003e\n  \u003cdiv class=\"parallax-bg\" id=\"parallax-bg\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"parallax-bg-overlay\" id=\"parallax-img\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"parallax-content reveal\"\u003e\n    \u003cblockquote\u003e\"Cleans while you sleep. Recharges in the sun. Works while you're away.\"\u003c\/blockquote\u003e\n    \u003ccite\u003eAiper EcoSurfer P1 — SolarSeeker™ Autonomous Technology\u003c\/cite\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c!-- ═══════════════════════════════════════════════\n     FEATURE 1: SOLAR + 24\/7 CLEANING\n═══════════════════════════════════════════════ --\u003e\n\u003csection class=\"feature-section light\"\u003e\n  \u003cdiv class=\"feature-inner\"\u003e\n\n    \u003cdiv class=\"img-frame reveal from-left\"\u003e\n      \u003cdiv class=\"img-frame-glow\"\u003e\u003c\/div\u003e\n      \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0922\/3326\/9536\/files\/Aiper_EcoSurfer_P1_Cordless_Robotic_Solar-Powered_Skimmer_1.png?v=1772747266\" alt=\"EcoSurfer P1 solar panel top view\"\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv\u003e\n      \u003cdiv class=\"section-eyebrow reveal\"\u003eSolarSeeker™ Technology\u003c\/div\u003e\n      \u003ch2 class=\"section-title reveal delay-1\"\u003eAlways cleaning. \u003cem\u003eAlways charging.\u003c\/em\u003e\n\u003c\/h2\u003e\n      \u003cp class=\"section-body reveal delay-2\"\u003e\n        SolarSeeker™ technology actively moves the P1 to the sunniest area of your pool when the battery is low, maximizing solar recharge time so cleaning never has to stop. Dual charging modes — solar and USB-C — mean you're always covered.\n      \u003c\/p\u003e\n      \u003cul class=\"benefit-list reveal delay-3\"\u003e\n        \u003cli\u003eAutomatically seeks sunlight when battery is low\u003c\/li\u003e\n        \u003cli\u003eUSB-C backup charging for cloudy days\u003c\/li\u003e\n        \u003cli\u003eUninterrupted 24\/7 surface cleaning\u003c\/li\u003e\n        \u003cli\u003eNo cords, no docking stations, no hassle\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cdiv class=\"card-row reveal delay-4\"\u003e\n        \u003cdiv class=\"mini-card\"\u003e\n          \u003cdiv class=\"mini-card-label\"\u003eSolar mode\u003c\/div\u003e\n          \u003cdiv class=\"mini-card-title\"\u003eSelf-sustaining\u003c\/div\u003e\n          \u003cdiv class=\"mini-card-body\"\u003eSeeks the brightest spot and recharges autonomously throughout the day\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"mini-card\"\u003e\n          \u003cdiv class=\"mini-card-label\"\u003eUSB-C backup\u003c\/div\u003e\n          \u003cdiv class=\"mini-card-title\"\u003eAlways ready\u003c\/div\u003e\n          \u003cdiv class=\"mini-card-body\"\u003ePlug in overnight or on cloudy days for a full recharge when solar isn't enough\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\n\u003c!-- ═══════════════════════════════════════════════\n     FEATURE 2: FILTRATION + CHLORINE\n═══════════════════════════════════════════════ --\u003e\n\u003csection class=\"feature-section soft\"\u003e\n  \u003cdiv class=\"feature-inner\"\u003e\n\n    \u003cdiv\u003e\n      \u003cdiv class=\"section-eyebrow reveal\"\u003eDual-action pool care\u003c\/div\u003e\n      \u003ch2 class=\"section-title reveal delay-1\"\u003ePhysical cleaning \u003cem\u003emeets chemical care.\u003c\/em\u003e\n\u003c\/h2\u003e\n      \u003cp class=\"section-body reveal delay-2\"\u003e\n        The 150µm ultra-fine filter captures debris that most skimmers miss — pollen, fine dust, tiny leaves — while the integrated chlorine dispenser keeps your water chemistry in check simultaneously. One device doing two jobs, all day long.\n      \u003c\/p\u003e\n      \u003cul class=\"benefit-list reveal delay-3\"\u003e\n        \u003cli\u003e150µm filter captures ultra-fine particles including pollen\u003c\/li\u003e\n        \u003cli\u003eBuilt-in chlorine tablet dispenser for continuous chemical dosing\u003c\/li\u003e\n        \u003cli\u003eDebrisGuard™ baffle prevents captured debris from escaping\u003c\/li\u003e\n        \u003cli\u003eCombines surface skimming and water treatment in one pass\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cdiv class=\"callout-card reveal delay-4\"\u003e\n        \u003cdiv class=\"callout-icon\" style=\"background:linear-gradient(160deg,#67f0c4 0%,#1bbf9a 100%);box-shadow:0 10px 20px rgba(27,191,154,0.22);\"\u003e🌿\u003c\/div\u003e\n        \u003cdiv\u003e\n          \u003cdiv class=\"callout-text-title\"\u003eDebrisGuard™ baffle — nothing escapes\u003c\/div\u003e\n          \u003cdiv class=\"callout-text-body\"\u003eWhen the P1 changes direction, the DebrisGuard™ baffle ensures collected debris stays locked inside the filter basket — no re-releasing debris back into your pool.\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"img-frame reveal from-right delay-2\"\u003e\n      \u003cdiv class=\"img-frame-glow\"\u003e\u003c\/div\u003e\n      \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0922\/3326\/9536\/files\/Aiper_EcoSurfer_P1_Cordless_Robotic_Solar-Powered_Skimmer_2.png?v=1772747266\" alt=\"EcoSurfer P1 filter and chlorine dispenser detail\"\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\n\u003c!-- ═══════════════════════════════════════════════\n     SOLAR BANNER\n═══════════════════════════════════════════════ --\u003e\n\u003csection class=\"solar-banner\"\u003e\n  \u003cdiv class=\"solar-banner-inner\"\u003e\n    \u003cdiv class=\"solar-banner-card reveal scale-in\"\u003e\n      \u003cdiv class=\"solar-banner-grid\"\u003e\n        \u003cdiv\u003e\n          \u003cdiv class=\"solar-banner-title\"\u003eA cleaner pool, powered entirely by the sun.\u003c\/div\u003e\n          \u003cp class=\"solar-banner-body\"\u003eThe EcoSurfer P1 combines autonomous navigation, solar recharging, fine filtration, and chlorine dispensing into one cordless device that works continuously — so your pool surface is always clear, without the effort.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"solar-banner-cards\"\u003e\n          \u003cdiv class=\"sbc\"\u003e\n            \u003cdiv class=\"sbc-title\"\u003eZero cord hassle\u003c\/div\u003e\n            \u003cdiv class=\"sbc-body\"\u003eFully cordless design moves freely across any pool shape or size.\u003c\/div\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"sbc\"\u003e\n            \u003cdiv class=\"sbc-title\"\u003eSelf-recharging\u003c\/div\u003e\n            \u003cdiv class=\"sbc-body\"\u003eSolarSeeker™ keeps the battery topped up without any input from you.\u003c\/div\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"sbc\"\u003e\n            \u003cdiv class=\"sbc-title\"\u003e24\/7 coverage\u003c\/div\u003e\n            \u003cdiv class=\"sbc-body\"\u003eContinuous surface cleaning means no buildup of debris or algae-feeding particles.\u003c\/div\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"sbc\"\u003e\n            \u003cdiv class=\"sbc-title\"\u003eApp monitoring\u003c\/div\u003e\n            \u003cdiv class=\"sbc-body\"\u003eCheck status, control movement, and monitor cleaning in real time from your phone.\u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\n\u003c!-- ═══════════════════════════════════════════════\n     STATS\n═══════════════════════════════════════════════ --\u003e\n\u003csection class=\"stats-section\"\u003e\n  \u003cdiv class=\"stats-ring\" style=\"width:500px;height:500px;top:-200px;right:-150px;\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"stats-ring\" style=\"width:380px;height:380px;bottom:-200px;left:-80px;\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"stats-inner\"\u003e\n    \u003cdiv class=\"stats-header\"\u003e\n      \u003cdiv class=\"section-eyebrow reveal\" style=\"display:inline-flex;margin:0 auto 16px;\"\u003eBy the numbers\u003c\/div\u003e\n      \u003ch2 class=\"section-title reveal delay-1\" style=\"text-align:center;font-size:clamp(28px,3.5vw,48px)\"\u003ePerformance you can \u003cem\u003eactually measure.\u003c\/em\u003e\n\u003c\/h2\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"stats-grid\"\u003e\n      \u003cdiv class=\"stat-cell reveal\"\u003e\n        \u003cdiv class=\"stat-num\"\u003e150\u003cspan class=\"stat-unit\"\u003eµm\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"stat-label\"\u003eFilter mesh\u003c\/div\u003e\n        \u003cdiv class=\"stat-desc\"\u003eCaptures pollen, dust, and ultra-fine debris\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"stat-cell reveal delay-1\"\u003e\n        \u003cdiv class=\"stat-num\"\u003e\n\u003cspan class=\"counter\" data-target=\"24\"\u003e0\u003c\/span\u003e\u003cspan class=\"stat-unit\"\u003e\/7\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"stat-label\"\u003eContinuous operation\u003c\/div\u003e\n        \u003cdiv class=\"stat-desc\"\u003eCleans day and night without stopping\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"stat-cell reveal delay-2\"\u003e\n        \u003cdiv class=\"stat-num\"\u003e\u003cspan class=\"counter\" data-target=\"2\"\u003e0\u003c\/span\u003e\u003c\/div\u003e\n        \u003cdiv class=\"stat-label\"\u003eCharging modes\u003c\/div\u003e\n        \u003cdiv class=\"stat-desc\"\u003eSolar + USB-C for all-weather reliability\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"stat-cell reveal delay-3\"\u003e\n        \u003cdiv class=\"stat-num\"\u003e\u003cspan class=\"counter\" data-target=\"2\"\u003e0\u003c\/span\u003e\u003c\/div\u003e\n        \u003cdiv class=\"stat-label\"\u003eOptical sensors\u003c\/div\u003e\n        \u003cdiv class=\"stat-desc\"\u003eDual sensors prevent wall stranding\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\n\u003c!-- ═══════════════════════════════════════════════\n     STICKY — HOW IT WORKS\n═══════════════════════════════════════════════ --\u003e\n\u003cdiv class=\"sticky-wrapper\" id=\"sticky-wrapper\"\u003e\n  \u003cdiv class=\"sticky-stage\" id=\"sticky-stage\"\u003e\n\n    \u003cdiv class=\"sticky-orb\" id=\"orb-a\" style=\"width:480px;height:480px;top:-100px;right:-80px;background:radial-gradient(circle, rgba(10,121,198,0.1) 0%, transparent 70%);\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"sticky-orb\" id=\"orb-b\" style=\"width:280px;height:280px;bottom:-40px;left:-40px;background:radial-gradient(circle, rgba(245,166,35,0.08) 0%, transparent 70%);\"\u003e\u003c\/div\u003e\n\n    \u003c!-- MOBILE FALLBACK --\u003e\n    \u003cdiv class=\"mobile-steps\"\u003e\n      \u003cdiv class=\"mobile-steps-header\"\u003e\n        \u003cdiv class=\"mobile-steps-eyebrow\"\u003eHow it works\u003c\/div\u003e\n        \u003cdiv class=\"mobile-steps-title\"\u003eThe P1 in five steps.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"mobile-step-card reveal\"\u003e\n        \u003cdiv class=\"mobile-step-num\"\u003eStep 01\u003c\/div\u003e\n        \u003cdiv class=\"mobile-step-title\"\u003eSolar panels power up.\u003c\/div\u003e\n        \u003cdiv class=\"mobile-step-body\"\u003eThe onboard solar panels begin charging the battery as soon as the P1 is placed in the pool. SolarSeeker™ continuously tracks the sunniest area to maximize charge.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"mobile-step-card reveal delay-1\"\u003e\n        \u003cdiv class=\"mobile-step-num\"\u003eStep 02\u003c\/div\u003e\n        \u003cdiv class=\"mobile-step-title\"\u003eAutonomous navigation begins.\u003c\/div\u003e\n        \u003cdiv class=\"mobile-step-body\"\u003eDual optical sensors map the pool surface and guide the P1 in efficient cleaning paths, while the anti-stranding system keeps it away from walls and corners.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"mobile-step-card reveal delay-2\"\u003e\n        \u003cdiv class=\"mobile-step-num\"\u003eStep 03\u003c\/div\u003e\n        \u003cdiv class=\"mobile-step-title\"\u003eUltra-fine filtration captures debris.\u003c\/div\u003e\n        \u003cdiv class=\"mobile-step-body\"\u003eThe 150µm filter mesh captures fine debris as the P1 skims the surface. DebrisGuard™ ensures nothing escapes when the unit changes direction.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"mobile-step-card reveal delay-3\"\u003e\n        \u003cdiv class=\"mobile-step-num\"\u003eStep 04\u003c\/div\u003e\n        \u003cdiv class=\"mobile-step-title\"\u003eChlorine dispenser treats the water.\u003c\/div\u003e\n        \u003cdiv class=\"mobile-step-body\"\u003eWhile skimming, the integrated chlorine tablet dispenser releases sanitizer into the water — combining physical and chemical pool care in every pass.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"mobile-step-card reveal delay-4\"\u003e\n        \u003cdiv class=\"mobile-step-num\"\u003eStep 05\u003c\/div\u003e\n        \u003cdiv class=\"mobile-step-title\"\u003eBattery low? It finds the sun.\u003c\/div\u003e\n        \u003cdiv class=\"mobile-step-body\"\u003eWhen power runs low, SolarSeeker™ moves the P1 to the brightest spot in your pool to recharge — then resumes cleaning automatically. No interruption, no input needed.\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- DESKTOP --\u003e\n    \u003cdiv class=\"sticky-inner\"\u003e\n      \u003cdiv\u003e\n        \u003cdiv class=\"sticky-step-indicator\"\u003e\n          \u003cdiv class=\"step-dot active\" id=\"dot-0\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"step-dot\" id=\"dot-1\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"step-dot\" id=\"dot-2\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"step-dot\" id=\"dot-3\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"step-dot\" id=\"dot-4\"\u003e\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"sticky-step-label\" id=\"sticky-label\"\u003eStep 01\u003c\/div\u003e\n        \u003cdiv class=\"sticky-step-title\" id=\"sticky-title\"\u003eSolar panels power up.\u003c\/div\u003e\n        \u003cdiv class=\"sticky-step-body\" id=\"sticky-body\"\u003eThe onboard solar panels begin charging the battery as soon as the P1 hits the water. SolarSeeker™ technology continuously tracks and moves to the sunniest pool area to maximize charge efficiency.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"sticky-right\"\u003e\n        \u003cdiv class=\"process-visual\"\u003e\n          \u003cdiv class=\"process-ring process-ring-1\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"process-ring process-ring-2\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"process-ring process-ring-3\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"process-center\" id=\"process-center\"\u003e☀️\u003c\/div\u003e\n          \u003cdiv class=\"process-node\" id=\"node-0\"\u003e☀️\u003c\/div\u003e\n          \u003cdiv class=\"process-node\" id=\"node-1\"\u003e🤖\u003c\/div\u003e\n          \u003cdiv class=\"process-node\" id=\"node-2\"\u003e🌿\u003c\/div\u003e\n          \u003cdiv class=\"process-node\" id=\"node-3\"\u003e💊\u003c\/div\u003e\n          \u003cdiv class=\"process-node\" id=\"node-4\"\u003e🔋\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c!-- ═══════════════════════════════════════════════\n     BENEFITS GRID\n═══════════════════════════════════════════════ --\u003e\n\u003csection class=\"benefits-section\"\u003e\n  \u003cdiv class=\"benefits-inner\"\u003e\n    \u003cdiv class=\"benefits-header\"\u003e\n      \u003cdiv\u003e\n        \u003cdiv class=\"section-eyebrow reveal\"\u003eWhy it stands out\u003c\/div\u003e\n        \u003ch2 class=\"section-title reveal delay-1\"\u003eEverything the P1 \u003cem\u003ebrings to your pool.\u003c\/em\u003e\n\u003c\/h2\u003e\n      \u003c\/div\u003e\n      \u003cp class=\"section-body reveal delay-2\" style=\"margin-bottom:0\"\u003e\n        The EcoSurfer P1 doesn't just skim — it integrates solar power, smart navigation, fine filtration, and chemical dosing into one effortless package.\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"benefits-grid\"\u003e\n      \u003cdiv class=\"benefit-card reveal\"\u003e\n        \u003cspan class=\"benefit-icon\"\u003e☀️\u003c\/span\u003e\n        \u003cdiv class=\"benefit-title\"\u003eSolarSeeker™ auto-recharge\u003c\/div\u003e\n        \u003cdiv class=\"benefit-body\"\u003eSeeks the sunniest spot when battery is low and recharges autonomously — no stopping, no input.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"benefit-card reveal delay-1\"\u003e\n        \u003cspan class=\"benefit-icon\"\u003e🔌\u003c\/span\u003e\n        \u003cdiv class=\"benefit-title\"\u003eDual charging modes\u003c\/div\u003e\n        \u003cdiv class=\"benefit-body\"\u003eUSB-C backup ensures the P1 is always ready, even on overcast days or overnight.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"benefit-card reveal delay-2\"\u003e\n        \u003cspan class=\"benefit-icon\"\u003e🌿\u003c\/span\u003e\n        \u003cdiv class=\"benefit-title\"\u003e150µm ultra-fine filter\u003c\/div\u003e\n        \u003cdiv class=\"benefit-body\"\u003eCaptures pollen, dust, and fine particles that standard skimmers leave behind.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"benefit-card reveal delay-3\"\u003e\n        \u003cspan class=\"benefit-icon\"\u003e💊\u003c\/span\u003e\n        \u003cdiv class=\"benefit-title\"\u003eIntegrated chlorine dispenser\u003c\/div\u003e\n        \u003cdiv class=\"benefit-body\"\u003eDispenses chlorine tablets continuously while skimming — two jobs in every single pass.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"benefit-card reveal delay-1\"\u003e\n        \u003cspan class=\"benefit-icon\"\u003e🛡️\u003c\/span\u003e\n        \u003cdiv class=\"benefit-title\"\u003eDebrisGuard™ baffle\u003c\/div\u003e\n        \u003cdiv class=\"benefit-body\"\u003eKeeps collected debris locked in when changing direction — nothing escapes back into your pool.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"benefit-card reveal delay-2\"\u003e\n        \u003cspan class=\"benefit-icon\"\u003e👁️\u003c\/span\u003e\n        \u003cdiv class=\"benefit-title\"\u003eDual optical sensors\u003c\/div\u003e\n        \u003cdiv class=\"benefit-body\"\u003eSmart navigation avoids walls and corners with anti-stranding technology for smooth, uninterrupted cleaning.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"benefit-card reveal delay-3\"\u003e\n        \u003cspan class=\"benefit-icon\"\u003e📱\u003c\/span\u003e\n        \u003cdiv class=\"benefit-title\"\u003eFull app control\u003c\/div\u003e\n        \u003cdiv class=\"benefit-body\"\u003eMonitor status, control movement, and check cleaning progress in real time from your phone.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"benefit-card reveal delay-4\"\u003e\n        \u003cspan class=\"benefit-icon\"\u003e🔗\u003c\/span\u003e\n        \u003cdiv class=\"benefit-title\"\u003eCompletely cordless\u003c\/div\u003e\n        \u003cdiv class=\"benefit-body\"\u003eNo power cables, no docking station — just drop it in and let it work, day after day.\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\n\u003c!-- ═══════════════════════════════════════════════\n     APP CONTROL (DARK SECTION)\n═══════════════════════════════════════════════ --\u003e\n\u003csection class=\"app-section\"\u003e\n  \u003cdiv class=\"app-bg\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"app-inner\"\u003e\n\n    \u003cdiv\u003e\n      \u003cdiv class=\"app-eyebrow reveal\"\u003eSmart app control\u003c\/div\u003e\n      \u003ch2 class=\"app-title reveal delay-1\"\u003eYour pool in your pocket.\u003c\/h2\u003e\n      \u003cp class=\"app-body reveal delay-2\"\u003e\n        The Aiper app connects directly to the EcoSurfer P1, giving you real-time control and monitoring from anywhere. Check battery level, cleaning status, and control movement — all from your phone.\n      \u003c\/p\u003e\n      \u003cdiv class=\"app-pills reveal delay-3\"\u003e\n        \u003cspan class=\"app-pill\"\u003eReal-time status\u003c\/span\u003e\n        \u003cspan class=\"app-pill\"\u003eRemote control\u003c\/span\u003e\n        \u003cspan class=\"app-pill\"\u003eBattery monitoring\u003c\/span\u003e\n        \u003cspan class=\"app-pill\"\u003eCleaning history\u003c\/span\u003e\n        \u003cspan class=\"app-pill\"\u003eScheduling\u003c\/span\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"app-callout reveal delay-4\"\u003e\n        \u003cdiv class=\"app-callout-title\"\u003eMonitor and control from anywhere\u003c\/div\u003e\n        \u003cdiv class=\"app-callout-body\"\u003eWhether you're at work or on holiday, the Aiper app keeps you connected to your pool — so you always know it's being taken care of.\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"img-frame reveal from-right delay-2\"\u003e\n      \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0922\/3326\/9536\/files\/Aiper_EcoSurfer_P1_Cordless_Robotic_Solar-Powered_Skimmer_2.png?v=1772747266\" alt=\"Aiper app and EcoSurfer P1 control\"\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\n\u003c!-- ═══════════════════════════════════════════════\n     SPECS + WARRANTY\n═══════════════════════════════════════════════ --\u003e\n\u003csection class=\"specs-section\"\u003e\n  \u003cdiv class=\"specs-inner\"\u003e\n    \u003cdiv\u003e\n      \u003cdiv class=\"section-eyebrow reveal\"\u003eSpecifications\u003c\/div\u003e\n      \u003ch2 class=\"section-title reveal delay-1\"\u003eBuilt to \u003cem\u003eperform.\u003c\/em\u003e\n\u003c\/h2\u003e\n      \u003cp class=\"section-body reveal delay-2\"\u003eEvery detail of the EcoSurfer P1 is engineered for autonomous, reliable, and low-maintenance pool surface care.\u003c\/p\u003e\n      \u003cdiv class=\"specs-table reveal delay-3\"\u003e\n        \u003cdiv class=\"spec-row\"\u003e\n\u003cspan class=\"spec-key\"\u003eProduct Name\u003c\/span\u003e\u003cspan class=\"spec-val\"\u003eEcoSurfer P1\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"spec-row\"\u003e\n\u003cspan class=\"spec-key\"\u003eFilter Mesh\u003c\/span\u003e\u003cspan class=\"spec-val\"\u003e150µm ultra-fine\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"spec-row\"\u003e\n\u003cspan class=\"spec-key\"\u003eCharging\u003c\/span\u003e\u003cspan class=\"spec-val\"\u003eSolar + USB-C dual mode\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"spec-row\"\u003e\n\u003cspan class=\"spec-key\"\u003eNavigation\u003c\/span\u003e\u003cspan class=\"spec-val\"\u003eDual optical sensors\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"spec-row\"\u003e\n\u003cspan class=\"spec-key\"\u003eSolar Tech\u003c\/span\u003e\u003cspan class=\"spec-val\"\u003eSolarSeeker™ auto-seek\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"spec-row\"\u003e\n\u003cspan class=\"spec-key\"\u003eChlorine\u003c\/span\u003e\u003cspan class=\"spec-val\"\u003eIntegrated tablet dispenser\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"spec-row\"\u003e\n\u003cspan class=\"spec-key\"\u003eAnti-Stranding\u003c\/span\u003e\u003cspan class=\"spec-val\"\u003eYes — wall detection system\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"spec-row\"\u003e\n\u003cspan class=\"spec-key\"\u003eApp Compatible\u003c\/span\u003e\u003cspan class=\"spec-val\"\u003eYes — iOS \u0026amp; Android\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"spec-row\"\u003e\n\u003cspan class=\"spec-key\"\u003eCord Required\u003c\/span\u003e\u003cspan class=\"spec-val\"\u003eNone — fully cordless\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"reveal from-right delay-2\"\u003e\n      \u003cdiv class=\"warranty-card\"\u003e\n        \u003cdiv class=\"warranty-title\"\u003eOur guarantee to you.\u003c\/div\u003e\n        \u003cdiv class=\"warranty-item\"\u003e\n          \u003cdiv class=\"warranty-dot\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"warranty-text\"\u003e\n\u003cstrong\u003eHassle-Free Returns\u003c\/strong\u003eNot the right fit? We make returns simple.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"warranty-item\"\u003e\n          \u003cdiv class=\"warranty-dot\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"warranty-text\"\u003e\n\u003cstrong\u003eManufacturer Warranty\u003c\/strong\u003eFull coverage backed by Aiper's quality guarantee.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"warranty-item\"\u003e\n          \u003cdiv class=\"warranty-dot\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"warranty-text\"\u003e\n\u003cstrong\u003eDedicated Support\u003c\/strong\u003eExpert help for setup, navigation, and app pairing.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv style=\"margin-top:28px;padding-top:22px;border-top:1px solid rgba(255,255,255,0.08)\"\u003e\n          \u003cdiv style=\"font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--blue-mid);margin-bottom:8px;font-weight:600\"\u003eWhat's in the box\u003c\/div\u003e\n          \u003cdiv style=\"font-size:14px;color:rgba(255,255,255,0.5);line-height:1.8\"\u003e\n            EcoSurfer P1 unit  ·  USB-C charging cable  ·  Filter basket  ·  Chlorine dispenser insert  ·  User manual\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\n\u003c!-- ═══════════════════════════════════════════════\n     JAVASCRIPT\n═══════════════════════════════════════════════ --\u003e\n\u003cscript\u003e\n\/\/ ── SCROLL REVEAL ──────────────────────────────\nconst revealEls = document.querySelectorAll('.reveal');\nconst revealObs = new IntersectionObserver((entries) =\u003e {\n  entries.forEach(e =\u003e { if (e.isIntersecting) e.target.classList.add('visible'); });\n}, { threshold: 0.1, rootMargin: '0px 0px -40px 0px' });\nrevealEls.forEach(el =\u003e revealObs.observe(el));\n\n\n\/\/ ── PARALLAX ───────────────────────────────────\nconst paraBg  = document.getElementById('parallax-bg');\nconst paraImg = document.getElementById('parallax-img');\nfunction onScroll() {\n  if (paraBg) {\n    const band   = paraBg.closest('.parallax-band');\n    const rect   = band.getBoundingClientRect();\n    const offset = -(rect.top * 0.32);\n    paraBg.style.transform  = `translateY(${offset}px)`;\n    paraImg.style.transform = `translateY(${offset * 0.55}px)`;\n  }\n  driveStickySection();\n}\nwindow.addEventListener('scroll', onScroll, { passive: true });\n\n\n\/\/ ── STICKY SCROLL — 5 STEPS ────────────────────\nconst stickySteps = [\n  {\n    label: 'Step 01',\n    title: 'Solar panels power up.',\n    body: 'The onboard solar panels begin charging the battery as soon as the P1 hits the water. SolarSeeker™ technology continuously tracks and moves to the sunniest pool area to maximize charge efficiency.',\n    centerEmoji: '☀️',\n    activeNode: 0,\n    orbA: { top: '-100px', right: '-80px' },\n  },\n  {\n    label: 'Step 02',\n    title: 'Autonomous navigation begins.',\n    body: 'Dual optical sensors map the pool surface and guide the P1 in efficient cleaning paths, while the anti-stranding system keeps it away from walls and corners for smooth, uninterrupted coverage.',\n    centerEmoji: '🤖',\n    activeNode: 1,\n    orbA: { top: '15%', right: '8%' },\n  },\n  {\n    label: 'Step 03',\n    title: 'Ultra-fine filtration captures debris.',\n    body: 'The 150µm filter mesh captures fine debris — pollen, dust, tiny leaves — as the P1 skims the surface. DebrisGuard™ ensures nothing escapes when the unit changes direction.',\n    centerEmoji: '🌿',\n    activeNode: 2,\n    orbA: { top: '35%', right: '-40px' },\n  },\n  {\n    label: 'Step 04',\n    title: 'Chlorine dispenser treats the water.',\n    body: 'While skimming, the integrated chlorine tablet dispenser releases sanitizer into the water simultaneously — combining physical and chemical pool care in a single, continuous pass.',\n    centerEmoji: '💊',\n    activeNode: 3,\n    orbA: { top: '55%', right: '5%' },\n  },\n  {\n    label: 'Step 05',\n    title: 'Battery low? It finds the sun.',\n    body: 'When power runs low, SolarSeeker™ autonomously moves the P1 to the brightest spot in your pool to recharge — then resumes cleaning automatically. No interruption, no input needed from you.',\n    centerEmoji: '🔋',\n    activeNode: 4,\n    orbA: { top: '70%', right: '-60px' },\n  },\n];\n\nlet currentStep = -1;\n\nfunction driveStickySection() {\n  const wrapper = document.getElementById('sticky-wrapper');\n  if (!wrapper) return;\n  const rect     = wrapper.getBoundingClientRect();\n  const total    = wrapper.offsetHeight - window.innerHeight;\n  const scrolled = -rect.top;\n  const progress = Math.max(0, Math.min(1, scrolled \/ total));\n  const stepIndex = Math.min(stickySteps.length - 1, Math.floor(progress * stickySteps.length));\n\n  if (stepIndex === currentStep) return;\n  currentStep = stepIndex;\n\n  const step   = stickySteps[stepIndex];\n  const label  = document.getElementById('sticky-label');\n  const title  = document.getElementById('sticky-title');\n  const body   = document.getElementById('sticky-body');\n  const center = document.getElementById('process-center');\n\n  [label, title, body].forEach(el =\u003e {\n    el.style.transition = 'none';\n    el.style.opacity    = '0';\n    el.style.transform  = 'translateY(10px)';\n  });\n\n  setTimeout(() =\u003e {\n    label.textContent = step.label;\n    title.textContent = step.title;\n    body.textContent  = step.body;\n    if (center) center.textContent = step.centerEmoji;\n\n    [label, title, body].forEach(el =\u003e {\n      el.style.transition = 'opacity 0.45s ease, transform 0.45s ease';\n      el.style.opacity    = '1';\n      el.style.transform  = 'none';\n    });\n  }, 160);\n\n  document.querySelectorAll('.step-dot').forEach((dot, i) =\u003e {\n    dot.classList.toggle('active', i === stepIndex);\n  });\n  document.querySelectorAll('.process-node').forEach((node, i) =\u003e {\n    node.classList.toggle('active', i === stepIndex);\n  });\n\n  const orbA = document.getElementById('orb-a');\n  if (orbA \u0026\u0026 step.orbA) {\n    orbA.style.top   = step.orbA.top;\n    orbA.style.right = step.orbA.right;\n  }\n}\n\n\n\/\/ ── COUNTER ANIMATION ──────────────────────────\nfunction animateCounter(el) {\n  const target   = parseInt(el.getAttribute('data-target'), 10);\n  const duration = 1600;\n  const start    = performance.now();\n  function tick(now) {\n    const elapsed  = now - start;\n    const progress = Math.min(elapsed \/ duration, 1);\n    const ease     = 1 - Math.pow(1 - progress, 3);\n    el.textContent = Math.round(ease * target).toLocaleString();\n    if (progress \u003c 1) requestAnimationFrame(tick);\n  }\n  requestAnimationFrame(tick);\n}\nconst counterObs = new IntersectionObserver((entries) =\u003e {\n  entries.forEach(e =\u003e {\n    if (e.isIntersecting) { animateCounter(e.target); counterObs.unobserve(e.target); }\n  });\n}, { threshold: 0.5 });\ndocument.querySelectorAll('.counter').forEach(el =\u003e counterObs.observe(el));\n\u003c\/script\u003e","brand":"Aiper","offers":[{"title":"Default Title","offer_id":54873898090787,"sku":"ECOSURFER P1","price":399.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0914\/0987\/5235\/files\/Aiper_EcoSurfer_P1_Cordless_Robotic_Solar-Powered_Skimmer_2_0cfa8c84-cd57-4994-8e1d-5a8a014f1819.webp?v=1777143364","url":"https:\/\/wholesalepoolmart.com\/products\/aiper-ecosurfer-p1-robotic-solar-powered-cordless-skimmer","provider":"Wholesale Pool Mart","version":"1.0","type":"link"}