{"product_id":"snowman-birdhouse-ladder-glow™-lighted-christmas-porch-yard-decor","title":"☃️ Snowman Birdhouse Ladder Glow™ – Lighted Christmas Porch \u0026 Yard Decor","description":"\n\u003cstyle\u003e\n\/* =========================================\n   ALASJOY SNOWMAN PORCH STORY\n   Complete Custom Liquid Landing Page\n   Pure HTML \/ CSS \/ JavaScript\n   No Liquid tags or variables\n========================================= *\/\n\n#aj-snowman-porch {\n  --snow:#fbfaf6;\n  --cream:#f7f1e7;\n  --white:#fffefa;\n  --wood:#a17c5d;\n  --wood-dark:#634d3d;\n  --gold:#d5aa70;\n  --red:#a74e46;\n  --blue:#485e70;\n  --night:#26394c;\n  --ink:#403a34;\n  --muted:#746d65;\n  --line:#e8dfd2;\n\n  position:relative;\n  display:block;\n  isolation:isolate;\n  container-type:inline-size;\n  width:100%;\n  max-width:1200px;\n  margin:18px auto;\n  overflow:hidden;\n  border-radius:16px;\n  background:var(--snow);\n  color:var(--ink);\n  font:15px\/1.7 Arial,Helvetica,sans-serif;\n}\n\n#aj-snowman-porch,\n#aj-snowman-porch *,\n#aj-snowman-porch *::before,\n#aj-snowman-porch *::after {\n  box-sizing:border-box;\n}\n\n#aj-snowman-porch h2,\n#aj-snowman-porch h3,\n#aj-snowman-porch p {\n  margin:0;\n  padding:0;\n  letter-spacing:normal;\n  text-transform:none;\n  overflow-wrap:break-word;\n}\n\n#aj-snowman-porch h2 {\n  color:var(--ink);\n  font:700 clamp(27px,3.7vw,42px)\/1.2 Georgia,serif;\n}\n\n#aj-snowman-porch h3 {\n  color:var(--wood-dark);\n  font:700 20px\/1.35 Georgia,serif;\n}\n\n#aj-snowman-porch p {\n  color:var(--muted);\n  font-size:14px;\n  line-height:1.78;\n}\n\n#aj-snowman-porch img {\n  display:block;\n  max-width:100%;\n  border:0;\n  box-shadow:none;\n}\n\n#aj-snowman-porch .sp-section {\n  padding:40px 20px;\n}\n\n#aj-snowman-porch .sp-center {\n  text-align:center;\n}\n\n#aj-snowman-porch .sp-intro {\n  max-width:670px;\n  margin:13px auto 0;\n}\n\n#aj-snowman-porch .sp-kicker {\n  display:block;\n  margin-bottom:11px;\n  color:#a57846;\n  font-size:11px;\n  line-height:1.5;\n  font-weight:800;\n  letter-spacing:1.6px;\n  text-transform:uppercase;\n}\n\n\/* =========================================\n   DECORATIVE EFFECTS\n========================================= *\/\n\n#aj-snowman-porch .sp-flourish {\n  display:flex;\n  justify-content:center;\n  align-items:center;\n  gap:13px;\n  margin:18px auto;\n  color:#d8b179;\n  font-size:20px;\n}\n\n#aj-snowman-porch .sp-flourish::before,\n#aj-snowman-porch .sp-flourish::after {\n  content:\"\";\n  width:65px;\n  height:1px;\n  background:#d8b179;\n}\n\n\/* Snow is limited to the winter-night panels. *\/\n\n#aj-snowman-porch .sp-snow {\n  position:relative;\n  isolation:isolate;\n  overflow:hidden;\n}\n\n#aj-snowman-porch .sp-snow::before,\n#aj-snowman-porch .sp-snow::after {\n  content:\"\";\n  position:absolute;\n  inset:0;\n  z-index:0;\n  pointer-events:none;\n\n  background-image:\n    radial-gradient(\n      circle,\n      rgba(255,255,255,.85) 1.15px,\n      transparent 2px\n    ),\n    radial-gradient(\n      circle,\n      rgba(255,239,214,.6) 1px,\n      transparent 2px\n    );\n\n  background-size:137px 177px,193px 241px;\n  opacity:.42;\n  animation:spSnow 27s linear infinite;\n}\n\n#aj-snowman-porch .sp-snow::after {\n  background-size:191px 227px,147px 189px;\n  animation-duration:39s;\n  animation-delay:-11s;\n  opacity:.2;\n}\n\n#aj-snowman-porch .sp-snow \u003e * {\n  position:relative;\n  z-index:1;\n}\n\n@keyframes spSnow {\n  from {\n    background-position:0 -180px,32px -230px;\n  }\n  to {\n    background-position:24px 440px,-20px 500px;\n  }\n}\n\n\/* Warm glow behind surrounding panel,\n   never over the actual product image. *\/\n\n#aj-snowman-porch .sp-soft-glow {\n  position:relative;\n  isolation:isolate;\n}\n\n#aj-snowman-porch .sp-soft-glow::before {\n  content:\"\";\n  position:absolute;\n  inset:7%;\n  z-index:0;\n  border-radius:50%;\n  pointer-events:none;\n  background:radial-gradient(\n    ellipse,\n    rgba(236,190,118,.32),\n    transparent 72%\n  );\n  filter:blur(22px);\n  animation:spGlow 6s ease-in-out infinite;\n}\n\n#aj-snowman-porch .sp-soft-glow \u003e * {\n  position:relative;\n  z-index:1;\n}\n\n@keyframes spGlow {\n  0%,100% {opacity:.4;}\n  50% {opacity:.95;}\n}\n\n\/* =========================================\n   HERO\n========================================= *\/\n\n#aj-snowman-porch .sp-hero {\n  display:grid;\n  grid-template-columns:minmax(0,1fr);\n  align-items:center;\n  gap:27px;\n  padding:22px 17px 36px;\n\n  background:\n    radial-gradient(\n      ellipse at 95% 0%,\n      rgba(229,208,174,.32),\n      transparent 58%\n    ),\n    radial-gradient(\n      ellipse at 0% 100%,\n      rgba(222,230,231,.45),\n      transparent 57%\n    ),\n    #faf8f2;\n}\n\n\/* Product gallery: hidden until real\n   image addresses load successfully. *\/\n\n#aj-snowman-porch .sp-gallery {\n  display:none;\n  min-width:0;\n}\n\n#aj-snowman-porch .sp-gallery.ready {\n  display:block;\n}\n\n#aj-snowman-porch .sp-gallery-frame {\n  position:relative;\n  width:100%;\n  aspect-ratio:1\/1;\n  overflow:hidden;\n  border:2px solid #dfccb0;\n  border-radius:13px;\n  background:#f0e8db;\n  box-shadow:0 12px 29px #4834271b;\n}\n\n#aj-snowman-porch .sp-track {\n  display:flex;\n  width:100%;\n  height:100%;\n  overflow-x:auto;\n  overflow-y:hidden;\n  scroll-snap-type:x mandatory;\n  scroll-behavior:smooth;\n  scrollbar-width:none;\n  -webkit-overflow-scrolling:touch;\n}\n\n#aj-snowman-porch .sp-track::-webkit-scrollbar {\n  display:none;\n}\n\n#aj-snowman-porch .sp-slide {\n  display:flex;\n  flex:0 0 100%;\n  width:100%;\n  height:100%;\n  align-items:center;\n  justify-content:center;\n  scroll-snap-align:start;\n  scroll-snap-stop:always;\n}\n\n#aj-snowman-porch .sp-slide img {\n  width:100%;\n  height:100%;\n  object-fit:contain;\n  object-position:center;\n}\n\n#aj-snowman-porch .sp-arrow {\n  position:absolute;\n  top:50%;\n  z-index:5;\n  transform:translateY(-50%);\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  width:37px;\n  height:37px;\n  padding:0;\n  border:0;\n  border-radius:50%;\n  background:rgba(255,255,255,.95);\n  color:#654c3b;\n  font-size:25px;\n  cursor:pointer;\n  box-shadow:0 3px 10px #0002;\n}\n\n#aj-snowman-porch .sp-arrow[hidden] {\n  display:none;\n}\n\n#aj-snowman-porch .sp-prev {left:9px;}\n#aj-snowman-porch .sp-next {right:9px;}\n\n#aj-snowman-porch .sp-thumbs {\n  display:flex;\n  gap:8px;\n  margin-top:11px;\n  padding-bottom:5px;\n  overflow-x:auto;\n  scrollbar-width:thin;\n}\n\n#aj-snowman-porch .sp-thumb {\n  flex:0 0 60px;\n  width:60px;\n  height:60px;\n  padding:0;\n  border:2px solid transparent;\n  border-radius:8px;\n  background:#eee7de;\n  overflow:hidden;\n  cursor:pointer;\n}\n\n#aj-snowman-porch .sp-thumb.active {\n  border-color:#ad764e;\n}\n\n#aj-snowman-porch .sp-thumb img {\n  width:100%;\n  height:100%;\n  object-fit:contain;\n}\n\n#aj-snowman-porch .sp-gallery-note {\n  margin-top:8px;\n  text-align:center;\n  font-size:12px;\n}\n\n\/* Hero text *\/\n\n#aj-snowman-porch .sp-hero-copy {\n  min-width:0;\n}\n\n#aj-snowman-porch .sp-hero-copy h2 {\n  font-size:clamp(30px,3.7vw,44px);\n}\n\n#aj-snowman-porch .sp-lead {\n  margin-top:16px;\n  font-size:15px;\n}\n\n#aj-snowman-porch .sp-benefits {\n  display:grid;\n  gap:14px;\n  margin-top:23px;\n}\n\n#aj-snowman-porch .sp-benefit {\n  display:flex;\n  align-items:flex-start;\n  gap:11px;\n}\n\n#aj-snowman-porch .sp-benefit-icon {\n  flex:0 0 28px;\n  font-size:23px;\n}\n\n#aj-snowman-porch .sp-benefit strong {\n  display:block;\n  color:var(--wood-dark);\n  font-size:15px;\n}\n\n#aj-snowman-porch .sp-benefit p {\n  font-size:13px;\n}\n\n\/* =========================================\n   SHORT HOLIDAY RIBBON\n========================================= *\/\n\n#aj-snowman-porch .sp-ribbon {\n  padding:18px 16px;\n  background:linear-gradient(\n    90deg,#f0e5d5,#fff9ed,#ecdfcf\n  );\n  border-top:1px solid #e2d2b8;\n  border-bottom:1px solid #e2d2b8;\n  color:#8b6543;\n  text-align:center;\n  font:italic 19px\/1.45 Georgia,serif;\n}\n\n\/* =========================================\n   NIGHT PORCH STORY\n========================================= *\/\n\n#aj-snowman-porch .sp-night {\n  padding:52px 21px;\n  text-align:center;\n  background:\n    radial-gradient(\n      ellipse at 50% 99%,\n      rgba(234,179,103,.3),\n      transparent 64%\n    ),\n    linear-gradient(\n      180deg,#53697a,#344b5c,#27394b\n    );\n}\n\n#aj-snowman-porch .sp-night-inner {\n  max-width:760px;\n  margin:auto;\n}\n\n#aj-snowman-porch .sp-night .sp-kicker {\n  color:#f3d5a8;\n}\n\n#aj-snowman-porch .sp-night h2 {\n  color:#fff8ea;\n}\n\n#aj-snowman-porch .sp-night p {\n  max-width:640px;\n  margin:17px auto 0;\n  color:#f0f2f0;\n  font-size:15px;\n}\n\n#aj-snowman-porch .sp-night-quote {\n  display:block;\n  margin-top:23px;\n  color:#f2d7a9;\n  font:italic clamp(19px,2.8vw,26px)\/1.5 Georgia,serif;\n}\n\n\/* =========================================\n   STATIC PHOTO STORY\n========================================= *\/\n\n#aj-snowman-porch .sp-story {\n  display:grid;\n  grid-template-columns:minmax(0,1fr);\n  align-items:center;\n  background:var(--white);\n}\n\n#aj-snowman-porch .sp-story-photo {\n  display:none;\n  min-width:0;\n  padding:14px;\n  background:#f0eae1;\n}\n\n#aj-snowman-porch .sp-story.has-photo .sp-story-photo {\n  display:block;\n}\n\n#aj-snowman-porch .sp-story-photo img {\n  width:100%;\n  height:auto;\n  aspect-ratio:1\/1;\n  object-fit:contain;\n  border-radius:9px;\n  background:#f3ece2;\n}\n\n#aj-snowman-porch .sp-story-copy {\n  min-width:0;\n  padding:30px 23px;\n}\n\n#aj-snowman-porch .sp-story-copy p {\n  margin-top:15px;\n}\n\n#aj-snowman-porch .sp-quote {\n  margin-top:20px;\n  padding:16px 18px;\n  border-left:3px solid var(--gold);\n  background:#f9f3e9;\n  color:#9b7550;\n  font:italic 18px\/1.5 Georgia,serif;\n}\n\n\/* =========================================\n   FEATURE CARDS\n========================================= *\/\n\n#aj-snowman-porch .sp-cards {\n  display:grid;\n  grid-template-columns:1fr;\n  gap:13px;\n  margin-top:26px;\n}\n\n#aj-snowman-porch .sp-card {\n  padding:23px 20px;\n  border:1px solid var(--line);\n  border-top:3px solid var(--gold);\n  border-radius:11px;\n  background:#fff;\n}\n\n#aj-snowman-porch .sp-card-icon {\n  display:block;\n  margin-bottom:11px;\n  font-size:27px;\n}\n\n#aj-snowman-porch .sp-card p {\n  margin-top:9px;\n  font-size:13px;\n}\n\n\/* =========================================\n   MULTI-IMAGE GRID\n========================================= *\/\n\n#aj-snowman-porch .sp-photos {\n  display:none;\n  background:#ede8df;\n}\n\n#aj-snowman-porch .sp-photos.ready {\n  display:block;\n}\n\n#aj-snowman-porch .sp-photo-grid {\n  display:grid;\n  grid-template-columns:repeat(2,minmax(0,1fr));\n  gap:10px;\n  margin-top:26px;\n}\n\n#aj-snowman-porch .sp-photo-card {\n  display:none;\n  min-width:0;\n  padding:7px;\n  border:1px solid #ded3c5;\n  border-radius:11px;\n  background:#fffdf9;\n  overflow:hidden;\n}\n\n#aj-snowman-porch .sp-photo-card.ready {\n  display:block;\n}\n\n#aj-snowman-porch .sp-photo-card img {\n  width:100%;\n  height:auto;\n  aspect-ratio:1\/1;\n  object-fit:contain;\n  border-radius:7px;\n  background:#f7f2ea;\n}\n\n#aj-snowman-porch .sp-photo-card span {\n  display:block;\n  padding:10px 4px 5px;\n  color:#745943;\n  font-size:12px;\n  font-weight:700;\n  text-align:center;\n}\n\n\/* =========================================\n   DETAIL POINTS\n========================================= *\/\n\n#aj-snowman-porch .sp-details {\n  background:\n    radial-gradient(\n      ellipse at 100% 0%,\n      rgba(225,231,232,.4),\n      transparent 60%\n    ),\n    #faf7f0;\n}\n\n#aj-snowman-porch .sp-detail-grid {\n  display:grid;\n  grid-template-columns:1fr;\n  gap:12px;\n  margin-top:25px;\n}\n\n#aj-snowman-porch .sp-detail-item {\n  display:flex;\n  align-items:flex-start;\n  gap:13px;\n  padding:18px;\n  border:1px solid #e4d9ca;\n  border-radius:11px;\n  background:white;\n}\n\n#aj-snowman-porch .sp-detail-number {\n  display:flex;\n  flex:0 0 34px;\n  width:34px;\n  height:34px;\n  align-items:center;\n  justify-content:center;\n  border-radius:50%;\n  background:#f2e4cf;\n  color:#91673c;\n  font:700 16px\/1 Georgia,serif;\n}\n\n#aj-snowman-porch .sp-detail-item p {\n  margin-top:7px;\n  font-size:13px;\n}\n\n\/* =========================================\n   PLACEMENT\n========================================= *\/\n\n#aj-snowman-porch .sp-places {\n  background:#fffdf9;\n}\n\n#aj-snowman-porch .sp-place-grid {\n  display:grid;\n  grid-template-columns:1fr;\n  gap:13px;\n  margin-top:25px;\n}\n\n#aj-snowman-porch .sp-place {\n  padding:21px;\n  border:1px solid var(--line);\n  border-radius:11px;\n  background:#f9f4eb;\n}\n\n#aj-snowman-porch .sp-place span {\n  display:block;\n  margin-bottom:10px;\n  font-size:27px;\n}\n\n#aj-snowman-porch .sp-place p {\n  margin-top:8px;\n  font-size:13px;\n}\n\n\/* =========================================\n   GIFT\n========================================= *\/\n\n#aj-snowman-porch .sp-gift {\n  padding:48px 22px;\n  text-align:center;\n  background:\n    radial-gradient(\n      ellipse at 50% 0%,\n      rgba(243,217,180,.85),\n      transparent 66%\n    ),\n    #f9f2e7;\n}\n\n#aj-snowman-porch .sp-gift p {\n  max-width:660px;\n  margin:17px auto 0;\n}\n\n#aj-snowman-porch .sp-gift-quote {\n  display:block;\n  margin-top:20px;\n  color:#9a7148;\n  font:italic 21px\/1.5 Georgia,serif;\n}\n\n\/* =========================================\n   FAQ\n========================================= *\/\n\n#aj-snowman-porch .sp-faq-section {\n  background:white;\n}\n\n#aj-snowman-porch .sp-faq {\n  max-width:760px;\n  margin:24px auto 0;\n}\n\n#aj-snowman-porch .sp-faq details {\n  border-bottom:1px solid var(--line);\n}\n\n#aj-snowman-porch .sp-faq summary {\n  display:list-item;\n  padding:17px 4px;\n  color:#4c443e;\n  font-size:15px;\n  font-weight:700;\n  cursor:pointer;\n}\n\n#aj-snowman-porch .sp-faq details p {\n  padding:0 4px 17px;\n  font-size:13px;\n}\n\n\/* =========================================\n   FINAL CTA — ONLY ONE\n========================================= *\/\n\n#aj-snowman-porch .sp-final {\n  padding:52px 21px;\n  text-align:center;\n  background:\n    radial-gradient(\n      ellipse at 50% 99%,\n      rgba(236,185,113,.25),\n      transparent 66%\n    ),\n    linear-gradient(150deg,#506576,#263b4b);\n}\n\n#aj-snowman-porch .sp-final h2 {\n  color:#fff9ed;\n}\n\n#aj-snowman-porch .sp-final .sp-kicker {\n  color:#f2d6a5;\n}\n\n#aj-snowman-porch .sp-final p {\n  max-width:630px;\n  margin:16px auto 0;\n  color:#e8eeed;\n}\n\n#aj-snowman-porch .sp-button {\n  display:inline-block;\n  width:100%;\n  max-width:355px;\n  margin-top:25px;\n  padding:16px 23px;\n  border:1px solid #f5dfb7;\n  border-radius:9px;\n  background:linear-gradient(\n    120deg,#e8c48e,#fff0d0,#d3a46c\n  );\n  color:#3c4750;\n  font:800 15px\/1.5 Arial,sans-serif;\n  text-decoration:none;\n  text-align:center;\n  box-shadow:0 8px 20px #0002;\n}\n\n#aj-snowman-porch .sp-button:hover {\n  background:#fff6e5;\n  color:#3c4750;\n}\n\n#aj-snowman-porch .sp-final-note {\n  margin-top:11px;\n  font-size:12px;\n}\n\n\/* =========================================\n   RESPONSIVE\n========================================= *\/\n\n@container (min-width:790px) {\n\n  #aj-snowman-porch .sp-hero.has-gallery {\n    grid-template-columns:minmax(0,1fr) minmax(0,1fr);\n    gap:37px;\n    padding:37px;\n  }\n\n  #aj-snowman-porch .sp-hero {\n    padding:39px;\n  }\n\n  #aj-snowman-porch .sp-story.has-photo {\n    grid-template-columns:minmax(0,1fr) minmax(0,1fr);\n  }\n\n  #aj-snowman-porch .sp-story-copy {\n    padding:40px;\n  }\n\n  #aj-snowman-porch .sp-section {\n    padding:48px 39px;\n  }\n\n  #aj-snowman-porch .sp-cards,\n  #aj-snowman-porch .sp-place-grid {\n    grid-template-columns:repeat(3,minmax(0,1fr));\n  }\n\n  #aj-snowman-porch .sp-detail-grid {\n    grid-template-columns:repeat(2,minmax(0,1fr));\n  }\n\n  #aj-snowman-porch .sp-photo-grid {\n    grid-template-columns:repeat(3,minmax(0,1fr));\n  }\n}\n\n@container (max-width:460px) {\n\n  #aj-snowman-porch .sp-hero {\n    padding:16px 14px 30px;\n  }\n\n  #aj-snowman-porch .sp-section {\n    padding:34px 16px;\n  }\n\n  #aj-snowman-porch .sp-thumb {\n    flex-basis:54px;\n    width:54px;\n    height:54px;\n  }\n\n  #aj-snowman-porch .sp-night {\n    padding:43px 16px;\n  }\n\n  #aj-snowman-porch .sp-photo-grid {\n    gap:7px;\n  }\n\n  #aj-snowman-porch .sp-photo-card {\n    padding:4px;\n  }\n}\n\n@media (prefers-reduced-motion:reduce) {\n\n  #aj-snowman-porch *,\n  #aj-snowman-porch *::before,\n  #aj-snowman-porch *::after {\n    animation:none!important;\n    transition:none!important;\n  }\n\n  #aj-snowman-porch .sp-track {\n    scroll-behavior:auto;\n  }\n}\n\u003c\/style\u003e\n\n\u003cdiv id=\"aj-snowman-porch\"\u003e\n\n  \u003c!-- =====================================\n       HERO\n  ===================================== --\u003e\n\n  \u003csection class=\"sp-hero\" data-sp-hero\u003e\n\n    \u003c!-- LEFT AUTO GALLERY --\u003e\n\n    \u003cdiv class=\"sp-gallery\" data-sp-gallery\u003e\n\n      \u003cdiv class=\"sp-gallery-frame\"\u003e\n\n        \u003cdiv class=\"sp-track\" data-sp-track\u003e\u003c\/div\u003e\n\n        \u003cbutton type=\"button\" class=\"sp-arrow sp-prev\" data-sp-prev aria-label=\"Previous product photo\" hidden\u003e‹\u003c\/button\u003e\n\n        \u003cbutton type=\"button\" class=\"sp-arrow sp-next\" data-sp-next aria-label=\"Next product photo\" hidden\u003e›\u003c\/button\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sp-thumbs\" data-sp-thumbs\u003e\u003c\/div\u003e\n\n      \u003cp class=\"sp-gallery-note\"\u003e\n        Swipe to explore the festive details.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003c!-- HERO COPY --\u003e\n\n    \u003cdiv class=\"sp-hero-copy\"\u003e\n\n      \u003cspan class=\"sp-kicker\"\u003e\n        A LITTLE WINTER WELCOME\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        A Little Snowman.\n        A Warmer Christmas Welcome.\n      \u003c\/h2\u003e\n\n      \u003cp class=\"sp-lead\"\u003e\n        Imagine coming home\n        on a chilly December evening.\n      \u003c\/p\u003e\n\n      \u003cp class=\"sp-lead\"\u003e\n        The porch lights are glowing,\n        the house feels welcoming,\n        and a cheerful little\n        snowman adds a touch\n        of winter magic.\n      \u003c\/p\u003e\n\n      \u003cp class=\"sp-lead\"\u003e\n        With its charming birdhouse\n        and playful ladder details,\n        this lighted scene brings\n        a sweet holiday story\n        to your favorite outdoor space.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"sp-benefits\"\u003e\n\n        \u003cdiv class=\"sp-benefit\"\u003e\n\n          \u003cspan class=\"sp-benefit-icon\"\u003e☃️\u003c\/span\u003e\n\n          \u003cdiv\u003e\n            \u003cstrong\u003eA Cheerful Winter Character\u003c\/strong\u003e\n            \u003cp\u003e\n              A friendly little snowman\n              adds personality\n              to your Christmas display.\n            \u003c\/p\u003e\n          \u003c\/div\u003e\n\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"sp-benefit\"\u003e\n\n          \u003cspan class=\"sp-benefit-icon\"\u003e🏠\u003c\/span\u003e\n\n          \u003cdiv\u003e\n            \u003cstrong\u003eCharming Birdhouse Details\u003c\/strong\u003e\n            \u003cp\u003e\n              A whimsical woodland-inspired\n              accent that makes\n              the scene feel special.\n            \u003c\/p\u003e\n          \u003c\/div\u003e\n\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"sp-benefit\"\u003e\n\n          \u003cspan class=\"sp-benefit-icon\"\u003e✨\u003c\/span\u003e\n\n          \u003cdiv\u003e\n            \u003cstrong\u003eA Festive Lighted Look\u003c\/strong\u003e\n            \u003cp\u003e\n              Enjoy a welcoming\n              holiday glow\n              during winter evenings.\n            \u003c\/p\u003e\n          \u003c\/div\u003e\n\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"sp-benefit\"\u003e\n\n          \u003cspan class=\"sp-benefit-icon\"\u003e🎄\u003c\/span\u003e\n\n          \u003cdiv\u003e\n            \u003cstrong\u003eMade for Holiday Decorating\u003c\/strong\u003e\n            \u003cp\u003e\n              Bring extra Christmas\n              charm to a porch\n              or festive yard arrangement.\n            \u003c\/p\u003e\n          \u003c\/div\u003e\n\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- SHORT WINTER RIBBON --\u003e\n\n  \u003cdiv class=\"sp-ribbon\"\u003e\n    ❄️ A Little Snow. A Little Glow.\n    A Whole Lot of Christmas Joy.\n  \u003c\/div\u003e\n\n  \u003c!-- =====================================\n       EVENING STORY\n  ===================================== --\u003e\n\n  \u003csection class=\"sp-night sp-snow\"\u003e\n\n    \u003cdiv class=\"sp-night-inner\"\u003e\n\n      \u003cspan class=\"sp-kicker\"\u003e\n        A COZY CHRISTMAS WELCOME\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        The Sweetest Part of Winter\n        Is Coming Home.\n      \u003c\/h2\u003e\n\n      \u003cdiv class=\"sp-flourish\"\u003e✦\u003c\/div\u003e\n\n      \u003cp\u003e\n        The sky turns a soft winter blue.\n        The Christmas lights\n        begin to shine.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        Someone is coming up the driveway.\n        The family is waiting inside.\n        And a cheerful little snowman\n        makes the entrance feel\n        ready for Christmas.\n      \u003c\/p\u003e\n\n      \u003cspan class=\"sp-night-quote\"\u003e\n        \"Home feels a little warmer\n        when Christmas is waiting outside.\"\n      \u003c\/span\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- =====================================\n       FIRST PHOTO STORY\n  ===================================== --\u003e\n\n  \u003csection class=\"sp-story\" data-sp-story\u003e\n\n    \u003cdiv class=\"sp-story-photo\" data-sp-story-img=\"1\"\u003e\u003c\/div\u003e\n\n    \u003cdiv class=\"sp-story-copy\"\u003e\n\n      \u003cspan class=\"sp-kicker\"\u003e\n        CHAPTER ONE · THE FIRST HELLO\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        Make Every Arrival\n        Feel a Little More Magical.\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        Christmas decorating\n        doesn't have to stop\n        at the front door.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        A charming little\n        winter scene can make\n        an ordinary corner\n        feel festive and inviting.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        Pair it with your favorite\n        holiday greenery,\n        a warm porch lantern,\n        or a seasonal wreath\n        for a welcoming winter look.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"sp-quote\"\u003e\n        A little holiday character\n        that makes coming home\n        feel special.\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- =====================================\n       THREE KEY SELLING POINTS\n  ===================================== --\u003e\n\n  \u003csection class=\"sp-section sp-center\"\u003e\n\n    \u003cspan class=\"sp-kicker\"\u003e\n      FULL OF LITTLE CHRISTMAS DETAILS\n    \u003c\/span\u003e\n\n    \u003ch2\u003e\n      A Storybook Winter Scene\n      With a Lovely Glow.\n    \u003c\/h2\u003e\n\n    \u003cp class=\"sp-intro\"\u003e\n      It's the little details\n      that make a holiday\n      decoration memorable.\n    \u003c\/p\u003e\n\n    \u003cdiv class=\"sp-cards\"\u003e\n\n      \u003cdiv class=\"sp-card\"\u003e\n\n        \u003cspan class=\"sp-card-icon\"\u003e☃️\u003c\/span\u003e\n\n        \u003ch3\u003e\n          A Snowman That Makes You Smile\n        \u003c\/h3\u003e\n\n        \u003cp\u003e\n          A joyful winter character\n          brings warmth and\n          a playful spirit\n          to your holiday decorating.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sp-card\"\u003e\n\n        \u003cspan class=\"sp-card-icon\"\u003e🏡\u003c\/span\u003e\n\n        \u003ch3\u003e\n          A Whimsical Woodland Touch\n        \u003c\/h3\u003e\n\n        \u003cp\u003e\n          The birdhouse and\n          ladder elements add\n          a charming little story\n          to the overall design.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sp-card\"\u003e\n\n        \u003cspan class=\"sp-card-icon\"\u003e✨\u003c\/span\u003e\n\n        \u003ch3\u003e\n          Beautiful Holiday Atmosphere\n        \u003c\/h3\u003e\n\n        \u003cp\u003e\n          Lighted accents help\n          give the decoration\n          an inviting presence\n          when evening arrives.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- =====================================\n       STATIC MULTI-PHOTO SHOWCASE\n  ===================================== --\u003e\n\n  \u003csection class=\"sp-section sp-photos\" data-sp-photos\u003e\n\n    \u003cdiv class=\"sp-center\"\u003e\n\n      \u003cspan class=\"sp-kicker\"\u003e\n        THE DETAILS MAKE THE DIFFERENCE\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        Little Details.\n        Big Christmas Charm.\n      \u003c\/h2\u003e\n\n      \u003cp class=\"sp-intro\"\u003e\n        Explore the design,\n        the festive accents,\n        and the cozy atmosphere\n        from different angles.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"sp-photo-grid\"\u003e\n\n      \u003cdiv class=\"sp-photo-card\" data-sp-extra=\"2\"\u003e\n        \u003cspan\u003eWinter Charm\u003c\/span\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sp-photo-card\" data-sp-extra=\"3\"\u003e\n        \u003cspan\u003eA Closer Look\u003c\/span\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sp-photo-card\" data-sp-extra=\"4\"\u003e\n        \u003cspan\u003eFestive Details\u003c\/span\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sp-photo-card\" data-sp-extra=\"5\"\u003e\n        \u003cspan\u003eHoliday Atmosphere\u003c\/span\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sp-photo-card\" data-sp-extra=\"6\"\u003e\n        \u003cspan\u003eAnother View\u003c\/span\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sp-photo-card\" data-sp-extra=\"7\"\u003e\n        \u003cspan\u003eChristmas Magic\u003c\/span\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- =====================================\n       PRODUCT DETAIL EXPLANATION\n  ===================================== --\u003e\n\n  \u003csection class=\"sp-section sp-details\"\u003e\n\n    \u003cdiv class=\"sp-center\"\u003e\n\n      \u003cspan class=\"sp-kicker\"\u003e\n        WHAT MAKES IT SPECIAL\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        One Cheerful Little Scene.\n        So Many Reasons to Smile.\n      \u003c\/h2\u003e\n\n      \u003cp class=\"sp-intro\"\u003e\n        From the friendly snowman\n        to the charming little\n        holiday accents,\n        this design celebrates\n        the playful side of winter.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"sp-detail-grid\"\u003e\n\n      \u003cdiv class=\"sp-detail-item\"\u003e\n\n        \u003cspan class=\"sp-detail-number\"\u003e1\u003c\/span\u003e\n\n        \u003cdiv\u003e\n          \u003ch3\u003eThe Snowman\u003c\/h3\u003e\n          \u003cp\u003e\n            A friendly winter figure\n            gives the scene its\n            warm and welcoming personality.\n          \u003c\/p\u003e\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sp-detail-item\"\u003e\n\n        \u003cspan class=\"sp-detail-number\"\u003e2\u003c\/span\u003e\n\n        \u003cdiv\u003e\n          \u003ch3\u003eThe Birdhouse\u003c\/h3\u003e\n          \u003cp\u003e\n            A lovely woodland-inspired\n            detail adds character\n            and a little nostalgic charm.\n          \u003c\/p\u003e\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sp-detail-item\"\u003e\n\n        \u003cspan class=\"sp-detail-number\"\u003e3\u003c\/span\u003e\n\n        \u003cdiv\u003e\n          \u003ch3\u003eThe Playful Ladder\u003c\/h3\u003e\n          \u003cp\u003e\n            A distinctive decorative\n            element that makes the\n            winter scene more interesting.\n          \u003c\/p\u003e\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sp-detail-item\"\u003e\n\n        \u003cspan class=\"sp-detail-number\"\u003e4\u003c\/span\u003e\n\n        \u003cdiv\u003e\n          \u003ch3\u003eThe Lighted Effect\u003c\/h3\u003e\n          \u003cp\u003e\n            Festive illumination adds\n            atmosphere and helps the\n            display feel special\n            on winter evenings.\n          \u003c\/p\u003e\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- =====================================\n       SECOND STORY\n  ===================================== --\u003e\n\n  \u003csection class=\"sp-story\" data-sp-story\u003e\n\n    \u003cdiv class=\"sp-story-copy\"\u003e\n\n      \u003cspan class=\"sp-kicker\"\u003e\n        CHAPTER TWO · FAMILY CHRISTMAS\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        The Little Decorations\n        Become Our Favorite Memories.\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        Every year, the family\n        brings out the Christmas\n        decorations again.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        The same wreath.\n        The familiar lights.\n        The little winter characters\n        that make everyone smile.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        Before long, these simple\n        decorations become part\n        of the traditions\n        we look forward to.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"sp-quote\"\u003e\n        Christmas magic is often\n        made of the little things.\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"sp-story-photo\" data-sp-story-img=\"8\"\u003e\u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- =====================================\n       PLACEMENT IDEAS\n  ===================================== --\u003e\n\n  \u003csection class=\"sp-section sp-places\"\u003e\n\n    \u003cdiv class=\"sp-center\"\u003e\n\n      \u003cspan class=\"sp-kicker\"\u003e\n        MAKE YOUR WINTER SPACE FEEL SPECIAL\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        A Charming Addition\n        to Your Christmas Decorating.\n      \u003c\/h2\u003e\n\n      \u003cp class=\"sp-intro\"\u003e\n        Style the scene with\n        winter greenery,\n        festive lighting,\n        and other decorations\n        you already love.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"sp-place-grid\"\u003e\n\n      \u003cdiv class=\"sp-place\"\u003e\n\n        \u003cspan\u003e🚪\u003c\/span\u003e\n\n        \u003ch3\u003eCovered Porch\u003c\/h3\u003e\n\n        \u003cp\u003e\n          Create a friendly holiday\n          welcome near the entrance,\n          subject to the product's\n          placement requirements.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sp-place\"\u003e\n\n        \u003cspan\u003e🏡\u003c\/span\u003e\n\n        \u003ch3\u003eEntryway Display\u003c\/h3\u003e\n\n        \u003cp\u003e\n          Pair it with greenery,\n          decorative lanterns,\n          and warm Christmas accents.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sp-place\"\u003e\n\n        \u003cspan\u003e❄️\u003c\/span\u003e\n\n        \u003ch3\u003eFestive Yard Scene\u003c\/h3\u003e\n\n        \u003cp\u003e\n          Combine it with\n          other winter figures\n          where the product's\n          outdoor rating permits.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- =====================================\n       GIFT\n  ===================================== --\u003e\n\n  \u003csection class=\"sp-gift\"\u003e\n\n    \u003cdiv\u003e\n\n      \u003cspan class=\"sp-kicker\"\u003e\n        A LITTLE HOLIDAY GIFT\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        Give Someone a Reason\n        to Smile This Christmas.\n      \u003c\/h2\u003e\n\n      \u003cdiv class=\"sp-flourish\"\u003e✦\u003c\/div\u003e\n\n      \u003cp\u003e\n        For the person who\n        decorates every corner.\n        For a parent who loves\n        making the holidays\n        feel magical.\n      \u003c\/p\u003e\n\n      \u003cp\u003e\n        For someone who\n        enjoys cheerful snowmen,\n        charming winter scenes,\n        and cozy Christmas lights.\n      \u003c\/p\u003e\n\n      \u003cspan class=\"sp-gift-quote\"\u003e\n        \"I saw this little snowman\n        and thought of your home.\"\n      \u003c\/span\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- =====================================\n       FAQ\n  ===================================== --\u003e\n\n  \u003csection class=\"sp-section sp-faq-section\"\u003e\n\n    \u003cdiv class=\"sp-center\"\u003e\n\n      \u003cspan class=\"sp-kicker\"\u003e\n        GOOD TO KNOW\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        A Few Things\n        Before You Bring It Home.\n      \u003c\/h2\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"sp-faq\"\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          Does it include lighting?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          The product is presented\n          as a lighted Christmas decoration.\n          Please review the product options\n          for exact lighting details.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          Can I place it outdoors?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          The design is intended\n          for seasonal porch or\n          yard decorating.\n          Check the confirmed outdoor\n          rating and placement instructions.\n          A covered area is a cautious\n          choice when weather resistance\n          has not been verified.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          Is the birdhouse functional?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          The birdhouse is presented\n          as part of the decorative scene.\n          It should not be assumed\n          suitable for real birds\n          without confirmation\n          from the manufacturer.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          How is the light powered?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          Please check the store's\n          specifications for the exact\n          power source, batteries\n          or accessories required.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          What is the size?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          Review the measurements\n          shown with the product\n          selection and measure\n          your intended display area\n          before ordering.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          Would this make a Christmas gift?\n        \u003c\/summary\u003e\n        \u003cp\u003e\n          It is a charming gift idea\n          for people who enjoy\n          cheerful snowman decorations,\n          festive porch styling,\n          and lighted holiday scenes.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003c!-- =====================================\n       ONLY BOTTOM CTA\n  ===================================== --\u003e\n\n  \u003csection class=\"sp-final sp-snow\"\u003e\n\n    \u003cdiv\u003e\n\n      \u003cspan class=\"sp-kicker\"\u003e\n        A LITTLE MORE CHRISTMAS JOY\n      \u003c\/span\u003e\n\n      \u003ch2\u003e\n        Make Coming Home\n        Feel Like Christmas.\n      \u003c\/h2\u003e\n\n      \u003cdiv class=\"sp-flourish\"\u003e✦\u003c\/div\u003e\n\n      \u003cp\u003e\n        A cheerful little snowman.\n        Charming winter details.\n        A lovely holiday glow\n        to welcome the season.\n      \u003c\/p\u003e\n\n      \u003ca href=\"#\" class=\"sp-button\" data-sp-top\u003e\n        Bring Home the Christmas Magic ↑\n      \u003c\/a\u003e\n\n      \u003cp class=\"sp-final-note\"\u003e\n        Return to the top\n        to view the 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 initSnowmanPorch() {\n\n    var root=document.getElementById(\n      'aj-snowman-porch'\n    );\n\n    if (!root || root.dataset.ready==='1') {\n      return;\n    }\n\n    root.dataset.ready='1';\n\n    var gallery=root.querySelector(\n      '[data-sp-gallery]'\n    );\n\n    var hero=root.querySelector(\n      '[data-sp-hero]'\n    );\n\n    var track=root.querySelector(\n      '[data-sp-track]'\n    );\n\n    var thumbs=root.querySelector(\n      '[data-sp-thumbs]'\n    );\n\n    var prev=root.querySelector(\n      '[data-sp-prev]'\n    );\n\n    var next=root.querySelector(\n      '[data-sp-next]'\n    );\n\n    var topButton=root.querySelector(\n      '[data-sp-top]'\n    );\n\n    var slides=[];\n    var current=0;\n    var timer=null;\n\n    \/* PRODUCT URL *\/\n\n    var productHandle=\n      '☃️-snowman-birdhouse-ladder-glow™-lighted-christmas-porch-yard-decor';\n\n    \/* NORMALIZE IMAGE SOURCES *\/\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 (e) {\n        return '';\n      }\n    }\n\n    function unique(items) {\n\n      var seen={};\n\n      return items.filter(function (url) {\n\n        if (!url) return false;\n\n        var key=url.split('?')[0];\n\n        if (seen[key]) return false;\n\n        seen[key]=true;\n        return true;\n      });\n    }\n\n    \/* CHECK BEFORE DISPLAYING IMAGES *\/\n\n    function verifyImage(src) {\n\n      return new Promise(function (resolve) {\n\n        var image=new Image();\n\n        image.onload=function () {\n          resolve(\n            image.naturalWidth\u003e0 ? src : null\n          );\n        };\n\n        image.onerror=function () {\n          resolve(null);\n        };\n\n        image.src=src;\n      });\n    }\n\n    \/* CAROUSEL *\/\n\n    function stopAuto() {\n\n      if (timer!==null) {\n        clearInterval(timer);\n        timer=null;\n      }\n    }\n\n    function highlightThumb() {\n\n      thumbs.querySelectorAll('.sp-thumb')\n        .forEach(function (button,index) {\n\n          button.classList.toggle(\n            'active',\n            index===current\n          );\n\n          button.setAttribute(\n            'aria-pressed',\n            index===current ? 'true' : 'false'\n          );\n        });\n    }\n\n    function show(index) {\n\n      if (!slides.length) return;\n\n      current=(\n        index+slides.length\n      )%slides.length;\n\n      track.scrollTo({\n        left:current*track.clientWidth,\n        behavior:'smooth'\n      });\n\n      highlightThumb();\n    }\n\n    function startAuto() {\n\n      stopAuto();\n\n      if (slides.length\u003c2) return;\n\n      if (\n        window.matchMedia(\n          '(prefers-reduced-motion: reduce)'\n        ).matches\n      ) {\n        return;\n      }\n\n      timer=setInterval(function () {\n\n        if (!document.hidden) {\n          show(current+1);\n        }\n\n      },4200);\n    }\n\n    \/* BUILD LEFT GALLERY *\/\n\n    function buildGallery(images) {\n\n      if (!images.length) return;\n\n      stopAuto();\n\n      track.innerHTML='';\n      thumbs.innerHTML='';\n      slides=[];\n      current=0;\n\n      images.slice(0,8).forEach(function (src,index) {\n\n        var slide=document.createElement('div');\n        slide.className='sp-slide';\n\n        var img=document.createElement('img');\n\n        img.src=src;\n        img.alt='Christmas snowman decoration view '+(index+1);\n        img.loading=index===0 ? 'eager' : 'lazy';\n\n        slide.appendChild(img);\n        track.appendChild(slide);\n        slides.push(slide);\n\n        var button=document.createElement('button');\n\n        button.type='button';\n        button.className='sp-thumb';\n\n        button.setAttribute(\n          'aria-label',\n          'View product photo '+(index+1)\n        );\n\n        var thumb=document.createElement('img');\n\n        thumb.src=src;\n        thumb.alt='';\n        thumb.loading='lazy';\n\n        button.appendChild(thumb);\n        thumbs.appendChild(button);\n\n        button.addEventListener(\n          'click',\n          function () {\n            show(index);\n            startAuto();\n          }\n        );\n      });\n\n      gallery.classList.add('ready');\n      hero.classList.add('has-gallery');\n\n      prev.hidden=slides.length\u003c2;\n      next.hidden=slides.length\u003c2;\n\n      show(0);\n      startAuto();\n    }\n\n    \/* STATIC IMAGE HELPER *\/\n\n    function setStaticImage(holder,src,alt) {\n\n      if (!holder || !src) return;\n\n      var img=document.createElement('img');\n\n      img.src=src;\n      img.alt=alt;\n      img.loading='lazy';\n\n      holder.insertBefore(img,holder.firstChild);\n      holder.classList.add('ready');\n    }\n\n    function buildStaticImages(images) {\n\n      root.querySelectorAll(\n        '[data-sp-story-img]'\n      ).forEach(function (holder) {\n\n        var index=Number(\n          holder.getAttribute('data-sp-story-img')\n        );\n\n        if (!images[index]) return;\n\n        setStaticImage(\n          holder,\n          images[index],\n          'Lighted Christmas snowman scene'\n        );\n\n        var story=holder.closest(\n          '[data-sp-story]'\n        );\n\n        if (story) {\n          story.classList.add('has-photo');\n        }\n      });\n\n      var count=0;\n\n      root.querySelectorAll(\n        '[data-sp-extra]'\n      ).forEach(function (holder) {\n\n        var index=Number(\n          holder.getAttribute('data-sp-extra')\n        );\n\n        if (!images[index]) return;\n\n        setStaticImage(\n          holder,\n          images[index],\n          'Snowman Christmas decoration detail'\n        );\n\n        count++;\n      });\n\n      if (count\u003e0) {\n        root.querySelector(\n          '[data-sp-photos]'\n        ).classList.add('ready');\n      }\n    }\n\n    \/* SCAN CURRENT PRODUCT GALLERY *\/\n\n    function findThemeImages() {\n\n      var found=[];\n\n      var selectors=[\n        'main .product__media img',\n        'main .product__media-list img',\n        'main .product-media-container img',\n        'main .product-gallery 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)) return;\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.shopify.com')!==-1 ||\n            url.indexOf('\/cdn\/shop\/')!==-1\n          )\n        ) {\n          found.push(url);\n        }\n      });\n\n      var og=document.querySelector(\n        'meta[property=\"og:image\"]'\n      );\n\n      if (og \u0026\u0026 og.content) {\n        found.push(normalize(og.content));\n      }\n\n      return unique(found);\n    }\n\n    \/* APPLY ONLY SUCCESSFULLY LOADED IMAGES *\/\n\n    function applyImages(items) {\n\n      var urls=unique(\n        items.map(normalize)\n      ).slice(0,12);\n\n      if (!urls.length) {\n        return Promise.resolve(false);\n      }\n\n      return Promise.all(\n        urls.map(verifyImage)\n      ).then(function (results) {\n\n        var valid=results.filter(Boolean);\n\n        if (!valid.length) {\n          return false;\n        }\n\n        buildGallery(valid);\n        buildStaticImages(valid);\n\n        return true;\n      });\n    }\n\n    \/* LOAD FROM SHOPIFY PRODUCT JSON *\/\n\n    function loadShopifyImages() {\n\n      var currentPath=window.location.pathname\n        .replace(\/\\\/$\/,'');\n\n      var exactPath=\n        '\/products\/'+encodeURIComponent(productHandle);\n\n      var endpoints=[\n        currentPath+'.js',\n        exactPath+'.js'\n      ];\n\n      function tryEndpoint(index) {\n\n        if (index\u003e=endpoints.length) {\n          return Promise.resolve(false);\n        }\n\n        return fetch(endpoints[index],{\n          credentials:'same-origin'\n        })\n        .then(function (response) {\n\n          if (!response.ok) {\n            throw new Error('Product unavailable');\n          }\n\n          return response.json();\n        })\n        .then(function (product) {\n\n          if (\n            !product ||\n            !Array.isArray(product.images) ||\n            !product.images.length\n          ) {\n            throw new Error('No product images');\n          }\n\n          return applyImages(product.images);\n        })\n        .then(function (success) {\n\n          if (success) return true;\n\n          return tryEndpoint(index+1);\n        })\n        .catch(function () {\n          return tryEndpoint(index+1);\n        });\n      }\n\n      tryEndpoint(0).then(function (success) {\n\n        if (success) return;\n\n        var fallback=findThemeImages();\n\n        if (fallback.length) {\n          applyImages(fallback);\n        }\n\n        \/* If both sources fail, image modules\n           stay hidden. There are no broken\n           pictures or giant empty boxes. *\/\n      });\n    }\n\n    \/* CAROUSEL EVENTS *\/\n\n    prev.addEventListener('click',function () {\n      show(current-1);\n      startAuto();\n    });\n\n    next.addEventListener('click',function () {\n      show(current+1);\n      startAuto();\n    });\n\n    track.addEventListener('mouseenter',stopAuto);\n    track.addEventListener('mouseleave',startAuto);\n    track.addEventListener('focusin',stopAuto);\n    track.addEventListener('focusout',startAuto);\n\n    track.addEventListener(\n      'touchstart',\n      stopAuto,\n      {passive:true}\n    );\n\n    track.addEventListener(\n      'touchend',\n      startAuto,\n      {passive:true}\n    );\n\n    track.addEventListener(\n      'scroll',\n      function () {\n\n        if (!track.clientWidth || !slides.length) {\n          return;\n        }\n\n        current=Math.max(\n          0,\n          Math.min(\n            slides.length-1,\n            Math.round(\n              track.scrollLeft\/track.clientWidth\n            )\n          )\n        );\n\n        highlightThumb();\n      },\n      {passive:true}\n    );\n\n    \/* BOTTOM CTA: BACK TO TOP *\/\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    \/* START *\/\n\n    loadShopifyImages();\n  }\n\n  if (document.readyState==='loading') {\n\n    document.addEventListener(\n      'DOMContentLoaded',\n      initSnowmanPorch\n    );\n\n  } else {\n\n    initSnowmanPorch();\n  }\n\n  document.addEventListener(\n    'shopify:section:load',\n    initSnowmanPorch\n  );\n\n})();\n\u003c\/script\u003e\n","brand":"zhidou","offers":[{"title":"Default Title","offer_id":68140065849581,"sku":"FCX26102801-Default Title","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0841\/9354\/2381\/files\/96407300264165377_aa24ae53-e056-4d96-8989-d468d1b49dc1.webp?v=1793600102","url":"https:\/\/alasjoy.com\/products\/snowman-birdhouse-ladder-glow%e2%84%a2-lighted-christmas-porch-yard-decor","provider":"alasjoy","version":"1.0","type":"link"}