{"product_id":"carniwal-boom-mini","title":"CARNIwAL-Boom-Mini","description":"\u003c!-- =========================================================\n     SWIPER (loaded once, used by mobile + desktop sliders)\n========================================================= --\u003e\n\u003clink rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/swiper@11\/swiper-bundle.min.css\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/swiper@11\/swiper-bundle.min.js\"\u003e\u003c\/script\u003e\n\n\u003c!-- =========================================================\n     STYLES\n========================================================= --\u003e\n\u003cstyle\u003e\n\/* ---------- FONTS ---------- *\/\n@font-face {\n  font-family: \"MiniRepro\";\n  src: url(\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/ABCRepro-Screen.otf?v=1790834611\") format(\"opentype\");\n  font-weight: 100;\n  font-style: normal;\n  font-display: swap;\n}\n\n\/* =========================================================\n   MOBILE (max-width: 768px)\n========================================================= *\/\n\n\/* ---------- Mobile moving text ---------- *\/\n.xrt-section { display: none; }\n\n@media (max-width: 768px) {\n  .xrt-section {\n    display: block;\n    position: relative;\n    width: 100%;\n    max-width: 100vw;\n    overflow: hidden;\n    box-sizing: border-box;\n    margin: 0;\n    padding: 0;\n    line-height: 0;\n    background: #000;\n  }\n  .xrt-bg-image { display: block; width: 100%; height: auto; position: relative; z-index: 1; }\n  .xrt-wrap {\n    --xrt-nudge: -4vw;\n    position: absolute;\n    top: 45%;\n    left: 0;\n    width: 100%;\n    transform: translateY(calc(-50% + var(--xrt-nudge)));\n    z-index: 2;\n  }\n  .xrt-line {\n    width: 100%;\n    overflow: hidden;\n    display: block;\n    white-space: nowrap;\n    line-height: 0.62;\n    margin: 0;\n    padding: 0;\n    position: relative;\n  }\n  .xrt-track {\n    display: flex;\n    flex-wrap: nowrap;\n    width: max-content;\n    align-items: center;\n    font-family: \"MiniRepro\", Arial, Helvetica, sans-serif;\n    font-size: 15vw;\n    font-weight: 400;\n    line-height: 0.72;\n    letter-spacing: -0.08em;\n    will-change: transform;\n  }\n  .xrt-group { display: flex; flex-wrap: nowrap; flex-shrink: 0; }\n  .xrt-track span { display: block; flex-shrink: 0; padding-right: 0.1em; margin: 0; }\n  .xrt-orange { color: #d44e0b; opacity: 0.4 !important; }\n  .xrt-black  { color: #000; }\n  .xrt-line-3,\n  .xrt-line-3 .xrt-track { line-height: 0.9; }\n}\n\n\/* ---------- Mobile feature carousel ---------- *\/\n.ak-video-mobile-section { width: 100%; background: #000; overflow: hidden; }\n.ak-mobile-slider-wrap { width: 100%; background: #000; overflow: hidden; padding: 0 0 20px; }\n.ak-mobile-swiper { width: 100%; overflow: visible !important; }\n.ak-mobile-swiper .swiper-wrapper { align-items: center; }\n\n.ak-mobile-swiper .swiper-slide {\n  width: 74% !important;\n  flex-shrink: 0;\n  opacity: 0.38;\n  transform: scale(0.94);\n  transition: opacity 0.65s ease, transform 0.65s cubic-bezier(0.22, 1, 0.36, 1);\n}\n.ak-mobile-swiper .swiper-slide-active { opacity: 1; transform: scale(1); }\n.ak-mobile-swiper .swiper-slide-prev,\n.ak-mobile-swiper .swiper-slide-next { opacity: 0.42; transform: scale(0.94); }\n\n.ak-mobile-card { width: 100%; overflow: hidden; background: #000; border-radius: 22px; }\n.ak-mobile-image-wrap { width: 100%; height: auto; overflow: hidden; border-radius: 22px; background: #000; }\n.ak-mobile-card img {\n  width: 100%;\n  height: auto;\n  display: block;\n  object-fit: cover;\n  transform: scale(1.06);\n  transform-origin: center center;\n  transition: transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);\n  will-change: transform;\n}\n.ak-mobile-swiper .swiper-slide-active .ak-mobile-card img { transform: scale(1); }\n.ak-mobile-swiper .swiper-slide-prev .ak-mobile-card img,\n.ak-mobile-swiper .swiper-slide-next .ak-mobile-card img { transform: scale(1.04); }\n\n.ak-mobile-pagination {\n  position: relative !important;\n  left: auto !important;\n  right: auto !important;\n  bottom: auto !important;\n  width: 100% !important;\n  margin-top: 24px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n.ak-mobile-pagination .swiper-pagination-bullet {\n  width: 7px !important;\n  height: 7px !important;\n  margin: 0 9px !important;\n  padding: 0 !important;\n  border-radius: 50% !important;\n  background: #555 !important;\n  opacity: 1 !important;\n  transition: width 0.35s ease, background 0.35s ease;\n}\n.ak-mobile-pagination .swiper-pagination-bullet-active {\n  width: 23px !important;\n  height: 7px !important;\n  border-radius: 20px !important;\n  background: #fff !important;\n}\n\n@media (min-width: 769px) { .ak-video-mobile-section { display: none !important; } }\n@media (max-width: 768px) { .ak-video-mobile-section { display: block !important; } }\n@media (max-width: 380px) { .ak-mobile-swiper .swiper-slide { width: 84% !important; } }\n\n\/* =========================================================\n   DESKTOP (min-width: 769px) - own class, no theme dependency\n========================================================= *\/\n.mini-desktop-only { display: none; }\n@media (min-width: 769px) {\n  .mini-desktop-only { display: block; width: 100%; max-width: 100vw; overflow: hidden; }\n}\n\n.trek-image-section {\n  width: 100%;\n  margin: 0;\n  padding: 0;\n  background: #000;\n  position: relative;\n  overflow: hidden;\n  line-height: 0;\n}\n.trek-image-section \u003e img,\n.mini-desktop-bg-img {\n  display: block;\n  width: 100%;\n  height: auto;\n  margin-top: -9px !important;\n  padding: 0;\n  border: 0;\n}\n\n\/* ---------- Desktop moving text ---------- *\/\n#mini-desktop-text-section {\n  position: relative;\n  width: 100%;\n  max-width: 100vw;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n}\n.mini-desktop-text-bg { position: relative; width: 100%; line-height: 0; overflow: hidden; }\n.mini-desktop-text-wrap {\n  position: absolute;\n  top: 59%;\n  left: 0;\n  width: 100%;\n  transform: translateY(-50%);\n  z-index: 1;\n}\n.mini-desktop-text-line {\n  width: 100%;\n  overflow: hidden;\n  display: block;\n  white-space: nowrap;\n  margin: -2.18em 0;\n  padding: 0.08em 0;\n  line-height: 1;\n  box-sizing: border-box;\n}\n.mini-desktop-text-track {\n  display: flex;\n  flex-wrap: nowrap;\n  width: max-content;\n  align-items: center;\n  font-family: \"MiniRepro\", sans-serif;\n  font-weight: 400;\n  font-size: clamp(65px, 8vw, 150px);\n  line-height: 1;\n  letter-spacing: -0.075em;\n  will-change: transform;\n}\n.mini-desktop-text-group { display: flex; flex-wrap: nowrap; flex-shrink: 0; }\n.mini-desktop-text-track span {\n  display: block;\n  flex-shrink: 0;\n  padding-right: 0.10em;\n  margin: 0;\n  -webkit-text-stroke: 0;\n  text-shadow: none;\n  transform: scaleX(0.96);\n  transform-origin: center;\n}\n.mini-desktop-orange { color: #d44e0b; opacity: 0.28; }\n.mini-desktop-black  { color: #000; opacity: 1; }\n.mini-desktop-line-three,\n.mini-desktop-line-three .mini-desktop-text-track { line-height: 1; }\n\n@media (min-width: 769px) and (max-width: 1200px) { .mini-desktop-text-track { font-size: 90px; } }\n@media (min-width: 1600px) { .mini-desktop-text-track { font-size: 108px; } }\n\n\/* ---------- Desktop slider ---------- *\/\n.cf-outer, .cf-section { width: 100%; max-width: 100vw; margin: 0; padding: 0; overflow: hidden; background: #000; }\n.cf-container { width: 100%; max-width: none; margin: 0; padding: 0; box-sizing: border-box; }\n\n.cf-swiper {\n  position: relative;\n  width: 100%;\n  overflow: visible;\n  -webkit-mask-image: linear-gradient(to right, transparent 0%, #000 7%, #000 93%, transparent 100%);\n  mask-image: linear-gradient(to right, transparent 0%, #000 7%, #000 93%, transparent 100%);\n}\n.cf-swiper .swiper-slide { display: flex; align-items: center; justify-content: center; box-sizing: border-box; }\n.cf-swiper .swiper-slide img {\n  display: block;\n  width: 70%;\n  height: auto;\n  max-width: 100%;\n  margin-top: 0 !important;\n  border-radius: 51px;\n}\n.cf-swiper .swiper-slide-prev img,\n.cf-swiper .swiper-slide-next img { opacity: 0.82; transition: opacity 0.6s ease; }\n.cf-swiper .swiper-slide-active img { opacity: 1; transition: opacity 0.6s ease; }\n\n.cf-swiper::before,\n.cf-swiper::after { content: \"\"; position: absolute; top: 0; bottom: 0; width: 10%; z-index: 10; pointer-events: none; }\n.cf-swiper::before { left: 0;  background: linear-gradient(to right, #000 0%, rgba(0,0,0,.85) 25%, rgba(0,0,0,.35) 65%, transparent 100%); }\n.cf-swiper::after  { right: 0; background: linear-gradient(to left,  #000 0%, rgba(0,0,0,.85) 25%, rgba(0,0,0,.35) 65%, transparent 100%); }\n@media (min-width: 1400px) { .cf-swiper::before, .cf-swiper::after { width: 12%; } }\n\n.cf-pagination {\n  position: relative !important;\n  margin: 30px 30px !important;\n  bottom: auto !important;\n  left: auto !important;\n  right: auto !important;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n.cf-pagination .swiper-pagination-bullet {\n  width: 7px;\n  height: 7px;\n  margin: 0 5px !important;\n  background: #777;\n  opacity: 1;\n  border-radius: 50%;\n  transition: width 0.3s ease, background 0.3s ease;\n}\n.cf-pagination .swiper-pagination-bullet-active { width: 22px; border-radius: 20px; background: #fff; }\n\u003c\/style\u003e\n\n\n\u003c!-- =========================================================\n     MOBILE VIEW  (one wrapper, opened once, closed once)\n========================================================= --\u003e\n\u003cdiv class=\"videomobileview image-wrapperxyz\"\u003e\n\u003cdiv style=\"width:100vw !important; max-width:100vw !important; position:relative; left:50%; right:50%; margin-left:-50vw !important; margin-right:-50vw !important; box-sizing:border-box; background-color:#000 !important;\"\u003e\n\n  \u003c!-- M1) MOVING TEXT --\u003e\n  \u003cdiv class=\"xrt-section\"\u003e\n    \u003cimg class=\"xrt-bg-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/MINI-MOBILE-A-1.webp?v=1790756656\" alt=\"\"\u003e\n    \u003cdiv class=\"xrt-wrap\"\u003e\n\n      \u003cdiv class=\"xrt-line xrt-line-1\"\u003e\n        \u003cdiv class=\"xrt-track\"\u003e\n          \u003cdiv class=\"xrt-group\"\u003e\n            \u003cspan class=\"xrt-orange\"\u003emini size\u003c\/span\u003e\n            \u003cspan class=\"xrt-orange\"\u003emini size\u003c\/span\u003e\n            \u003cspan class=\"xrt-black\"\u003emini size\u003c\/span\u003e\n            \u003cspan class=\"xrt-orange\"\u003emini size\u003c\/span\u003e\n            \u003cspan class=\"xrt-black\"\u003emini size\u003c\/span\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"xrt-line xrt-line-2\"\u003e\n        \u003cdiv class=\"xrt-track\"\u003e\n          \u003cdiv class=\"xrt-group\"\u003e\n            \u003cspan class=\"xrt-orange\"\u003emassive\u003c\/span\u003e\n            \u003cspan class=\"xrt-orange\"\u003emassive\u003c\/span\u003e\n            \u003cspan class=\"xrt-black\"\u003emassive\u003c\/span\u003e\n            \u003cspan class=\"xrt-orange\"\u003emassive\u003c\/span\u003e\n            \u003cspan class=\"xrt-black\"\u003emassive\u003c\/span\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"xrt-line xrt-line-3\"\u003e\n        \u003cdiv class=\"xrt-track\"\u003e\n          \u003cdiv class=\"xrt-group\"\u003e\n            \u003cspan class=\"xrt-orange\"\u003eoutput\u003c\/span\u003e\n            \u003cspan class=\"xrt-orange\"\u003eoutput\u003c\/span\u003e\n            \u003cspan class=\"xrt-orange\"\u003eoutput\u003c\/span\u003e\n            \u003cspan class=\"xrt-black\"\u003eoutput\u003c\/span\u003e\n            \u003cspan class=\"xrt-orange\"\u003eoutput\u003c\/span\u003e\n            \u003cspan class=\"xrt-orange\"\u003eoutput\u003c\/span\u003e\n            \u003cspan class=\"xrt-black\"\u003eoutput\u003c\/span\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- M2) IMAGE --\u003e\n  \u003cimg style=\"margin-top:-9px !important; z-index:1;\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/MINI-MOBILE-A-2.webp?v=1790928756\" alt=\"\"\u003e\n\n  \u003c!-- M3) FEATURE CAROUSEL --\u003e\n  \u003cdiv class=\"ak-video-mobile-section\"\u003e\n    \u003cdiv class=\"ak-mobile-slider-wrap\"\u003e\n      \u003cdiv class=\"swiper ak-mobile-swiper\"\u003e\n        \u003cdiv class=\"swiper-wrapper\"\u003e\n          \u003cdiv class=\"swiper-slide\"\u003e\u003cdiv class=\"ak-mobile-card\"\u003e\u003cdiv class=\"ak-mobile-image-wrap\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/feature-mobile-1.png?v=1790747496\" alt=\"Feature 1\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\n          \u003cdiv class=\"swiper-slide\"\u003e\u003cdiv class=\"ak-mobile-card\"\u003e\u003cdiv class=\"ak-mobile-image-wrap\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/feature-mobile-2.png?v=1790747501\" alt=\"Feature 2\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\n          \u003cdiv class=\"swiper-slide\"\u003e\u003cdiv class=\"ak-mobile-card\"\u003e\u003cdiv class=\"ak-mobile-image-wrap\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/feature-mobile-3.png?v=1790747508\" alt=\"Feature 3\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\n          \u003cdiv class=\"swiper-slide\"\u003e\u003cdiv class=\"ak-mobile-card\"\u003e\u003cdiv class=\"ak-mobile-image-wrap\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/feature-mobile-4.png?v=1790747515\" alt=\"Feature 4\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\n          \u003cdiv class=\"swiper-slide\"\u003e\u003cdiv class=\"ak-mobile-card\"\u003e\u003cdiv class=\"ak-mobile-image-wrap\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/feature-mobile-5.png?v=1790747522\" alt=\"Feature 5\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"ak-mobile-pagination\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- M4) IMAGE --\u003e\n  \u003cimg style=\"margin-top:-9px !important; z-index:1;\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/MINI-MOBILE-A-3.webp?v=1790842256\" alt=\"\"\u003e\n\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- MOBILE VIEW ENDS --\u003e\n\n\u003cp\u003e \u003c\/p\u003e\n\n\n\u003c!-- =========================================================\n     DESKTOP VIEW  (separate from the mobile wrapper)\n========================================================= --\u003e\n\u003cdiv class=\"mini-desktop-only\"\u003e\n  \u003cdiv class=\"trek-image-section\"\u003e\n\n    \u003c!-- D1) MOVING TEXT --\u003e\n    \u003cdiv id=\"mini-desktop-text-section\"\u003e\n      \u003cdiv class=\"mini-desktop-text-bg\"\u003e\n        \u003cimg class=\"mini-desktop-bg-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/web-mini-a-1.webp?v=1790756542\" alt=\"\"\u003e\n        \u003cdiv class=\"mini-desktop-text-wrap\"\u003e\n\n          \u003cdiv class=\"mini-desktop-text-line mini-desktop-line-one\"\u003e\n            \u003cdiv class=\"mini-desktop-text-track\"\u003e\n              \u003cdiv class=\"mini-desktop-text-group\"\u003e\n                \u003cspan class=\"mini-desktop-orange\"\u003emini size\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003emini size\u003c\/span\u003e \u003cspan class=\"mini-desktop-black\"\u003emini size\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003emini size\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003emini size\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003emini size\u003c\/span\u003e\n              \u003c\/div\u003e\n              \u003cdiv class=\"mini-desktop-text-group\"\u003e\n                \u003cspan class=\"mini-desktop-orange\"\u003emini size\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003emini size\u003c\/span\u003e \u003cspan class=\"mini-desktop-black\"\u003emini size\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003emini size\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003emini size\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003emini size\u003c\/span\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"mini-desktop-text-line mini-desktop-line-two\"\u003e\n            \u003cdiv class=\"mini-desktop-text-track\"\u003e\n              \u003cdiv class=\"mini-desktop-text-group\"\u003e\n                \u003cspan class=\"mini-desktop-orange\"\u003emassive\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003emassive\u003c\/span\u003e \u003cspan class=\"mini-desktop-black\"\u003emassive\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003emassive\u003c\/span\u003e\n              \u003c\/div\u003e\n              \u003cdiv class=\"mini-desktop-text-group\"\u003e\n                \u003cspan class=\"mini-desktop-orange\"\u003emassive\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003emassive\u003c\/span\u003e \u003cspan class=\"mini-desktop-black\"\u003emassive\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003emassive\u003c\/span\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"mini-desktop-text-line mini-desktop-line-three\"\u003e\n            \u003cdiv class=\"mini-desktop-text-track\"\u003e\n              \u003cdiv class=\"mini-desktop-text-group\"\u003e\n                \u003cspan class=\"mini-desktop-orange\"\u003eoutput\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003eoutput\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003eoutput\u003c\/span\u003e \u003cspan class=\"mini-desktop-black\"\u003eoutput\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003eoutput\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003eoutput\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003eoutput\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003eoutput\u003c\/span\u003e\n              \u003c\/div\u003e\n              \u003cdiv class=\"mini-desktop-text-group\"\u003e\n                \u003cspan class=\"mini-desktop-orange\"\u003eoutput\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003eoutput\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003eoutput\u003c\/span\u003e \u003cspan class=\"mini-desktop-black\"\u003eoutput\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003eoutput\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003eoutput\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003eoutput\u003c\/span\u003e \u003cspan class=\"mini-desktop-orange\"\u003eoutput\u003c\/span\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- D2) IMAGE --\u003e\n    \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/web-mini-a-2.webp?v=1790746781\" alt=\"\"\u003e\n\n    \u003c!-- D3) SLIDER --\u003e\n    \u003csection class=\"cf-outer\"\u003e\n      \u003csection class=\"cf-section\"\u003e\n        \u003cdiv class=\"cf-container\"\u003e\n          \u003cdiv class=\"swiper cf-swiper\" id=\"cfSwiper\"\u003e\n            \u003cdiv class=\"swiper-wrapper\"\u003e\n              \u003cdiv class=\"swiper-slide\"\u003e\u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/feature-mobile-1.png?v=1790747496\" alt=\"Feature 1\"\u003e\u003c\/div\u003e\n              \u003cdiv class=\"swiper-slide\"\u003e\u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/feature-mobile-2.png?v=1790747501\" alt=\"Feature 2\"\u003e\u003c\/div\u003e\n              \u003cdiv class=\"swiper-slide\"\u003e\u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/feature-mobile-3.png?v=1790747508\" alt=\"Feature 3\"\u003e\u003c\/div\u003e\n              \u003cdiv class=\"swiper-slide\"\u003e\u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/feature-mobile-4.png?v=1790747515\" alt=\"Feature 4\"\u003e\u003c\/div\u003e\n              \u003cdiv class=\"swiper-slide\"\u003e\u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/feature-mobile-5.png?v=1790747522\" alt=\"Feature 5\"\u003e\u003c\/div\u003e\n            \u003c\/div\u003e\n            \u003cdiv class=\"swiper-pagination cf-pagination\"\u003e\u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/section\u003e\n    \u003c\/section\u003e\n\n    \u003c!-- D4) IMAGE --\u003e\n    \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/web-mini-a-3.webp?v=1790842153\" alt=\"\"\u003e\n\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- DESKTOP VIEW ENDS --\u003e\n\n\n\u003c!-- =========================================================\n     SCRIPTS\n========================================================= --\u003e\n\n\u003c!-- ---------- MOBILE: moving text ---------- --\u003e\n\u003cscript\u003e\n(function () {\n  var SPEED_LINE_1 = 130, SPEED_LINE_2 = 140, SPEED_LINE_3 = 120;\n  var MOBILE_MAX = 768;\n  var FIRST_RUN_TIME = 10000, FIRST_PAUSE_TIME = 3000;\n\n  var items = [], raf = null, lastTime = null, state = \"firstRun\", stateTime = 0, lastWidth = 0;\n\n  function build() {\n    items = [];\n    var section = document.querySelector(\".xrt-section\");\n    if (!section) return;\n    var lines = section.querySelectorAll(\".xrt-line\");\n\n    for (var i = 0; i \u003c lines.length \u0026\u0026 i \u003c 3; i++) {\n      var track = lines[i].querySelector(\".xrt-track\");\n      if (!track) continue;\n\n      var old = track.querySelectorAll(\".xrt-group\");\n      for (var j = old.length - 1; j \u003e 0; j--) old[j].remove();\n\n      var first = track.querySelector(\".xrt-group\");\n      if (!first) continue;\n      var groupWidth = first.getBoundingClientRect().width;\n      if (!groupWidth) continue;\n\n      var screenWidth = Math.max(section.clientWidth, window.innerWidth);\n      var count = Math.ceil(screenWidth \/ groupWidth) + 6;\n      for (var k = 1; k \u003c count; k++) {\n        var clone = first.cloneNode(true);\n        clone.setAttribute(\"aria-hidden\", \"true\");\n        track.appendChild(clone);\n      }\n\n      items.push({\n        track: track,\n        width: groupWidth,\n        direction: i === 1 ? \"left\" : \"right\",   \/* line 2 goes left -\u003e right *\/\n        lineNumber: i + 1,\n        progress: 0\n      });\n    }\n  }\n\n  function getSpeed(n) {\n    return n === 1 ? SPEED_LINE_1 : n === 2 ? SPEED_LINE_2 : n === 3 ? SPEED_LINE_3 : 100;\n  }\n\n  function updatePositions(delta) {\n    items.forEach(function (item) {\n      item.progress = (item.progress + getSpeed(item.lineNumber) * delta \/ 1000) % item.width;\n      var x = item.direction === \"right\" ? -item.progress : (-item.width + item.progress);\n      item.track.style.transform = \"translate3d(\" + x + \"px,0,0)\";\n    });\n  }\n\n  function animate(time) {\n    if (lastTime === null) lastTime = time;\n    var delta = Math.min(time - lastTime, 100);\n    lastTime = time;\n\n    if (state === \"firstRun\") {\n      stateTime += delta;\n      if (stateTime \u003e= FIRST_RUN_TIME) { state = \"firstPause\"; stateTime = 0; }\n      else updatePositions(delta);\n    } else if (state === \"firstPause\") {\n      stateTime += delta;\n      if (stateTime \u003e= FIRST_PAUSE_TIME) { state = \"forever\"; stateTime = 0; }\n    } else {\n      updatePositions(delta);\n    }\n    raf = requestAnimationFrame(animate);\n  }\n\n  function start() {\n    if (raf) { cancelAnimationFrame(raf); raf = null; }\n    if (window.innerWidth \u003e MOBILE_MAX) return;\n\n    lastWidth = window.innerWidth;\n    state = \"firstRun\"; stateTime = 0; lastTime = null;\n    build();\n    if (!items.length) return;\n\n    items.forEach(function (item) {\n      item.progress = 0;\n      item.track.style.transform = item.direction === \"right\"\n        ? \"translate3d(0,0,0)\"\n        : \"translate3d(\" + (-item.width) + \"px,0,0)\";\n    });\n    raf = requestAnimationFrame(animate);\n  }\n\n  function init() {\n    if (document.fonts \u0026\u0026 document.fonts.ready) document.fonts.ready.then(start);\n    else start();\n  }\n\n  if (document.readyState === \"complete\") init();\n  else window.addEventListener(\"load\", init);\n\n  var rt;\n  function handleResize() {\n    clearTimeout(rt);\n    rt = setTimeout(function () { if (window.innerWidth !== lastWidth) start(); }, 200);\n  }\n  window.addEventListener(\"resize\", handleResize);\n  window.addEventListener(\"orientationchange\", handleResize);\n\n  window.setXrtSpeed1 = function (s) { s = Number(s); if (!isNaN(s) \u0026\u0026 s \u003e 0) SPEED_LINE_1 = s; };\n  window.setXrtSpeed2 = function (s) { s = Number(s); if (!isNaN(s) \u0026\u0026 s \u003e 0) SPEED_LINE_2 = s; };\n  window.setXrtSpeed3 = function (s) { s = Number(s); if (!isNaN(s) \u0026\u0026 s \u003e 0) SPEED_LINE_3 = s; };\n})();\n\u003c\/script\u003e\n\n\u003c!-- ---------- MOBILE: feature carousel ---------- --\u003e\n\u003cscript\u003e\n(function () {\n  function initAKCarousel() {\n    if (window.innerWidth \u003e 768) return;\n\n    var container = document.querySelector(\".ak-mobile-swiper\");\n    if (!container) { setTimeout(initAKCarousel, 300); return; }\n    if (container.swiper) return;\n    if (typeof Swiper === \"undefined\") { setTimeout(initAKCarousel, 300); return; }\n\n    var pagination = container.querySelector(\".ak-mobile-pagination\");\n    if (!pagination) return;\n\n    function updateActiveDot(s) {\n      var dots = pagination.querySelectorAll(\".swiper-pagination-bullet\");\n      dots.forEach(function (dot, index) {\n        dot.classList.toggle(\"swiper-pagination-bullet-active\", index === s.realIndex);\n      });\n    }\n\n    window.akMobileSwiper = new Swiper(container, {\n      slidesPerView: \"auto\",\n      centeredSlides: true,\n      spaceBetween: 10,\n      loop: true,\n      speed: 850,\n      allowTouchMove: true,\n      grabCursor: true,\n      observer: true,\n      observeParents: true,\n      autoplay: { delay: 3000, disableOnInteraction: false, pauseOnMouseEnter: false },\n      pagination: { el: pagination, clickable: true },\n      on: {\n        init: function () { updateActiveDot(this); },\n        slideChange: function () { updateActiveDot(this); },\n        realIndexChange: function () { updateActiveDot(this); }\n      }\n    });\n  }\n\n  if (document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", initAKCarousel);\n  else initAKCarousel();\n})();\n\u003c\/script\u003e\n\n\u003c!-- ---------- DESKTOP: moving text ---------- --\u003e\n\u003cscript\u003e\n(function () {\n  var SPEED_OUTER  = 230;   \/\/ top + bottom lines (px\/sec)\n  var SPEED_MIDDLE = 150;   \/\/ middle line (px\/sec)\n  var RUN_TIME     = 10000; \/\/ move 10s\n  var PAUSE_TIME   = 4000;  \/\/ pause 4s, then move forever\n\n  var section = document.getElementById(\"mini-desktop-text-section\");\n  if (!section) return;\n\n  var lines = [], last = null, raf = null, state = \"running\", stateTime = 0;\n\n  function build() {\n    var old = lines.map(function (l) { return l.pos; });\n    lines = [];\n    var lineEls = section.querySelectorAll(\".mini-desktop-text-line\");\n\n    for (var i = 0; i \u003c lineEls.length; i++) {\n      var line = lineEls[i];\n      var track = line.querySelector(\".mini-desktop-text-track\");\n      if (!track) continue;\n      var first = track.querySelector(\".mini-desktop-text-group\");\n      if (!first) continue;\n      var w = first.getBoundingClientRect().width;\n      if (!w) continue;\n\n      var needed = Math.ceil(window.innerWidth \/ w) + 1;\n      while (track.querySelectorAll(\".mini-desktop-text-group\").length \u003c needed) {\n        var clone = first.cloneNode(true);\n        clone.setAttribute(\"aria-hidden\", \"true\");\n        track.appendChild(clone);\n      }\n\n      var isMiddle = line.classList.contains(\"mini-desktop-line-two\");\n      lines.push({ track: track, width: w, reverse: isMiddle, middle: isMiddle, pos: old[lines.length] || 0 });\n    }\n  }\n\n  function tick(t) {\n    if (last === null) last = t;\n    var dt = Math.min(t - last, 100);\n    last = t;\n    var moving = true;\n\n    if (state === \"running\") {\n      stateTime += dt;\n      if (stateTime \u003e= RUN_TIME) { state = \"paused\"; stateTime = 0; }\n    } else if (state === \"paused\") {\n      moving = false;\n      stateTime += dt;\n      if (stateTime \u003e= PAUSE_TIME) state = \"done\";\n    }\n\n    for (var i = 0; i \u003c lines.length; i++) {\n      var l = lines[i];\n      if (moving) l.pos += (l.middle ? SPEED_MIDDLE : SPEED_OUTER) * dt \/ 1000;\n      var offset = l.pos % l.width;\n      var x = l.reverse ? (-l.width + offset) : -offset;\n      l.track.style.transform = \"translate3d(\" + x + \"px,0,0)\";\n    }\n    raf = requestAnimationFrame(tick);\n  }\n\n  function start() {\n    if (raf) cancelAnimationFrame(raf);\n    raf = null; last = null;\n    if (window.innerWidth \u003c= 768) return;\n    build();\n    if (lines.length) raf = requestAnimationFrame(tick);\n  }\n\n  function init() {\n    if (document.fonts \u0026\u0026 document.fonts.ready) document.fonts.ready.then(start);\n    else start();\n  }\n\n  if (document.readyState === \"complete\") init();\n  else window.addEventListener(\"load\", init);\n\n  var rt;\n  window.addEventListener(\"resize\", function () { clearTimeout(rt); rt = setTimeout(start, 200); });\n\n  window.setMiniSpeeds = function (outer, middle) { SPEED_OUTER = outer; SPEED_MIDDLE = middle; };\n})();\n\u003c\/script\u003e\n\n\u003c!-- ---------- DESKTOP: slider ---------- --\u003e\n\u003cscript\u003e\n(function () {\n  function initSwiper() {\n    var el = document.getElementById(\"cfSwiper\");\n    if (!el) return;\n    if (typeof Swiper === \"undefined\") { console.error(\"Swiper not loaded\"); return; }\n    if (el.swiper) el.swiper.destroy(true, true);\n\n    new Swiper(\"#cfSwiper\", {\n      loop: true,\n      centeredSlides: true,\n      speed: 800,\n      spaceBetween: 40,\n      autoplay: { delay: 3000, disableOnInteraction: false },\n      pagination: { el: \"#cfSwiper .cf-pagination\", clickable: true },\n      breakpoints: {\n        320:  { slidesPerView: 1.08, spaceBetween: 24 },\n        480:  { slidesPerView: 1.15, spaceBetween: 28 },\n        768:  { slidesPerView: 2,    spaceBetween: 50 },\n        1024: { slidesPerView: 2.4,  spaceBetween: 60 },\n        1400: { slidesPerView: 2.6,  spaceBetween: 70 }\n      }\n    });\n  }\n\n  if (document.readyState === \"complete\") initSwiper();\n  else window.addEventListener(\"load\", initSwiper);\n})();\n\u003c\/script\u003e","brand":"ACwO","offers":[{"title":"Default Title","offer_id":54522839073086,"sku":null,"price":0.0,"currency_code":"INR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/listing-mini-1.webp?v=1790747460","url":"https:\/\/acwo.com\/products\/carniwal-boom-mini","provider":"ACwO","version":"1.0","type":"link"}