{"product_id":"zesto-flexrack-40cm","title":"Zesto FlexRack 40cm","description":"\u003cstyle\u003e\n\n\/* =========================================================\n   ZESTO FLEXRACK 40CM\n   COMPLETE FINAL PRODUCT SECTION\n   ========================================================= *\/\n\n\n\/* HIDE SHOPIFY \"BUY IT NOW\" BUTTON *\/\n\n.shopify-payment-button,\nshopify-accelerated-checkout {\n  display: none !important;\n}\n\n\n\/* MAIN SECTION *\/\n\n.zf-section {\n  --zf-cream: #f5efe6;\n  --zf-cream-light: #fbf8f3;\n  --zf-white: #fffdfa;\n  --zf-charcoal: #1d1c1a;\n  --zf-body: #544f49;\n  --zf-muted: #888076;\n  --zf-taupe: #a49b8f;\n  --zf-orange: #f26338;\n  --zf-orange-dark: #df5129;\n  --zf-border: rgba(43, 38, 32, 0.10);\n\n  width: 100%;\n  max-width: 1200px;\n  margin: 0 auto;\n  padding: 65px 22px 85px;\n  color: var(--zf-charcoal);\n  font-family: var(--font-body-family, Arial, sans-serif);\n}\n\n.zf-section * {\n  box-sizing: border-box;\n}\n\n.zf-section h2,\n.zf-section h3 {\n  font-family: var(--font-heading-family, Georgia, serif);\n}\n\n\n\/* SCROLL ANIMATION *\/\n\n.zf-reveal {\n  opacity: 0;\n  transform: translateY(24px);\n  transition:\n    opacity .7s cubic-bezier(.2,.7,.2,1),\n    transform .7s cubic-bezier(.2,.7,.2,1);\n}\n\n.zf-reveal.zf-visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\n\/* HERO *\/\n\n.zf-hero {\n  position: relative;\n  overflow: hidden;\n  padding: 72px 64px;\n  border-radius: 30px;\n\n  background:\n    radial-gradient(\n      circle at 92% 8%,\n      rgba(242,99,56,.11),\n      transparent 30%\n    ),\n    linear-gradient(\n      135deg,\n      #f8f2e9 0%,\n      #fffdfa 58%,\n      #f2ebe1 100%\n    );\n\n  border: 1px solid var(--zf-border);\n}\n\n.zf-hero::after {\n  content: \"\";\n  position: absolute;\n  width: 330px;\n  height: 330px;\n  right: -145px;\n  bottom: -180px;\n  border-radius: 50%;\n  background: rgba(164,155,143,.08);\n}\n\n.zf-eyebrow {\n  position: relative;\n  z-index: 2;\n  display: inline-flex;\n  align-items: center;\n  gap: 9px;\n  margin-bottom: 23px;\n  font-size: 13px;\n  line-height: 1.3;\n  font-weight: 800;\n  letter-spacing: .11em;\n  text-transform: uppercase;\n}\n\n.zf-eyebrow-dot {\n  width: 8px;\n  height: 8px;\n  border-radius: 100%;\n  background: var(--zf-orange);\n  animation: zf-pulse 2.3s infinite;\n}\n\n.zf-hero h2 {\n  position: relative;\n  z-index: 2;\n  max-width: 780px;\n  margin: 0;\n  font-size: clamp(43px, 6.3vw, 76px);\n  line-height: .98;\n  letter-spacing: -.045em;\n  font-weight: 500;\n}\n\n.zf-hero h2 span {\n  color: var(--zf-orange);\n}\n\n.zf-hero-copy {\n  position: relative;\n  z-index: 2;\n  max-width: 690px;\n  margin-top: 27px;\n  color: var(--zf-body);\n  font-size: 17px;\n  line-height: 1.8;\n}\n\n.zf-hero-copy strong {\n  color: var(--zf-charcoal);\n}\n\n.zf-quick-benefits {\n  position: relative;\n  z-index: 2;\n  display: flex;\n  flex-wrap: wrap;\n  gap: 9px;\n  margin-top: 30px;\n}\n\n.zf-quick-benefit {\n  padding: 11px 16px;\n  border-radius: 100px;\n  border: 1px solid var(--zf-border);\n  background: rgba(255,255,255,.74);\n  font-size: 13px;\n  font-weight: 600;\n}\n\n.zf-quick-benefit::before {\n  content: \"✓\";\n  margin-right: 7px;\n  color: var(--zf-orange);\n}\n\n\n\/* ORANGE SMALL HEADINGS *\/\n\n.zf-kicker {\n  margin-bottom: 14px;\n  color: var(--zf-orange);\n  font-size: 13px;\n  line-height: 1.4;\n  font-weight: 800;\n  letter-spacing: .11em;\n  text-transform: uppercase;\n}\n\n\n\/* TRANSFORMATION *\/\n\n.zf-transformation {\n  max-width: 820px;\n  margin: 0 auto;\n  padding: 78px 20px 52px;\n  text-align: center;\n}\n\n.zf-transformation h3,\n.zf-section-title {\n  margin: 0;\n  font-size: clamp(32px, 4.6vw, 49px);\n  line-height: 1.08;\n  letter-spacing: -.03em;\n  font-weight: 500;\n}\n\n.zf-transformation p {\n  max-width: 680px;\n  margin: 20px auto 0;\n  color: var(--zf-body);\n  font-size: 16px;\n  line-height: 1.8;\n}\n\n\n\/* BEFORE \/ AFTER *\/\n\n.zf-before-after {\n  display: grid;\n  grid-template-columns: 1fr auto 1fr;\n  gap: 18px;\n  align-items: stretch;\n  margin-bottom: 68px;\n}\n\n.zf-ba-card {\n  padding: 36px;\n  border-radius: 25px;\n  border: 1px solid var(--zf-border);\n}\n\n.zf-before {\n  background: #f3ede4;\n}\n\n.zf-after {\n  background: var(--zf-charcoal);\n  color: #fff;\n}\n\n.zf-ba-label {\n  margin-bottom: 19px;\n  color: var(--zf-muted);\n  font-size: 12px;\n  font-weight: 800;\n  letter-spacing: .13em;\n  text-transform: uppercase;\n}\n\n.zf-after .zf-ba-label {\n  color: var(--zf-orange);\n}\n\n.zf-ba-card h4 {\n  margin: 0 0 10px;\n  font-size: 23px;\n  line-height: 1.25;\n}\n\n.zf-ba-card p {\n  margin: 0;\n  color: var(--zf-body);\n  font-size: 14px;\n  line-height: 1.7;\n}\n\n.zf-after p {\n  color: rgba(255,255,255,.70);\n}\n\n.zf-ba-arrow {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 48px;\n  color: var(--zf-orange);\n  font-size: 27px;\n}\n\n\n\/* BENEFITS *\/\n\n.zf-benefits-header {\n  max-width: 690px;\n  margin-bottom: 30px;\n}\n\n.zf-benefit-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 14px;\n}\n\n.zf-benefit-card {\n  position: relative;\n  overflow: hidden;\n  min-height: 225px;\n  padding: 30px;\n  background: var(--zf-white);\n  border: 1px solid var(--zf-border);\n  border-radius: 22px;\n\n  transition:\n    transform .35s cubic-bezier(.2,.8,.2,1),\n    box-shadow .35s ease,\n    border-color .35s ease;\n}\n\n.zf-benefit-card:hover {\n  transform: translateY(-6px);\n  border-color: rgba(242,99,56,.22);\n  box-shadow: 0 20px 45px rgba(47,39,30,.07);\n}\n\n.zf-number {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 40px;\n  height: 40px;\n  margin-bottom: 27px;\n  border-radius: 50%;\n  background: var(--zf-cream);\n  color: var(--zf-orange);\n  font-size: 12px;\n  font-weight: 800;\n  transition: all .3s ease;\n}\n\n.zf-benefit-card:hover .zf-number {\n  background: var(--zf-orange);\n  color: #fff;\n  transform: rotate(-6deg) scale(1.05);\n}\n\n.zf-benefit-card h4 {\n  margin: 0 0 10px;\n  font-size: 18px;\n  line-height: 1.3;\n}\n\n.zf-benefit-card p {\n  margin: 0;\n  color: var(--zf-body);\n  font-size: 14px;\n  line-height: 1.7;\n}\n\n\n\/* DARK FEATURE *\/\n\n.zf-feature {\n  position: relative;\n  overflow: hidden;\n  margin: 68px 0;\n  padding: 58px;\n  border-radius: 28px;\n  background: var(--zf-charcoal);\n  color: #fff;\n}\n\n.zf-feature::after {\n  content: \"\";\n  position: absolute;\n  width: 430px;\n  height: 430px;\n  right: -190px;\n  top: -230px;\n  border-radius: 100%;\n  background: rgba(242,99,56,.16);\n}\n\n.zf-feature-inner {\n  position: relative;\n  z-index: 2;\n  display: grid;\n  grid-template-columns: 1.25fr .75fr;\n  gap: 50px;\n  align-items: center;\n}\n\n.zf-feature h3 {\n  max-width: 600px;\n  margin: 0 0 17px;\n  font-size: clamp(34px, 4.5vw, 52px);\n  line-height: 1.05;\n  letter-spacing: -.03em;\n  font-weight: 500;\n}\n\n.zf-feature h3 span {\n  color: var(--zf-orange);\n}\n\n.zf-feature-copy {\n  max-width: 600px;\n  margin: 0;\n  color: rgba(255,255,255,.70);\n  font-size: 15px;\n  line-height: 1.8;\n}\n\n.zf-capacity {\n  padding: 34px 20px;\n  text-align: center;\n  border-radius: 23px;\n  background: rgba(255,255,255,.07);\n  border: 1px solid rgba(255,255,255,.12);\n}\n\n.zf-capacity-number {\n  font-size: clamp(48px, 6vw, 68px);\n  line-height: 1;\n  font-weight: 650;\n  letter-spacing: -.05em;\n}\n\n.zf-capacity-label {\n  margin-top: 12px;\n  color: rgba(255,255,255,.60);\n  font-size: 12px;\n  line-height: 1.4;\n  font-weight: 700;\n  letter-spacing: .10em;\n  text-transform: uppercase;\n}\n\n\n\/* ROOMS *\/\n\n.zf-rooms-header {\n  max-width: 700px;\n  margin-bottom: 28px;\n}\n\n.zf-room-grid {\n  display: grid;\n  grid-template-columns: repeat(5, 1fr);\n  gap: 10px;\n}\n\n.zf-room {\n  min-height: 155px;\n  padding: 29px 18px;\n  border-radius: 20px;\n  background: var(--zf-cream);\n\n  transition:\n    transform .3s ease,\n    background .3s ease;\n}\n\n.zf-room:hover {\n  transform: translateY(-5px);\n  background: #eee5da;\n}\n\n.zf-room-line {\n  width: 23px;\n  height: 2px;\n  margin-bottom: 23px;\n  background: var(--zf-orange);\n}\n\n.zf-room strong {\n  display: block;\n  margin-bottom: 7px;\n  font-size: 15px;\n}\n\n.zf-room span {\n  display: block;\n  color: var(--zf-body);\n  font-size: 12px;\n  line-height: 1.55;\n}\n\n\n\/* SIZE + INCLUDED *\/\n\n.zf-details {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 14px;\n  margin-top: 68px;\n}\n\n.zf-details-box {\n  padding: 36px;\n  background: var(--zf-white);\n  border: 1px solid var(--zf-border);\n  border-radius: 24px;\n}\n\n.zf-details-box h3 {\n  margin: 0 0 25px;\n  font-size: 26px;\n  font-weight: 500;\n}\n\n.zf-spec-row {\n  display: flex;\n  justify-content: space-between;\n  gap: 20px;\n  padding: 15px 0;\n  border-bottom: 1px solid var(--zf-border);\n  font-size: 14px;\n}\n\n.zf-spec-row:last-child {\n  border-bottom: none;\n}\n\n.zf-spec-row span {\n  color: var(--zf-muted);\n}\n\n.zf-spec-row strong {\n  color: var(--zf-charcoal);\n}\n\n.zf-included {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  margin: 17px 0;\n  color: var(--zf-body);\n  font-size: 14px;\n}\n\n.zf-check {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 26px;\n  height: 26px;\n  min-width: 26px;\n  border-radius: 50%;\n  background: rgba(242,99,56,.10);\n  color: var(--zf-orange);\n  font-size: 12px;\n  font-weight: 800;\n}\n\n\n\/* INSTALLATION NOTE *\/\n\n.zf-install {\n  display: flex;\n  align-items: flex-start;\n  gap: 17px;\n  margin-top: 15px;\n  padding: 26px 28px;\n  border-radius: 20px;\n  background: #f2ece3;\n}\n\n.zf-install-mark {\n  flex: 0 0 auto;\n  color: var(--zf-orange);\n  font-size: 24px;\n  line-height: 1;\n}\n\n.zf-install strong {\n  display: block;\n  margin-bottom: 5px;\n  font-size: 14px;\n}\n\n.zf-install p {\n  margin: 0;\n  color: var(--zf-body);\n  font-size: 13px;\n  line-height: 1.7;\n}\n\n\n\/* FINAL CONVERSION *\/\n\n.zf-final {\n  position: relative;\n  overflow: hidden;\n  margin-top: 65px;\n  padding: 68px 35px;\n  text-align: center;\n  border-radius: 30px;\n\n  background:\n    radial-gradient(\n      circle at 15% 100%,\n      rgba(242,99,56,.10),\n      transparent 34%\n    ),\n    var(--zf-cream);\n}\n\n.zf-final h3 {\n  max-width: 760px;\n  margin: 0 auto;\n  font-size: clamp(34px, 5vw, 54px);\n  line-height: 1.06;\n  letter-spacing: -.035em;\n  font-weight: 500;\n}\n\n.zf-final p {\n  max-width: 630px;\n  margin: 20px auto 0;\n  color: var(--zf-body);\n  font-size: 16px;\n  line-height: 1.75;\n}\n\n\n\/* BOTTOM ADD TO CART *\/\n\n.zf-cta {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n\n  width: 100%;\n  max-width: 520px;\n  min-height: 56px;\n\n  margin: 31px auto 0;\n  padding: 16px 30px;\n\n  border: none;\n  border-radius: 100px;\n  cursor: pointer;\n\n  background: var(--zf-orange);\n  color: #fff;\n\n  font-family: inherit;\n  font-size: 13px;\n  font-weight: 800;\n  letter-spacing: .06em;\n\n  transition:\n    transform .25s ease,\n    background .25s ease,\n    box-shadow .25s ease;\n}\n\n.zf-cta:hover {\n  background: var(--zf-orange-dark);\n  color: #fff;\n  transform: translateY(-2px);\n  box-shadow: 0 14px 30px rgba(242,99,56,.23);\n}\n\n.zf-cta:active {\n  transform: translateY(0);\n}\n\n.zf-final-trust {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  gap: 10px 23px;\n  margin-top: 23px;\n  color: var(--zf-body);\n  font-size: 12px;\n  font-weight: 600;\n}\n\n.zf-final-trust span::before {\n  content: \"✓\";\n  margin-right: 6px;\n  color: var(--zf-orange);\n  font-weight: 800;\n}\n\n\n\/* ANIMATION *\/\n\n@keyframes zf-pulse {\n\n  0%, 100% {\n    box-shadow: 0 0 0 0 rgba(242,99,56,.35);\n  }\n\n  50% {\n    box-shadow: 0 0 0 7px rgba(242,99,56,0);\n  }\n\n}\n\n\n\/* TABLET *\/\n\n@media screen and (max-width: 900px) {\n\n  .zf-benefit-grid {\n    grid-template-columns: repeat(2, 1fr);\n  }\n\n  .zf-room-grid {\n    grid-template-columns: repeat(2, 1fr);\n  }\n\n  .zf-details,\n  .zf-feature-inner {\n    grid-template-columns: 1fr;\n  }\n\n  .zf-capacity {\n    max-width: 340px;\n  }\n\n}\n\n\n\/* MOBILE *\/\n\n@media screen and (max-width: 640px) {\n\n  .zf-section {\n    padding: 35px 14px 60px;\n  }\n\n  .zf-hero {\n    padding: 47px 25px;\n    border-radius: 24px;\n  }\n\n  .zf-hero h2 {\n    font-size: 43px;\n  }\n\n  .zf-hero-copy {\n    font-size: 15px;\n    line-height: 1.7;\n  }\n\n  .zf-eyebrow,\n  .zf-kicker {\n    font-size: 12px;\n    letter-spacing: .08em;\n  }\n\n  .zf-transformation {\n    padding: 60px 12px 40px;\n  }\n\n  .zf-before-after {\n    grid-template-columns: 1fr;\n  }\n\n  .zf-ba-arrow {\n    width: 100%;\n    height: 26px;\n    transform: rotate(90deg);\n  }\n\n  .zf-benefit-grid {\n    grid-template-columns: 1fr;\n  }\n\n  .zf-benefit-card {\n    min-height: auto;\n  }\n\n  .zf-feature {\n    padding: 41px 25px;\n    border-radius: 24px;\n  }\n\n  .zf-room-grid {\n    grid-template-columns: repeat(2, 1fr);\n  }\n\n  .zf-details {\n    grid-template-columns: 1fr;\n  }\n\n  .zf-details-box {\n    padding: 28px 23px;\n  }\n\n  .zf-final {\n    padding: 52px 23px;\n    border-radius: 24px;\n  }\n\n  .zf-cta {\n    max-width: none;\n  }\n\n}\n\n\n\/* ACCESSIBILITY *\/\n\n@media (prefers-reduced-motion: reduce) {\n\n  .zf-reveal,\n  .zf-benefit-card,\n  .zf-room,\n  .zf-cta,\n  .zf-eyebrow-dot {\n    animation: none !important;\n    transition: none !important;\n  }\n\n  .zf-reveal {\n    opacity: 1;\n    transform: none;\n  }\n\n}\n\n\u003c\/style\u003e\n\n\n\u003csection class=\"zf-section\"\u003e\n\n\n  \u003c!-- HERO --\u003e\n\n  \u003cdiv class=\"zf-hero zf-reveal\"\u003e\n\n    \u003cdiv class=\"zf-eyebrow\"\u003e\n      \u003cspan class=\"zf-eyebrow-dot\"\u003e\u003c\/span\u003e\n      Made for real life\n    \u003c\/div\u003e\n\n    \u003ch2\u003e\n      Clear the clutter.\u003cbr\u003e\n      \u003cspan\u003eLove your space again.\u003c\/span\u003e\n    \u003c\/h2\u003e\n\n    \u003cdiv class=\"zf-hero-copy\"\u003e\n\n      Meet the \u003cstrong\u003eZesto FlexRack 40cm\u003c\/strong\u003e — the simple way to\n      create more usable space in your bathroom, kitchen or pantry\n      without drilling a single hole.\n\n      \u003cbr\u003e\u003cbr\u003e\n\n      Keep the things you reach for every day beautifully organised,\n      easy to find and off your surfaces.\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"zf-quick-benefits\"\u003e\n\n      \u003cdiv class=\"zf-quick-benefit\"\u003e\n        No drilling\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"zf-quick-benefit\"\u003e\n        Installs in minutes\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"zf-quick-benefit\"\u003e\n        Repositionable\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"zf-quick-benefit\"\u003e\n        Rust-resistant\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n\n  \u003c!-- TRANSFORMATION --\u003e\n\n  \u003cdiv class=\"zf-transformation zf-reveal\"\u003e\n\n    \u003cdiv class=\"zf-kicker\"\u003e\n      A little more room changes everything\n    \u003c\/div\u003e\n\n    \u003ch3\u003e\n      From cluttered to calm.\n    \u003c\/h3\u003e\n\n    \u003cp\u003e\n      Bottles around the basin. Spices competing for counter space.\n      Shower essentials with nowhere to go. The FlexRack gives the little\n      things that make a space feel messy a proper home — creating an\n      organised room that feels calmer, cleaner and more considered.\n    \u003c\/p\u003e\n\n  \u003c\/div\u003e\n\n\n  \u003c!-- BEFORE \/ AFTER --\u003e\n\n  \u003cdiv class=\"zf-before-after zf-reveal\"\u003e\n\n    \u003cdiv class=\"zf-ba-card zf-before\"\u003e\n\n      \u003cdiv class=\"zf-ba-label\"\u003e\n        Before\n      \u003c\/div\u003e\n\n      \u003ch4\u003e\n        Surfaces that always feel busy.\n      \u003c\/h4\u003e\n\n      \u003cp\u003e\n        Everyday essentials slowly take over your counters,\n        shower and limited storage space.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003cdiv class=\"zf-ba-arrow\"\u003e\n      →\n    \u003c\/div\u003e\n\n\n    \u003cdiv class=\"zf-ba-card zf-after\"\u003e\n\n      \u003cdiv class=\"zf-ba-label\"\u003e\n        After\n      \u003c\/div\u003e\n\n      \u003ch4\u003e\n        Everything has its place.\n      \u003c\/h4\u003e\n\n      \u003cp\u003e\n        Your essentials stay within reach while your surfaces\n        stay beautifully clear.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n\n  \u003c!-- BENEFITS --\u003e\n\n  \u003cdiv class=\"zf-benefits-header zf-reveal\"\u003e\n\n    \u003cdiv class=\"zf-kicker\"\u003e\n      Why you'll love it\n    \u003c\/div\u003e\n\n    \u003ch3 class=\"zf-section-title\"\u003e\n      One shelf. More space. Less clutter.\n    \u003c\/h3\u003e\n\n  \u003c\/div\u003e\n\n\n  \u003cdiv class=\"zf-benefit-grid\"\u003e\n\n\n    \u003cdiv class=\"zf-benefit-card zf-reveal\"\u003e\n\n      \u003cdiv class=\"zf-number\"\u003e01\u003c\/div\u003e\n\n      \u003ch4\u003e\n        Clear Your Surfaces\n      \u003c\/h4\u003e\n\n      \u003cp\u003e\n        Keep bottles, jars and everyday essentials neatly organised\n        and off your countertops.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003cdiv class=\"zf-benefit-card zf-reveal\"\u003e\n\n      \u003cdiv class=\"zf-number\"\u003e02\u003c\/div\u003e\n\n      \u003ch4\u003e\n        No Drilling. No Damage.\n      \u003c\/h4\u003e\n\n      \u003cp\u003e\n        Create useful wall storage without drilling through your\n        beautiful tiles or making permanent holes.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003cdiv class=\"zf-benefit-card zf-reveal\"\u003e\n\n      \u003cdiv class=\"zf-number\"\u003e03\u003c\/div\u003e\n\n      \u003ch4\u003e\n        Up in Minutes\n      \u003c\/h4\u003e\n\n      \u003cp\u003e\n        No tools. No handyman. The twist-lock suction system makes\n        installation beautifully simple.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003cdiv class=\"zf-benefit-card zf-reveal\"\u003e\n\n      \u003cdiv class=\"zf-number\"\u003e04\u003c\/div\u003e\n\n      \u003ch4\u003e\n        Move It When You Want\n      \u003c\/h4\u003e\n\n      \u003cp\u003e\n        Changed your mind? Reposition your FlexRack when your space\n        or storage needs change.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003cdiv class=\"zf-benefit-card zf-reveal\"\u003e\n\n      \u003cdiv class=\"zf-number\"\u003e05\u003c\/div\u003e\n\n      \u003ch4\u003e\n        Made for Wet Spaces\n      \u003c\/h4\u003e\n\n      \u003cp\u003e\n        Rust-resistant aluminium and drainage slots make it ideal\n        for bathrooms, showers and kitchens.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003cdiv class=\"zf-benefit-card zf-reveal\"\u003e\n\n      \u003cdiv class=\"zf-number\"\u003e06\u003c\/div\u003e\n\n      \u003ch4\u003e\n        More Than a Shelf\n      \u003c\/h4\u003e\n\n      \u003cp\u003e\n        Removable hooks create extra hanging space for brushes,\n        utensils, cloths and everyday accessories.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n\n  \u003c\/div\u003e\n\n\n  \u003c!-- DARK FEATURE --\u003e\n\n  \u003cdiv class=\"zf-feature zf-reveal\"\u003e\n\n    \u003cdiv class=\"zf-feature-inner\"\u003e\n\n      \u003cdiv\u003e\n\n        \u003cdiv class=\"zf-kicker\"\u003e\n          Simple by design\n        \u003c\/div\u003e\n\n        \u003ch3\u003e\n          No drilling.\u003cbr\u003e\n          No damage.\u003cbr\u003e\n          \u003cspan\u003eMore space.\u003c\/span\u003e\n        \u003c\/h3\u003e\n\n        \u003cp class=\"zf-feature-copy\"\u003e\n\n          The FlexRack uses a strong twist-lock suction mounting system\n          to create useful storage without drilling into your walls or tiles.\n\n          Simply position it, secure it and turn unused wall space\n          into practical everyday storage.\n\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n\n      \u003cdiv class=\"zf-capacity\"\u003e\n\n        \u003cdiv class=\"zf-capacity-number\"\u003e\n          ±3kg\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"zf-capacity-label\"\u003e\n          Everyday holding capacity\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n\n  \u003c!-- ROOMS --\u003e\n\n  \u003cdiv class=\"zf-rooms-header zf-reveal\"\u003e\n\n    \u003cdiv class=\"zf-kicker\"\u003e\n      One FlexRack. So many possibilities.\n    \u003c\/div\u003e\n\n    \u003ch3 class=\"zf-section-title\"\u003e\n      Made for the spaces you use every day.\n    \u003c\/h3\u003e\n\n  \u003c\/div\u003e\n\n\n  \u003cdiv class=\"zf-room-grid\"\u003e\n\n\n    \u003cdiv class=\"zf-room zf-reveal\"\u003e\n\n      \u003cdiv class=\"zf-room-line\"\u003e\u003c\/div\u003e\n\n      \u003cstrong\u003e\n        Bathroom\n      \u003c\/strong\u003e\n\n      \u003cspan\u003e\n        Skincare, toiletries and everyday essentials.\n      \u003c\/span\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003cdiv class=\"zf-room zf-reveal\"\u003e\n\n      \u003cdiv class=\"zf-room-line\"\u003e\u003c\/div\u003e\n\n      \u003cstrong\u003e\n        Shower\n      \u003c\/strong\u003e\n\n      \u003cspan\u003e\n        Shampoo, conditioner, soaps and razors.\n      \u003c\/span\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003cdiv class=\"zf-room zf-reveal\"\u003e\n\n      \u003cdiv class=\"zf-room-line\"\u003e\u003c\/div\u003e\n\n      \u003cstrong\u003e\n        Kitchen\n      \u003c\/strong\u003e\n\n      \u003cspan\u003e\n        Spices, oils, sauces and cooking essentials.\n      \u003c\/span\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003cdiv class=\"zf-room zf-reveal\"\u003e\n\n      \u003cdiv class=\"zf-room-line\"\u003e\u003c\/div\u003e\n\n      \u003cstrong\u003e\n        Pantry\n      \u003c\/strong\u003e\n\n      \u003cspan\u003e\n        Jars, sauces, tins and smaller items.\n      \u003c\/span\u003e\n\n    \u003c\/div\u003e\n\n\n    \u003cdiv class=\"zf-room zf-reveal\"\u003e\n\n      \u003cdiv class=\"zf-room-line\"\u003e\u003c\/div\u003e\n\n      \u003cstrong\u003e\n        Laundry\n      \u003c\/strong\u003e\n\n      \u003cspan\u003e\n        Cleaning products, brushes and supplies.\n      \u003c\/span\u003e\n\n    \u003c\/div\u003e\n\n\n  \u003c\/div\u003e\n\n\n  \u003c!-- SIZE + INCLUDED --\u003e\n\n  \u003cdiv class=\"zf-details zf-reveal\"\u003e\n\n\n    \u003cdiv class=\"zf-details-box\"\u003e\n\n      \u003ch3\u003e\n        Size \u0026amp; Details\n      \u003c\/h3\u003e\n\n\n      \u003cdiv class=\"zf-spec-row\"\u003e\n        \u003cspan\u003eWidth\u003c\/span\u003e\n        \u003cstrong\u003e40 cm\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n\n      \u003cdiv class=\"zf-spec-row\"\u003e\n        \u003cspan\u003eDepth\u003c\/span\u003e\n        \u003cstrong\u003e12 cm\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n\n      \u003cdiv class=\"zf-spec-row\"\u003e\n        \u003cspan\u003eHeight\u003c\/span\u003e\n        \u003cstrong\u003e4 cm\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n\n      \u003cdiv class=\"zf-spec-row\"\u003e\n        \u003cspan\u003eHolding capacity\u003c\/span\u003e\n        \u003cstrong\u003e±3 kg\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n\n      \u003cdiv class=\"zf-spec-row\"\u003e\n        \u003cspan\u003eMaterial\u003c\/span\u003e\n        \u003cstrong\u003eAluminium\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n\n    \u003c\/div\u003e\n\n\n    \u003cdiv class=\"zf-details-box\"\u003e\n\n      \u003ch3\u003e\n        What's Included\n      \u003c\/h3\u003e\n\n\n      \u003cdiv class=\"zf-included\"\u003e\n\n        \u003cspan class=\"zf-check\"\u003e✓\u003c\/span\u003e\n\n        \u003cspan\u003e\n          1 × Zesto FlexRack 40cm\n        \u003c\/span\u003e\n\n      \u003c\/div\u003e\n\n\n      \u003cdiv class=\"zf-included\"\u003e\n\n        \u003cspan class=\"zf-check\"\u003e✓\u003c\/span\u003e\n\n        \u003cspan\u003e\n          2 × Suction-lock mounting pads\n        \u003c\/span\u003e\n\n      \u003c\/div\u003e\n\n\n      \u003cdiv class=\"zf-included\"\u003e\n\n        \u003cspan class=\"zf-check\"\u003e✓\u003c\/span\u003e\n\n        \u003cspan\u003e\n          1 × Removable set of hanging hooks\n        \u003c\/span\u003e\n\n      \u003c\/div\u003e\n\n\n    \u003c\/div\u003e\n\n\n  \u003c\/div\u003e\n\n\n  \u003c!-- INSTALLATION NOTE --\u003e\n\n  \u003cdiv class=\"zf-install zf-reveal\"\u003e\n\n    \u003cdiv class=\"zf-install-mark\"\u003e\n      +\n    \u003c\/div\u003e\n\n    \u003cdiv\u003e\n\n      \u003cstrong\u003e\n        For the strongest hold\n      \u003c\/strong\u003e\n\n      \u003cp\u003e\n        Install your FlexRack on a clean, dry, smooth and non-porous\n        surface. Smooth tiles and glass are ideal. Make sure both\n        twist-lock mounts are fully secured before loading the shelf.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n\n  \u003c!-- FINAL SALES SECTION --\u003e\n\n  \u003cdiv class=\"zf-final zf-reveal\"\u003e\n\n    \u003cdiv class=\"zf-kicker\"\u003e\n      Clear space. Clear mind.\n    \u003c\/div\u003e\n\n    \u003ch3\u003e\n      Sometimes your home doesn't need more space.\n      It just needs to use it better.\n    \u003c\/h3\u003e\n\n    \u003cp\u003e\n      Give those everyday essentials their own place and enjoy a\n      bathroom, pantry or kitchen that instantly feels more organised,\n      considered and calm.\n    \u003c\/p\u003e\n\n\n    \u003cbutton type=\"button\" class=\"zf-cta\" id=\"zf-bottom-buy\"\u003e\n      ADD TO CART\n    \u003c\/button\u003e\n\n\n    \u003cdiv class=\"zf-final-trust\"\u003e\n\n      \u003cspan\u003e\n        No drilling required\n      \u003c\/span\u003e\n\n      \u003cspan\u003e\n        Easy installation\n      \u003c\/span\u003e\n\n      \u003cspan\u003e\n        Repositionable\n      \u003c\/span\u003e\n\n      \u003cspan\u003e\n        Made for real life\n      \u003c\/span\u003e\n\n    \u003c\/div\u003e\n\n\n  \u003c\/div\u003e\n\n\n\u003c\/section\u003e\n\n\n\u003cscript\u003e\n(function() {\n\n\n  \/* SCROLL ANIMATIONS *\/\n\n  const items = document.querySelectorAll('.zf-reveal');\n\n\n  if ('IntersectionObserver' in window) {\n\n    const observer = new IntersectionObserver(\n\n      function(entries) {\n\n        entries.forEach(function(entry) {\n\n          if (entry.isIntersecting) {\n\n            entry.target.classList.add('zf-visible');\n\n            observer.unobserve(entry.target);\n\n          }\n\n        });\n\n      },\n\n      {\n        threshold: 0.10,\n        rootMargin: '0px 0px -30px 0px'\n      }\n\n    );\n\n\n    items.forEach(function(item) {\n\n      observer.observe(item);\n\n    });\n\n  }\n\n  else {\n\n    items.forEach(function(item) {\n\n      item.classList.add('zf-visible');\n\n    });\n\n  }\n\n\n\n  \/* BOTTOM ADD TO CART BUTTON *\/\n\n  const bottomButton = document.getElementById('zf-bottom-buy');\n\n\n  if (!bottomButton) {\n    return;\n  }\n\n\n  bottomButton.addEventListener('click', function() {\n\n\n    const productForms = Array.from(\n      document.querySelectorAll('form[action*=\"\/cart\/add\"]')\n    );\n\n\n    const mainProductForm = productForms.find(function(form) {\n\n      return !form.closest('.zf-section');\n\n    });\n\n\n    if (!mainProductForm) {\n\n      const productArea =\n        document.querySelector('.product__info-wrapper') ||\n        document.querySelector('.product__info-container') ||\n        document.querySelector('product-info');\n\n\n      if (productArea) {\n\n        productArea.scrollIntoView({\n          behavior: 'smooth',\n          block: 'center'\n        });\n\n      }\n\n      return;\n\n    }\n\n\n    const mainAddButton =\n      mainProductForm.querySelector('[name=\"add\"]') ||\n      mainProductForm.querySelector('button[type=\"submit\"]');\n\n\n    if (mainAddButton \u0026\u0026 !mainAddButton.disabled) {\n\n      mainAddButton.click();\n\n    }\n\n    else if (\n      typeof mainProductForm.requestSubmit === 'function'\n    ) {\n\n      mainProductForm.requestSubmit();\n\n    }\n\n\n  });\n\n\n})();\n\u003c\/script\u003e","brand":"The Flow","offers":[{"title":"Default Title","offer_id":53821994107104,"sku":null,"price":899.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0812\/6624\/5856\/files\/40.png?v=1787057135","url":"https:\/\/zesto.co.za\/products\/zesto-flexrack-40cm","provider":"Zesto","version":"1.0","type":"link"}