{"product_id":"holiday-projection-night-light","title":"💡 Turn Any Room Into a Christmas Wonderland – Holiday Projection Night Light","description":"\n\u003cstyle\u003e\n\/* JORENIX MODULE 02 — SMART SCENE CONTROL *\/\n#jx-smart-control-02 {\n  --jx02-bg: #081525;\n  --jx02-panel: #11233B;\n  --jx02-gold: #F5C06B;\n  --jx02-text: #F5F8FC;\n  --jx02-muted: #C4D4E5;\n  --jx02-line: rgba(245,192,107,.23);\n\n  width: 100%;\n  max-width: 1200px;\n  margin: 0 auto 22px;\n  padding: 30px 22px;\n  border: 1px solid var(--jx02-line);\n  border-radius: 20px;\n  background:\n    radial-gradient(\n      circle at 10% 75%,\n      rgba(38,76,130,.28),\n      transparent 55%\n    ),\n    var(--jx02-bg);\n  color: var(--jx02-text);\n  font-family: inherit;\n  box-sizing: border-box;\n  overflow: hidden;\n}\n\n#jx-smart-control-02 *,\n#jx-smart-control-02 *::before,\n#jx-smart-control-02 *::after {\n  box-sizing: border-box;\n}\n\n#jx-smart-control-02 .jx02-layout {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  align-items: center;\n  gap: 36px;\n}\n\n\/* VIDEO *\/\n#jx-smart-control-02 .jx02-media {\n  position: relative;\n  aspect-ratio: 4 \/ 5;\n  width: 100%;\n  overflow: hidden;\n  border-radius: 16px;\n  border: 1px solid rgba(245,192,107,.35);\n  background:\n    radial-gradient(\n      circle at 50% 35%,\n      #263E78 0%,\n      #101E42 45%,\n      #091426 100%\n    );\n}\n\n#jx-smart-control-02 .jx02-asset {\n  display: block;\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  object-position: center;\n}\n\n#jx-smart-control-02 .jx02-placeholder {\n  position: absolute;\n  inset: 0;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  gap: 14px;\n  padding: 24px;\n  text-align: center;\n}\n\n#jx-smart-control-02 .jx02-placeholder svg {\n  width: 48px;\n  height: 48px;\n  stroke: var(--jx02-gold);\n  fill: none;\n  stroke-width: 1.5;\n}\n\n#jx-smart-control-02 .jx02-placeholder strong {\n  color: white;\n  font-size: 17px;\n}\n\n#jx-smart-control-02 .jx02-placeholder span {\n  color: #B9CDE4;\n  font-size: 12px;\n  line-height: 1.6;\n}\n\n#jx-smart-control-02 .jx02-media::after {\n  content: \"\";\n  position: absolute;\n  inset: 45% 0 0;\n  background: linear-gradient(\n    to top,\n    rgba(4,12,27,.7),\n    transparent\n  );\n  pointer-events: none;\n}\n\n#jx-smart-control-02 .jx02-media-label {\n  position: absolute;\n  z-index: 2;\n  bottom: 17px;\n  left: 17px;\n  right: 17px;\n  display: flex;\n  align-items: center;\n  gap: 9px;\n  color: white;\n  font-size: 11px;\n  font-weight: 700;\n  letter-spacing: .1em;\n}\n\n#jx-smart-control-02 .jx02-dot {\n  width: 7px;\n  height: 7px;\n  border-radius: 50%;\n  background: var(--jx02-gold);\n  flex: 0 0 7px;\n}\n\n\/* TEXT *\/\n#jx-smart-control-02 .jx02-eyebrow {\n  display: block;\n  margin-bottom: 14px;\n  color: var(--jx02-gold);\n  font-size: 11px;\n  font-weight: 750;\n  letter-spacing: .15em;\n}\n\n#jx-smart-control-02 .jx02-title {\n  margin: 0 0 18px;\n  color: white;\n  font-family: Georgia, \"Times New Roman\", serif;\n  font-size: clamp(34px, 4.5vw, 54px);\n  font-weight: 400;\n  line-height: 1.1;\n  letter-spacing: -.025em;\n}\n\n#jx-smart-control-02 .jx02-title em {\n  display: block;\n  color: var(--jx02-gold);\n  font-weight: 400;\n}\n\n#jx-smart-control-02 .jx02-desc {\n  max-width: 480px;\n  margin: 0;\n  color: var(--jx02-muted);\n  font-size: 15px;\n  line-height: 1.75;\n}\n\n\/* STEPS *\/\n#jx-smart-control-02 .jx02-steps {\n  display: grid;\n  grid-template-columns: repeat(3,minmax(0,1fr));\n  gap: 9px;\n  margin-top: 26px;\n}\n\n#jx-smart-control-02 .jx02-step {\n  min-width: 0;\n  padding: 14px 9px;\n  border: 1px solid var(--jx02-line);\n  border-radius: 11px;\n  background: rgba(255,255,255,.045);\n}\n\n#jx-smart-control-02 .jx02-number {\n  display: block;\n  margin-bottom: 8px;\n  color: var(--jx02-gold);\n  font-family: Georgia,serif;\n  font-size: 21px;\n  font-style: italic;\n}\n\n#jx-smart-control-02 .jx02-step-text {\n  color: #F0F5FB;\n  font-size: 12px;\n  line-height: 1.4;\n  font-weight: 600;\n}\n\n#jx-smart-control-02 .jx02-footer {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  margin-top: 23px;\n  padding-top: 15px;\n  border-top: 1px solid var(--jx02-line);\n  color: #AABFD6;\n  font-size: 11px;\n}\n\n#jx-smart-control-02 .jx02-footer-line {\n  width: 28px;\n  height: 1px;\n  flex: 0 0 28px;\n  background: var(--jx02-gold);\n}\n\n\/* MOBILE *\/\n@media (max-width: 749px) {\n  #jx-smart-control-02 {\n    padding: 15px 13px 20px;\n    border-radius: 15px;\n    margin-bottom: 16px;\n  }\n\n  #jx-smart-control-02 .jx02-layout {\n    grid-template-columns: 1fr;\n    gap: 21px;\n  }\n\n  #jx-smart-control-02 .jx02-media {\n    border-radius: 12px;\n    aspect-ratio: 4 \/ 4.3;\n  }\n\n  #jx-smart-control-02 .jx02-eyebrow {\n    margin-bottom: 9px;\n    font-size: 10px;\n  }\n\n  #jx-smart-control-02 .jx02-title {\n    margin-bottom: 12px;\n    font-size: clamp(32px,8vw,40px);\n  }\n\n  #jx-smart-control-02 .jx02-desc {\n    font-size: 13.5px;\n    line-height: 1.65;\n  }\n\n  #jx-smart-control-02 .jx02-steps {\n    margin-top: 19px;\n    gap: 7px;\n  }\n\n  #jx-smart-control-02 .jx02-step {\n    padding: 11px 8px;\n  }\n\n  #jx-smart-control-02 .jx02-number {\n    font-size: 18px;\n    margin-bottom: 5px;\n  }\n\n  #jx-smart-control-02 .jx02-step-text {\n    font-size: 10.5px;\n  }\n\n  #jx-smart-control-02 .jx02-footer {\n    margin-top: 16px;\n  }\n}\n\u003c\/style\u003e\n\n\u003c!--\n在下方 section 里填写两个 URL：\n\ndata-video-url = 4秒MP4视频\ndata-cover-url = 首帧封面图\n\n两项为空时显示占位图。\n只有封面时显示静态图。\n--\u003e\n\n\u003csection id=\"jx-smart-control-02\" data-video-url=\"\" data-cover-url=\"\"\u003e\n\n  \u003cdiv class=\"jx02-layout\"\u003e\n\n    \u003c!-- MEDIA --\u003e\n    \u003cdiv class=\"jx02-media\"\u003e\n\n      \u003cdiv class=\"jx02-placeholder\"\u003e\n        \u003csvg viewbox=\"0 0 24 24\"\u003e\n          \u003crect x=\"7\" y=\"2\" width=\"10\" height=\"20\" rx=\"2\"\u003e\u003c\/rect\u003e\n          \u003cpath d=\"M10 18h4\"\u003e\u003c\/path\u003e\n        \u003c\/svg\u003e\n\n        \u003cstrong\u003eOne Tap. A New World.\u003c\/strong\u003e\n\n        \u003cspan\u003e\n          Add your 4-second phone-controlled\n          projection video here.\n        \u003c\/span\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"jx02-media-label\"\u003e\n        \u003cspan class=\"jx02-dot\"\u003e\u003c\/span\u003e\n        \u003cspan\u003eOCEAN → GALAXY\u003c\/span\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n    \u003c!-- CONTENT --\u003e\n    \u003cdiv class=\"jx02-content\"\u003e\n\n      \u003cspan class=\"jx02-eyebrow\"\u003e\n        02 \/ SMART SCENE CONTROL\n      \u003c\/span\u003e\n\n      \u003ch2 class=\"jx02-title\"\u003e\n        Change the Scene.\n        \u003cem\u003eNot Your Seat.\u003c\/em\u003e\n      \u003c\/h2\u003e\n\n      \u003cp class=\"jx02-desc\"\u003e\n        From ocean depths to distant galaxies,\n        choose your favorite scene from your\n        phone and give your room a whole\n        new atmosphere.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"jx02-steps\"\u003e\n\n        \u003cdiv class=\"jx02-step\"\u003e\n          \u003cspan class=\"jx02-number\"\u003e01\u003c\/span\u003e\n          \u003cspan class=\"jx02-step-text\"\u003e\n            Choose a Scene\n          \u003c\/span\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"jx02-step\"\u003e\n          \u003cspan class=\"jx02-number\"\u003e02\u003c\/span\u003e\n          \u003cspan class=\"jx02-step-text\"\u003e\n            Tap to Switch\n          \u003c\/span\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"jx02-step\"\u003e\n          \u003cspan class=\"jx02-number\"\u003e03\u003c\/span\u003e\n          \u003cspan class=\"jx02-step-text\"\u003e\n            Enjoy the View\n          \u003c\/span\u003e\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"jx02-footer\"\u003e\n        \u003cspan class=\"jx02-footer-line\"\u003e\u003c\/span\u003e\n        \u003cspan\u003e\n          YOUR FAVORITE SCENES, YOUR WAY.\n        \u003c\/span\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById(\n    'jx-smart-control-02'\n  );\n\n  if (!root || root.dataset.ready === '1') return;\n  root.dataset.ready = '1';\n\n  var videoUrl = root.getAttribute('data-video-url');\n  var coverUrl = root.getAttribute('data-cover-url');\n\n  videoUrl = videoUrl ? videoUrl.trim() : '';\n  coverUrl = coverUrl ? coverUrl.trim() : '';\n\n  var media = root.querySelector('.jx02-media');\n  var placeholder = root.querySelector('.jx02-placeholder');\n\n  if (!media || !placeholder) return;\n  if (!videoUrl \u0026\u0026 !coverUrl) return;\n\n  var asset;\n\n  if (videoUrl) {\n    asset = document.createElement('video');\n    asset.className = 'jx02-asset';\n\n    asset.muted = true;\n    asset.loop = true;\n    asset.playsInline = true;\n    asset.preload = 'none';\n\n    asset.setAttribute('muted', '');\n    asset.setAttribute('playsinline', '');\n\n    if (coverUrl) {\n      asset.poster = coverUrl;\n    }\n\n    var source = document.createElement('source');\n    source.src = videoUrl;\n    source.type = 'video\/mp4';\n    asset.appendChild(source);\n\n    if ('IntersectionObserver' in window) {\n      var observer = new IntersectionObserver(\n        function(entries) {\n          entries.forEach(function(entry) {\n            if (entry.isIntersecting) {\n              asset.play().catch(function() {});\n            } else {\n              asset.pause();\n            }\n          });\n        },\n        {threshold: 0.15}\n      );\n\n      observer.observe(root);\n    } else {\n      asset.play().catch(function() {});\n    }\n\n  } else {\n    asset = document.createElement('img');\n    asset.className = 'jx02-asset';\n    asset.src = coverUrl;\n    asset.alt = 'Jorenix phone-controlled projection scene';\n    asset.loading = 'lazy';\n  }\n\n  asset.style.position = 'absolute';\n  asset.style.inset = '0';\n\n  media.insertBefore(asset, placeholder);\n  placeholder.style.display = 'none';\n\n  asset.addEventListener('error', function() {\n    if (coverUrl \u0026\u0026 videoUrl) {\n      var backup = document.createElement('img');\n      backup.className = 'jx02-asset';\n      backup.src = coverUrl;\n      backup.alt = 'Jorenix projection scene';\n      backup.style.position = 'absolute';\n      backup.style.inset = '0';\n      media.insertBefore(backup, asset);\n    } else {\n      placeholder.style.display = 'flex';\n    }\n\n    asset.remove();\n  });\n})();\n\u003c\/script\u003e\n","brand":"df","offers":[{"title":"Buy1","offer_id":52580482777383,"sku":"CDW-SDTYD-USB插电款-1","price":29.9,"currency_code":"USD","in_stock":true},{"title":"Buy 2 Get 17% OFF","offer_id":52580482810151,"sku":"CDW-SDTYD-USB插电款-2","price":49.9,"currency_code":"USD","in_stock":true},{"title":"Buy 3 Get 22% OFF","offer_id":52580482842919,"sku":"CDW-SDTYD-USB插电款-3","price":69.9,"currency_code":"USD","in_stock":true},{"title":"Buy 4 Get 25% OFF","offer_id":52580482875687,"sku":"CDW-SDTYD-USB插电款-4","price":89.9,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0990\/7083\/7031\/files\/76060b3250a300d30695a8f23a17307b.png?v=1794389055","url":"https:\/\/brendixa.com\/products\/holiday-projection-night-light","provider":"Brendixa","version":"1.0","type":"link"}