{"product_id":"carniwal-boom","title":"CARNIwAL-Boom","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\/* =========================================================\n   FONT\n========================================================= *\/\n\n@font-face {\n\n  font-family: \"MiniRepro\";\n\n  src:\n    url(\n      \"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/ABCRepro-Screen.otf?v=1790834611\"\n    )\n    format(\"opentype\");\n\n  font-weight: 100;\n\n  font-style: normal;\n\n  font-display: swap;\n\n}\n\n\n\/* =========================================================\n   DESKTOP\n========================================================= *\/\n\n.xrt-section {\n\n  display: none;\n\n}\n\n\n\/* =========================================================\n   MOBILE\n========================================================= *\/\n\n@media (max-width: 768px) {\n\n\n  \/* -------------------------------------------------------\n     MAIN SECTION\n  ------------------------------------------------------- *\/\n\n  .xrt-section {\n\n    display: block;\n\n    position: relative;\n\n    width: 100%;\n\n    max-width: 100vw;\n\n    overflow: hidden;\n\n    box-sizing: border-box;\n\n    margin: 0;\n\n    padding: 0;\n\n    line-height: 0;\n\n    background: #000;\n\n  }\n\n\n  \/* -------------------------------------------------------\n     BACKGROUND IMAGE\n  ------------------------------------------------------- *\/\n\n  .xrt-bg-image {\n\n    display: block;\n\n    width: 100%;\n\n    height: auto;\n\n    position: relative;\n\n    z-index: 1;\n\n  }\n\n\n  \/* -------------------------------------------------------\n     TEXT WRAPPER\n  ------------------------------------------------------- *\/\n\n  .xrt-wrap {\n\n    --xrt-nudge: -4vw;\n\n    position: absolute;\n\n    top: 49%;\n\n    left: 0;\n\n    width: 100%;\n\n    transform:\n      translateY(\n        calc(\n          -50% +\n          var(--xrt-nudge)\n        )\n      );\n\n    z-index: 2;\n\n  }\n\n\n  \/* -------------------------------------------------------\n     MOVING LINE\n  ------------------------------------------------------- *\/\n\n  .xrt-line {\n\n    width: 100%;\n\n    overflow: hidden;\n\n    display: block;\n\n    white-space: nowrap;\n\n    line-height: 0.62;\n\n    margin: 0;\n\n    padding: 0;\n\n    position: relative;\n\n  }\n\n\n  \/* -------------------------------------------------------\n     MOVING TRACK\n  ------------------------------------------------------- *\/\n\n  .xrt-track {\n\n    display: flex;\n\n    flex-wrap: nowrap;\n\n    width: max-content;\n\n    align-items: center;\n\n    font-family:\n      \"MiniRepro\",\n      Arial,\n      Helvetica,\n      sans-serif;\n\n    font-size: 15vw;\n\n    font-weight: 400;\n\n    line-height: 0.72;\n\n    letter-spacing: -0.08em;\n\n    will-change: transform;\n\n  }\n\n\n  \/* -------------------------------------------------------\n     EACH COMPLETE GROUP\n  ------------------------------------------------------- *\/\n\n  .xrt-group {\n\n    display: flex;\n\n    flex-wrap: nowrap;\n\n    flex-shrink: 0;\n\n  }\n\n\n  \/* -------------------------------------------------------\n     EACH COMPLETE PHRASE\n  ------------------------------------------------------- *\/\n\n  .xrt-track span {\n\n    display: block;\n\n    flex-shrink: 0;\n\n    padding-right: 0.1em;\n\n    margin: 0;\n\n    white-space: nowrap;\n\n  }\n\n\n  \/* -------------------------------------------------------\n     ORANGE TEXT\n  ------------------------------------------------------- *\/\n\n  .xrt-orange {\n\n    color: #d44e0b;\n\n    opacity: 0.4 !important;\n\n  }\n\n\n  \/* -------------------------------------------------------\n     BLACK TEXT\n  ------------------------------------------------------- *\/\n\n  .xrt-black {\n\n    color: #000;\n\n  }\n\n\n  \/* -------------------------------------------------------\n     WHITE TEXT\n  ------------------------------------------------------- *\/\n\n  .xrt-white {\n\n    color: #fff;\n\n  }\n\n\n  \/* -------------------------------------------------------\n     SECOND LINE\n  ------------------------------------------------------- *\/\n\n  .xrt-line-2,\n  .xrt-line-2 .xrt-track {\n\n    line-height: 0.9;\n\n  }\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  \u003c!-- =========================================================\n     XRT SECTION\n========================================================= --\u003e\n\n\u003cdiv class=\"xrt-section\"\u003e\n\n  \u003c!-- BACKGROUND --\u003e\n\n  \u003cimg class=\"xrt-bg-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/Mobile-Boom-a-1.webp?v=1790946091\" alt=\"\"\u003e\n\n\n  \u003cdiv class=\"xrt-wrap\"\u003e\n\n\n    \u003c!-- =====================================================\n         LINE 1\n         MASSIVE SIZE\n    ====================================================== --\u003e\n\n    \u003cdiv class=\"xrt-line xrt-line-1\"\u003e\n\n      \u003cdiv class=\"xrt-track\"\u003e\n\n        \u003cdiv class=\"xrt-group\"\u003e\n\n          \u003cspan class=\"xrt-orange\"\u003e\n            massive size\n          \u003c\/span\u003e\n\n          \u003cspan class=\"xrt-orange\"\u003e\n            massive size\n          \u003c\/span\u003e\n\n          \u003cspan class=\"xrt-black\"\u003e\n            massive size\n          \u003c\/span\u003e\n\n          \u003cspan class=\"xrt-orange\"\u003e\n            massive size\n          \u003c\/span\u003e\n\n          \u003cspan class=\"xrt-black\"\u003e\n            massive size\n          \u003c\/span\u003e\n\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003c!-- =====================================================\n         LINE 2\n         MASSIVE OUTPUT\n    ====================================================== --\u003e\n\n   \u003cdiv class=\"xrt-line xrt-line-1\"\u003e\n  \u003cdiv class=\"xrt-track\"\u003e\n\n    \u003cdiv class=\"xrt-group\"\u003e\n\n      \u003cspan class=\"xrt-orange\"\u003e\n        massive output\n      \u003c\/span\u003e\n\n      \u003cspan class=\"xrt-orange\"\u003e\n        massive output\n      \u003c\/span\u003e\n\n      \u003cspan class=\"xrt-black\"\u003e\n        massive output\n      \u003c\/span\u003e\n\n      \u003cspan class=\"xrt-orange\"\u003e\n        massive output\n      \u003c\/span\u003e\n\n      \u003cspan class=\"xrt-black\"\u003e\n        massive output\n      \u003c\/span\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n  \u003c\/div\u003e\n\n\u003c\/div\u003e\n\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\/Mobile-Boom-a-2.webp?v=1790946090\" 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\/Boom-feature-mobile-1.jpg?v=1790946097\" 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\/Boom-feature-mobile-2.jpg?v=1790946097\" 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\/Boom-feature-mobile-3.jpg?v=1790946097\" 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\/Boom-feature-mobile-4.jpg?v=1790946098\" 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\/Boom-feature-mobile-5.jpg?v=1790946099\" 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\/Mobile-Boom-a-3.webp?v=1790946091\" 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\n  \/* =========================================================\n     SPEED CONTROLLERS\n  ========================================================= *\/\n\n  var SPEED_LINE_1 = 135;\n  var SPEED_LINE_2 = 145;\n\n\n  \/* =========================================================\n     SETTINGS\n  ========================================================= *\/\n\n  var MOBILE_MAX = 768;\n\n  var FIRST_RUN_TIME = 10000;\n  var FIRST_PAUSE_TIME = 3000;\n\n\n  \/* =========================================================\n     VARIABLES\n  ========================================================= *\/\n\n  var items = [];\n  var raf = null;\n\n  var lastTime = null;\n\n  var state = \"firstRun\";\n  var stateTime = 0;\n\n  var lastWidth = 0;\n\n\n  \/* =========================================================\n     BUILD LINES\n  ========================================================= *\/\n\n  function build() {\n\n    items = [];\n\n    var section =\n      document.querySelector(\".xrt-section\");\n\n    if (!section) return;\n\n    var lines =\n      section.querySelectorAll(\".xrt-line\");\n\n\n    for (\n      var i = 0;\n      i \u003c lines.length \u0026\u0026 i \u003c 2;\n      i++\n    ) {\n\n      var track =\n        lines[i].querySelector(\".xrt-track\");\n\n      if (!track) continue;\n\n\n      \/* Remove old cloned groups *\/\n\n      var old =\n        track.querySelectorAll(\".xrt-group\");\n\n      for (\n        var j = old.length - 1;\n        j \u003e 0;\n        j--\n      ) {\n\n        old[j].remove();\n\n      }\n\n\n      \/* First original group *\/\n\n      var first =\n        track.querySelector(\".xrt-group\");\n\n      if (!first) continue;\n\n\n      \/* Measure complete phrase group *\/\n\n      var groupWidth =\n        first.getBoundingClientRect().width;\n\n      if (!groupWidth) continue;\n\n\n      \/* Fill enough copies for continuous loop *\/\n\n      var screenWidth =\n        Math.max(\n          section.clientWidth,\n          window.innerWidth\n        );\n\n      var count =\n        Math.ceil(\n          screenWidth \/ groupWidth\n        ) + 6;\n\n\n      for (\n        var k = 1;\n        k \u003c count;\n        k++\n      ) {\n\n        var clone =\n          first.cloneNode(true);\n\n        clone.setAttribute(\n          \"aria-hidden\",\n          \"true\"\n        );\n\n        track.appendChild(clone);\n\n      }\n\n\n      items.push({\n\n        track: track,\n\n        width: groupWidth,\n\n        \/* Line 1 = right → left\n           Line 2 = left → right *\/\n\n        direction:\n          i === 0\n            ? \"right\"\n            : \"left\",\n\n        lineNumber: i + 1,\n\n        progress: 0\n\n      });\n\n    }\n\n  }\n\n\n  \/* =========================================================\n     SPEED\n  ========================================================= *\/\n\n  function getSpeed(n) {\n\n    return n === 1\n      ? SPEED_LINE_1\n      : SPEED_LINE_2;\n\n  }\n\n\n  \/* =========================================================\n     UPDATE POSITIONS\n  ========================================================= *\/\n\n  function updatePositions(delta) {\n\n    items.forEach(function (item) {\n\n      item.progress =\n        (\n          item.progress +\n          getSpeed(item.lineNumber) *\n          delta \/ 1000\n        ) % item.width;\n\n\n      var x;\n\n\n      \/* RIGHT → LEFT *\/\n\n      if (\n        item.direction === \"right\"\n      ) {\n\n        x =\n          -item.progress;\n\n      }\n\n\n      \/* LEFT → RIGHT *\/\n\n      else {\n\n        x =\n          -item.width +\n          item.progress;\n\n      }\n\n\n      item.track.style.transform =\n        \"translate3d(\" +\n        x +\n        \"px,0,0)\";\n\n    });\n\n  }\n\n\n  \/* =========================================================\n     ANIMATION\n  ========================================================= *\/\n\n  function animate(time) {\n\n    if (lastTime === null) {\n\n      lastTime = time;\n\n    }\n\n\n    var delta =\n      Math.min(\n        time - lastTime,\n        100\n      );\n\n    lastTime = time;\n\n\n    \/* FIRST 10 SECONDS *\/\n\n    if (\n      state === \"firstRun\"\n    ) {\n\n      stateTime += delta;\n\n\n      if (\n        stateTime \u003e=\n        FIRST_RUN_TIME\n      ) {\n\n        state =\n          \"firstPause\";\n\n        stateTime = 0;\n\n      }\n\n      else {\n\n        updatePositions(delta);\n\n      }\n\n    }\n\n\n    \/* 3 SECOND PAUSE *\/\n\n    else if (\n      state === \"firstPause\"\n    ) {\n\n      stateTime += delta;\n\n\n      if (\n        stateTime \u003e=\n        FIRST_PAUSE_TIME\n      ) {\n\n        state =\n          \"forever\";\n\n        stateTime = 0;\n\n      }\n\n    }\n\n\n    \/* FOREVER LOOP *\/\n\n    else {\n\n      updatePositions(delta);\n\n    }\n\n\n    raf =\n      requestAnimationFrame(\n        animate\n      );\n\n  }\n\n\n  \/* =========================================================\n     START\n  ========================================================= *\/\n\n  function start() {\n\n    if (raf) {\n\n      cancelAnimationFrame(\n        raf\n      );\n\n      raf = null;\n\n    }\n\n\n    \/* Mobile only *\/\n\n    if (\n      window.innerWidth \u003e\n      MOBILE_MAX\n    ) {\n\n      return;\n\n    }\n\n\n    lastWidth =\n      window.innerWidth;\n\n\n    state =\n      \"firstRun\";\n\n    stateTime = 0;\n    lastTime = null;\n\n\n    build();\n\n\n    if (!items.length) {\n\n      return;\n\n    }\n\n\n    \/* Initial positions *\/\n\n    items.forEach(\n      function (item) {\n\n        item.progress = 0;\n\n\n        \/* Line 1 *\/\n\n        if (\n          item.direction ===\n          \"right\"\n        ) {\n\n          item.track.style.transform =\n            \"translate3d(0,0,0)\";\n\n        }\n\n\n        \/* Line 2 *\/\n\n        else {\n\n          item.track.style.transform =\n            \"translate3d(\" +\n            (-item.width) +\n            \"px,0,0)\";\n\n        }\n\n      }\n    );\n\n\n    raf =\n      requestAnimationFrame(\n        animate\n      );\n\n  }\n\n\n  \/* =========================================================\n     INITIALIZE\n  ========================================================= *\/\n\n  function init() {\n\n    if (\n      document.fonts \u0026\u0026\n      document.fonts.ready\n    ) {\n\n      document.fonts.ready.then(\n        start\n      );\n\n    }\n\n    else {\n\n      start();\n\n    }\n\n  }\n\n\n  if (\n    document.readyState ===\n    \"complete\"\n  ) {\n\n    init();\n\n  }\n\n  else {\n\n    window.addEventListener(\n      \"load\",\n      init\n    );\n\n  }\n\n\n  \/* =========================================================\n     RESIZE\n  ========================================================= *\/\n\n  var rt;\n\n\n  function handleResize() {\n\n    clearTimeout(rt);\n\n\n    rt =\n      setTimeout(\n        function () {\n\n          if (\n            window.innerWidth !==\n            lastWidth\n          ) {\n\n            start();\n\n          }\n\n        },\n        200\n      );\n\n  }\n\n\n  window.addEventListener(\n    \"resize\",\n    handleResize\n  );\n\n\n  window.addEventListener(\n    \"orientationchange\",\n    handleResize\n  );\n\n\n  \/* =========================================================\n     PUBLIC SPEED CONTROLLERS\n  ========================================================= *\/\n\n  window.setXrtSpeed1 =\n    function (s) {\n\n      s = Number(s);\n\n      if (\n        !isNaN(s) \u0026\u0026\n        s \u003e 0\n      ) {\n\n        SPEED_LINE_1 = s;\n\n      }\n\n    };\n\n\n  window.setXrtSpeed2 =\n    function (s) {\n\n      s = Number(s);\n\n      if (\n        !isNaN(s) \u0026\u0026\n        s \u003e 0\n      ) {\n\n        SPEED_LINE_2 = s;\n\n      }\n\n    };\n\n})();\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":54544188866878,"sku":null,"price":0.0,"currency_code":"INR","in_stock":false}],"url":"https:\/\/acwo.com\/products\/carniwal-boom","provider":"ACwO","version":"1.0","type":"link"}