{"product_id":"christmas-candle-carousel","title":"🎅 Light The Candles, Watch Santa Take Flight! 🕯️ Wooden Christmas Candle Carousel","description":"\n\u003cstyle\u003e\n\/* =========================================\n ALASJOY CHRISTMAS CANDLE CAROUSEL\n THE CANDLELIT CHRISTMAS STORY\n V3 \/ NO LIQUID \/ NO EXTRA CAROUSEL\n========================================= *\/\n\n#aj-candle-magic{\n  --cream:#fbf7f0;\n  --paper:#fffdf8;\n  --oat:#f0e5d5;\n  --wine:#713d42;\n  --deep:#422d34;\n  --gold:#cba56e;\n  --amber:#edc183;\n  --ink:#433832;\n  --muted:#776b62;\n  --line:#e8d9c6;\n  width:100%;\n  max-width:1200px;\n  margin:18px auto;\n  background:var(--cream);\n  color:var(--ink);\n  font:15px\/1.7 Arial,Helvetica,sans-serif;\n  border-radius:16px;\n  overflow:hidden;\n  isolation:isolate;\n  container-type:inline-size;\n}\n#aj-candle-magic,\n#aj-candle-magic *,\n#aj-candle-magic *::before,\n#aj-candle-magic *::after{\n  box-sizing:border-box;\n}\n#aj-candle-magic h2,\n#aj-candle-magic h3,\n#aj-candle-magic p,\n#aj-candle-magic figure{\n  margin:0;\n  padding:0;\n  text-transform:none;\n  letter-spacing:normal;\n}\n#aj-candle-magic h2{\n  font:700 clamp(29px,3.7vw,43px)\/1.17 Georgia,serif;\n  color:var(--ink);\n  overflow-wrap:break-word;\n}\n#aj-candle-magic h3{\n  font:700 20px\/1.3 Georgia,serif;\n  color:var(--ink);\n}\n#aj-candle-magic p{\n  color:var(--muted);\n  font-size:14px;\n  line-height:1.8;\n}\n#aj-candle-magic img,\n#aj-candle-magic video{\n  display:block;\n  width:100%;\n  max-width:100%;\n}\n#aj-candle-magic .cm-section{\n  padding:43px 20px;\n}\n#aj-candle-magic .cm-center{\n  text-align:center;\n}\n#aj-candle-magic .cm-kicker{\n  display:block;\n  margin-bottom:13px;\n  color:#a17a4e;\n  font-size:11px;\n  font-weight:800;\n  line-height:1.5;\n  letter-spacing:1.7px;\n  text-transform:uppercase;\n}\n#aj-candle-magic .cm-intro{\n  max-width:670px;\n  margin:15px auto 0;\n}\n#aj-candle-magic .cm-rule{\n  display:flex;\n  justify-content:center;\n  align-items:center;\n  gap:13px;\n  margin:19px auto;\n  color:var(--gold);\n  font-size:22px;\n}\n#aj-candle-magic .cm-rule::before,\n#aj-candle-magic .cm-rule::after{\n  content:\"\";\n  width:65px;\n  height:1px;\n  background:var(--gold);\n}\n\n\/* HERO *\/\n\n#aj-candle-magic .cm-hero{\n  display:grid;\n  grid-template-columns:minmax(0,1fr);\n  align-items:center;\n  gap:25px;\n  padding:37px 20px;\n  background:\n    radial-gradient(\n      ellipse at 100% 0%,\n      rgba(237,190,123,.35),\n      transparent 57%\n    ),\n    radial-gradient(\n      ellipse at 0% 100%,\n      rgba(194,143,114,.15),\n      transparent 62%\n    ),\n    var(--cream);\n}\n#aj-candle-magic .cm-hero-copy{\n  min-width:0;\n}\n#aj-candle-magic .cm-hero h2{\n  font-size:clamp(33px,4.3vw,53px);\n  max-width:640px;\n}\n#aj-candle-magic .cm-hero h2 em{\n  color:#9d6846;\n  font-weight:400;\n}\n#aj-candle-magic .cm-hero-lead{\n  margin-top:18px;\n  max-width:560px;\n  font-size:16px;\n}\n#aj-candle-magic .cm-chips{\n  display:flex;\n  flex-wrap:wrap;\n  gap:8px;\n  margin-top:22px;\n}\n#aj-candle-magic .cm-chip{\n  padding:9px 12px;\n  border:1px solid #dec9aa;\n  border-radius:30px;\n  background:#fffdfa;\n  color:#74543c;\n  font-size:12px;\n  font-weight:700;\n}\n#aj-candle-magic .cm-hero-points{\n  display:grid;\n  gap:12px;\n  margin-top:23px;\n}\n#aj-candle-magic .cm-hero-point{\n  display:flex;\n  align-items:flex-start;\n  gap:11px;\n}\n#aj-candle-magic .cm-hero-point span{\n  flex:0 0 28px;\n  font-size:22px;\n}\n#aj-candle-magic .cm-hero-point strong{\n  display:block;\n  color:#614839;\n  font-size:14px;\n}\n#aj-candle-magic .cm-hero-point p{\n  font-size:13px;\n}\n#aj-candle-magic .cm-hero-image{\n  display:none;\n  min-width:0;\n}\n#aj-candle-magic .cm-hero-image.cm-on{\n  display:block;\n}\n#aj-candle-magic .cm-image-frame{\n  padding:10px;\n  border:1px solid #d8c09e;\n  border-radius:14px;\n  background:var(--paper);\n  box-shadow:0 14px 29px rgba(67,43,32,.12);\n}\n#aj-candle-magic .cm-image-frame img{\n  width:100%;\n  height:auto;\n  aspect-ratio:1\/1;\n  object-fit:contain;\n  border-radius:9px;\n  background:#f4ebdf;\n}\n#aj-candle-magic .cm-image-caption{\n  display:block;\n  padding:11px 6px 3px;\n  color:#866448;\n  font-size:12px;\n  font-weight:700;\n  text-align:center;\n}\n\n\/* VALUE STRIP *\/\n\n#aj-candle-magic .cm-strip{\n  display:grid;\n  grid-template-columns:repeat(2,minmax(0,1fr));\n  gap:12px;\n  padding:19px;\n  background:linear-gradient(\n    90deg,#e8d7bf,#fbf0df,#e6d2b7\n  );\n  border-top:1px solid #dcc5a2;\n  border-bottom:1px solid #dcc5a2;\n}\n#aj-candle-magic .cm-strip div{\n  text-align:center;\n  color:#6b513d;\n  font-size:12px;\n  font-weight:800;\n}\n#aj-candle-magic .cm-strip span{\n  display:block;\n  margin-bottom:4px;\n  font-size:23px;\n}\n\n\/* NIGHT \/ CANDLELIGHT *\/\n\n#aj-candle-magic .cm-night{\n  position:relative;\n  isolation:isolate;\n  padding:56px 23px;\n  overflow:hidden;\n  text-align:center;\n  background:\n    radial-gradient(\n      ellipse at 50% 102%,\n      rgba(236,174,93,.34),\n      transparent 65%\n    ),\n    linear-gradient(\n      150deg,#7f454a,#482e37,#31272d\n    );\n}\n#aj-candle-magic .cm-night::before{\n  content:\"\";\n  position:absolute;\n  inset:0;\n  z-index:0;\n  pointer-events:none;\n  background-image:\n    radial-gradient(\n      circle,\n      rgba(255,218,158,.65) 1px,\n      transparent 2px\n    ),\n    radial-gradient(\n      circle,\n      rgba(255,244,220,.55) 1px,\n      transparent 2px\n    );\n  background-size:151px 179px,211px 231px;\n  opacity:.4;\n  animation:cm-flicker 7s ease-in-out infinite;\n}\n#aj-candle-magic .cm-night\u003e*{\n  position:relative;\n  z-index:1;\n}\n@keyframes cm-flicker{\n  0%,100%{opacity:.24;}\n  50%{opacity:.62;}\n}\n#aj-candle-magic .cm-night .cm-kicker{\n  color:#f0d29f;\n}\n#aj-candle-magic .cm-night h2{\n  color:#fff8eb;\n}\n#aj-candle-magic .cm-night p{\n  max-width:640px;\n  margin:17px auto 0;\n  color:#f2e8dd;\n  font-size:15px;\n}\n#aj-candle-magic .cm-night-quote{\n  display:block;\n  margin-top:24px;\n  color:#f2d4a2;\n  font:italic clamp(21px,3vw,29px)\/1.5 Georgia,serif;\n}\n#aj-candle-magic .cm-candle-mark{\n  display:flex;\n  justify-content:center;\n  align-items:center;\n  width:62px;\n  height:62px;\n  margin:0 auto 22px;\n  border:1px solid #e8bc82a1;\n  border-radius:50%;\n  background:#ffffff12;\n  font-size:29px;\n  animation:cm-light 5s ease-in-out infinite;\n}\n@keyframes cm-light{\n  0%,100%{\n    box-shadow:0 0 13px #e7af5a35;\n  }\n  50%{\n    box-shadow:0 0 34px #e7af5a90;\n  }\n}\n\n\/* SPLIT CONTENT *\/\n\n#aj-candle-magic .cm-split{\n  display:grid;\n  grid-template-columns:minmax(0,1fr);\n  align-items:center;\n  background:#fffdf9;\n}\n#aj-candle-magic .cm-split.alt{\n  background:#f5ede1;\n}\n#aj-candle-magic .cm-split-media{\n  display:none;\n  min-width:0;\n  padding:15px;\n}\n#aj-candle-magic .cm-split-media.cm-on{\n  display:block;\n}\n#aj-candle-magic .cm-split-media img{\n  aspect-ratio:1\/1;\n  object-fit:contain;\n  background:#f5eee4;\n  border:1px solid #e4d4bf;\n  border-radius:11px;\n}\n#aj-candle-magic .cm-split-copy{\n  min-width:0;\n  padding:36px 24px;\n}\n#aj-candle-magic .cm-split-copy p{\n  margin-top:15px;\n}\n#aj-candle-magic .cm-quote{\n  margin-top:20px;\n  padding:17px;\n  border-left:3px solid var(--gold);\n  background:#faf2e5;\n  border-radius:0 8px 8px 0;\n  color:#8d6748;\n  font:italic 19px\/1.5 Georgia,serif;\n}\n\n\/* FEATURE CARDS *\/\n\n#aj-candle-magic .cm-feature-grid{\n  display:grid;\n  grid-template-columns:1fr;\n  gap:13px;\n  margin-top:27px;\n}\n#aj-candle-magic .cm-feature{\n  padding:23px 20px;\n  border:1px solid var(--line);\n  border-top:3px solid var(--gold);\n  border-radius:12px;\n  background:white;\n}\n#aj-candle-magic .cm-feature-icon{\n  display:block;\n  margin-bottom:11px;\n  font-size:27px;\n}\n#aj-candle-magic .cm-feature p{\n  margin-top:9px;\n  font-size:13px;\n}\n\n\/* VIDEO - HIDDEN IF NO REAL VIDEO *\/\n\n#aj-candle-magic .cm-video-section{\n  display:none;\n  background:#f0e6d8;\n}\n#aj-candle-magic .cm-video-section.cm-on{\n  display:block;\n}\n#aj-candle-magic .cm-video-wrap{\n  max-width:800px;\n  margin:25px auto 0;\n  overflow:hidden;\n  border:1px solid #d7b98e;\n  border-radius:13px;\n  background:#2e2524;\n  box-shadow:0 12px 28px #4c34291a;\n}\n#aj-candle-magic .cm-video-wrap video{\n  width:100%;\n  max-height:540px;\n  object-fit:contain;\n}\n\n\/* GALLERY - STATIC NOT CAROUSEL *\/\n\n#aj-candle-magic .cm-gallery{\n  display:none;\n  background:#f6efe5;\n}\n#aj-candle-magic .cm-gallery.cm-on{\n  display:block;\n}\n#aj-candle-magic .cm-photo-grid{\n  display:grid;\n  grid-template-columns:repeat(2,minmax(0,1fr));\n  gap:10px;\n  margin-top:26px;\n}\n#aj-candle-magic .cm-photo-card{\n  display:none;\n  min-width:0;\n  padding:7px;\n  border:1px solid #dfcfb9;\n  border-radius:11px;\n  background:#fffdf9;\n}\n#aj-candle-magic .cm-photo-card.cm-on{\n  display:block;\n}\n#aj-candle-magic .cm-photo-card img{\n  aspect-ratio:1\/1;\n  object-fit:contain;\n  border-radius:7px;\n  background:#f4eee5;\n}\n#aj-candle-magic .cm-photo-card span{\n  display:block;\n  padding:10px 4px 5px;\n  color:#806148;\n  font-size:12px;\n  font-weight:700;\n  text-align:center;\n}\n\n\/* HOW IT WORKS *\/\n\n#aj-candle-magic .cm-how{\n  background:#fffdf9;\n}\n#aj-candle-magic .cm-steps{\n  display:grid;\n  grid-template-columns:1fr;\n  gap:13px;\n  margin-top:27px;\n}\n#aj-candle-magic .cm-step{\n  padding:24px 21px;\n  border:1px solid var(--line);\n  border-radius:12px;\n  background:#faf5ed;\n}\n#aj-candle-magic .cm-step-no{\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  width:41px;\n  height:41px;\n  margin-bottom:14px;\n  border-radius:50%;\n  background:#ead6ba;\n  color:#8e6543;\n  font:700 18px\/1 Georgia,serif;\n}\n#aj-candle-magic .cm-step p{\n  margin-top:9px;\n}\n#aj-candle-magic .cm-safety{\n  max-width:850px;\n  margin:21px auto 0;\n  padding:17px 19px;\n  background:#f9f0e5;\n  border:1px solid #e8d0ac;\n  border-left:4px solid #b78149;\n  border-radius:8px;\n  color:#75573d;\n  font-size:13px;\n  line-height:1.75;\n}\n#aj-candle-magic .cm-safety strong{\n  color:#633f2d;\n}\n\n\/* PLACEMENT *\/\n\n#aj-candle-magic .cm-place-grid{\n  display:grid;\n  grid-template-columns:1fr;\n  gap:13px;\n  margin-top:26px;\n}\n#aj-candle-magic .cm-place{\n  padding:23px 20px;\n  border:1px solid var(--line);\n  border-radius:12px;\n  background:#fffdf9;\n}\n#aj-candle-magic .cm-place-icon{\n  display:block;\n  margin-bottom:12px;\n  font-size:27px;\n}\n#aj-candle-magic .cm-place p{\n  margin-top:9px;\n}\n\n\/* GIFT *\/\n\n#aj-candle-magic .cm-gift{\n  padding:55px 23px;\n  text-align:center;\n  background:\n    radial-gradient(\n      ellipse at 50% 0%,\n      rgba(238,196,137,.5),\n      transparent 68%\n    ),\n    #f8f0e4;\n}\n#aj-candle-magic .cm-gift p{\n  max-width:660px;\n  margin:17px auto 0;\n}\n#aj-candle-magic .cm-gift-quote{\n  display:block;\n  margin-top:23px;\n  color:#93694a;\n  font:italic clamp(20px,2.9vw,27px)\/1.5 Georgia,serif;\n}\n\n\/* FAQ *\/\n\n#aj-candle-magic .cm-faq{\n  max-width:810px;\n  margin:25px auto 0;\n}\n#aj-candle-magic .cm-faq details{\n  border-bottom:1px solid var(--line);\n}\n#aj-candle-magic .cm-faq summary{\n  display:list-item;\n  padding:17px 4px;\n  color:#594638;\n  font-size:15px;\n  font-weight:700;\n  cursor:pointer;\n}\n#aj-candle-magic .cm-faq details p{\n  padding:0 4px 18px;\n  font-size:14px;\n}\n\n\/* FINAL CTA *\/\n\n#aj-candle-magic .cm-final{\n  padding:56px 22px;\n  text-align:center;\n  background:\n    radial-gradient(\n      ellipse at 50% 100%,\n      rgba(230,179,106,.27),\n      transparent 65%\n    ),\n    linear-gradient(145deg,#754347,#382a32);\n}\n#aj-candle-magic .cm-final .cm-kicker{\n  color:#f0d5a6;\n}\n#aj-candle-magic .cm-final h2{\n  color:#fff9ed;\n}\n#aj-candle-magic .cm-final p{\n  max-width:660px;\n  margin:17px auto 0;\n  color:#f1e7df;\n}\n#aj-candle-magic .cm-button{\n  display:inline-block;\n  width:100%;\n  max-width:360px;\n  margin-top:27px;\n  padding:17px 23px;\n  border:1px solid #f5dfb7;\n  border-radius:9px;\n  background:linear-gradient(\n    120deg,#e8c18a,#fff0d0,#d3a26b\n  );\n  color:#563b32;\n  font:800 15px\/1.5 Arial,sans-serif;\n  text-decoration:none;\n  text-align:center;\n  box-shadow:0 9px 22px #0002;\n}\n#aj-candle-magic .cm-button:hover{\n  background:#fff7e7;\n  color:#563b32;\n}\n#aj-candle-magic .cm-final-note{\n  margin-top:12px;\n  font-size:12px;\n}\n\n\/* RESPONSIVE *\/\n\n@container (min-width:780px){\n  #aj-candle-magic .cm-hero.cm-has-photo{\n    grid-template-columns:minmax(0,1fr) minmax(0,1fr);\n    gap:38px;\n    padding:44px;\n  }\n  #aj-candle-magic .cm-hero{\n    padding:47px 44px;\n  }\n  #aj-candle-magic .cm-split.cm-has-photo{\n    grid-template-columns:minmax(0,1fr) minmax(0,1fr);\n  }\n  #aj-candle-magic .cm-split-copy{\n    padding:44px;\n  }\n  #aj-candle-magic .cm-section{\n    padding:51px 40px;\n  }\n  #aj-candle-magic .cm-feature-grid{\n    grid-template-columns:repeat(4,minmax(0,1fr));\n  }\n  #aj-candle-magic .cm-steps,\n  #aj-candle-magic .cm-place-grid{\n    grid-template-columns:repeat(3,minmax(0,1fr));\n  }\n  #aj-candle-magic .cm-photo-grid{\n    grid-template-columns:repeat(3,minmax(0,1fr));\n  }\n  #aj-candle-magic .cm-strip{\n    grid-template-columns:repeat(4,minmax(0,1fr));\n  }\n}\n@container (max-width:470px){\n  #aj-candle-magic .cm-hero{\n    padding:33px 17px;\n  }\n  #aj-candle-magic .cm-section{\n    padding:36px 16px;\n  }\n  #aj-candle-magic .cm-night{\n    padding:46px 17px;\n  }\n  #aj-candle-magic .cm-photo-grid{\n    gap:7px;\n  }\n  #aj-candle-magic .cm-photo-card{\n    padding:5px;\n  }\n}\n@media(prefers-reduced-motion:reduce){\n  #aj-candle-magic *,\n  #aj-candle-magic *::before,\n  #aj-candle-magic *::after{\n    animation:none!important;\n    scroll-behavior:auto!important;\n  }\n}\n\u003c\/style\u003e\n\n\u003cdiv id=\"aj-candle-magic\"\u003e\n\n  \u003c!-- HERO: PRODUCT VALUE FIRST --\u003e\n\n  \u003csection class=\"cm-hero\" data-cm-layout\u003e\n\n    \u003cdiv class=\"cm-hero-copy\"\u003e\n\n      \u003cspan class=\"cm-kicker\"\u003e\n        A LITTLE CANDLELIGHT. A LOT OF WONDER.\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        Light the Candles.\n        \u003cem\u003eWatch Christmas Come to Life.\u003c\/em\u003e\n      \u003c\/h2\u003e\n\n      \u003cp class=\"cm-hero-lead\"\u003e\n        The room is glowing.\n        Christmas music plays softly.\n        And something beautiful\n        begins to move.\n      \u003c\/p\u003e\n\n      \u003cp class=\"cm-hero-lead\"\u003e\n        More than a decoration,\n        a Christmas candle carousel\n        turns a simple candlelit\n        evening into a moment\n        worth watching.\n      \u003c\/p\u003e\n\n      \u003cp class=\"cm-hero-lead\"\u003e\n        Warm light, gentle movement,\n        and timeless holiday charm\n        create the kind of atmosphere\n        everyone wants\n        to gather around.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"cm-chips\"\u003e\n\n        \u003cspan class=\"cm-chip\"\u003e\n          🕯️ Cozy Candlelight\n        \u003c\/span\u003e\n\n        \u003cspan class=\"cm-chip\"\u003e\n          ✨ Gentle Movement\n        \u003c\/span\u003e\n\n        \u003cspan class=\"cm-chip\"\u003e\n          🎄 Nostalgic Christmas Charm\n        \u003c\/span\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"cm-hero-points\"\u003e\n\n        \u003cdiv class=\"cm-hero-point\"\u003e\n          \u003cspan\u003e✨\u003c\/span\u003e\n          \u003cdiv\u003e\n            \u003cstrong\u003eBeautiful to Watch\u003c\/strong\u003e\n            \u003cp\u003e\n              Discover the charm of\n              a festive scene\n              with gentle motion.\n            \u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"cm-hero-point\"\u003e\n          \u003cspan\u003e🏡\u003c\/span\u003e\n          \u003cdiv\u003e\n            \u003cstrong\u003eMade for Cozy Holiday Moments\u003c\/strong\u003e\n            \u003cp\u003e\n              A warm seasonal focal point\n              for a thoughtfully\n              arranged indoor display.\n            \u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"cm-hero-point\"\u003e\n          \u003cspan\u003e🎁\u003c\/span\u003e\n          \u003cdiv\u003e\n            \u003cstrong\u003eA Gift with a Story\u003c\/strong\u003e\n            \u003cp\u003e\n              A delightful idea for\n              anyone who treasures\n              traditional Christmas magic.\n            \u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n    \u003c!-- SINGLE STATIC PRODUCT PHOTO --\u003e\n\n    \u003cfigure class=\"cm-hero-image\" data-cm-image=\"0\"\u003e\n\n      \u003cdiv class=\"cm-image-frame\"\u003e\n\n        \u003cspan class=\"cm-image-caption\"\u003e\n          A little moment of Christmas wonder.\n        \u003c\/span\u003e\n\n      \u003c\/div\u003e\n\n    \u003c\/figure\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- QUICK VALUE STRIP --\u003e\n\n  \u003cdiv class=\"cm-strip\"\u003e\n\n    \u003cdiv\u003e\n      \u003cspan\u003e🕯️\u003c\/span\u003e\n      Candlelit Atmosphere\n    \u003c\/div\u003e\n\n    \u003cdiv\u003e\n      \u003cspan\u003e✨\u003c\/span\u003e\n      Gentle Rotating Display\n    \u003c\/div\u003e\n\n    \u003cdiv\u003e\n      \u003cspan\u003e🎄\u003c\/span\u003e\n      Christmas Centerpiece\n    \u003c\/div\u003e\n\n    \u003cdiv\u003e\n      \u003cspan\u003e🎁\u003c\/span\u003e\n      Meaningful Gift Idea\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n  \u003c!-- IMMERSIVE CHRISTMAS NIGHT --\u003e\n\n  \u003csection class=\"cm-night\"\u003e\n\n    \u003cdiv\u003e\n\n      \u003cdiv class=\"cm-candle-mark\" aria-hidden=\"true\"\u003e🕯️\u003c\/div\u003e\n\n      \u003cspan class=\"cm-kicker\"\u003e\n        THE MOMENT CHRISTMAS FEELS MAGICAL\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        Some Decorations Are Pretty.\n        This One Gives You\n        a Reason to Stop and Watch.\n      \u003c\/h2\u003e\n\n      \u003cdiv class=\"cm-rule\"\u003e✦\u003c\/div\u003e\n\n      \u003cp\u003e\n        Imagine a quiet\n        December evening.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        The tree lights are twinkling.\n        The family is home.\n        A little candlelight\n        fills the room\n        with a golden glow.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        As the festive carousel\n        begins its gentle movement,\n        everyone gets\n        a little closer\n        to admire the scene.\n      \u003c\/p\u003e\n\n      \u003cspan class=\"cm-night-quote\"\u003e\n        \"Sometimes the smallest\n        Christmas moments\n        feel the most magical.\"\n      \u003c\/span\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- STORY ONE: THE MOVEMENT --\u003e\n\n  \u003csection class=\"cm-split alt\" data-cm-layout\u003e\n\n    \u003cfigure class=\"cm-split-media\" data-cm-image=\"1\"\u003e\u003c\/figure\u003e\n\n    \u003cdiv class=\"cm-split-copy\"\u003e\n\n      \u003cspan class=\"cm-kicker\"\u003e\n        THE SECRET IS IN THE MOVEMENT\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        A Little Warmth.\n        A Gentle Turn.\n        A Beautiful Surprise.\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        Traditional heat-driven\n        candle carousels use\n        a simple, fascinating idea.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        Warm air from an\n        approved burning candle\n        rises toward the\n        angled rotor above.\n        With sufficient warmth\n        and correct assembly,\n        the rotating section\n        can begin to turn.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        It's the kind of\n        timeless mechanism\n        that feels almost\n        like a little\n        Christmas trick.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"cm-quote\"\u003e\n        The beautiful part\n        isn't just the candle.\n        It's the moment\n        the scene starts moving.\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- FOUR PRODUCT BENEFITS --\u003e\n\n  \u003csection class=\"cm-section\"\u003e\n\n    \u003cdiv class=\"cm-center\"\u003e\n\n      \u003cspan class=\"cm-kicker\"\u003e\n        WHAT MAKES IT SPECIAL\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        Four Little Details.\n        One Unforgettable\n        Christmas Atmosphere.\n      \u003c\/h2\u003e\n\n      \u003cp class=\"cm-intro\"\u003e\n        A candle carousel combines\n        a familiar holiday tradition\n        with something a little\n        more captivating.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"cm-feature-grid\"\u003e\n\n      \u003cdiv class=\"cm-feature\"\u003e\n\n        \u003cspan class=\"cm-feature-icon\"\u003e\n          🕯️\n        \u003c\/span\u003e\n\n        \u003ch3\u003e\n          Warm Candlelight\n        \u003c\/h3\u003e\n\n        \u003cp\u003e\n          A soft, inviting glow\n          sets the mood for\n          peaceful winter evenings.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"cm-feature\"\u003e\n\n        \u003cspan class=\"cm-feature-icon\"\u003e\n          ✨\n        \u003c\/span\u003e\n\n        \u003ch3\u003e\n          Captivating Motion\n        \u003c\/h3\u003e\n\n        \u003cp\u003e\n          The rotating design\n          adds a changing point\n          of interest to\n          your holiday display.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"cm-feature\"\u003e\n\n        \u003cspan class=\"cm-feature-icon\"\u003e\n          🎄\n        \u003c\/span\u003e\n\n        \u003ch3\u003e\n          Festive Character\n        \u003c\/h3\u003e\n\n        \u003cp\u003e\n          Charming decorative\n          elements bring a\n          storybook Christmas\n          feeling into the home.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"cm-feature\"\u003e\n\n        \u003cspan class=\"cm-feature-icon\"\u003e\n          ❤️\n        \u003c\/span\u003e\n\n        \u003ch3\u003e\n          Nostalgic Feeling\n        \u003c\/h3\u003e\n\n        \u003cp\u003e\n          A lovely way\n          to celebrate the\n          simple traditions\n          that make December\n          feel special.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- REAL PRODUCT VIDEO, IF AVAILABLE --\u003e\n\n  \u003csection class=\"cm-section cm-video-section\" data-cm-video-section\u003e\n\n    \u003cdiv class=\"cm-center\"\u003e\n\n      \u003cspan class=\"cm-kicker\"\u003e\n        SEE THE MAGIC IN MOTION\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        The Moment It Moves\n        Is the Moment\n        You'll Want to Watch Again.\n      \u003c\/h2\u003e\n\n      \u003cp class=\"cm-intro\"\u003e\n        Watch the actual\n        product footage\n        to appreciate\n        the rotating display\n        and its festive charm.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"cm-video-wrap\"\u003e\n      \u003cvideo controls muted playsinline preload=\"metadata\" data-cm-video\u003e\u003c\/video\u003e\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- STORY TWO: CHRISTMAS ATMOSPHERE --\u003e\n\n  \u003csection class=\"cm-split\" data-cm-layout\u003e\n\n    \u003cdiv class=\"cm-split-copy\"\u003e\n\n      \u003cspan class=\"cm-kicker\"\u003e\n        MORE THAN AN ORNAMENT\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        Make an Ordinary\n        December Evening\n        Feel Extraordinary.\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        There is something\n        wonderfully calming\n        about watching a\n        little holiday scene\n        move in warm light.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        It's a reason to\n        linger a little\n        longer after dinner.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        A lovely conversation\n        starter when family\n        and friends come over.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        And perhaps the beginning\n        of a new holiday\n        tradition that\n        returns every December.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"cm-quote\"\u003e\n        A beautiful little moment\n        that feels like\n        Christmas at home.\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n    \u003cfigure class=\"cm-split-media\" data-cm-image=\"2\"\u003e\u003c\/figure\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- STATIC PHOTO COLLECTION --\u003e\n\n  \u003csection class=\"cm-section cm-gallery\" data-cm-gallery\u003e\n\n    \u003cdiv class=\"cm-center\"\u003e\n\n      \u003cspan class=\"cm-kicker\"\u003e\n        TAKE A CLOSER LOOK\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        The Magic Is\n        in the Little Details.\n      \u003c\/h2\u003e\n\n      \u003cp class=\"cm-intro\"\u003e\n        Explore real product\n        photographs from the store.\n        No repeated carousel —\n        just clear, easy-to-view images.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"cm-photo-grid\"\u003e\n\n      \u003cfigure class=\"cm-photo-card\" data-cm-image=\"3\"\u003e\n        \u003cspan\u003eA Closer View\u003c\/span\u003e\n      \u003c\/figure\u003e\n\n      \u003cfigure class=\"cm-photo-card\" data-cm-image=\"4\"\u003e\n        \u003cspan\u003eHoliday Details\u003c\/span\u003e\n      \u003c\/figure\u003e\n\n      \u003cfigure class=\"cm-photo-card\" data-cm-image=\"5\"\u003e\n        \u003cspan\u003eBeautiful Design\u003c\/span\u003e\n      \u003c\/figure\u003e\n\n      \u003cfigure class=\"cm-photo-card\" data-cm-image=\"6\"\u003e\n        \u003cspan\u003eAnother Perspective\u003c\/span\u003e\n      \u003c\/figure\u003e\n\n      \u003cfigure class=\"cm-photo-card\" data-cm-image=\"7\"\u003e\n        \u003cspan\u003eWarm Christmas Atmosphere\u003c\/span\u003e\n      \u003c\/figure\u003e\n\n      \u003cfigure class=\"cm-photo-card\" data-cm-image=\"8\"\u003e\n        \u003cspan\u003eA Festive Favorite\u003c\/span\u003e\n      \u003c\/figure\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- HOW TO USE --\u003e\n\n  \u003csection class=\"cm-section cm-how\"\u003e\n\n    \u003cdiv class=\"cm-center\"\u003e\n\n      \u003cspan class=\"cm-kicker\"\u003e\n        SIMPLE TO UNDERSTAND\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        How to Enjoy\n        a Candlelit Christmas Moment.\n      \u003c\/h2\u003e\n\n      \u003cp class=\"cm-intro\"\u003e\n        Follow the instructions\n        supplied with your\n        selected carousel design.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"cm-steps\"\u003e\n\n      \u003cdiv class=\"cm-step\"\u003e\n\n        \u003cspan class=\"cm-step-no\"\u003e01\u003c\/span\u003e\n\n        \u003ch3\u003e\n          Choose a Safe Place\n        \u003c\/h3\u003e\n\n        \u003cp\u003e\n          Position the assembled\n          carousel on a stable,\n          level, heat-resistant\n          surface with\n          plenty of clearance.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"cm-step\"\u003e\n\n        \u003cspan class=\"cm-step-no\"\u003e02\u003c\/span\u003e\n\n        \u003ch3\u003e\n          Use the Approved Candles\n        \u003c\/h3\u003e\n\n        \u003cp\u003e\n          Follow the product\n          instructions for\n          the correct candle\n          type, quantity,\n          placement and\n          flame clearance.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"cm-step\"\u003e\n\n        \u003cspan class=\"cm-step-no\"\u003e03\u003c\/span\u003e\n\n        \u003ch3\u003e\n          Enjoy the Atmosphere\n        \u003c\/h3\u003e\n\n        \u003cp\u003e\n          When conditions\n          are right, the\n          rising warmth can\n          help the carousel\n          rotate gently.\n          Enjoy while supervised.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"cm-safety\"\u003e\n      \u003cstrong\u003eImportant Candle Safety:\u003c\/strong\u003e\n      Never leave a burning candle unattended.\n      Keep flames and heated parts away from\n      curtains, greenery, paper decorations,\n      children and pets. Allow the carousel\n      to cool before touching or moving it.\n      Use only candle types approved\n      for the actual product.\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- DISPLAY IDEAS --\u003e\n\n  \u003csection class=\"cm-section\" style=\"background:#f7f0e6;\"\u003e\n\n    \u003cdiv class=\"cm-center\"\u003e\n\n      \u003cspan class=\"cm-kicker\"\u003e\n        STYLE YOUR CHRISTMAS MOMENTS\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        A Lovely Little Centerpiece\n        for Your Favorite Holiday Spaces.\n      \u003c\/h2\u003e\n\n      \u003cp class=\"cm-intro\"\u003e\n        Give this moving\n        Christmas display\n        a special place\n        in your seasonal decor.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"cm-place-grid\"\u003e\n\n      \u003cdiv class=\"cm-place\"\u003e\n\n        \u003cspan class=\"cm-place-icon\"\u003e🍽️\u003c\/span\u003e\n\n        \u003ch3\u003e\n          Holiday Table Display\n        \u003c\/h3\u003e\n\n        \u003cp\u003e\n          Create an inviting\n          tabletop focal point\n          for a supervised,\n          candlelit holiday\n          gathering.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"cm-place\"\u003e\n\n        \u003cspan class=\"cm-place-icon\"\u003e🏡\u003c\/span\u003e\n\n        \u003ch3\u003e\n          Festive Console Table\n        \u003c\/h3\u003e\n\n        \u003cp\u003e\n          Bring extra charm\n          to a stable,\n          heat-safe surface\n          away from flammable\n          decorations.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"cm-place\"\u003e\n\n        \u003cspan class=\"cm-place-icon\"\u003e🎄\u003c\/span\u003e\n\n        \u003ch3\u003e\n          Christmas Collection\n        \u003c\/h3\u003e\n\n        \u003cp\u003e\n          Add a distinctive\n          moving display\n          to a collection\n          of cherished\n          traditional ornaments.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- GIFT SECTION --\u003e\n\n  \u003csection class=\"cm-gift\"\u003e\n\n    \u003cdiv\u003e\n\n      \u003cspan class=\"cm-kicker\"\u003e\n        A GIFT THAT BECOMES A TRADITION\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        Give Something\n        They'll Look Forward\n        to Bringing Out\n        Every Christmas.\n      \u003c\/h2\u003e\n\n      \u003cdiv class=\"cm-rule\"\u003e✦\u003c\/div\u003e\n\n      \u003cp\u003e\n        For parents who\n        love a cozy home.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        For grandparents who\n        remember the magic\n        of an old-fashioned\n        Christmas.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        For the friend who\n        loves collecting\n        unusual holiday decorations.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        A beautiful reminder\n        that the sweetest\n        Christmas gifts\n        aren't always\n        the biggest ones.\n      \u003c\/p\u003e\n\n      \u003cspan class=\"cm-gift-quote\"\u003e\n        \"I wanted to give you\n        a little Christmas magic\n        of your own.\" ❤️\n      \u003c\/span\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- FAQ --\u003e\n\n  \u003csection class=\"cm-section\" style=\"background:#fffdf9;\"\u003e\n\n    \u003cdiv class=\"cm-center\"\u003e\n\n      \u003cspan class=\"cm-kicker\"\u003e\n        BEFORE YOU ORDER\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        Everything You\n        Should Know.\n      \u003c\/h2\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"cm-faq\"\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          How does the carousel rotate?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          Traditional heat-driven\n          candle carousels use\n          warm air rising from\n          approved burning candles\n          to turn an angled rotor.\n          Actual movement depends\n          on the selected product's\n          mechanism, assembly,\n          candle type and airflow.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          Does it need electricity or batteries?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          A traditional heat-powered\n          candle carousel does not\n          need a motor to rotate.\n          Please confirm the\n          actual power requirements\n          of your chosen version\n          in the product details.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          Will it rotate with an LED candle?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          Standard LED candles\n          do not provide the\n          rising heat needed\n          by a heat-driven\n          carousel. They should\n          not be expected\n          to create rotation.\n          Always follow\n          the approved candle\n          instructions.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          Are candles included?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          Please check the selected\n          variant and package contents.\n          Candle inclusion should\n          not be assumed unless\n          it is specifically\n          listed by the store.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          What are the materials and dimensions?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          Please refer to\n          the confirmed product\n          specifications for\n          exact materials,\n          dimensions, finish,\n          and included parts.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          Can I display it without lighting candles?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          The carousel may also\n          serve as a stationary\n          seasonal decoration,\n          subject to its\n          actual construction\n          and display instructions.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          Is it suitable for children?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          This is a decorative item,\n          not a toy. Burning candles\n          and heated components\n          must be kept out\n          of reach of children\n          and pets. Adult\n          supervision is essential.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- ONLY CTA AT BOTTOM --\u003e\n\n  \u003csection class=\"cm-final\"\u003e\n\n    \u003cdiv\u003e\n\n      \u003cspan class=\"cm-kicker\"\u003e\n        LET THE CHRISTMAS MAGIC BEGIN\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        Light a Little Wonder.\n        Make a Christmas Memory.\n      \u003c\/h2\u003e\n\n      \u003cdiv class=\"cm-rule\"\u003e✦\u003c\/div\u003e\n\n      \u003cp\u003e\n        A warm glow.\n        A gentle turn.\n        A lovely new\n        Christmas tradition\n        worth sharing.\n      \u003c\/p\u003e\n\n      \u003ca href=\"#\" class=\"cm-button\" data-cm-top\u003e\n        Explore Your Christmas Carousel ↑\n      \u003c\/a\u003e\n\n      \u003cp class=\"cm-final-note\"\u003e\n        Return to the top\n        to view product options.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function(){\n\n  function initCandleMagic(){\n\n    var root=document.getElementById(\n      'aj-candle-magic'\n    );\n\n    if(!root || root.dataset.ready==='1'){\n      return;\n    }\n\n    root.dataset.ready='1';\n\n    var handle='christmas-candle-carousel';\n\n    var photosRendered=false;\n\n    \/* ==================================\n       IMAGE UTILITIES\n    ================================== *\/\n\n    function normalize(item){\n\n      var src='';\n\n      if(typeof item==='string'){\n        src=item;\n      }else if(item \u0026\u0026 typeof item==='object'){\n        src=item.src || item.url || '';\n      }\n\n      if(!src) return '';\n\n      try{\n        return new URL(\n          src,\n          window.location.origin\n        ).href;\n      }catch(error){\n        return '';\n      }\n    }\n\n    function unique(items){\n\n      var seen={};\n\n      return items.filter(function(src){\n\n        if(!src) return false;\n\n        var key=src.split('?')[0];\n\n        if(seen[key]) return false;\n\n        seen[key]=true;\n        return true;\n      });\n    }\n\n    function verifyImage(src){\n\n      return new Promise(function(resolve){\n\n        var img=new Image();\n\n        img.onload=function(){\n          resolve(\n            img.naturalWidth\u003e0 ? src : null\n          );\n        };\n\n        img.onerror=function(){\n          resolve(null);\n        };\n\n        img.src=src;\n      });\n    }\n\n    \/* ==================================\n       RENDER STATIC IMAGES\n    ================================== *\/\n\n    function addPhoto(holder,src){\n\n      if(!holder || !src){\n        return false;\n      }\n\n      var img=document.createElement('img');\n\n      img.src=src;\n\n      img.alt=\n        'Christmas candle carousel original product photograph';\n\n      img.loading='lazy';\n      img.decoding='async';\n\n      var frame=holder.querySelector(\n        '.cm-image-frame'\n      );\n\n      if(frame){\n\n        frame.insertBefore(\n          img,\n          frame.firstChild\n        );\n\n      }else{\n\n        holder.insertBefore(\n          img,\n          holder.firstChild\n        );\n\n      }\n\n      holder.classList.add('cm-on');\n\n      var layout=holder.closest(\n        '[data-cm-layout]'\n      );\n\n      if(layout){\n        layout.classList.add('cm-has-photo');\n      }\n\n      return true;\n    }\n\n    function renderPhotos(images){\n\n      if(photosRendered || !images.length){\n        return;\n      }\n\n      photosRendered=true;\n\n      var count=0;\n\n      root.querySelectorAll(\n        '[data-cm-image]'\n      ).forEach(function(holder){\n\n        var index=Number(\n          holder.getAttribute(\n            'data-cm-image'\n          )\n        );\n\n        if(!images[index]){\n          return;\n        }\n\n        if(\n          addPhoto(\n            holder,\n            images[index]\n          )\n        ){\n\n          if(holder.classList.contains(\n            'cm-photo-card'\n          )){\n            count++;\n          }\n        }\n      });\n\n      if(count\u003e0){\n\n        var gallery=root.querySelector(\n          '[data-cm-gallery]'\n        );\n\n        if(gallery){\n          gallery.classList.add('cm-on');\n        }\n      }\n    }\n\n    function applyPhotos(items){\n\n      var sources=unique(\n        items.map(normalize)\n      ).slice(0,12);\n\n      if(!sources.length){\n        return Promise.resolve(false);\n      }\n\n      return Promise.all(\n        sources.map(verifyImage)\n      ).then(function(results){\n\n        var valid=results.filter(Boolean);\n\n        if(!valid.length){\n          return false;\n        }\n\n        renderPhotos(valid);\n        return true;\n      });\n    }\n\n    \/* ==================================\n       OPTIONAL REAL PRODUCT VIDEO\n    ================================== *\/\n\n    function showVideo(src,poster){\n\n      if(!src) return;\n\n      var video=root.querySelector(\n        '[data-cm-video]'\n      );\n\n      var section=root.querySelector(\n        '[data-cm-video-section]'\n      );\n\n      if(!video || !section){\n        return;\n      }\n\n      var url=normalize(src);\n\n      if(!url) return;\n\n      video.src=url;\n\n      if(poster){\n        video.poster=poster;\n      }\n\n      video.addEventListener(\n        'loadedmetadata',\n        function(){\n          section.classList.add('cm-on');\n        },\n        {once:true}\n      );\n\n      video.addEventListener(\n        'error',\n        function(){\n          section.classList.remove('cm-on');\n        }\n      );\n\n      video.load();\n    }\n\n    function findProductVideo(product,poster){\n\n      if(\n        product \u0026\u0026\n        Array.isArray(product.media)\n      ){\n\n        for(var i=0;i\u003cproduct.media.length;i++){\n\n          var media=product.media[i];\n\n          if(\n            !media ||\n            media.media_type!=='video' ||\n            !Array.isArray(media.sources)\n          ){\n            continue;\n          }\n\n          for(\n            var j=0;\n            j\u003cmedia.sources.length;\n            j++\n          ){\n\n            var source=media.sources[j];\n\n            if(\n              source \u0026\u0026\n              (\n                source.mime_type==='video\/mp4' ||\n                source.format==='mp4'\n              )\n            ){\n\n              showVideo(\n                source.url,\n                poster\n              );\n\n              return;\n            }\n          }\n        }\n      }\n\n      \/* Optional fallback:\n         use native product video already\n         present on the same product page. *\/\n\n      var nativeVideo=document.querySelector(\n        'main .product__media video,'+\n        'main .product-gallery video'\n      );\n\n      if(nativeVideo){\n\n        var source=\n          nativeVideo.currentSrc ||\n          nativeVideo.getAttribute('src') ||\n          (\n            nativeVideo.querySelector('source') \u0026\u0026\n            nativeVideo.querySelector('source')\n              .getAttribute('src')\n          );\n\n        if(\n          source \u0026\u0026\n          (\n            source.indexOf('\/cdn\/shop\/')!==-1 ||\n            source.indexOf('cdn.shopify.com')!==-1\n          )\n        ){\n          showVideo(source,poster);\n        }\n      }\n    }\n\n    \/* ==================================\n       FALLBACK: ORIGINAL PRODUCT GALLERY\n    ================================== *\/\n\n    function findPagePhotos(){\n\n      var found=[];\n\n      var selectors=[\n        'main .product__media img',\n        'main .product__media-list img',\n        'main .product-gallery img',\n        'main .product-media-container img',\n        'main .product-single__photos img',\n        'main [data-product-gallery] img',\n        '[id*=\"MainProduct\"] img'\n      ];\n\n      document.querySelectorAll(\n        selectors.join(',')\n      ).forEach(function(img){\n\n        if(root.contains(img)){\n          return;\n        }\n\n        var src=\n          img.getAttribute('data-zoom-image') ||\n          img.getAttribute('data-src') ||\n          img.currentSrc ||\n          img.getAttribute('src');\n\n        var url=normalize(src);\n\n        if(\n          url \u0026\u0026\n          (\n            url.indexOf('\/cdn\/shop\/')!==-1 ||\n            url.indexOf('cdn.shopify.com')!==-1\n          )\n        ){\n          found.push(url);\n        }\n      });\n\n      var meta=document.querySelector(\n        'meta[property=\"og:image\"]'\n      );\n\n      if(meta \u0026\u0026 meta.content){\n        found.push(\n          normalize(meta.content)\n        );\n      }\n\n      return unique(found);\n    }\n\n    \/* ==================================\n       READ EXACT SHOPIFY PRODUCT DATA\n    ================================== *\/\n\n    async function loadProduct(){\n\n      var endpoints=[\n        '\/products\/'+handle+'.js'\n      ];\n\n      var path=window.location.pathname\n        .replace(\/\\\/$\/,'');\n\n      if(\n        path.indexOf(\n          '\/products\/'+handle\n        )!==-1 \u0026\u0026\n        path!==endpoints[0]\n      ){\n        endpoints.unshift(path+'.js');\n      }\n\n      for(var i=0;i\u003cendpoints.length;i++){\n\n        try{\n\n          var response=await fetch(\n            endpoints[i],\n            {credentials:'same-origin'}\n          );\n\n          if(!response.ok){\n            continue;\n          }\n\n          var product=await response.json();\n\n          if(!product){\n            continue;\n          }\n\n          var imageSources=\n            Array.isArray(product.images)\n              ? product.images\n              : [];\n\n          var success=await applyPhotos(\n            imageSources\n          );\n\n          findProductVideo(\n            product,\n            imageSources.length\n              ? normalize(imageSources[0])\n              : ''\n          );\n\n          if(success){\n            return;\n          }\n\n        }catch(error){\n          \/* Try another source. *\/\n        }\n      }\n\n      \/* If product JSON fails, look for\n         real photos already rendered by\n         Shopify on this exact product page. *\/\n\n      if(\n        path.indexOf(\n          '\/products\/'+handle\n        )!==-1\n      ){\n\n        var fallback=findPagePhotos();\n\n        if(fallback.length){\n          await applyPhotos(fallback);\n        }\n\n        findProductVideo(\n          null,\n          fallback.length ? fallback[0] : ''\n        );\n      }\n\n      \/* If no real image is available,\n         the image-only blocks remain\n         hidden, with no broken images,\n         empty boxes or incorrect photos. *\/\n    }\n\n    \/* ==================================\n       BOTTOM BUTTON - RETURN TO TOP\n    ================================== *\/\n\n    var topButton=root.querySelector(\n      '[data-cm-top]'\n    );\n\n    if(topButton){\n\n      topButton.addEventListener(\n        'click',\n        function(event){\n\n          event.preventDefault();\n\n          window.scrollTo({\n            top:0,\n            left:0,\n            behavior:'smooth'\n          });\n        }\n      );\n    }\n\n    \/* START *\/\n\n    loadProduct();\n\n  }\n\n  if(document.readyState==='loading'){\n\n    document.addEventListener(\n      'DOMContentLoaded',\n      initCandleMagic\n    );\n\n  }else{\n\n    initCandleMagic();\n  }\n\n  document.addEventListener(\n    'shopify:section:load',\n    initCandleMagic\n  );\n\n})();\n\u003c\/script\u003e\n","brand":"zhidou","offers":[{"title":"Santa's Midnight Flight","offer_id":68153299402989,"sku":"VZX26103004-Santa's Midnight Flight","price":42.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0841\/9354\/2381\/files\/96712785030807553_d66394b3-57f6-4f9a-8ad7-e22274129ed9.png?v=1793690109","url":"https:\/\/alasjoy.com\/products\/christmas-candle-carousel","provider":"alasjoy","version":"1.0","type":"link"}