{"product_id":"whimsical-christmas-witch-collection-enchanting-holiday-characters-full-of-magic","title":"🧙✨ Whimsical Christmas Witch Collection | Enchanting Holiday Characters Full of Magic 🔮","description":"\n\u003cstyle\u003e\n#aj-preview-story{\n  --primary:#263d38;\n  --accent:#ba9769;\n  --paper:#faf7f1;\n  --warm:#eee6d8;\n  --ink:#26332f;\n  --muted:#66706b;\n  --line:#e6ded1;\n  width:100%;\n  max-width:1160px;\n  margin:0 auto;\n  background:var(--paper);\n  color:var(--ink);\n  border-radius:16px;\n  overflow:hidden;\n  font:15px\/1.7 Arial,Helvetica,sans-serif;\n  container-type:inline-size;\n  isolation:isolate;\n}\n#aj-preview-story.al-holiday{\n  --primary:#193f32;\n  --accent:#c5a16a;\n  --paper:#fcf8ef;\n  --warm:#f0e5d3;\n}\n#aj-preview-story.al-playful{\n  --primary:#315343;\n  --accent:#dc9865;\n  --paper:#fbf9f2;\n  --warm:#e8efdf;\n}\n#aj-preview-story.al-meaningful{\n  --primary:#263334;\n  --accent:#b18c5b;\n  --warm:#eee5d9;\n}\n#aj-preview-story.al-cozy{\n  --primary:#2f3c4a;\n  --accent:#c29a69;\n  --warm:#e9e4dc;\n}\n#aj-preview-story,\n#aj-preview-story *,\n#aj-preview-story *::before,\n#aj-preview-story *::after{\n  box-sizing:border-box;\n}\n#aj-preview-story h2,\n#aj-preview-story h3,\n#aj-preview-story p,\n#aj-preview-story figure{\n  margin:0;\n  padding:0;\n  text-transform:none;\n  letter-spacing:normal;\n  overflow-wrap:anywhere;\n}\n#aj-preview-story h2{\n  font:700 clamp(30px,4.4vw,51px)\/1.15 Georgia,serif;\n  color:var(--primary);\n}\n#aj-preview-story h3{\n  font:700 20px\/1.32 Georgia,serif;\n  color:var(--primary);\n}\n#aj-preview-story p{\n  font:400 14px\/1.8 Arial,sans-serif;\n  color:var(--muted);\n}\n#aj-preview-story img,\n#aj-preview-story video{\n  display:block;\n  width:100%;\n  max-width:100%;\n  height:auto;\n}\n#aj-preview-story .al-section{\n  padding:44px 21px;\n}\n#aj-preview-story .al-center{\n  text-align:center;\n}\n#aj-preview-story .al-eyebrow{\n  display:block;\n  margin-bottom:12px;\n  color:#a58050;\n  font:800 11px\/1.55 Arial,sans-serif;\n  letter-spacing:1.5px;\n  text-transform:uppercase;\n}\n#aj-preview-story .al-sub{\n  max-width:670px;\n  margin:14px auto 0;\n}\n\n\/* HERO *\/\n\n#aj-preview-story .al-hero{\n  display:grid;\n  grid-template-columns:minmax(0,1fr);\n  align-items:center;\n  gap:26px;\n  padding:30px 21px 39px;\n  background:linear-gradient(\n    135deg,var(--primary),#172b27\n  );\n}\n#aj-preview-story .al-hero h2{\n  color:#fff8e9;\n}\n#aj-preview-story .al-hero p{\n  margin-top:16px;\n  color:#e7e9e2;\n  font-size:15px;\n}\n#aj-preview-story .al-hero .al-eyebrow{\n  color:#e6c99a;\n}\n#aj-preview-story .al-hero-figure{\n  display:none;\n  min-width:0;\n  padding:9px;\n  border:1px solid #d6ba876b;\n  border-radius:12px;\n  background:#fffdfa;\n  box-shadow:0 16px 32px #0002;\n}\n#aj-preview-story .al-hero-figure.visible{\n  display:block;\n}\n#aj-preview-story .al-hero-figure img{\n  aspect-ratio:1\/1;\n  object-fit:contain;\n  border-radius:7px;\n}\n#aj-preview-story .al-hero-figure figcaption{\n  padding:9px 3px 2px;\n  color:#8d785d;\n  text-align:center;\n  font:700 12px\/1.5 Arial,sans-serif;\n}\n#aj-preview-story .al-tags{\n  display:flex;\n  flex-wrap:wrap;\n  gap:9px;\n  margin-top:22px;\n}\n#aj-preview-story .al-tags span{\n  border:1px solid #ead3aa73;\n  border-radius:100px;\n  padding:8px 11px;\n  color:#f7e6cd;\n  font-size:12px;\n  font-weight:700;\n}\n\n\/* HIGHLIGHT STRIP *\/\n\n#aj-preview-story .al-strip{\n  display:grid;\n  grid-template-columns:repeat(3,minmax(0,1fr));\n  gap:10px;\n  padding:19px 10px;\n  background:var(--warm);\n}\n#aj-preview-story .al-strip div{\n  text-align:center;\n  color:var(--primary);\n  font-weight:800;\n  font-size:12px;\n}\n#aj-preview-story .al-strip span{\n  display:block;\n  font-size:22px;\n  margin-bottom:3px;\n}\n\n\/* FEATURES *\/\n\n#aj-preview-story .al-why{\n  background:#fffdfa;\n}\n#aj-preview-story .al-benefits{\n  display:grid;\n  grid-template-columns:1fr;\n  gap:13px;\n  margin-top:27px;\n}\n#aj-preview-story .al-benefit{\n  padding:23px 20px;\n  border-radius:10px;\n  border:1px solid var(--line);\n  border-top:3px solid var(--accent);\n  background:#faf8f3;\n}\n#aj-preview-story .al-benefit .num{\n  display:block;\n  margin-bottom:10px;\n  color:#ae8957;\n  font:800 12px Arial,sans-serif;\n}\n#aj-preview-story .al-benefit p{\n  margin-top:10px;\n}\n\n\/* ORIGINAL ANIMATION *\/\n\n#aj-preview-story .al-motion{\n  display:none;\n  background:#f1ebdf;\n  text-align:center;\n}\n#aj-preview-story .al-motion.visible{\n  display:block;\n}\n#aj-preview-story .al-motion-media{\n  max-width:730px;\n  margin:23px auto 0;\n  border:1px solid #ded3c2;\n  background:white;\n  padding:10px;\n  border-radius:11px;\n}\n#aj-preview-story .al-motion-media img,\n#aj-preview-story .al-motion-media video{\n  max-height:660px;\n  object-fit:contain;\n  border-radius:6px;\n}\n\n\/* IMAGE AND TEXT STORY *\/\n\n#aj-preview-story .al-story{\n  display:grid;\n  grid-template-columns:minmax(0,1fr);\n  align-items:center;\n  background:var(--paper);\n}\n#aj-preview-story .al-story.alt{\n  background:#fffdfa;\n}\n#aj-preview-story .al-story-media{\n  display:none;\n  min-width:0;\n  padding:14px;\n}\n#aj-preview-story .al-story-media.visible{\n  display:block;\n}\n#aj-preview-story .al-story-media img{\n  aspect-ratio:1\/1;\n  object-fit:contain;\n  background:white;\n  border:1px solid var(--line);\n  border-radius:10px;\n}\n#aj-preview-story .al-story-copy{\n  padding:35px 23px;\n  min-width:0;\n}\n#aj-preview-story .al-story-copy p{\n  margin-top:15px;\n}\n#aj-preview-story .al-quote{\n  margin-top:19px;\n  padding:16px 18px;\n  background:#fff9ed;\n  border-left:3px solid var(--accent);\n  font:italic 18px\/1.55 Georgia,serif;\n  color:#947044;\n}\n\n\/* GALLERY *\/\n\n#aj-preview-story .al-gallery{\n  display:none;\n  background:#eee8df;\n}\n#aj-preview-story .al-gallery.visible{\n  display:block;\n}\n#aj-preview-story .al-gallery-grid{\n  display:grid;\n  grid-template-columns:repeat(2,minmax(0,1fr));\n  gap:11px;\n  margin-top:26px;\n}\n#aj-preview-story .al-gallery-card{\n  padding:8px;\n  border:1px solid #ded4c6;\n  background:#fffefa;\n  border-radius:9px;\n  min-width:0;\n}\n#aj-preview-story .al-gallery-card img{\n  aspect-ratio:1\/1;\n  object-fit:contain;\n  border-radius:6px;\n}\n#aj-preview-story .al-gallery-card figcaption{\n  padding:9px 3px 3px;\n  color:#806d57;\n  text-align:center;\n  font:700 12px\/1.5 Arial,sans-serif;\n}\n\n\/* ACTUAL SPECIFICATIONS *\/\n\n#aj-preview-story .al-facts{\n  display:none;\n  background:#fffdfa;\n}\n#aj-preview-story .al-facts.visible{\n  display:block;\n}\n#aj-preview-story .al-facts-grid{\n  display:grid;\n  grid-template-columns:1fr;\n  gap:10px;\n  margin-top:24px;\n}\n#aj-preview-story .al-fact{\n  padding:15px 17px;\n  border:1px solid var(--line);\n  border-radius:8px;\n  background:#faf8f3;\n}\n#aj-preview-story .al-fact strong{\n  display:block;\n  margin-bottom:5px;\n  font-size:13px;\n  color:var(--primary);\n}\n#aj-preview-story .al-fact p{\n  font-size:13px;\n}\n\n\/* EMOTIONAL VALUE *\/\n\n#aj-preview-story .al-moment{\n  background:var(--primary);\n  text-align:center;\n}\n#aj-preview-story .al-moment h2{\n  color:#fff9ed;\n}\n#aj-preview-story .al-moment .al-eyebrow{\n  color:#e6c997;\n}\n#aj-preview-story .al-moment p{\n  max-width:670px;\n  margin:15px auto 0;\n  color:#e1e9df;\n}\n#aj-preview-story .al-moment-note{\n  display:block;\n  max-width:700px;\n  margin:20px auto 0;\n  color:#e4c899;\n  font:italic 20px\/1.55 Georgia,serif;\n}\n\n\/* FAQ *\/\n\n#aj-preview-story .al-faq{\n  background:#fffdfa;\n}\n#aj-preview-story .al-faq-list{\n  max-width:790px;\n  margin:24px auto 0;\n}\n#aj-preview-story .al-faq details{\n  border-bottom:1px solid var(--line);\n}\n#aj-preview-story .al-faq summary{\n  display:list-item;\n  padding:17px 4px;\n  color:var(--primary);\n  cursor:pointer;\n  font-size:15px;\n  font-weight:700;\n}\n#aj-preview-story .al-faq details p{\n  padding:0 4px 17px;\n}\n\n\/* FINAL BUTTON *\/\n\n#aj-preview-story .al-final{\n  background:linear-gradient(\n    140deg,#182b25,var(--primary)\n  );\n  text-align:center;\n  padding:50px 20px;\n}\n#aj-preview-story .al-final h2{\n  color:#fff8e9;\n}\n#aj-preview-story .al-final p{\n  max-width:620px;\n  margin:15px auto 0;\n  color:#e3e9df;\n}\n#aj-preview-story .al-final .al-eyebrow{\n  color:#e4c596;\n}\n#aj-preview-story .al-top{\n  display:inline-block;\n  width:100%;\n  max-width:365px;\n  margin-top:24px;\n  padding:17px 21px;\n  border:1px solid #f1d6a2;\n  border-radius:8px;\n  background:#ebc78c;\n  color:#25382d;\n  text-decoration:none;\n  text-align:center;\n  font:800 15px\/1.5 Arial,sans-serif;\n  cursor:pointer;\n}\n#aj-preview-story .al-top:hover{\n  background:#fff3dd;\n  color:#25382d;\n}\n\n\/* RESPONSIVE *\/\n\n@container (min-width:760px){\n  #aj-preview-story .al-hero.has-media{\n    grid-template-columns:\n      minmax(0,1fr) minmax(0,1fr);\n  }\n  #aj-preview-story .al-hero{\n    padding:43px;\n    gap:39px;\n  }\n  #aj-preview-story .al-section{\n    padding:48px 40px;\n  }\n  #aj-preview-story .al-benefits{\n    grid-template-columns:\n      repeat(3,minmax(0,1fr));\n  }\n  #aj-preview-story .al-story.has-media{\n    grid-template-columns:\n      minmax(0,1fr) minmax(0,1fr);\n  }\n  #aj-preview-story .al-story-copy{\n    padding:43px;\n  }\n  #aj-preview-story .al-gallery-grid{\n    grid-template-columns:\n      repeat(3,minmax(0,1fr));\n  }\n  #aj-preview-story .al-facts-grid{\n    grid-template-columns:\n      repeat(2,minmax(0,1fr));\n  }\n}\n@container (max-width:480px){\n  #aj-preview-story .al-hero{\n    padding:25px 16px 34px;\n  }\n  #aj-preview-story .al-section{\n    padding:35px 16px;\n  }\n  #aj-preview-story .al-story-copy{\n    padding:28px 19px;\n  }\n  #aj-preview-story .al-gallery-grid{\n    gap:8px;\n  }\n  #aj-preview-story .al-gallery-card{\n    padding:5px;\n  }\n}\n@media(prefers-reduced-motion:reduce){\n  #aj-preview-story *{\n    animation:none!important;\n    transition:none!important;\n  }\n}\n\u003c\/style\u003e\n\n\u003cdiv id=\"aj-preview-story\"\u003e\n\n  \u003c!-- 01 HERO --\u003e\n\n  \u003csection class=\"al-hero\" data-al-layout\u003e\n\n    \u003cfigure class=\"al-hero-figure\" data-al-image=\"0\"\u003e\n      \u003cfigcaption\u003e\n        Explore the actual product details.\n      \u003c\/figcaption\u003e\n    \u003c\/figure\u003e\n\n    \u003cdiv\u003e\n\n      \u003cspan class=\"al-eyebrow\" data-al-product-name\u003e\n        THE LITTLE DETAILS MATTER\n      \u003c\/span\u003e\n\n      \u003ch2 data-al-headline\u003e\n        Something Special\n        Is in the Details.\n      \u003c\/h2\u003e\n\n      \u003cp data-al-lead\u003e\n        Take a closer look\n        at the design,\n        details and little touches\n        that make this piece\n        stand out.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"al-tags\"\u003e\n        \u003cspan\u003e✦ Explore the Design\u003c\/span\u003e\n        \u003cspan\u003e✦ See Real Product Photos\u003c\/span\u003e\n        \u003cspan\u003e✦ Find Your Favorite Detail\u003c\/span\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- 02 QUICK HIGHLIGHTS --\u003e\n\n  \u003cdiv class=\"al-strip\"\u003e\n    \u003cdiv\u003e\n      \u003cspan\u003e✦\u003c\/span\u003e\n      Thoughtful Details\n    \u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cspan\u003e◈\u003c\/span\u003e\n      Closer Product Views\n    \u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cspan\u003e♡\u003c\/span\u003e\n      Made to Be Enjoyed\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- 03 CORE BENEFITS --\u003e\n\n  \u003csection class=\"al-section al-why\"\u003e\n\n    \u003cdiv class=\"al-center\"\u003e\n\n      \u003cspan class=\"al-eyebrow\"\u003e\n        LOOK BEYOND THE FIRST IMPRESSION\n      \u003c\/span\u003e\n\n      \u003ch2 data-al-benefit-title\u003e\n        Why This One Stands Out.\n      \u003c\/h2\u003e\n\n      \u003cp class=\"al-sub\" data-al-benefit-intro\u003e\n        It's the details\n        and the way they come together\n        that give a product\n        its character.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"al-benefits\" data-al-benefits\u003e\n\n      \u003carticle class=\"al-benefit\"\u003e\n        \u003cspan class=\"num\"\u003e01 \/ DESIGN\u003c\/span\u003e\n        \u003ch3\u003eA Look Worth Taking Twice\u003c\/h3\u003e\n        \u003cp\u003e\n          Explore its actual shape,\n          finish and design\n          in the product photographs.\n        \u003c\/p\u003e\n      \u003c\/article\u003e\n\n      \u003carticle class=\"al-benefit\"\u003e\n        \u003cspan class=\"num\"\u003e02 \/ DETAILS\u003c\/span\u003e\n        \u003ch3\u003eThe Little Things Matter\u003c\/h3\u003e\n        \u003cp\u003e\n          See what makes this style\n          different from a standard\n          everyday alternative.\n        \u003c\/p\u003e\n      \u003c\/article\u003e\n\n      \u003carticle class=\"al-benefit\"\u003e\n        \u003cspan class=\"num\"\u003e03 \/ PERSONALITY\u003c\/span\u003e\n        \u003ch3\u003eMake It Your Own\u003c\/h3\u003e\n        \u003cp\u003e\n          Check the available options\n          and see which version\n          fits your preferences.\n        \u003c\/p\u003e\n      \u003c\/article\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- 04 ORIGINAL GIF OR VIDEO --\u003e\n\n  \u003csection class=\"al-section al-motion\" data-al-motion\u003e\n\n    \u003cdiv class=\"al-center\"\u003e\n\n      \u003cspan class=\"al-eyebrow\"\u003e\n        SEE IT IN ACTION\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        A Closer Look\n        at the Real Thing.\n      \u003c\/h2\u003e\n\n      \u003cp class=\"al-sub\"\u003e\n        Watch the original\n        product demonstration\n        or animation.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"al-motion-media\" data-al-motion-holder\u003e\u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- 05 PRODUCT STORY --\u003e\n\n  \u003csection class=\"al-story\" data-al-layout\u003e\n\n    \u003cfigure class=\"al-story-media\" data-al-image=\"1\"\u003e\u003c\/figure\u003e\n\n    \u003cdiv class=\"al-story-copy\"\u003e\n\n      \u003cspan class=\"al-eyebrow\"\u003e\n        DESIGNED TO CATCH YOUR EYE\n      \u003c\/span\u003e\n\n      \u003ch2 data-al-story-title\u003e\n        See the Difference Up Close.\n      \u003c\/h2\u003e\n\n      \u003cp data-al-story-text\u003e\n        Some details are easy\n        to miss at first glance.\n        Take a closer look\n        at the photos\n        and see what makes\n        this design so memorable.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"al-quote\" data-al-quote\u003e\n        It's the little touches\n        that make the biggest impression.\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- 06 ACTUAL PRODUCT GALLERY --\u003e\n\n  \u003csection class=\"al-section al-gallery\" data-al-gallery\u003e\n\n    \u003cdiv class=\"al-center\"\u003e\n\n      \u003cspan class=\"al-eyebrow\"\u003e\n        MORE OF THE ACTUAL PRODUCT\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        Explore It\n        from Every Angle.\n      \u003c\/h2\u003e\n\n      \u003cp class=\"al-sub\"\u003e\n        These photographs\n        come from the current\n        product's own Shopify media.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"al-gallery-grid\" data-al-gallery-grid\u003e\u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- 07 LIFESTYLE STORY --\u003e\n\n  \u003csection class=\"al-story alt\" data-al-layout\u003e\n\n    \u003cdiv class=\"al-story-copy\"\u003e\n\n      \u003cspan class=\"al-eyebrow\"\u003e\n        PICTURE IT IN YOUR SPACE\n      \u003c\/span\u003e\n\n      \u003ch2 data-al-use-title\u003e\n        Give Your Favorite Space\n        a Personal Touch.\n      \u003c\/h2\u003e\n\n      \u003cp data-al-use-text\u003e\n        Whether you're choosing\n        something for yourself\n        or for someone special,\n        the right details\n        can make an ordinary moment\n        feel more memorable.\n      \u003c\/p\u003e\n\n      \u003cp data-al-use-extra\u003e\n        Browse the photographs above\n        and check the exact size\n        and options before\n        making your choice.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"al-quote\" data-al-use-quote\u003e\n        A little character\n        goes a long way.\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n    \u003cfigure class=\"al-story-media\" data-al-image=\"2\"\u003e\u003c\/figure\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- 08 VERIFIED PRODUCT DETAILS --\u003e\n\n  \u003csection class=\"al-section al-facts\" data-al-facts\u003e\n\n    \u003cdiv class=\"al-center\"\u003e\n\n      \u003cspan class=\"al-eyebrow\"\u003e\n        GOOD TO KNOW\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        Product Details\n        at a Glance.\n      \u003c\/h2\u003e\n\n      \u003cp class=\"al-sub\"\u003e\n        The details below\n        are taken from\n        the original product description.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"al-facts-grid\" data-al-facts-grid\u003e\u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- 09 EMOTIONAL VALUE --\u003e\n\n  \u003csection class=\"al-section al-moment\"\u003e\n\n    \u003cspan class=\"al-eyebrow\"\u003e\n      A THOUGHTFUL LITTLE FIND\n    \u003c\/span\u003e\n\n    \u003ch2 data-al-moment-title\u003e\n      A Detail Worth Sharing.\n    \u003c\/h2\u003e\n\n    \u003cp data-al-moment-text\u003e\n      Sometimes the best finds\n      are the ones that make you\n      look twice, start a conversation,\n      or bring an unexpected smile.\n    \u003c\/p\u003e\n\n    \u003cspan class=\"al-moment-note\" data-al-moment-note\u003e\n      Make room for something\n      a little different.\n    \u003c\/span\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- 10 FAQ --\u003e\n\n  \u003csection class=\"al-section al-faq\"\u003e\n\n    \u003cdiv class=\"al-center\"\u003e\n\n      \u003cspan class=\"al-eyebrow\"\u003e\n        BEFORE YOU CHOOSE\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        A Few Helpful Answers.\n      \u003c\/h2\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"al-faq-list\"\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          How do I know which option\n          is right for me?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          Check the original product photos,\n          available variants,\n          and selection information\n          at the top of this page.\n          Only the selected option's\n          listed features and contents\n          should be assumed included.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          What are the size and materials?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          Refer to the current\n          product specifications\n          for the exact measurements,\n          materials and other\n          confirmed details.\n          The product photos\n          may not indicate precise scale.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          What is included in the package?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          Review the selected\n          product's description\n          and package contents.\n          Props or accessories\n          shown in lifestyle photos\n          are not necessarily included.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          Where can I see more\n          photos or available styles?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          Return to the original\n          product gallery and variant\n          selector at the top\n          to view the actual media\n          and available choices.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- 11 ONLY BOTTOM BUTTON --\u003e\n\n  \u003csection class=\"al-final\"\u003e\n\n    \u003cspan class=\"al-eyebrow\"\u003e\n      TAKE ANOTHER LOOK\n    \u003c\/span\u003e\n\n    \u003ch2 data-al-final-title\u003e\n      Find the Detail\n      You Love Most.\n    \u003c\/h2\u003e\n\n    \u003cp\u003e\n      Head back to the original\n      product gallery, options\n      and purchase area.\n    \u003c\/p\u003e\n\n    \u003ca class=\"al-top\" href=\"#\"\u003e\n      Back to the Top ↑\n    \u003c\/a\u003e\n\n  \u003c\/section\u003e\n\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function(){\n  \"use strict\";\n\n  function boot(){\n\n    var root=document.getElementById(\n      \"aj-preview-story\"\n    );\n\n    if(\n      !root ||\n      root.dataset.ajInitialized===\"1\"\n    ){\n      return;\n    }\n\n    root.dataset.ajInitialized=\"1\";\n\n    \/* HELPERS *\/\n\n    function one(selector,context){\n      return (context||document).querySelector(\n        selector\n      );\n    }\n\n    function all(selector,context){\n      return Array.prototype.slice.call(\n        (context||document).querySelectorAll(\n          selector\n        )\n      );\n    }\n\n    function put(selector,value){\n\n      var element=one(selector,root);\n\n      if(element \u0026\u0026 value){\n        element.textContent=value;\n      }\n    }\n\n    function text(element){\n\n      return (\n        (\n          element \u0026\u0026\n          (element.innerText||element.textContent)\n        )||\"\"\n      ).replace(\/\\s+\/g,\" \").trim();\n    }\n\n    function trim(value,max){\n\n      value=(value||\"\")\n        .replace(\/\\s+\/g,\" \")\n        .trim();\n\n      if(value.length\u003c=max){\n        return value;\n      }\n\n      return value\n        .slice(0,max)\n        .replace(\/\\s+\\S*$\/,\"\")+\"…\";\n    }\n\n    function url(raw){\n\n      if(raw \u0026\u0026 typeof raw===\"object\"){\n        raw=\n          raw.url ||\n          raw.src ||\n          raw.contentUrl ||\n          \"\";\n      }\n\n      if(\n        typeof raw!==\"string\" ||\n        !raw.trim()\n      ){\n        return \"\";\n      }\n\n      try{\n\n        var result=new URL(\n          raw,\n          location.origin\n        );\n\n        return \/^https?:$\/.test(\n          result.protocol\n        ) ? result.href : \"\";\n\n      }catch(e){\n        return \"\";\n      }\n    }\n\n    function isCDN(source){\n\n      return \/cdn\\.shopify\\.com|\\\/cdn\\\/shop\\\/|\\\/s\\\/files\\\/\/i\n        .test(source);\n    }\n\n    function isAnimation(source){\n\n      return \/\\.(gif|mp4|webm)(?:[?#]|$)\/i\n        .test(source);\n    }\n\n    function isVideo(source){\n\n      return \/\\.(mp4|webm)(?:[?#]|$)\/i\n        .test(source);\n    }\n\n    function canonical(source){\n\n      return source\n        .split(\"?\")[0]\n        .replace(\n          \/_(?:\\d+x\\d*|x\\d+)(?=\\.[a-z0-9]+$)\/i,\n          \"\"\n        );\n    }\n\n    function unique(list){\n\n      var seen={};\n\n      return list.filter(function(source){\n\n        if(!source || !isCDN(source)){\n          return false;\n        }\n\n        var key=canonical(source);\n\n        if(seen[key]){\n          return false;\n        }\n\n        seen[key]=1;\n        return true;\n      });\n    }\n\n    \/* HIGH RESOLUTION IMAGE SOURCE *\/\n\n    function imageSource(img){\n\n      var sources=[];\n\n      [\n        \"data-zoom-image\",\n        \"data-full-size\",\n        \"data-src\",\n        \"data-original\",\n        \"data-image\"\n      ].forEach(function(key){\n\n        var value=img.getAttribute(key);\n\n        if(value){\n          sources.push(value);\n        }\n\n      });\n\n      var srcset=\n        img.getAttribute(\"srcset\") ||\n        img.getAttribute(\"data-srcset\") ||\n        \"\";\n\n      if(srcset){\n\n        srcset.split(\",\")\n          .map(function(item){\n\n            var parts=item.trim().split(\/\\s+\/);\n\n            return {\n              src:parts[0],\n              width:parseInt(parts[1],10)||0\n            };\n\n          })\n          .sort(function(a,b){\n            return b.width-a.width;\n          })\n          .forEach(function(item){\n            sources.push(item.src);\n          });\n      }\n\n      sources.push(\n        img.currentSrc||\"\",\n        img.getAttribute(\"src\")||\"\"\n      );\n\n      for(var i=0;i\u003csources.length;i++){\n\n        var result=url(sources[i]);\n\n        if(isCDN(result)){\n          return result;\n        }\n      }\n\n      return \"\";\n    }\n\n    \/* STRUCTURED PRODUCT DATA *\/\n\n    function readJSONLD(){\n\n      var products=[];\n\n      function walk(item){\n\n        if(\n          !item ||\n          typeof item!==\"object\"\n        ){\n          return;\n        }\n\n        if(Array.isArray(item)){\n\n          item.forEach(walk);\n          return;\n        }\n\n        var type=item[\"@type\"];\n\n        if(\n          type===\"Product\" ||\n          (\n            Array.isArray(type) \u0026\u0026\n            type.indexOf(\"Product\")!==-1\n          )\n        ){\n          products.push(item);\n        }\n\n        if(item[\"@graph\"]){\n          walk(item[\"@graph\"]);\n        }\n      }\n\n      all(\n        'script[type=\"application\/ld+json\"]'\n      ).forEach(function(script){\n\n        try{\n          walk(\n            JSON.parse(script.textContent)\n          );\n        }catch(e){}\n\n      });\n\n      return products[0]||null;\n    }\n\n    var ld=readJSONLD();\n\n    \/* CURRENT PRODUCT TITLE *\/\n\n    var titleElement=one(\n      'main .product__title h1,'+\n      'main h1.product__title,'+\n      'main .product-single__title,'+\n      'main [itemprop=\"name\"],'+\n      'main h1'\n    );\n\n    var productName=\n      text(titleElement) ||\n      ((ld\u0026\u0026ld.name)||\"\");\n\n    if(!productName){\n\n      var og=one(\n        'meta[property=\"og:title\"]'\n      );\n\n      productName=\n        (og\u0026\u0026og.content)||\"\";\n    }\n\n    productName=trim(\n      productName\n        .replace(\n          \/\\s*\\|\\s*ALASJOY.*$\/i,\n          \"\"\n        )\n        .replace(\n          \/\\s*[-–]\\s*ALASJOY.*$\/i,\n          \"\"\n        ),\n      95\n    );\n\n    var nameLow=productName.toLowerCase();\n\n    \/* DETECT PRESENTATION STYLE *\/\n\n    var kind=\"neutral\";\n\n    if(\n      \/christmas|holiday|santa|snowman|reindeer|gingerbread|nativity|winter|advent|ornament|festive\/\n        .test(nameLow)\n    ){\n      kind=\"holiday\";\n\n    }else if(\n      \/firefighter|memorial|tribute|prayer|jesus|christian|faith|cross|angel|remembrance|veteran\/\n        .test(nameLow)\n    ){\n      kind=\"meaningful\";\n\n    }else if(\n      \/funny|prank|screaming|goofy|silly|monster|joke|novelty\/\n        .test(nameLow)\n    ){\n      kind=\"playful\";\n\n    }else if(\n      \/lamp|light|lantern|humidifier|projector|glow|illuminated\/\n        .test(nameLow)\n    ){\n      kind=\"cozy\";\n    }\n\n    if(kind!==\"neutral\"){\n      root.classList.add(\"al-\"+kind);\n    }\n\n    \/* PRODUCT-CATEGORY COPY *\/\n\n    var copy={\n\n      neutral:[\n        \"A Little Detail. A Lot of Personality.\",\n        \"See the design up close and discover what makes it worth a second look.\",\n        \"Look Closer. There's More to Love.\",\n        \"See how the details come together in the real product photos.\",\n        \"Find a Place for Something Special.\",\n        \"A thoughtful little find for a home, collection or gift.\"\n      ],\n\n      holiday:[\n        \"Make Every Little Holiday Moment Magical.\",\n        \"Discover the festive details and visual charm that make this a wonderful seasonal accent.\",\n        \"Bring the Holiday Details into Focus.\",\n        \"Take a closer look at the colors, shapes and festive touches of the actual design.\",\n        \"Add a Little More Wonder to the Season.\",\n        \"A cheerful detail for holiday decorating and meaningful seasonal gifting.\"\n      ],\n\n      meaningful:[\n        \"Some Stories Deserve to Be Remembered.\",\n        \"A closer look at a meaningful design and the sentiments behind it.\",\n        \"Every Detail Carries Meaning.\",\n        \"Explore the symbolism and craftsmanship shown in the real product photos.\",\n        \"A Thoughtful Way to Show You Care.\",\n        \"For moments of appreciation, reflection and meaningful connection.\"\n      ],\n\n      playful:[\n        \"The Little Thing Everyone Will Talk About.\",\n        \"A playful design full of personality, unexpected details and reasons to smile.\",\n        \"The Fun Is in the Details.\",\n        \"Take a closer look at the expression and character that make this piece so memorable.\",\n        \"For Someone Who Loves a Good Laugh.\",\n        \"Sometimes an unexpected little surprise makes the best gift.\"\n      ],\n\n      cozy:[\n        \"Just Wait Until You See the Atmosphere.\",\n        \"Discover the design and inviting details behind this eye-catching home accent.\",\n        \"Discover the Details Behind the Look.\",\n        \"Explore the shape, finish and styling visible in the actual product photographs.\",\n        \"Bring a Little More Character Home.\",\n        \"A lovely finishing touch for a personal space or a thoughtful gift.\"\n      ]\n\n    }[kind];\n\n    put(\n      \"[data-al-product-name]\",\n      productName||\"A NEW LITTLE DISCOVERY\"\n    );\n\n    put(\"[data-al-headline]\",copy[0]);\n    put(\"[data-al-story-title]\",copy[2]);\n    put(\"[data-al-story-text]\",copy[3]);\n    put(\"[data-al-use-title]\",copy[4]);\n    put(\"[data-al-use-text]\",copy[5]);\n    put(\"[data-al-moment-title]\",copy[4]);\n    put(\"[data-al-moment-text]\",copy[5]);\n\n    put(\n      \"[data-al-final-title]\",\n      kind===\"holiday\"\n      ? \"Make This Season a Little More Special.\"\n      : \"Take Another Look at the Details.\"\n    );\n\n    \/* READ ORIGINAL DESCRIPTION *\/\n\n    var descriptionSelectors=[\n      \"main .product__description\",\n      \"main .product-single__description\",\n      'main [itemprop=\"description\"]',\n      \"main .product-description\",\n      \"main .product__info-container .rte\",\n      \"main .product-single__description\"\n    ];\n\n    var descriptions=descriptionSelectors\n      .map(function(selector){\n        return one(selector);\n      })\n      .filter(function(element){\n        return element \u0026\u0026\n          !root.contains(element);\n      });\n\n    var description=descriptions[0]||null;\n\n    if(\n      !description \u0026\u0026\n      ld \u0026\u0026\n      ld.description\n    ){\n\n      description=new DOMParser()\n        .parseFromString(\n          String(ld.description),\n          \"text\/html\"\n        ).body;\n    }\n\n    var paragraphs=[];\n    var bullets=[];\n\n    if(description){\n\n      paragraphs=all(\n        \"p\",description\n      )\n      .map(text)\n      .filter(function(value){\n\n        return value.length\u003e=48 \u0026\u0026\n          value.length\u003c=420 \u0026\u0026\n          !\/https?:\\\/\\\/\/.test(value);\n      });\n\n      bullets=all(\n        \"li\",description\n      )\n      .map(text)\n      .filter(function(value){\n\n        return value.length\u003e=20 \u0026\u0026\n          value.length\u003c=220 \u0026\u0026\n          !\/shipping|checkout|cart\/i\n            .test(value);\n      });\n    }\n\n    if(paragraphs.length){\n\n      put(\n        \"[data-al-lead]\",\n        trim(paragraphs[0],275)\n      );\n\n      if(paragraphs[1]){\n\n        put(\n          \"[data-al-use-extra]\",\n          trim(paragraphs[1],265)\n        );\n      }\n\n    }else{\n\n      put(\"[data-al-lead]\",copy[1]);\n    }\n\n    \/* ACTUAL PRODUCT SELLING POINTS *\/\n\n    if(bullets.length){\n\n      var benefitHolder=one(\n        \"[data-al-benefits]\",\n        root\n      );\n\n      benefitHolder.textContent=\"\";\n\n      bullets.slice(0,3).forEach(\n        function(item,index){\n\n          var card=document.createElement(\n            \"article\"\n          );\n\n          card.className=\"al-benefit\";\n\n          var label=document.createElement(\n            \"span\"\n          );\n\n          label.className=\"num\";\n\n          label.textContent=\n            \"0\"+(index+1)+\n            \" \/ PRODUCT HIGHLIGHT\";\n\n          var heading=document.createElement(\n            \"h3\"\n          );\n\n          heading.textContent=[\n            \"What Makes It Special\",\n            \"A Closer Look\",\n            \"The Details You'll Appreciate\"\n          ][index];\n\n          var paragraph=document.createElement(\n            \"p\"\n          );\n\n          paragraph.textContent=trim(\n            item,210\n          );\n\n          card.appendChild(label);\n          card.appendChild(heading);\n          card.appendChild(paragraph);\n\n          benefitHolder.appendChild(card);\n        }\n      );\n\n      put(\n        \"[data-al-benefit-intro]\",\n        \"These highlights come from the original product description.\"\n      );\n    }\n\n    \/* READ CURRENT SHOPIFY PRODUCT MEDIA *\/\n\n    var scopes=[\n      \"media-gallery\",\n      \"product-media-gallery\",\n      '[id^=\"MediaGallery\"]',\n      \".product__media-list\",\n      \".product-gallery\",\n      \".product-single__photos\",\n      \"[data-product-gallery]\",\n      \".product-media-container\",\n      \".product__media-wrapper\"\n    ];\n\n    var images=[];\n    var motions=[];\n\n    scopes.forEach(function(selector){\n\n      all(selector).forEach(function(scope){\n\n        if(root.contains(scope)){\n          return;\n        }\n\n        all(\"img\",scope).forEach(function(img){\n\n          var source=imageSource(img);\n\n          if(isAnimation(source)){\n            motions.push(source);\n\n          }else if(source){\n            images.push(source);\n          }\n        });\n\n        all(\n          \"video,video source\",\n          scope\n        ).forEach(function(media){\n\n          var source=url(\n            media.currentSrc ||\n            media.getAttribute(\"src\")\n          );\n\n          if(\n            isVideo(source) \u0026\u0026\n            isCDN(source)\n          ){\n            motions.push(source);\n          }\n        });\n      });\n    });\n\n    \/* PRODUCT METADATA FALLBACK *\/\n\n    if(ld \u0026\u0026 ld.image){\n\n      var ldImages=Array.isArray(ld.image)\n        ? ld.image\n        : [ld.image];\n\n      ldImages.forEach(function(item){\n\n        var source=url(item);\n\n        if(isAnimation(source)){\n          motions.push(source);\n\n        }else if(source){\n          images.push(source);\n        }\n      });\n    }\n\n    \/* ORIGINAL MAIN PRODUCT FALLBACK *\/\n\n    if(!images.length){\n\n      var primary=one(\n        'main [id*=\"MainProduct\"],'+\n        \"main .product,\"+\n        \"main [data-product-id],\"+\n        \"main .product-single\"\n      );\n\n      if(\n        primary \u0026\u0026\n        !root.contains(primary)\n      ){\n\n        all(\n          \"img\",primary\n        ).forEach(function(img){\n\n          var source=imageSource(img);\n\n          if(isAnimation(source)){\n            motions.push(source);\n\n          }else if(source){\n            images.push(source);\n          }\n        });\n      }\n    }\n\n    \/* ORIGINAL DESCRIPTION ANIMATIONS *\/\n\n    if(description){\n\n      all(\n        \"img\",description\n      ).forEach(function(img){\n\n        var source=imageSource(img);\n\n        if(isAnimation(source)){\n          motions.push(source);\n\n        }else if(source){\n          images.push(source);\n        }\n      });\n\n      all(\n        \"video,video source\",\n        description\n      ).forEach(function(media){\n\n        var source=url(\n          media.currentSrc ||\n          media.getAttribute(\"src\")\n        );\n\n        if(\n          isVideo(source) \u0026\u0026\n          isCDN(source)\n        ){\n          motions.push(source);\n        }\n      });\n    }\n\n    images=unique(images)\n      .filter(function(source){\n        return !isAnimation(source);\n      })\n      .slice(0,12);\n\n    motions=unique(motions);\n\n    \/* VERIFY PHOTOS BEFORE DISPLAY *\/\n\n    function checkImage(source){\n\n      return new Promise(function(resolve){\n\n        var image=new Image();\n\n        image.onload=function(){\n\n          resolve(\n            image.naturalWidth\u003e0\n              ? source\n              : null\n          );\n        };\n\n        image.onerror=function(){\n          resolve(null);\n        };\n\n        image.src=source;\n      });\n    }\n\n    function putPhoto(\n      holder,source,index\n    ){\n\n      if(!holder || !source){\n        return;\n      }\n\n      var img=document.createElement(\n        \"img\"\n      );\n\n      img.src=source;\n\n      img.alt=productName\n        ? productName+\" — actual product photograph\"\n        : \"Actual product photograph\";\n\n      img.decoding=\"async\";\n\n      img.loading=index===0\n        ? \"eager\"\n        : \"lazy\";\n\n      holder.insertBefore(\n        img,\n        holder.firstChild\n      );\n\n      holder.classList.add(\"visible\");\n\n      var section=holder.closest(\n        \"[data-al-layout]\"\n      );\n\n      if(section){\n        section.classList.add(\"has-media\");\n      }\n    }\n\n    Promise.all(\n      images.map(checkImage)\n    ).then(function(results){\n\n      var good=results.filter(Boolean);\n\n      if(!good.length){\n        return;\n      }\n\n      putPhoto(\n        one('[data-al-image=\"0\"]',root),\n        good[0],0\n      );\n\n      if(good[1]){\n\n        putPhoto(\n          one('[data-al-image=\"1\"]',root),\n          good[1],1\n        );\n      }\n\n      if(good[2]){\n\n        putPhoto(\n          one('[data-al-image=\"2\"]',root),\n          good[2],2\n        );\n      }\n\n      var others=good.slice(3,9);\n\n      if(!others.length){\n        return;\n      }\n\n      var section=one(\n        \"[data-al-gallery]\",root\n      );\n\n      var grid=one(\n        \"[data-al-gallery-grid]\",root\n      );\n\n      others.forEach(function(source,index){\n\n        var figure=document.createElement(\n          \"figure\"\n        );\n\n        figure.className=\"al-gallery-card\";\n\n        var image=document.createElement(\n          \"img\"\n        );\n\n        image.src=source;\n\n        image.alt=productName\n          ? productName+\n            \" — view \"+(index+4)\n          : \"Additional product view\";\n\n        image.loading=\"lazy\";\n        image.decoding=\"async\";\n\n        var caption=document.createElement(\n          \"figcaption\"\n        );\n\n        caption.textContent=\n          \"Product View \"+(index+4);\n\n        figure.appendChild(image);\n        figure.appendChild(caption);\n\n        grid.appendChild(figure);\n      });\n\n      section.classList.add(\"visible\");\n    });\n\n    \/* ORIGINAL GIF \/ VIDEO *\/\n\n    if(motions.length){\n\n      var source=motions[0];\n\n      var motionSection=one(\n        \"[data-al-motion]\",root\n      );\n\n      var motionHolder=one(\n        \"[data-al-motion-holder]\",root\n      );\n\n      if(isVideo(source)){\n\n        var video=document.createElement(\n          \"video\"\n        );\n\n        video.src=source;\n        video.controls=true;\n        video.autoplay=true;\n        video.muted=true;\n        video.loop=true;\n        video.playsInline=true;\n        video.preload=\"metadata\";\n\n        video.onloadedmetadata=function(){\n\n          motionSection.classList.add(\n            \"visible\"\n          );\n        };\n\n        motionHolder.appendChild(video);\n\n      }else{\n\n        var gif=new Image();\n\n        gif.alt=\"Original product animation\";\n\n        gif.onload=function(){\n\n          motionSection.classList.add(\n            \"visible\"\n          );\n        };\n\n        gif.src=source;\n\n        motionHolder.appendChild(gif);\n      }\n    }\n\n    \/* VERIFIED SPECIFICATIONS ONLY *\/\n\n    var facts=[];\n\n    if(description){\n\n      all(\n        \"tr\",description\n      ).forEach(function(row){\n\n        var parts=all(\n          \"th,td\",row\n        ).map(text).filter(Boolean);\n\n        if(\n          parts.length\u003e=2 \u0026\u0026\n          parts[0].length\u003c55 \u0026\u0026\n          parts[1].length\u003c190\n        ){\n          facts.push(\n            parts.slice(0,2)\n          );\n        }\n      });\n\n      all(\n        \"li\",description\n      ).map(text).forEach(function(value){\n\n        var match=value.match(\n          \/^(material|size|dimensions|power source|weight|package includes|color|installation|care)\\s*[:：-]\\s*(.{2,160})$\/i\n        );\n\n        if(match){\n\n          facts.push([\n            match[1],\n            match[2]\n          ]);\n        }\n      });\n    }\n\n    var seenFacts={};\n\n    var factGrid=one(\n      \"[data-al-facts-grid]\",\n      root\n    );\n\n    var factCount=0;\n\n    facts.forEach(function(item){\n\n      var key=item[0].toLowerCase();\n\n      if(\n        seenFacts[key] ||\n        factCount\u003e=6\n      ){\n        return;\n      }\n\n      seenFacts[key]=true;\n      factCount++;\n\n      var card=document.createElement(\n        \"div\"\n      );\n\n      card.className=\"al-fact\";\n\n      var strong=document.createElement(\n        \"strong\"\n      );\n\n      strong.textContent=item[0];\n\n      var paragraph=document.createElement(\n        \"p\"\n      );\n\n      paragraph.textContent=item[1];\n\n      card.appendChild(strong);\n      card.appendChild(paragraph);\n\n      factGrid.appendChild(card);\n    });\n\n    if(factCount){\n\n      one(\n        \"[data-al-facts]\",\n        root\n      ).classList.add(\"visible\");\n    }\n\n    \/* The bottom href=\"#\" works natively. *\/\n\n  }\n\n  if(document.readyState===\"loading\"){\n\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      boot,\n      {once:true}\n    );\n\n  }else{\n\n    boot();\n  }\n\n  document.addEventListener(\n    \"shopify:section:load\",\n    boot\n  );\n\n})();\n\u003c\/script\u003e\n","brand":"zhidou","offers":[{"title":"Lantern Keeper","offer_id":68247179985133,"sku":"TBP26091204-提灯","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Woodland Keeper","offer_id":68247180017901,"sku":"TBP26091204-猫头鹰","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Candy Cane Keeper","offer_id":68247180050669,"sku":"TBP26091204-糖果","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Enchanted Cauldron Keeper","offer_id":68247180083437,"sku":"TBP26091204-女巫锅","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Enchanted Snowman Guardian","offer_id":68247180116205,"sku":"TBP26091204-雪人","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Christmas Santa Guardian","offer_id":68247180148973,"sku":"TBP26091204-圣诞老人","price":29.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0841\/9354\/2381\/files\/89781486529544193.jpg?v=1794278404","url":"https:\/\/alasjoy.com\/products\/whimsical-christmas-witch-collection-enchanting-holiday-characters-full-of-magic","provider":"alasjoy","version":"1.0","type":"link"}