{"product_id":"dsad","title":"dsad","description":"\n\u003c!-- ALASJOY | SNOWMAN \u0026 ELF CHRISTMAS DOORWAY --\u003e\n\u003c!-- COMPLETE SHOPIFY CUSTOM LIQUID: HTML + CSS + JS --\u003e\n\u003c!-- NO LIQUID TEMPLATE TAGS --\u003e\n\n\u003cdiv id=\"aj-door-magic\" class=\"ajdm\"\u003e\n  \u003cdiv class=\"ajdm-snow\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n\n  \u003cdiv class=\"ajdm-container\"\u003e\n\n    \u003cdiv class=\"ajdm-ribbon\"\u003e\n      ✦ A LITTLE CHRISTMAS MAGIC STARTS AT THE DOOR ✦\n    \u003c\/div\u003e\n\n    \u003c!-- HERO --\u003e\n    \u003csection class=\"ajdm-hero\"\u003e\n\n      \u003cdiv class=\"ajdm-hero-gallery\"\u003e\n        \u003cdiv class=\"ajdm-frame\" id=\"ajdm-stage\"\u003e\n\n          \u003cimg id=\"ajdm-main\" alt=\"Snowman and elf Christmas doorway garland\" loading=\"eager\" decoding=\"async\" hidden\u003e\n\n          \u003cdiv class=\"ajdm-empty\" id=\"ajdm-empty\"\u003e\n            \u003cspan\u003e✧\u003c\/span\u003e\n            \u003cstrong\u003eYOUR CHRISTMAS WELCOME\u003c\/strong\u003e\n            \u003csmall\u003e\n              Loading original Shopify product photos...\n            \u003c\/small\u003e\n          \u003c\/div\u003e\n\n          \u003cspan class=\"ajdm-image-label\"\u003e\n            THE HOLIDAY DOORWAY COLLECTION\n          \u003c\/span\u003e\n\n          \u003cbutton type=\"button\" class=\"ajdm-arrow ajdm-prev\" aria-label=\"Previous picture\"\u003e❮\u003c\/button\u003e\n\n          \u003cbutton type=\"button\" class=\"ajdm-arrow ajdm-next\" aria-label=\"Next picture\"\u003e❯\u003c\/button\u003e\n\n          \u003cdiv id=\"ajdm-dots\" class=\"ajdm-dots\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"ajdm-thumb-row\" id=\"ajdm-thumbs\"\u003e\u003c\/div\u003e\n\n        \u003cp class=\"ajdm-under-photo\"\u003e\n          ✧ FULL PHOTO VIEW · AUTO-SLIDE · SWIPE ON MOBILE\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"ajdm-hero-copy\"\u003e\n\n        \u003cp class=\"ajdm-eyebrow\"\u003e\n          THE WARMEST WELCOME OF THE SEASON\n        \u003c\/p\u003e\n\n        \u003ch1\u003e\n          MAKE THE FIRST\n          \u003cem\u003eHELLO\u003c\/em\u003e\n          FEEL LIKE CHRISTMAS.\n        \u003c\/h1\u003e\n\n        \u003cp class=\"ajdm-lead\"\u003e\n          Imagine opening the door to cheerful\n          snowmen, mischievous little elves,\n          rich evergreen textures and beautiful\n          festive bows.\n        \u003c\/p\u003e\n\n        \u003cp\u003e\n          Before anyone steps inside,\n          the magic has already begun.\n        \u003c\/p\u003e\n\n        \u003cdiv class=\"ajdm-perks\"\u003e\n\n          \u003cdiv\u003e\n            \u003cspan\u003e01\u003c\/span\u003e\n            \u003cp\u003e\n              \u003cstrong\u003e\n                AN ENTRANCE FULL OF PERSONALITY\n              \u003c\/strong\u003e\n              \u003csmall\u003e\n                Snowmen and elves turn everyday\n                greenery into a storybook welcome.\n              \u003c\/small\u003e\n            \u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv\u003e\n            \u003cspan\u003e02\u003c\/span\u003e\n            \u003cp\u003e\n              \u003cstrong\u003eTHE CLASSIC CHRISTMAS LOOK\u003c\/strong\u003e\n              \u003csmall\u003e\n                Red plaid, greenery, berries,\n                pinecones and golden accents.\n              \u003c\/small\u003e\n            \u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv\u003e\n            \u003cspan\u003e03\u003c\/span\u003e\n            \u003cp\u003e\n              \u003cstrong\u003e\n                A PHOTO-WORTHY FIRST IMPRESSION\n              \u003c\/strong\u003e\n              \u003csmall\u003e\n                A warm setting for family arrivals,\n                guests and holiday memories.\n              \u003c\/small\u003e\n            \u003c\/p\u003e\n          \u003c\/div\u003e\n\n        \u003c\/div\u003e\n\n        \u003cp class=\"ajdm-fine\"\u003e\n          Styled image for inspiration.\n          Please check the selected product listing\n          for the exact pieces and accessories included.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003c!-- FESTIVE DIVIDER --\u003e\n    \u003cdiv class=\"ajdm-mini-band\"\u003e\n      \u003cspan\u003eJOYFUL CHARACTERS\u003c\/span\u003e\n      \u003ci\u003e✦\u003c\/i\u003e\n      \u003cspan\u003eTIMELESS COLORS\u003c\/span\u003e\n      \u003ci\u003e✦\u003c\/i\u003e\n      \u003cspan\u003eA WARM HOLIDAY WELCOME\u003c\/span\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- SELLING POINTS --\u003e\n    \u003csection class=\"ajdm-intro\"\u003e\n\n      \u003cp class=\"ajdm-eyebrow\"\u003e\n        THE LOOK THAT MAKES GUESTS SMILE\n      \u003c\/p\u003e\n\n      \u003ch2\u003e\n        Not Just a Doorway.\n        \u003cem\u003eA Little Christmas Story.\u003c\/em\u003e\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        The playful expressions draw you in.\n        The layered ribbons and evergreen accents\n        bring everything together.\n\n        It's the kind of festive entrance\n        children point to and neighbors remember.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"ajdm-icons\"\u003e\n\n        \u003carticle\u003e\n          \u003cspan\u003e☃\u003c\/span\u003e\n          \u003ch3\u003eSmiling Snowmen\u003c\/h3\u003e\n          \u003cp\u003e\n            Rosy cheeks, cozy scarves\n            and cheerful seasonal character.\n          \u003c\/p\u003e\n        \u003c\/article\u003e\n\n        \u003carticle\u003e\n          \u003cspan\u003e✧\u003c\/span\u003e\n          \u003ch3\u003ePlayful Little Elves\u003c\/h3\u003e\n          \u003cp\u003e\n            Whimsical faces and bright holiday\n            hats add personality.\n          \u003c\/p\u003e\n        \u003c\/article\u003e\n\n        \u003carticle\u003e\n          \u003cspan\u003e✦\u003c\/span\u003e\n          \u003ch3\u003eBeautifully Layered\u003c\/h3\u003e\n          \u003cp\u003e\n            Evergreen branches, festive bows\n            and rich traditional color.\n          \u003c\/p\u003e\n        \u003c\/article\u003e\n\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003c!-- THREE DETAIL PHOTOS --\u003e\n    \u003csection class=\"ajdm-details\" id=\"ajdm-details\" hidden\u003e\n      \u003cdiv class=\"ajdm-headline\"\u003e\n\n        \u003cp class=\"ajdm-eyebrow\"\u003e\n          LOOK A LITTLE CLOSER\n        \u003c\/p\u003e\n\n        \u003ch2\u003e\n          Every Corner Has\n          \u003cem\u003eSomething to Love.\u003c\/em\u003e\n        \u003c\/h2\u003e\n\n        \u003cp\u003e\n          Up-close looks at the small details\n          that create the complete holiday scene.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"ajdm-detail-grid\" id=\"ajdm-detail-grid\"\u003e\u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003c!-- FAMILY STORY --\u003e\n    \u003csection class=\"ajdm-story\" id=\"ajdm-story\" hidden\u003e\n      \u003cfigure class=\"ajdm-story-photo\"\u003e\n\n        \u003cimg id=\"ajdm-story-photo\" alt=\"Additional Christmas doorway scene\" loading=\"lazy\"\u003e\n\n        \u003cfigcaption\u003e\n          THE JOY STARTS BEFORE THEY STEP INSIDE\n        \u003c\/figcaption\u003e\n      \u003c\/figure\u003e\n\n      \u003cdiv class=\"ajdm-story-copy\"\u003e\n\n        \u003cp class=\"ajdm-eyebrow\"\u003e\n          A CHRISTMAS WELCOME TO REMEMBER\n        \u003c\/p\u003e\n\n        \u003ch2\u003e\n          Make Coming Home\n          \u003cem\u003eFeel Magical.\u003c\/em\u003e\n        \u003c\/h2\u003e\n\n        \u003cp\u003e\n          Picture the family arriving for holiday\n          dinner. The front door is already\n          dressed for the occasion, and everyone\n          stops for a moment to admire the details.\n        \u003c\/p\u003e\n\n        \u003cp\u003e\n          Whether you're decorating for guests\n          or simply creating something cheerful\n          to come home to, the entrance sets\n          the tone for the entire celebration.\n        \u003c\/p\u003e\n\n        \u003cdiv class=\"ajdm-stamp\"\u003e\n          MADE FOR THE MOMENTS YOU SHARE ✦\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003c!-- EXTRA PHOTOS --\u003e\n    \u003csection class=\"ajdm-more\" id=\"ajdm-more\" hidden\u003e\n      \u003cdiv class=\"ajdm-headline\"\u003e\n\n        \u003cp class=\"ajdm-eyebrow\"\u003e\n          THE COMPLETE PICTURE\n        \u003c\/p\u003e\n\n        \u003ch2\u003e\n          See the Holiday Look\n          \u003cem\u003eFrom Every Angle.\u003c\/em\u003e\n        \u003c\/h2\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"ajdm-more-grid\" id=\"ajdm-more-grid\"\u003e\u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003c!-- FAQ --\u003e\n    \u003csection class=\"ajdm-faq\"\u003e\n\n      \u003cdiv class=\"ajdm-headline\"\u003e\n\n        \u003cp class=\"ajdm-eyebrow\"\u003e\n          BEFORE YOU DECORATE\n        \u003c\/p\u003e\n\n        \u003ch2\u003e\n          A Few Little\n          \u003cem\u003eThings to Know.\u003c\/em\u003e\n        \u003c\/h2\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"ajdm-faq-list\"\u003e\n\n        \u003cdetails\u003e\n          \u003csummary\u003e\n            Does the order include the door wreath,\n            garland, lights and all the characters?\n          \u003c\/summary\u003e\n          \u003cp\u003e\n            This photograph shows a fully styled\n            Christmas entrance. Please check\n            the product's selected variant,\n            written description and package list\n            for exactly which pieces are included.\n            Some decorations may be styling accessories.\n          \u003c\/p\u003e\n        \u003c\/details\u003e\n\n        \u003cdetails\u003e\n          \u003csummary\u003e\n            Will the decorations fit my doorway?\n          \u003c\/summary\u003e\n          \u003cp\u003e\n            Door widths and heights vary.\n            Check the specific measurements\n            and included mounting arrangement\n            before ordering, then compare them\n            with your own doorway.\n          \u003c\/p\u003e\n        \u003c\/details\u003e\n\n        \u003cdetails\u003e\n          \u003csummary\u003e\n            Are the lights included?\n            Are batteries required?\n          \u003c\/summary\u003e\n          \u003cp\u003e\n            The example scene contains warm festive\n            lighting, but lighting and power accessories\n            must be confirmed in the selected product's\n            description. Do not assume they are included.\n          \u003c\/p\u003e\n        \u003c\/details\u003e\n\n        \u003cdetails\u003e\n          \u003csummary\u003e\n            Can I display this outdoors?\n          \u003c\/summary\u003e\n          \u003cp\u003e\n            Check the seller's materials, care\n            instructions and stated weather resistance.\n            For an exposed entrance, take local rain,\n            wind and moisture into account\n            before installing.\n          \u003c\/p\u003e\n        \u003c\/details\u003e\n\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003c!-- ONLY ONE BOTTOM CTA --\u003e\n    \u003cfooter class=\"ajdm-final\"\u003e\n\n      \u003cdiv class=\"ajdm-final-stars\"\u003e\n        ✦ ❄ ✧ ❄ ✦\n      \u003c\/div\u003e\n\n      \u003cp class=\"ajdm-eyebrow\"\u003e\n        YOUR COZIEST CHRISTMAS STARTS HERE\n      \u003c\/p\u003e\n\n      \u003ch2\u003e\n        Give Every Guest\n        \u003cem\u003eA Little Holiday Joy.\u003c\/em\u003e\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        Bring the magic to your front door.\n        Check the real photos and choose the\n        right decoration option at the top\n        of this page.\n      \u003c\/p\u003e\n\n      \u003ca href=\"#\" id=\"ajdm-up\"\u003e\n        BACK TO TOP · VIEW OPTIONS ↑\n      \u003c\/a\u003e\n\n      \u003csmall\u003e\n        Returns to the top of this page.\n        No external redirect.\n      \u003c\/small\u003e\n\n    \u003c\/footer\u003e\n\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n#aj-door-magic,\n#aj-door-magic * {\n  box-sizing: border-box;\n}\n\n#aj-door-magic {\n  --wine: #8e2430;\n  --pine: #234534;\n  --gold: #b58a4b;\n  --paper: #fffaf2;\n  --ink: #3b332a;\n  --muted: #6d5e50;\n  --edge: #e8dac5;\n\n  container-type: inline-size;\n\n  position: relative;\n  isolation: isolate;\n\n  width: 100%;\n  max-width: none;\n\n  margin: 0 auto;\n  padding: 12px;\n\n  background: linear-gradient(\n    140deg,\n    #fffaf2,\n    #f5eddf 49%,\n    #fffbf5\n  );\n\n  color: var(--ink);\n  font: 15px\/1.65 Arial,Helvetica,sans-serif;\n\n  overflow: hidden;\n  clear: both;\n}\n\n#aj-door-magic .ajdm-container {\n  max-width: 1180px;\n  margin: auto;\n\n  position: relative;\n  z-index: 2;\n  min-width: 0;\n}\n\n#aj-door-magic [hidden] {\n  display: none !important;\n}\n\n#aj-door-magic img {\n  display: block;\n  max-width: 100%;\n}\n\n#aj-door-magic h1,\n#aj-door-magic h2,\n#aj-door-magic h3 {\n  margin: 0;\n  font-family: Georgia,\"Times New Roman\",serif;\n  line-height: 1.18;\n  color: var(--pine);\n  font-weight: 600;\n  overflow-wrap: break-word;\n}\n\n#aj-door-magic h1 em,\n#aj-door-magic h2 em {\n  font-weight: 400;\n  font-style: italic;\n  color: var(--wine);\n}\n\n#aj-door-magic p {\n  margin: 0 0 12px;\n  color: var(--muted);\n  line-height: 1.75;\n}\n\n\/* TOP CHRISTMAS RIBBON *\/\n\n#aj-door-magic .ajdm-ribbon {\n  padding: 12px 8px;\n\n  background: linear-gradient(\n    100deg,\n    #7a2631,\n    #a73f45,\n    #7a2631\n  );\n\n  border-radius: 7px;\n  text-align: center;\n\n  color: #ffedcf;\n  font-size: 11px;\n  letter-spacing: .12em;\n  font-weight: 800;\n}\n\n#aj-door-magic .ajdm-eyebrow {\n  font-size: 10px;\n  letter-spacing: .18em;\n  font-weight: 800;\n  color: var(--gold);\n\n  margin: 0 0 11px;\n  line-height: 1.5;\n}\n\n\/* HERO LAYOUT *\/\n\n#aj-door-magic .ajdm-hero {\n  display: grid;\n  grid-template-columns: minmax(0,1fr);\n  gap: 20px;\n\n  padding: 21px 4px 28px;\n  align-items: center;\n}\n\n#aj-door-magic .ajdm-hero-gallery,\n#aj-door-magic .ajdm-hero-copy {\n  min-width: 0;\n}\n\n#aj-door-magic .ajdm-frame {\n  position: relative;\n  aspect-ratio: 1\/1;\n\n  background: #efe6d8;\n  border: 8px solid #fff;\n  outline: 1px solid #e2c8a5;\n\n  border-radius: 13px;\n  overflow: hidden;\n\n  box-shadow: 0 13px 33px rgba(76,49,27,.1);\n  touch-action: pan-y;\n}\n\n#aj-door-magic .ajdm-frame \u003e img {\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n\n  background: #f0e6d6;\n}\n\n#aj-door-magic .ajdm-empty {\n  position: absolute;\n  inset: 0;\n\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n\n  text-align: center;\n  gap: 8px;\n  padding: 20px;\n\n  background: radial-gradient(\n    circle,\n    #f9f3e8,\n    #eadcc8\n  );\n}\n\n#aj-door-magic .ajdm-empty span {\n  font: 48px Georgia,serif;\n  color: var(--gold);\n}\n\n#aj-door-magic .ajdm-empty strong {\n  color: var(--pine);\n  font: 600 22px Georgia,serif;\n}\n\n#aj-door-magic .ajdm-empty small {\n  font-size: 12px;\n  line-height: 1.5;\n\n  color: var(--muted);\n  max-width: 260px;\n}\n\n#aj-door-magic .ajdm-image-label {\n  position: absolute;\n  left: 10px;\n  bottom: 12px;\n  z-index: 2;\n\n  font-size: 9px;\n  letter-spacing: .06em;\n  font-weight: 800;\n\n  background: #fffaf2e8;\n  color: #4e3e2a;\n\n  padding: 7px 9px;\n  border-radius: 5px;\n}\n\n\/* SLIDESHOW CONTROLS *\/\n\n#aj-door-magic .ajdm-arrow {\n  position: absolute;\n  z-index: 3;\n  top: 50%;\n  transform: translateY(-50%);\n\n  height: 37px;\n  width: 34px;\n\n  display: grid;\n  place-items: center;\n  padding: 0;\n\n  background: #fffaf4eb;\n  border: 1px solid #d9c4a6;\n  border-radius: 50%;\n\n  font-size: 16px;\n  color: var(--pine);\n  cursor: pointer;\n}\n\n#aj-door-magic .ajdm-prev {\n  left: 7px;\n}\n\n#aj-door-magic .ajdm-next {\n  right: 7px;\n}\n\n#aj-door-magic .ajdm-dots {\n  position: absolute;\n  z-index: 3;\n\n  left: 50%;\n  top: 14px;\n  transform: translateX(-50%);\n\n  display: flex;\n  gap: 5px;\n}\n\n#aj-door-magic .ajdm-dots i {\n  display: block;\n  width: 6px;\n  height: 6px;\n\n  border-radius: 50%;\n  background: #bdb2a4;\n}\n\n#aj-door-magic .ajdm-dots i.active {\n  width: 18px;\n  border-radius: 6px;\n  background: var(--wine);\n}\n\n\/* THUMBNAILS *\/\n\n#aj-door-magic .ajdm-thumb-row {\n  display: flex;\n  gap: 7px;\n  overflow-x: auto;\n  margin-top: 10px;\n  scrollbar-width: thin;\n}\n\n#aj-door-magic .ajdm-thumb {\n  height: 59px;\n  width: 59px;\n  flex: 0 0 59px;\n\n  background: #f6eee1;\n  border: 2px solid #eadbc7;\n  border-radius: 7px;\n\n  overflow: hidden;\n  padding: 2px;\n  cursor: pointer;\n}\n\n#aj-door-magic .ajdm-thumb.selected {\n  border-color: var(--wine);\n}\n\n#aj-door-magic .ajdm-thumb img {\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n}\n\n#aj-door-magic .ajdm-under-photo {\n  font-size: 9px;\n  letter-spacing: .1em;\n  font-weight: 800;\n  color: #917f67;\n\n  text-align: center;\n  margin: 10px 0 0;\n}\n\n\/* HERO COPY *\/\n\n#aj-door-magic .ajdm-hero h1 {\n  font-size: clamp(32px,5.2cqw,58px);\n  letter-spacing: -.035em;\n  margin: 0 0 17px;\n}\n\n#aj-door-magic .ajdm-lead {\n  font-size: 17px;\n  color: #564a3e;\n  line-height: 1.68;\n}\n\n#aj-door-magic .ajdm-perks {\n  border-top: 1px solid var(--edge);\n  border-bottom: 1px solid var(--edge);\n\n  margin: 19px 0 13px;\n  padding: 8px 0;\n}\n\n#aj-door-magic .ajdm-perks \u003e div {\n  display: flex;\n  gap: 12px;\n  align-items: flex-start;\n  padding: 8px 0;\n}\n\n#aj-door-magic .ajdm-perks \u003e div \u003e span {\n  font: italic 20px Georgia,serif;\n  color: var(--wine);\n  min-width: 27px;\n}\n\n#aj-door-magic .ajdm-perks p {\n  margin: 0;\n}\n\n#aj-door-magic .ajdm-perks strong {\n  display: block;\n  color: var(--pine);\n\n  font-size: 12px;\n  letter-spacing: .045em;\n}\n\n#aj-door-magic .ajdm-perks small {\n  display: block;\n\n  font-size: 12px;\n  color: var(--muted);\n  line-height: 1.55;\n  margin-top: 3px;\n}\n\n#aj-door-magic .ajdm-fine {\n  font-size: 11px;\n  color: #82786d;\n  line-height: 1.55;\n}\n\n\/* FESTIVE SEPARATOR *\/\n\n#aj-door-magic .ajdm-mini-band {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n\n  gap: 16px;\n  flex-wrap: wrap;\n\n  background: #244b39;\n  color: #fce9c8;\n\n  border-top: 2px solid #c29a5f;\n  border-bottom: 2px solid #c29a5f;\n\n  padding: 13px 8px;\n\n  font-weight: 800;\n  font-size: 10px;\n  letter-spacing: .1em;\n  text-align: center;\n}\n\n#aj-door-magic .ajdm-mini-band i {\n  color: #e4bc7d;\n  font-style: normal;\n}\n\n\/* INTRO \u0026 BENEFITS *\/\n\n#aj-door-magic .ajdm-intro,\n#aj-door-magic .ajdm-details,\n#aj-door-magic .ajdm-more,\n#aj-door-magic .ajdm-faq {\n  padding: 42px 10px;\n}\n\n#aj-door-magic .ajdm-intro {\n  text-align: center;\n}\n\n#aj-door-magic .ajdm-intro \u003e h2,\n#aj-door-magic .ajdm-headline h2 {\n  font-size: clamp(28px,4cqw,44px);\n  margin-bottom: 13px;\n}\n\n#aj-door-magic .ajdm-intro \u003e p:not(.ajdm-eyebrow) {\n  max-width: 740px;\n  margin: 0 auto 23px;\n  font-size: 15px;\n}\n\n#aj-door-magic .ajdm-icons {\n  display: grid;\n  grid-template-columns: repeat(3,minmax(0,1fr));\n\n  gap: 10px;\n  text-align: left;\n}\n\n#aj-door-magic .ajdm-icons article {\n  border: 1px solid var(--edge);\n  border-radius: 12px;\n  background: #fffdf8;\n  padding: 20px 16px;\n}\n\n#aj-door-magic .ajdm-icons article \u003e span {\n  display: block;\n  color: var(--wine);\n  font: 31px Georgia,serif;\n  margin-bottom: 9px;\n}\n\n#aj-door-magic .ajdm-icons h3 {\n  font-size: 20px;\n  margin-bottom: 7px;\n}\n\n#aj-door-magic .ajdm-icons p {\n  font-size: 13px;\n  margin: 0;\n}\n\n\/* PRODUCT DETAILS *\/\n\n#aj-door-magic .ajdm-details {\n  background: #f5eadc;\n  border-radius: 15px;\n  margin: 3px 0;\n}\n\n#aj-door-magic .ajdm-headline {\n  text-align: center;\n  max-width: 690px;\n  margin: 0 auto 23px;\n}\n\n#aj-door-magic .ajdm-headline \u003e p:last-child {\n  font-size: 14px;\n}\n\n#aj-door-magic .ajdm-detail-grid {\n  display: grid;\n  grid-template-columns: repeat(3,minmax(0,1fr));\n  gap: 11px;\n}\n\n#aj-door-magic .ajdm-detail-grid figure {\n  min-width: 0;\n  margin: 0;\n\n  border-radius: 12px;\n  overflow: hidden;\n\n  border: 1px solid var(--edge);\n  background: #fffdf9;\n}\n\n#aj-door-magic .ajdm-detail-grid img {\n  width: 100%;\n  aspect-ratio: 1\/1;\n  object-fit: contain;\n  background: #eee4d6;\n}\n\n#aj-door-magic .ajdm-detail-grid figure.zoom img {\n  object-fit: cover;\n}\n\n#aj-door-magic .ajdm-detail-grid figcaption {\n  padding: 12px 10px 16px;\n}\n\n#aj-door-magic .ajdm-detail-grid strong {\n  display: block;\n\n  font: 600 17px Georgia,serif;\n  color: var(--pine);\n  margin-bottom: 5px;\n}\n\n#aj-door-magic .ajdm-detail-grid span {\n  font-size: 12px;\n  line-height: 1.5;\n  color: var(--muted);\n}\n\n\/* STORY SECTION *\/\n\n#aj-door-magic .ajdm-story {\n  padding: 44px 10px;\n\n  display: grid;\n  grid-template-columns:\n    minmax(0,1fr) minmax(0,1fr);\n\n  gap: 28px;\n  align-items: center;\n}\n\n#aj-door-magic .ajdm-story-photo {\n  margin: 0;\n  padding: 7px;\n  background: #fff;\n\n  border: 1px solid var(--edge);\n  border-radius: 12px;\n}\n\n#aj-door-magic .ajdm-story-photo img {\n  width: 100%;\n  aspect-ratio: 1\/1;\n  object-fit: contain;\n}\n\n#aj-door-magic .ajdm-story-photo figcaption {\n  text-align: center;\n  font-size: 9px;\n  font-weight: 800;\n  letter-spacing: .1em;\n\n  color: #94744b;\n  padding: 10px 3px 4px;\n}\n\n#aj-door-magic .ajdm-story-copy h2 {\n  font-size: clamp(30px,4.5cqw,47px);\n  margin-bottom: 17px;\n}\n\n#aj-door-magic .ajdm-stamp {\n  padding-top: 15px;\n  border-top: 1px solid #cfbea6;\n\n  color: var(--wine);\n  font-size: 10px;\n  letter-spacing: .1em;\n  font-weight: 800;\n}\n\n\/* EXTRA PHOTOS *\/\n\n#aj-door-magic .ajdm-more {\n  background: #fffdf8;\n  border: 1px solid var(--edge);\n  border-radius: 13px;\n}\n\n#aj-door-magic .ajdm-more-grid {\n  display: grid;\n  grid-template-columns: repeat(3,minmax(0,1fr));\n  gap: 11px;\n}\n\n#aj-door-magic .ajdm-more-grid figure {\n  margin: 0;\n  min-width: 0;\n\n  background: #f8f1e8;\n  border-radius: 9px;\n  overflow: hidden;\n}\n\n#aj-door-magic .ajdm-more-grid img {\n  aspect-ratio: 1\/1;\n  object-fit: contain;\n  width: 100%;\n}\n\n#aj-door-magic .ajdm-more-grid figcaption {\n  text-align: center;\n  color: #806c50;\n\n  font-size: 10px;\n  letter-spacing: .08em;\n  font-weight: 800;\n  padding: 11px;\n}\n\n\/* FAQ *\/\n\n#aj-door-magic .ajdm-faq-list {\n  max-width: 840px;\n  margin: auto;\n}\n\n#aj-door-magic .ajdm-faq-list details {\n  border: 1px solid var(--edge);\n  border-radius: 9px;\n\n  background: #fffdfa;\n  margin: 8px 0;\n}\n\n#aj-door-magic .ajdm-faq-list summary {\n  list-style: none;\n  cursor: pointer;\n  position: relative;\n\n  padding: 17px 43px 17px 17px;\n\n  color: var(--pine);\n  font-weight: 800;\n  font-size: 14px;\n  line-height: 1.45;\n}\n\n#aj-door-magic\n.ajdm-faq-list summary::-webkit-details-marker {\n  display: none;\n}\n\n#aj-door-magic .ajdm-faq-list summary:after {\n  content: '+';\n\n  position: absolute;\n  right: 15px;\n  top: 50%;\n  transform: translateY(-50%);\n\n  font-size: 21px;\n  color: var(--wine);\n}\n\n#aj-door-magic\n.ajdm-faq-list details[open] summary:after {\n  content: '−';\n}\n\n#aj-door-magic .ajdm-faq-list details p {\n  font-size: 13px;\n  margin: 0;\n  padding: 0 17px 17px;\n}\n\n\/* FINAL CTA *\/\n\n#aj-door-magic .ajdm-final {\n  text-align: center;\n  padding: 48px 18px 43px;\n  margin-bottom: 5px;\n\n  border-radius: 16px;\n\n  background:\n    radial-gradient(\n      ellipse at 50% 0,\n      rgba(248,219,148,.17),\n      transparent 68%\n    ),\n    linear-gradient(\n      145deg,#1f4734,#153526\n    );\n\n  border: 2px solid #c19a60;\n  color: #fff;\n}\n\n#aj-door-magic .ajdm-final-stars {\n  font-size: 21px;\n  letter-spacing: .22em;\n  color: #f7d99f;\n  margin-bottom: 12px;\n}\n\n#aj-door-magic .ajdm-final .ajdm-eyebrow {\n  color: #e8c98f;\n}\n\n#aj-door-magic .ajdm-final h2 {\n  color: #fff;\n\n  font-size: clamp(31px,5cqw,51px);\n  margin: 0 auto 15px;\n  max-width: 800px;\n}\n\n#aj-door-magic .ajdm-final h2 em {\n  color: #f3c590;\n}\n\n#aj-door-magic .ajdm-final p:not(.ajdm-eyebrow) {\n  color: #f0e6d7;\n  max-width: 610px;\n  margin: 0 auto 19px;\n}\n\n#aj-door-magic .ajdm-final a {\n  display: inline-block;\n  max-width: 100%;\n\n  padding: 15px 24px;\n\n  background: linear-gradient(\n    115deg,#a42d3d,#84212e\n  );\n\n  color: #fff !important;\n  border: 1px solid #e4ad95;\n  border-radius: 35px;\n\n  font-weight: 800;\n  font-size: 13px;\n  letter-spacing: .02em;\n  text-decoration: none !important;\n\n  box-shadow: 0 8px 20px #10291d55;\n}\n\n#aj-door-magic .ajdm-final small {\n  display: block;\n\n  color: #c6d8ca;\n  font-size: 11px;\n  margin-top: 12px;\n}\n\n\/* LIGHT SNOW EFFECT *\/\n\n#aj-door-magic .ajdm-snow {\n  position: absolute;\n  inset: 0;\n  z-index: 3;\n\n  pointer-events: none;\n  opacity: .3;\n\n  background-image:\n    radial-gradient(\n      circle,#fff 1.3px,transparent 2.4px\n    ),\n    radial-gradient(\n      circle,#e0b972 1px,transparent 2px\n    );\n\n  background-size:\n    125px 195px,\n    180px 250px;\n\n  animation: ajdm-fall 35s linear infinite;\n}\n\n@keyframes ajdm-fall {\n  to {\n    background-position:\n      33px 790px,\n      -29px 620px;\n  }\n}\n\n\/* WIDE SCREEN *\/\n\n@container (min-width:770px) {\n  #aj-door-magic .ajdm-hero {\n    grid-template-columns:\n      minmax(0,1.03fr) minmax(0,.97fr);\n\n    gap: 31px;\n    padding: 27px 6px 37px;\n  }\n\n  #aj-door-magic .ajdm-more-grid {\n    grid-template-columns:\n      repeat(4,minmax(0,1fr));\n  }\n}\n\n\/* CONTAINER RESPONSIVENESS *\/\n\n@container (max-width:670px) {\n  #aj-door-magic .ajdm-hero,\n  #aj-door-magic .ajdm-story {\n    grid-template-columns: 1fr;\n  }\n\n  #aj-door-magic .ajdm-icons {\n    grid-template-columns: 1fr;\n  }\n\n  #aj-door-magic .ajdm-icons article {\n    padding: 14px;\n  }\n\n  #aj-door-magic .ajdm-detail-grid {\n    grid-template-columns: 1fr 1fr;\n  }\n\n  #aj-door-magic .ajdm-detail-grid\n  figure:first-child {\n    grid-column: 1\/-1;\n  }\n\n  #aj-door-magic .ajdm-more-grid {\n    grid-template-columns: 1fr 1fr;\n  }\n}\n\n@container (max-width:420px) {\n  #aj-door-magic {\n    padding: 8px;\n  }\n\n  #aj-door-magic .ajdm-intro,\n  #aj-door-magic .ajdm-details,\n  #aj-door-magic .ajdm-more,\n  #aj-door-magic .ajdm-faq {\n    padding: 27px 7px;\n  }\n\n  #aj-door-magic .ajdm-hero h1 {\n    font-size: 32px;\n  }\n\n  #aj-door-magic .ajdm-mini-band {\n    gap: 9px;\n    font-size: 9px;\n  }\n\n  #aj-door-magic .ajdm-detail-grid {\n    gap: 7px;\n  }\n\n  #aj-door-magic .ajdm-detail-grid figcaption {\n    padding: 10px 8px;\n  }\n\n  #aj-door-magic .ajdm-detail-grid strong {\n    font-size: 15px;\n  }\n}\n\n\/* MOBILE FALLBACK *\/\n\n@media (max-width:650px) {\n  #aj-door-magic .ajdm-hero,\n  #aj-door-magic .ajdm-story {\n    grid-template-columns: 1fr;\n  }\n}\n\n@media (prefers-reduced-motion:reduce) {\n  #aj-door-magic .ajdm-snow {\n    animation: none;\n  }\n}\n\u003c\/style\u003e\n\n\u003cscript\u003e\n(function () {\n\n  function init() {\n\n    var root = document.getElementById('aj-door-magic');\n\n    if (!root || root.dataset.ready === '1') return;\n    root.dataset.ready = '1';\n\n    \/*\n      SHOPIFY IMAGE SETUP:\n\n      Paste the REAL Shopify CDN URLs below.\n\n      If this is already the product page and\n      its images exist in Shopify product media,\n      the script will try to read them automatically.\n\n      One image is enough to create:\n      - The full doorway hero image\n      - Three close-up detail views\n\n      Use a clean original photo without\n      unrelated Facebook text where possible.\n    *\/\n\n    var SHOPIFY_CDN_IMAGES = [\n      '',\n      '',\n      '',\n      ''\n    ];\n\n    var main = root.querySelector('#ajdm-main');\n    var empty = root.querySelector('#ajdm-empty');\n    var dots = root.querySelector('#ajdm-dots');\n    var thumbs = root.querySelector('#ajdm-thumbs');\n    var stage = root.querySelector('#ajdm-stage');\n\n    var images = [];\n    var index = 0;\n    var timer = null;\n    var touchStart = 0;\n\n    function absolute(s) {\n      s = String(s || '').replace(\/^\\\/\\\/\/, 'https:');\n\n      if (s.charAt(0) === '\/') {\n        s = location.origin + s;\n      }\n\n      return \/^https?:\\\/\\\/\/i.test(s) ? s : '';\n    }\n\n    function tidy(items) {\n      var seen = {};\n\n      return items.map(function (x) {\n        return typeof x === 'string'\n          ? { src: absolute(x), alt: '' }\n          : {\n              src: absolute(x.src || x.url),\n              alt: x.alt || ''\n            };\n      }).filter(function (x) {\n        var key = x.src\n          .split('?')[0]\n          .replace(\/_\\d+x\\d+(?=\\.)\/, '');\n\n        if (\n          !x.src ||\n          seen[key] ||\n          !\/\\\/cdn\\\/shop\\\/|cdn\\.shopify\\.com|\\\/s\\\/files\\\/\/i\n            .test(x.src)\n        ) {\n          return false;\n        }\n\n        if (\n          \/logo|favicon|icon-|payment|trust-badge\/i\n            .test(key)\n        ) {\n          return false;\n        }\n\n        seen[key] = true;\n        return true;\n      });\n    }\n\n    function fromTheme() {\n      var source = [];\n\n      document.querySelectorAll(\n        'media-gallery img,' +\n        'product-gallery img,' +\n        '.product__media img,' +\n        '.product-media-gallery img,' +\n        '[id*=\"MediaGallery\"] img'\n      ).forEach(function (el) {\n        if (root.contains(el)) return;\n\n        source.push({\n          src: el.currentSrc || el.src,\n          alt: el.alt || ''\n        });\n      });\n\n      var meta = document.querySelector(\n        'meta[property=\"og:image\"]'\n      );\n\n      if (meta \u0026\u0026 meta.content) {\n        source.unshift({\n          src: meta.content,\n          alt: 'Christmas doorway product photograph'\n        });\n      }\n\n      return tidy(source);\n    }\n\n    function render() {\n      dots.textContent = '';\n\n      if (!images.length) {\n        main.hidden = true;\n        empty.hidden = false;\n\n        root.querySelector('.ajdm-prev').hidden = true;\n        root.querySelector('.ajdm-next').hidden = true;\n\n        return;\n      }\n\n      var v = images[index];\n\n      main.alt =\n        v.alt ||\n        'Snowman and elf Christmas doorway photo ' +\n          (index + 1);\n\n      if (main.getAttribute('src') !== v.src) {\n        main.src = v.src;\n      }\n\n      main.hidden = false;\n      empty.hidden = true;\n\n      root.querySelector('.ajdm-prev').hidden =\n        root.querySelector('.ajdm-next').hidden =\n          images.length \u003c 2;\n\n      images.slice(0, 12).forEach(function (_, i) {\n        var b = document.createElement('i');\n\n        if (i === index) {\n          b.className = 'active';\n        }\n\n        dots.appendChild(b);\n      });\n\n      Array.from(thumbs.children).forEach(\n        function (b, i) {\n          b.classList.toggle(\n            'selected',\n            i === index\n          );\n        }\n      );\n    }\n\n    function rotate(n) {\n      if (images.length \u003c 2) return;\n\n      index = (\n        index + n + images.length\n      ) % images.length;\n\n      render();\n    }\n\n    function stop() {\n      if (timer) clearInterval(timer);\n      timer = null;\n    }\n\n    function play() {\n      stop();\n\n      if (\n        images.length \u003c 2 ||\n        (\n          window.matchMedia \u0026\u0026\n          window.matchMedia(\n            '(prefers-reduced-motion:reduce)'\n          ).matches\n        )\n      ) {\n        return;\n      }\n\n      timer = setInterval(function () {\n        rotate(1);\n      }, 4300);\n    }\n\n    function addImage(\n      container,\n      src,\n      alt,\n      caption,\n      zoom,\n      pos\n    ) {\n      var fig = document.createElement('figure');\n\n      if (zoom) {\n        fig.className = 'zoom';\n      }\n\n      var img = document.createElement('img');\n\n      img.src = src;\n      img.alt = alt;\n      img.loading = 'lazy';\n\n      if (pos) {\n        img.style.objectPosition = pos;\n      }\n\n      img.onerror = function () {\n        fig.remove();\n      };\n\n      var cap = document.createElement('figcaption');\n\n      var title = document.createElement('strong');\n      title.textContent = caption[0];\n\n      var subtitle = document.createElement('span');\n      subtitle.textContent = caption[1];\n\n      cap.appendChild(title);\n      cap.appendChild(subtitle);\n\n      fig.appendChild(img);\n      fig.appendChild(cap);\n\n      container.appendChild(fig);\n    }\n\n    function populate(list) {\n      images = tidy(list);\n\n      if (!images.length) {\n        render();\n        return;\n      }\n\n      index = 0;\n      thumbs.textContent = '';\n\n      images.slice(0, 6).forEach(function (v, i) {\n        var b = document.createElement('button');\n\n        b.type = 'button';\n        b.className = 'ajdm-thumb';\n\n        b.setAttribute(\n          'aria-label',\n          'View photo ' + (i + 1)\n        );\n\n        var im = document.createElement('img');\n\n        im.src = v.src;\n        im.alt = 'Photo ' + (i + 1);\n        im.loading = 'lazy';\n\n        b.appendChild(im);\n\n        b.addEventListener('click', function () {\n          index = i;\n          render();\n          play();\n        });\n\n        thumbs.appendChild(b);\n      });\n\n      \/* PRODUCT DETAILS *\/\n\n      var detail = root.querySelector('#ajdm-details');\n      var grid = root.querySelector('#ajdm-detail-grid');\n\n      grid.textContent = '';\n\n      var captions = [\n        [\n          'Snowman \u0026 Elf Friends',\n          'Look at the cheerful characters and their festive expressions.'\n        ],\n        [\n          'Beautiful Ribbon Details',\n          'Warm plaid, bright bows and seasonal ornament accents.'\n        ],\n        [\n          'A Full Holiday Welcome',\n          'Greenery and playful touches tie the entrance together.'\n        ]\n      ];\n\n      if (images.length === 1) {\n\n        \/*\n          If only one real product photograph exists,\n          make clearly identifiable close-ups of\n          that same photo.\n\n          The main photograph remains fully visible.\n        *\/\n\n        var positions = [\n          '50% 0%',\n          '50% 48%',\n          '50% 100%'\n        ];\n\n        for (var i = 0; i \u003c 3; i++) {\n          addImage(\n            grid,\n            images[0].src,\n            'Detail close-up from original doorway photo',\n            captions[i],\n            true,\n            positions[i]\n          );\n        }\n\n      } else {\n\n        for (\n          var j = 0;\n          j \u003c Math.min(3, images.length - 1);\n          j++\n        ) {\n          addImage(\n            grid,\n            images[j + 1].src,\n            images[j + 1].alt ||\n              'Original product detail photograph',\n            captions[j],\n            false,\n            ''\n          );\n        }\n      }\n\n      detail.hidden = !grid.children.length;\n\n      \/* OPTIONAL EXTRA SCENE *\/\n\n      var story = root.querySelector('#ajdm-story');\n\n      if (images.length \u003e 4) {\n        var storyImage = root.querySelector(\n          '#ajdm-story-photo'\n        );\n\n        storyImage.onload = function () {\n          story.hidden = false;\n        };\n\n        storyImage.onerror = function () {\n          story.hidden = true;\n        };\n\n        storyImage.src = images[4].src;\n\n      } else {\n        story.hidden = true;\n      }\n\n      \/* EXTRA PRODUCT GALLERY *\/\n\n      var more = root.querySelector('#ajdm-more');\n      var extras = root.querySelector('#ajdm-more-grid');\n\n      extras.textContent = '';\n\n      if (images.length \u003e 5) {\n        images.slice(5, 10).forEach(function (v, i) {\n          var f = document.createElement('figure');\n          var im = document.createElement('img');\n          var cap = document.createElement('figcaption');\n\n          im.src = v.src;\n\n          im.alt =\n            v.alt ||\n            'Original Christmas doorway photo ' +\n              (i + 6);\n\n          im.loading = 'lazy';\n\n          im.onerror = function () {\n            f.remove();\n\n            if (!extras.children.length) {\n              more.hidden = true;\n            }\n          };\n\n          cap.textContent =\n            'PRODUCT PHOTO ' +\n            String(i + 6).padStart(2, '0');\n\n          f.appendChild(im);\n          f.appendChild(cap);\n          extras.appendChild(f);\n        });\n      }\n\n      more.hidden = !extras.children.length;\n\n      render();\n      play();\n    }\n\n    \/* CONTROLS *\/\n\n    root.querySelector('.ajdm-prev')\n      .addEventListener('click', function () {\n        rotate(-1);\n        play();\n      });\n\n    root.querySelector('.ajdm-next')\n      .addEventListener('click', function () {\n        rotate(1);\n        play();\n      });\n\n    stage.addEventListener('mouseenter', stop);\n    stage.addEventListener('mouseleave', play);\n\n    stage.addEventListener(\n      'touchstart',\n      function (e) {\n        touchStart = e.changedTouches[0].screenX;\n      },\n      { passive: true }\n    );\n\n    stage.addEventListener(\n      'touchend',\n      function (e) {\n        var dx =\n          e.changedTouches[0].screenX - touchStart;\n\n        if (Math.abs(dx) \u003e 35) {\n          rotate(dx \u003c 0 ? 1 : -1);\n          play();\n        }\n      },\n      { passive: true }\n    );\n\n    main.addEventListener('error', function () {\n      if (images.length) {\n        images.splice(index, 1);\n        index = 0;\n        render();\n        play();\n      }\n    });\n\n    \/* ONLY BOTTOM BUTTON *\/\n\n    root.querySelector('#ajdm-up')\n      .addEventListener('click', function (e) {\n        e.preventDefault();\n\n        window.scrollTo({\n          top: 0,\n          behavior: 'smooth'\n        });\n      });\n\n    \/* IMAGE SOURCE PRIORITY *\/\n\n    var custom = tidy(\n      SHOPIFY_CDN_IMAGES.filter(Boolean)\n    );\n\n    if (custom.length) {\n      populate(custom);\n    } else {\n      var theme = fromTheme();\n\n      if (theme.length) {\n        populate(theme);\n      }\n    }\n\n    \/* FETCH THE CURRENT SHOPIFY PRODUCT IMAGES *\/\n\n    var path = (\n      window.location.pathname.match(\n        \/\\\/products\\\/([^\/?]+)\/\n      ) || []\n    )[1];\n\n    if (path) {\n      var base = (\n        window.Shopify \u0026\u0026\n        window.Shopify.routes \u0026\u0026\n        window.Shopify.routes.root\n      ) || '\/';\n\n      if (base.slice(-1) !== '\/') {\n        base += '\/';\n      }\n\n      fetch(\n        base +\n        'products\/' +\n        encodeURIComponent(path) +\n        '.js',\n        { credentials: 'same-origin' }\n      )\n      .then(function (r) {\n        if (!r.ok) {\n          throw Error('Product unavailable');\n        }\n\n        return r.json();\n      })\n      .then(function (p) {\n        if (custom.length) return;\n\n        var found = [];\n\n        (p.images || []).forEach(function (x) {\n          found.push(\n            typeof x === 'string'\n              ? { src: x, alt: '' }\n              : {\n                  src: x.src,\n                  alt: x.alt || ''\n                }\n          );\n        });\n\n        if (!found.length) {\n          (p.media || []).forEach(function (x) {\n            if (\n              !x.media_type ||\n              x.media_type === 'image'\n            ) {\n              found.push({\n                src:\n                  x.src ||\n                  (\n                    x.preview_image \u0026\u0026\n                    x.preview_image.src\n                  ),\n                alt: x.alt || ''\n              });\n            }\n          });\n        }\n\n        var actual = tidy(found);\n\n        if (actual.length) {\n          populate(actual);\n        }\n      })\n      .catch(function () {\n        if (!images.length) {\n          var alt = fromTheme();\n\n          if (alt.length) {\n            populate(alt);\n          }\n        }\n      });\n    }\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener(\n      'DOMContentLoaded',\n      init\n    );\n  } else {\n    init();\n  }\n\n})();\n\u003c\/script\u003e\n","brand":"alasjoy","offers":[{"title":"Default Title","offer_id":68138688217325,"sku":null,"price":0.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0841\/9354\/2381\/files\/854780683_2108306070057716_4884492352343881904_n.jpg?v=1793588178","url":"https:\/\/alasjoy.com\/products\/dsad","provider":"alasjoy","version":"1.0","type":"link"}