{"product_id":"thermotech™-instantflow-instant-water-heater","title":"ThermoTech™ InstantFlow (Instant Water Heater)","description":"\u003cstyle\u003e\n\/* ============================================================\n   THERMOTECH™ INSTANTFLOW\n   PREMIUM MOBILE-FIRST PRODUCT EXPERIENCE\n   NO LIQUID REQUIRED\n   ============================================================ *\/\n\n#thermotech-instantflow {\n  --tt-navy: #031426;\n  --tt-navy-2: #061b31;\n  --tt-navy-3: #0a2742;\n  --tt-blue: #168bea;\n  --tt-blue-light: #68c7ff;\n  --tt-white: #f7fbff;\n  --tt-text: #d9e8f5;\n  --tt-muted: #91a9bd;\n  --tt-border: rgba(107, 193, 247, 0.17);\n  --tt-green: #47d99b;\n\n  position: relative;\n  width: 100%;\n  max-width: 100%;\n  overflow: hidden;\n\n  background:\n    radial-gradient(\n      circle at 88% 7%,\n      rgba(35, 147, 235, .18),\n      transparent 27%\n    ),\n    radial-gradient(\n      circle at 5% 48%,\n      rgba(20, 116, 194, .13),\n      transparent 30%\n    ),\n    linear-gradient(\n      180deg,\n      #020c19 0%,\n      #061b30 50%,\n      #031426 100%\n    );\n\n  color: var(--tt-white);\n\n  font-family:\n    -apple-system,\n    BlinkMacSystemFont,\n    \"Segoe UI\",\n    Roboto,\n    Helvetica,\n    Arial,\n    sans-serif;\n\n  -webkit-font-smoothing: antialiased;\n  text-rendering: optimizeLegibility;\n}\n\n#thermotech-instantflow *,\n#thermotech-instantflow *::before,\n#thermotech-instantflow *::after {\n  box-sizing: border-box;\n}\n\n#thermotech-instantflow a {\n  text-decoration: none;\n}\n\n#thermotech-instantflow img {\n  max-width: 100%;\n  height: auto;\n}\n\n\n\/* ============================================================\n   CONTAINER\n   ============================================================ *\/\n\n.tt-wrap {\n  width: min(1180px, calc(100% - 32px));\n  margin: 0 auto;\n}\n\n\n\/* ============================================================\n   TRUST BAR\n   ============================================================ *\/\n\n.tt-topbar {\n  width: 100%;\n\n  padding: 10px 15px;\n\n  text-align: center;\n\n  background: rgba(0,0,0,.17);\n\n  border-bottom:\n    1px solid rgba(255,255,255,.055);\n\n  color: #91a8bb;\n\n  font-size: 11px;\n  line-height: 1.5;\n  letter-spacing: .03em;\n}\n\n.tt-topbar strong {\n  color: #dcecf9;\n}\n\n\n\/* ============================================================\n   HERO\n   ============================================================ *\/\n\n.tt-hero {\n  position: relative;\n  padding: 58px 0 75px;\n}\n\n.tt-hero-grid {\n  display: grid;\n\n  grid-template-columns:\n    minmax(0, 1fr)\n    minmax(0, .92fr);\n\n  align-items: center;\n\n  gap: 55px;\n}\n\n\n\/* ============================================================\n   HERO CONTENT\n   ============================================================ *\/\n\n.tt-hero-content {\n  min-width: 0;\n}\n\n.tt-eyebrow {\n  display: inline-flex;\n\n  align-items: center;\n  gap: 9px;\n\n  max-width: 100%;\n\n  padding: 10px 15px;\n\n  border:\n    1px solid rgba(91,193,255,.28);\n\n  border-radius: 999px;\n\n  background:\n    rgba(21,115,181,.10);\n\n  color: #69c6ff;\n\n  font-size: 10px;\n  font-weight: 850;\n  letter-spacing: .105em;\n  text-transform: uppercase;\n\n  animation:\n    ttFadeUp .7s ease both;\n}\n\n.tt-live-dot {\n  width: 8px;\n  height: 8px;\n\n  flex: 0 0 8px;\n\n  border-radius: 50%;\n\n  background: var(--tt-green);\n\n  box-shadow:\n    0 0 14px rgba(71,217,155,.8);\n\n  animation:\n    ttPulse 2s ease-in-out infinite;\n}\n\n\n\/* ============================================================\n   MAIN TITLE\n   ============================================================ *\/\n\n.tt-title {\n  margin: 23px 0 20px;\n\n  max-width: 760px;\n\n  font-size:\n    clamp(43px, 5.4vw, 76px);\n\n  line-height: .96;\n\n  letter-spacing: -.055em;\n\n  font-weight: 950;\n\n  overflow-wrap: normal;\n  word-break: normal;\n\n  animation:\n    ttFadeUp .75s .08s ease both;\n}\n\n.tt-blue {\n  color: var(--tt-blue-light);\n}\n\n\n\/* ============================================================\n   SUBTITLE\n   ============================================================ *\/\n\n.tt-description {\n  max-width: 600px;\n\n  margin: 0;\n\n  color: #b5c8da;\n\n  font-size:\n    clamp(15px, 1.5vw, 18px);\n\n  line-height: 1.68;\n\n  animation:\n    ttFadeUp .75s .16s ease both;\n}\n\n\n\/* ============================================================\n   BENEFIT PILLS\n   ============================================================ *\/\n\n.tt-benefits {\n  display: flex;\n\n  flex-wrap: wrap;\n\n  gap: 9px;\n\n  margin-top: 25px;\n\n  animation:\n    ttFadeUp .75s .23s ease both;\n}\n\n.tt-pill {\n  display: inline-flex;\n\n  align-items: center;\n  justify-content: center;\n\n  gap: 7px;\n\n  min-height: 39px;\n\n  padding: 8px 13px;\n\n  border:\n    1px solid rgba(121,191,233,.16);\n\n  border-radius: 999px;\n\n  background:\n    rgba(255,255,255,.045);\n\n  color: #dcebf8;\n\n  font-size: 11px;\n  font-weight: 800;\n\n  transition:\n    transform .25s ease,\n    background .25s ease,\n    border-color .25s ease;\n}\n\n.tt-pill:hover {\n  transform: translateY(-3px);\n\n  background:\n    rgba(31,139,220,.13);\n\n  border-color:\n    rgba(92,194,255,.34);\n}\n\n.tt-pill-icon {\n  font-size: 13px;\n}\n\n\n\/* ============================================================\n   HERO CTA\n   ============================================================ *\/\n\n.tt-cta-area {\n  display: flex;\n\n  align-items: center;\n\n  flex-wrap: wrap;\n\n  gap: 14px;\n\n  margin-top: 30px;\n\n  animation:\n    ttFadeUp .75s .3s ease both;\n}\n\n.tt-button {\n  position: relative;\n\n  display: inline-flex;\n\n  align-items: center;\n  justify-content: center;\n\n  min-height: 57px;\n\n  padding:\n    0 26px;\n\n  border: 0;\n\n  border-radius: 15px;\n\n  background:\n    linear-gradient(\n      135deg,\n      #55bdff 0%,\n      #0877dc 100%\n    );\n\n  color: #fff;\n\n  font-size: 14px;\n  font-weight: 900;\n\n  letter-spacing: .01em;\n\n  box-shadow:\n    0 15px 35px rgba(0,120,230,.25),\n    inset 0 1px 0 rgba(255,255,255,.3);\n\n  cursor: pointer;\n\n  overflow: hidden;\n\n  transition:\n    transform .25s ease,\n    box-shadow .25s ease;\n}\n\n.tt-button::after {\n  content: \"\";\n\n  position: absolute;\n\n  top: 0;\n  bottom: 0;\n\n  left: -100%;\n\n  width: 70%;\n\n  background:\n    linear-gradient(\n      90deg,\n      transparent,\n      rgba(255,255,255,.30),\n      transparent\n    );\n\n  transform: skewX(-18deg);\n\n  animation:\n    ttShine 4s ease-in-out infinite;\n}\n\n.tt-button:hover {\n  transform: translateY(-3px);\n\n  box-shadow:\n    0 19px 43px rgba(0,130,255,.36),\n    inset 0 1px 0 rgba(255,255,255,.35);\n}\n\n.tt-button span {\n  position: relative;\n  z-index: 2;\n}\n\n.tt-secure-note {\n  color: #8ea6ba;\n\n  font-size: 10px;\n\n  line-height: 1.5;\n}\n\n\n\/* ============================================================\n   PRODUCT SHOWCASE\n   ============================================================ *\/\n\n.tt-product-stage {\n  position: relative;\n\n  min-width: 0;\n}\n\n.tt-glow {\n  position: absolute;\n\n  width: 75%;\n  height: 75%;\n\n  top: 50%;\n  left: 50%;\n\n  transform:\n    translate(-50%, -50%);\n\n  border-radius: 50%;\n\n  background:\n    rgba(22,139,234,.22);\n\n  filter:\n    blur(65px);\n\n  pointer-events: none;\n}\n\n.tt-product-box {\n  position: relative;\n\n  width: 100%;\n\n  min-height: 540px;\n\n  display: flex;\n\n  align-items: center;\n  justify-content: center;\n\n  padding: 40px;\n\n  border-radius: 30px;\n\n  border:\n    1px solid rgba(115,194,244,.19);\n\n  background:\n    linear-gradient(\n      145deg,\n      rgba(255,255,255,.09),\n      rgba(255,255,255,.025)\n    );\n\n  box-shadow:\n    0 35px 80px rgba(0,0,0,.32),\n    inset 0 1px 0 rgba(255,255,255,.08);\n\n  overflow: hidden;\n\n  backdrop-filter:\n    blur(13px);\n}\n\n.tt-product-box::before {\n  content: \"\";\n\n  position: absolute;\n\n  width: 330px;\n  height: 330px;\n\n  top: -180px;\n  right: -100px;\n\n  border-radius: 50%;\n\n  background:\n    rgba(99,201,255,.10);\n\n  filter: blur(8px);\n}\n\n.tt-product-holder {\n  position: relative;\n\n  z-index: 2;\n\n  width: min(100%, 440px);\n\n  min-height: 300px;\n\n  display: flex;\n\n  align-items: center;\n  justify-content: center;\n}\n\n.tt-product-holder img {\n  display: block;\n\n  width: 100%;\n\n  max-width: 430px;\n\n  object-fit: contain;\n\n  filter:\n    drop-shadow(\n      0 30px 30px rgba(0,0,0,.43)\n    );\n\n  animation:\n    ttProductFloat 5s ease-in-out infinite;\n}\n\n.tt-fallback-product {\n  display: none;\n\n  text-align: center;\n\n  color: #90a9bd;\n\n  font-size: 13px;\n\n  line-height: 1.6;\n}\n\n.tt-fallback-product strong {\n  display: block;\n\n  margin-bottom: 7px;\n\n  color: #dbeaf7;\n\n  font-size: 18px;\n}\n\n\n\/* ============================================================\n   FLOATING BADGES\n   ============================================================ *\/\n\n.tt-badge {\n  position: absolute;\n\n  z-index: 5;\n\n  display: flex;\n\n  align-items: center;\n\n  gap: 9px;\n\n  padding: 11px 14px;\n\n  border-radius: 15px;\n\n  background:\n    rgba(248,252,255,.98);\n\n  color: #09223a;\n\n  box-shadow:\n    0 18px 40px rgba(0,0,0,.25);\n\n  white-space: nowrap;\n\n  font-size: 10px;\n  font-weight: 800;\n\n  animation:\n    ttBadgeFloat 4s ease-in-out infinite;\n}\n\n.tt-badge strong {\n  display: block;\n\n  color: #0878df;\n\n  font-size: 13px;\n}\n\n.tt-badge small {\n  display: block;\n\n  margin-top: 2px;\n\n  color: #63798c;\n\n  font-size: 8px;\n}\n\n.tt-badge-one {\n  top: 32px;\n  left: 17px;\n}\n\n.tt-badge-two {\n  right: 14px;\n  bottom: 55px;\n\n  animation-delay:\n    1.2s;\n}\n\n\n\/* ============================================================\n   SECTION\n   ============================================================ *\/\n\n.tt-section {\n  padding: 78px 0;\n}\n\n.tt-section-head {\n  max-width: 700px;\n\n  margin:\n    0 auto 40px;\n\n  text-align: center;\n}\n\n.tt-kicker {\n  color: var(--tt-blue-light);\n\n  font-size: 10px;\n\n  font-weight: 900;\n\n  letter-spacing: .12em;\n\n  text-transform: uppercase;\n}\n\n.tt-section-title {\n  margin:\n    11px 0 14px;\n\n  font-size:\n    clamp(31px, 4vw, 48px);\n\n  line-height: 1.07;\n\n  letter-spacing: -.045em;\n\n  font-weight: 950;\n}\n\n.tt-section-copy {\n  margin: 0 auto;\n\n  max-width: 650px;\n\n  color: #9db3c7;\n\n  font-size: 14px;\n\n  line-height: 1.7;\n}\n\n\n\/* ============================================================\n   FEATURE GRID\n   ============================================================ *\/\n\n.tt-features {\n  display: grid;\n\n  grid-template-columns:\n    repeat(3, minmax(0, 1fr));\n\n  gap: 15px;\n}\n\n.tt-feature {\n  position: relative;\n\n  min-width: 0;\n\n  padding: 25px;\n\n  min-height: 205px;\n\n  border:\n    1px solid var(--tt-border);\n\n  border-radius: 22px;\n\n  background:\n    linear-gradient(\n      145deg,\n      rgba(255,255,255,.065),\n      rgba(255,255,255,.025)\n    );\n\n  overflow: hidden;\n\n  opacity: 0;\n  transform: translateY(22px);\n\n  transition:\n    opacity .65s ease,\n    transform .65s ease,\n    border-color .3s ease,\n    background .3s ease;\n}\n\n.tt-feature.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.tt-feature:hover {\n  transform: translateY(-6px);\n\n  border-color:\n    rgba(75,185,255,.37);\n\n  background:\n    linear-gradient(\n      145deg,\n      rgba(27,130,211,.12),\n      rgba(255,255,255,.035)\n    );\n}\n\n.tt-feature-icon {\n  width: 45px;\n  height: 45px;\n\n  display: flex;\n\n  align-items: center;\n  justify-content: center;\n\n  margin-bottom: 17px;\n\n  border-radius: 13px;\n\n  background:\n    rgba(30,145,235,.12);\n\n  border:\n    1px solid rgba(88,193,255,.18);\n\n  color: #64c4ff;\n\n  font-size: 19px;\n}\n\n.tt-feature h3 {\n  margin: 0 0 8px;\n\n  font-size: 15px;\n\n  line-height: 1.3;\n\n  font-weight: 900;\n}\n\n.tt-feature p {\n  margin: 0;\n\n  color: #8fa8bd;\n\n  font-size: 12px;\n\n  line-height: 1.65;\n}\n\n\n\/* ============================================================\n   HOMEOWNER SECTION\n   ============================================================ *\/\n\n.tt-home {\n  position: relative;\n\n  padding: 72px 0;\n\n  border-top:\n    1px solid rgba(255,255,255,.05);\n\n  border-bottom:\n    1px solid rgba(255,255,255,.05);\n\n  background:\n    radial-gradient(\n      circle at 15% 50%,\n      rgba(22,132,222,.12),\n      transparent 36%\n    );\n}\n\n.tt-home-grid {\n  display: grid;\n\n  grid-template-columns:\n    minmax(0, 1fr)\n    minmax(0, 1fr);\n\n  align-items: center;\n\n  gap: 55px;\n}\n\n.tt-home-title {\n  margin:\n    11px 0 17px;\n\n  font-size:\n    clamp(31px, 4vw, 47px);\n\n  line-height: 1.07;\n\n  letter-spacing: -.045em;\n\n  font-weight: 950;\n}\n\n.tt-home-copy {\n  margin: 0;\n\n  color: #a3b9cb;\n\n  font-size: 14px;\n\n  line-height: 1.75;\n}\n\n.tt-checks {\n  display: grid;\n\n  gap: 11px;\n\n  margin: 25px 0 0;\n\n  padding: 0;\n\n  list-style: none;\n}\n\n.tt-checks li {\n  display: flex;\n\n  align-items: flex-start;\n\n  gap: 10px;\n\n  color: #d6e5f2;\n\n  font-size: 12px;\n\n  line-height: 1.55;\n}\n\n.tt-check {\n  width: 21px;\n  height: 21px;\n\n  flex: 0 0 21px;\n\n  display: flex;\n\n  align-items: center;\n  justify-content: center;\n\n  border-radius: 50%;\n\n  background:\n    rgba(71,217,155,.12);\n\n  color:\n    var(--tt-green);\n\n  font-size: 10px;\n\n  font-weight: 900;\n}\n\n\n\/* ============================================================\n   OWNER CARD\n   ============================================================ *\/\n\n.tt-owner-card {\n  padding: 29px;\n\n  border:\n    1px solid rgba(101,195,255,.17);\n\n  border-radius: 25px;\n\n  background:\n    linear-gradient(\n      145deg,\n      rgba(19,84,137,.22),\n      rgba(255,255,255,.035)\n    );\n\n  box-shadow:\n    0 25px 60px rgba(0,0,0,.20);\n\n  opacity: 0;\n  transform: translateY(22px);\n\n  transition:\n    opacity .7s ease,\n    transform .7s ease;\n}\n\n.tt-owner-card.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.tt-owner-heading {\n  display: flex;\n\n  align-items: center;\n\n  gap: 13px;\n\n  margin-bottom: 22px;\n}\n\n.tt-owner-icon {\n  width: 47px;\n  height: 47px;\n\n  flex: 0 0 47px;\n\n  display: flex;\n\n  align-items: center;\n  justify-content: center;\n\n  border-radius: 14px;\n\n  background:\n    #0b6ec4;\n\n  color: white;\n\n  font-size: 20px;\n}\n\n.tt-owner-label {\n  color: #73caff;\n\n  font-size: 9px;\n\n  font-weight: 900;\n\n  letter-spacing: .1em;\n\n  text-transform: uppercase;\n}\n\n.tt-owner-title {\n  margin-top: 3px;\n\n  color: #f1f8fd;\n\n  font-size: 17px;\n\n  font-weight: 900;\n}\n\n.tt-owner-points {\n  display: grid;\n\n  gap: 11px;\n}\n\n.tt-owner-point {\n  padding: 14px;\n\n  border-radius: 14px;\n\n  background:\n    rgba(0,0,0,.15);\n\n  border:\n    1px solid rgba(255,255,255,.05);\n}\n\n.tt-owner-point strong {\n  display: block;\n\n  margin-bottom: 4px;\n\n  font-size: 12px;\n}\n\n.tt-owner-point span {\n  color: #8fa8bc;\n\n  font-size: 10px;\n\n  line-height: 1.55;\n}\n\n\n\/* ============================================================\n   HOW IT WORKS\n   ============================================================ *\/\n\n.tt-steps {\n  display: grid;\n\n  grid-template-columns:\n    repeat(3, minmax(0, 1fr));\n\n  gap: 15px;\n}\n\n.tt-step {\n  padding: 25px;\n\n  border-radius: 20px;\n\n  border:\n    1px solid rgba(111,185,234,.12);\n\n  background:\n    rgba(255,255,255,.035);\n\n  opacity: 0;\n  transform: translateY(22px);\n\n  transition:\n    opacity .65s ease,\n    transform .65s ease;\n}\n\n.tt-step.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.tt-step-number {\n  width: 38px;\n  height: 38px;\n\n  display: flex;\n\n  align-items: center;\n  justify-content: center;\n\n  margin-bottom: 16px;\n\n  border-radius: 50%;\n\n  background:\n    rgba(30,143,233,.15);\n\n  border:\n    1px solid rgba(85,191,255,.20);\n\n  color: #69c8ff;\n\n  font-size: 10px;\n\n  font-weight: 900;\n}\n\n.tt-step h3 {\n  margin: 0 0 7px;\n\n  font-size: 15px;\n\n  font-weight: 900;\n}\n\n.tt-step p {\n  margin: 0;\n\n  color: #8ea7bc;\n\n  font-size: 11px;\n\n  line-height: 1.65;\n}\n\n\n\/* ============================================================\n   FINAL CTA\n   ============================================================ *\/\n\n.tt-final {\n  padding: 75px 0 95px;\n\n  text-align: center;\n}\n\n.tt-final-box {\n  position: relative;\n\n  padding: 55px 25px;\n\n  border:\n    1px solid rgba(89,191,255,.19);\n\n  border-radius: 30px;\n\n  background:\n    radial-gradient(\n      circle at 50% 0%,\n      rgba(26,143,234,.18),\n      transparent 52%\n    ),\n    rgba(255,255,255,.035);\n\n  overflow: hidden;\n}\n\n.tt-final-box h2 {\n  max-width: 700px;\n\n  margin:\n    10px auto 14px;\n\n  font-size:\n    clamp(32px, 4.5vw, 53px);\n\n  line-height: 1.05;\n\n  letter-spacing: -.045em;\n\n  font-weight: 950;\n}\n\n.tt-final-box p {\n  max-width: 570px;\n\n  margin:\n    0 auto 26px;\n\n  color: #9eb5c9;\n\n  font-size: 13px;\n\n  line-height: 1.7;\n}\n\n\n\/* ============================================================\n   MOBILE STICKY CTA\n   ============================================================ *\/\n\n.tt-mobile-bar {\n  display: none;\n}\n\n\n\/* ============================================================\n   ANIMATIONS\n   ============================================================ *\/\n\n@keyframes ttFadeUp {\n  from {\n    opacity: 0;\n    transform: translateY(20px);\n  }\n\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n\n@keyframes ttProductFloat {\n  0%,100% {\n    transform: translateY(0);\n  }\n\n  50% {\n    transform: translateY(-9px);\n  }\n}\n\n@keyframes ttBadgeFloat {\n  0%,100% {\n    transform: translateY(0);\n  }\n\n  50% {\n    transform: translateY(-6px);\n  }\n}\n\n@keyframes ttPulse {\n  0%,100% {\n    opacity: 1;\n    transform: scale(1);\n  }\n\n  50% {\n    opacity: .65;\n    transform: scale(.75);\n  }\n}\n\n@keyframes ttShine {\n  0% {\n    left: -100%;\n  }\n\n  35%,100% {\n    left: 150%;\n  }\n}\n\n\n\/* ============================================================\n   TABLET\n   ============================================================ *\/\n\n@media (max-width: 900px) {\n\n  .tt-hero {\n    padding-top: 45px;\n  }\n\n  .tt-hero-grid {\n    grid-template-columns: 1fr;\n\n    gap: 35px;\n\n    text-align: center;\n  }\n\n  .tt-eyebrow {\n    margin-left: auto;\n    margin-right: auto;\n  }\n\n  .tt-title {\n    margin-left: auto;\n    margin-right: auto;\n  }\n\n  .tt-description {\n    margin-left: auto;\n    margin-right: auto;\n  }\n\n  .tt-benefits {\n    justify-content: center;\n  }\n\n  .tt-cta-area {\n    justify-content: center;\n  }\n\n  .tt-product-box {\n    min-height: 500px;\n  }\n\n  .tt-features {\n    grid-template-columns:\n      repeat(2, minmax(0, 1fr));\n  }\n\n  .tt-home-grid {\n    grid-template-columns: 1fr;\n\n    gap: 35px;\n  }\n\n  .tt-steps {\n    grid-template-columns: 1fr;\n  }\n}\n\n\n\/* ============================================================\n   MOBILE\n   ============================================================ *\/\n\n@media (max-width: 600px) {\n\n  #thermotech-instantflow {\n    width: 100%;\n    max-width: 100%;\n\n    overflow-x: hidden;\n  }\n\n  .tt-wrap {\n    width: calc(100% - 28px);\n\n    max-width: calc(100% - 28px);\n  }\n\n  .tt-topbar {\n    padding:\n      8px 12px;\n\n    font-size: 9px;\n  }\n\n\n  \/* HERO *\/\n\n  .tt-hero {\n    padding:\n      30px 0 43px;\n  }\n\n  .tt-hero-grid {\n    display: flex;\n\n    flex-direction: column;\n\n    gap: 28px;\n  }\n\n  .tt-eyebrow {\n    display: inline-flex;\n\n    max-width: 100%;\n\n    padding:\n      9px 12px;\n\n    font-size: 8.5px;\n\n    letter-spacing: .07em;\n\n    white-space: normal;\n\n    text-align: center;\n  }\n\n  .tt-title {\n    max-width: 100%;\n\n    margin:\n      18px auto 17px;\n\n    font-size:\n      clamp(38px, 11.8vw, 54px);\n\n    line-height: .96;\n\n    letter-spacing: -.055em;\n\n    overflow-wrap: break-word;\n  }\n\n  .tt-description {\n    max-width: 100%;\n\n    font-size: 13.5px;\n\n    line-height: 1.65;\n  }\n\n\n  \/* BENEFITS *\/\n\n  .tt-benefits {\n    width: 100%;\n\n    display: grid;\n\n    grid-template-columns:\n      repeat(2, minmax(0, 1fr));\n\n    gap: 8px;\n\n    margin-top: 20px;\n  }\n\n  .tt-pill {\n    width: 100%;\n    min-width: 0;\n\n    min-height: 39px;\n\n    padding:\n      8px 6px;\n\n    border-radius: 12px;\n\n    font-size: 9.5px;\n\n    line-height: 1.25;\n\n    white-space: normal;\n\n    text-align: center;\n  }\n\n\n  \/* CTA *\/\n\n  .tt-cta-area {\n    width: 100%;\n\n    display: flex;\n\n    flex-direction: column;\n\n    gap: 10px;\n\n    margin-top: 22px;\n  }\n\n  .tt-button {\n    width: 100%;\n\n    min-height: 55px;\n\n    padding: 0 18px;\n\n    border-radius: 14px;\n\n    font-size: 13px;\n  }\n\n  .tt-secure-note {\n    text-align: center;\n\n    font-size: 9px;\n  }\n\n\n  \/* PRODUCT *\/\n\n  .tt-product-box {\n    width: 100%;\n\n    min-height: 385px;\n\n    padding:\n      24px 13px;\n\n    border-radius: 22px;\n  }\n\n  .tt-product-holder {\n    width: 100%;\n\n    min-height: 280px;\n  }\n\n  .tt-product-holder img {\n    width: 100%;\n\n    max-width: 320px;\n  }\n\n  .tt-badge {\n    padding:\n      9px 10px;\n\n    border-radius: 12px;\n\n    gap: 7px;\n\n    font-size: 8px;\n  }\n\n  .tt-badge strong {\n    font-size: 11px;\n  }\n\n  .tt-badge small {\n    font-size: 7px;\n  }\n\n  .tt-badge-one {\n    top: 13px;\n    left: 7px;\n  }\n\n  .tt-badge-two {\n    right: 7px;\n    bottom: 17px;\n  }\n\n\n  \/* SECTIONS *\/\n\n  .tt-section {\n    padding:\n      55px 0;\n  }\n\n  .tt-section-head {\n    margin-bottom:\n      27px;\n  }\n\n  .tt-kicker {\n    font-size: 9px;\n  }\n\n  .tt-section-title {\n    font-size: 29px;\n\n    line-height: 1.08;\n  }\n\n  .tt-section-copy {\n    font-size: 12.5px;\n\n    line-height: 1.7;\n  }\n\n\n  \/* FEATURES *\/\n\n  .tt-features {\n    grid-template-columns: 1fr;\n\n    gap: 10px;\n  }\n\n  .tt-feature {\n    min-height: 0;\n\n    padding: 20px;\n\n    border-radius: 18px;\n  }\n\n  .tt-feature-icon {\n    width: 42px;\n    height: 42px;\n\n    margin-bottom: 13px;\n  }\n\n  .tt-feature h3 {\n    font-size: 14px;\n  }\n\n  .tt-feature p {\n    font-size: 11px;\n  }\n\n\n  \/* HOME *\/\n\n  .tt-home {\n    padding:\n      55px 0;\n  }\n\n  .tt-home-grid {\n    gap: 28px;\n  }\n\n  .tt-home-title {\n    font-size: 29px;\n  }\n\n  .tt-home-copy {\n    font-size: 12.5px;\n  }\n\n  .tt-checks {\n    margin-top: 21px;\n  }\n\n  .tt-checks li {\n    font-size: 11px;\n  }\n\n  .tt-owner-card {\n    padding: 19px;\n\n    border-radius: 20px;\n  }\n\n  .tt-owner-heading {\n    margin-bottom: 18px;\n  }\n\n  .tt-owner-point {\n    padding: 12px;\n  }\n\n\n  \/* STEPS *\/\n\n  .tt-step {\n    padding: 20px;\n  }\n\n\n  \/* FINAL *\/\n\n  .tt-final {\n    padding:\n      55px 0 100px;\n  }\n\n  .tt-final-box {\n    padding:\n      38px 17px;\n\n    border-radius: 22px;\n  }\n\n  .tt-final-box h2 {\n    font-size: 30px;\n  }\n\n  .tt-final-box p {\n    font-size: 12px;\n  }\n\n\n  \/* MOBILE PURCHASE BAR *\/\n\n  .tt-mobile-bar {\n    position: fixed;\n\n    display: block;\n\n    left: 0;\n    right: 0;\n    bottom: 0;\n\n    z-index: 999999;\n\n    padding:\n      8px 11px;\n\n    background:\n      rgba(2,13,26,.95);\n\n    border-top:\n      1px solid rgba(105,200,255,.15);\n\n    box-shadow:\n      0 -10px 30px rgba(0,0,0,.25);\n\n    backdrop-filter:\n      blur(16px);\n  }\n\n  .tt-mobile-button {\n    width: 100%;\n\n    min-height: 49px;\n\n    display: flex;\n\n    align-items: center;\n    justify-content: center;\n\n    border-radius: 12px;\n\n    background:\n      linear-gradient(\n        135deg,\n        #55bdff,\n        #0877dc\n      );\n\n    color: white;\n\n    font-size: 13px;\n\n    font-weight: 900;\n\n    box-shadow:\n      0 8px 25px rgba(0,120,230,.28);\n  }\n}\n\n\n\/* ============================================================\n   VERY SMALL PHONES\n   ============================================================ *\/\n\n@media (max-width: 360px) {\n\n  .tt-wrap {\n    width: calc(100% - 22px);\n\n    max-width: calc(100% - 22px);\n  }\n\n  .tt-title {\n    font-size: 36px;\n  }\n\n  .tt-product-box {\n    min-height: 350px;\n  }\n\n  .tt-badge {\n    transform: scale(.88);\n\n    transform-origin: center;\n  }\n\n  .tt-badge-one {\n    left: 0;\n  }\n\n  .tt-badge-two {\n    right: 0;\n  }\n}\n\n\n\/* ============================================================\n   REDUCED MOTION\n   ============================================================ *\/\n\n@media (prefers-reduced-motion: reduce) {\n\n  #thermotech-instantflow *,\n  #thermotech-instantflow *::before,\n  #thermotech-instantflow *::after {\n    animation: none !important;\n\n    transition: none !important;\n\n    scroll-behavior: auto !important;\n  }\n}\n\u003c\/style\u003e\n\n\n\u003csection id=\"thermotech-instantflow\"\u003e\n\n  \u003c!-- ======================================================\n       TRUST BAR\n       ====================================================== --\u003e\n\n  \u003cdiv class=\"tt-topbar\"\u003e\n    🔒 \u003cstrong\u003eSecure checkout\u003c\/strong\u003e\n    · Built for everyday convenience\n    · Designed for South African homes\n  \u003c\/div\u003e\n\n\n  \u003cdiv class=\"tt-wrap\"\u003e\n\n\n    \u003c!-- ======================================================\n         HERO\n         ====================================================== --\u003e\n\n    \u003csection class=\"tt-hero\"\u003e\n\n      \u003cdiv class=\"tt-hero-grid\"\u003e\n\n\n        \u003c!-- HERO COPY --\u003e\n\n        \u003cdiv class=\"tt-hero-content\"\u003e\n\n          \u003cdiv class=\"tt-eyebrow\"\u003e\n            \u003cspan class=\"tt-live-dot\"\u003e\u003c\/span\u003e\n            Next-generation water heating\n          \u003c\/div\u003e\n\n\n          \u003ch1 class=\"tt-title\"\u003e\n            Hot Water.\u003cbr\u003e\n            \u003cspan class=\"tt-blue\"\u003eInstantly.\u003c\/span\u003e\n            Every Time.\n          \u003c\/h1\u003e\n\n\n          \u003cp class=\"tt-description\"\u003e\n            Stop waiting around for your geyser to heat up.\n            ThermoTech™ InstantFlow gives you convenient\n            hot water on demand — whenever you need it.\n          \u003c\/p\u003e\n\n\n          \u003cdiv class=\"tt-benefits\"\u003e\n\n            \u003cdiv class=\"tt-pill\"\u003e\n              \u003cspan class=\"tt-pill-icon\"\u003e⚡\u003c\/span\u003e\n              Fast heating\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"tt-pill\"\u003e\n              \u003cspan class=\"tt-pill-icon\"\u003e💧\u003c\/span\u003e\n              On-demand heating\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"tt-pill\"\u003e\n              \u003cspan class=\"tt-pill-icon\"\u003e🌡️\u003c\/span\u003e\n              Digital temperature display\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"tt-pill\"\u003e\n              \u003cspan class=\"tt-pill-icon\"\u003e🏠\u003c\/span\u003e\n              Compact design\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"tt-pill\"\u003e\n              \u003cspan class=\"tt-pill-icon\"\u003e🛡️\u003c\/span\u003e\n              Built-in protections\n            \u003c\/div\u003e\n\n          \u003c\/div\u003e\n\n\n          \u003cdiv class=\"tt-cta-area\"\u003e\n\n            \u003ca href=\"#thermotech-purchase\" class=\"tt-button tt-scroll-button\"\u003e\n              \u003cspan\u003e\n                Get ThermoTech™ InstantFlow →\n              \u003c\/span\u003e\n            \u003c\/a\u003e\n\n            \u003cdiv class=\"tt-secure-note\"\u003e\n              🔒 Secure checkout · Please follow all installation instructions\n            \u003c\/div\u003e\n\n          \u003c\/div\u003e\n\n        \u003c\/div\u003e\n\n\n        \u003c!-- ==================================================\n             PRODUCT\n             ================================================== --\u003e\n\n        \u003cdiv class=\"tt-product-stage\"\u003e\n\n          \u003cdiv class=\"tt-glow\"\u003e\u003c\/div\u003e\n\n\n          \u003cdiv class=\"tt-product-box\"\u003e\n\n\n            \u003cdiv class=\"tt-product-holder\" id=\"tt-product-holder\"\u003e\n\n              \u003c!--\n                The JavaScript below automatically finds the\n                product image already displayed on the Shopify\n                product page.\n\n                This means NO Liquid is required here.\n              --\u003e\n\n              \u003cdiv class=\"tt-fallback-product\"\u003e\n                \u003cstrong\u003eThermoTech™ InstantFlow\u003c\/strong\u003e\n                Instant hot water whenever you need it.\n              \u003c\/div\u003e\n\n            \u003c\/div\u003e\n\n\n            \u003c!-- FLOATING BADGE --\u003e\n\n            \u003cdiv class=\"tt-badge tt-badge-one\"\u003e\n\n              \u003cspan\u003e⚡\u003c\/span\u003e\n\n              \u003cdiv\u003e\n                \u003cstrong\u003e3 SEC*\u003c\/strong\u003e\n                \u003csmall\u003eFast heating\u003c\/small\u003e\n              \u003c\/div\u003e\n\n            \u003c\/div\u003e\n\n\n            \u003cdiv class=\"tt-badge tt-badge-two\"\u003e\n\n              \u003cspan\u003e🌡️\u003c\/span\u003e\n\n              \u003cdiv\u003e\n                \u003cstrong\u003e35–55°C\u003c\/strong\u003e\n                \u003csmall\u003eTemperature control\u003c\/small\u003e\n              \u003c\/div\u003e\n\n            \u003c\/div\u003e\n\n\n          \u003c\/div\u003e\n\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n\n    \u003c\/section\u003e\n\n\n\n    \u003c!-- ======================================================\n         BENEFITS\n         ====================================================== --\u003e\n\n    \u003csection class=\"tt-section\"\u003e\n\n      \u003cdiv class=\"tt-section-head\"\u003e\n\n        \u003cdiv class=\"tt-kicker\"\u003e\n          Designed for modern living\n        \u003c\/div\u003e\n\n        \u003ch2 class=\"tt-section-title\"\u003e\n          More comfort.\u003cbr\u003e\n          Less waiting.\n        \u003c\/h2\u003e\n\n        \u003cp class=\"tt-section-copy\"\u003e\n          Whether you own a family home, apartment,\n          rental property or guest space, InstantFlow\n          is designed to bring convenient hot water\n          closer to where you need it.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n\n      \u003cdiv class=\"tt-features\"\u003e\n\n\n        \u003cdiv class=\"tt-feature\"\u003e\n\n          \u003cdiv class=\"tt-feature-icon\"\u003e\n            ⚡\n          \u003c\/div\u003e\n\n          \u003ch3\u003e\n            Hot Water On Demand\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            Water is heated as it flows through the unit,\n            helping you avoid waiting around for a traditional\n            storage geyser to heat up.\n          \u003c\/p\u003e\n\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"tt-feature\"\u003e\n\n          \u003cdiv class=\"tt-feature-icon\"\u003e\n            🏠\n          \u003c\/div\u003e\n\n          \u003ch3\u003e\n            Made for Smaller Spaces\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            The compact wall-mounted design is suited to\n            bathrooms, kitchens, apartments and other areas\n            where space matters.\n          \u003c\/p\u003e\n\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"tt-feature\"\u003e\n\n          \u003cdiv class=\"tt-feature-icon\"\u003e\n            💧\n          \u003c\/div\u003e\n\n          \u003ch3\u003e\n            Continuous Hot Water\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            Because the unit heats water as it flows,\n            you're not relying on a large storage tank\n            of pre-heated water.\n          \u003c\/p\u003e\n\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"tt-feature\"\u003e\n\n          \u003cdiv class=\"tt-feature-icon\"\u003e\n            🌡️\n          \u003c\/div\u003e\n\n          \u003ch3\u003e\n            Your Temperature\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            The digital display makes it easier to monitor\n            and adjust the temperature to your preferred\n            setting.\n          \u003c\/p\u003e\n\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"tt-feature\"\u003e\n\n          \u003cdiv class=\"tt-feature-icon\"\u003e\n            🔧\n          \u003c\/div\u003e\n\n          \u003ch3\u003e\n            Clean, Modern Design\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            A streamlined wall-mounted appearance designed\n            to fit naturally into contemporary living spaces.\n          \u003c\/p\u003e\n\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"tt-feature\"\u003e\n\n          \u003cdiv class=\"tt-feature-icon\"\u003e\n            🛡️\n          \u003c\/div\u003e\n\n          \u003ch3\u003e\n            Built-In Protection\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            Designed with protective features including\n            overheat, dry-burn and leakage protection.\n          \u003c\/p\u003e\n\n        \u003c\/div\u003e\n\n\n      \u003c\/div\u003e\n\n    \u003c\/section\u003e\n\n\n\n    \u003c!-- ======================================================\n         HOMEOWNERS\n         ====================================================== --\u003e\n\n    \u003csection class=\"tt-home\"\u003e\n\n      \u003cdiv class=\"tt-home-grid\"\u003e\n\n\n        \u003cdiv\u003e\n\n          \u003cdiv class=\"tt-kicker\"\u003e\n            Made for South African homes\n          \u003c\/div\u003e\n\n          \u003ch2 class=\"tt-home-title\"\u003e\n            Hot water should be simple.\n          \u003c\/h2\u003e\n\n          \u003cp class=\"tt-home-copy\"\u003e\n            InstantFlow is designed for people who want a\n            more convenient way to access hot water without\n            dedicating valuable space to a large storage tank.\n          \u003c\/p\u003e\n\n\n          \u003cul class=\"tt-checks\"\u003e\n\n            \u003cli\u003e\n              \u003cspan class=\"tt-check\"\u003e✓\u003c\/span\u003e\n              \u003cspan\u003e\n                Ideal for bathrooms, kitchens and other\n                hot-water points.\n              \u003c\/span\u003e\n            \u003c\/li\u003e\n\n            \u003cli\u003e\n              \u003cspan class=\"tt-check\"\u003e✓\u003c\/span\u003e\n              \u003cspan\u003e\n                A practical compact option for apartments\n                and smaller spaces.\n              \u003c\/span\u003e\n            \u003c\/li\u003e\n\n            \u003cli\u003e\n              \u003cspan class=\"tt-check\"\u003e✓\u003c\/span\u003e\n              \u003cspan\u003e\n                Helps reduce the need for bulky water\n                storage in the installation area.\n              \u003c\/span\u003e\n            \u003c\/li\u003e\n\n            \u003cli\u003e\n              \u003cspan class=\"tt-check\"\u003e✓\u003c\/span\u003e\n              \u003cspan\u003e\n                Convenient hot water available when the\n                system is operating.\n              \u003c\/span\u003e\n            \u003c\/li\u003e\n\n            \u003cli\u003e\n              \u003cspan class=\"tt-check\"\u003e✓\u003c\/span\u003e\n              \u003cspan\u003e\n                Digital temperature display for easier\n                everyday control.\n              \u003c\/span\u003e\n            \u003c\/li\u003e\n\n          \u003c\/ul\u003e\n\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"tt-owner-card\"\u003e\n\n          \u003cdiv class=\"tt-owner-heading\"\u003e\n\n            \u003cdiv class=\"tt-owner-icon\"\u003e\n              🏡\n            \u003c\/div\u003e\n\n            \u003cdiv\u003e\n\n              \u003cdiv class=\"tt-owner-label\"\u003e\n                Built around your home\n              \u003c\/div\u003e\n\n              \u003cdiv class=\"tt-owner-title\"\u003e\n                Who is InstantFlow for?\n              \u003c\/div\u003e\n\n            \u003c\/div\u003e\n\n          \u003c\/div\u003e\n\n\n          \u003cdiv class=\"tt-owner-points\"\u003e\n\n\n            \u003cdiv class=\"tt-owner-point\"\u003e\n\n              \u003cstrong\u003e\n                🏠 Homeowners\n              \u003c\/strong\u003e\n\n              \u003cspan\u003e\n                Enjoy convenient hot water for everyday\n                showers, washing and kitchen use.\n              \u003c\/span\u003e\n\n            \u003c\/div\u003e\n\n\n            \u003cdiv class=\"tt-owner-point\"\u003e\n\n              \u003cstrong\u003e\n                🏢 Apartment Owners\n              \u003c\/strong\u003e\n\n              \u003cspan\u003e\n                A compact alternative when installation\n                space is limited.\n              \u003c\/span\u003e\n\n            \u003c\/div\u003e\n\n\n            \u003cdiv class=\"tt-owner-point\"\u003e\n\n              \u003cstrong\u003e\n                🏘️ Property Owners\n              \u003c\/strong\u003e\n\n              \u003cspan\u003e\n                A modern option for guest rooms, rental\n                spaces and additional living areas.\n              \u003c\/span\u003e\n\n            \u003c\/div\u003e\n\n\n          \u003c\/div\u003e\n\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n\n    \u003c\/section\u003e\n\n\n\n    \u003c!-- ======================================================\n         HOW IT WORKS\n         ====================================================== --\u003e\n\n    \u003csection class=\"tt-section\"\u003e\n\n      \u003cdiv class=\"tt-section-head\"\u003e\n\n        \u003cdiv class=\"tt-kicker\"\u003e\n          Simple flow-through technology\n        \u003c\/div\u003e\n\n        \u003ch2 class=\"tt-section-title\"\u003e\n          How InstantFlow works\n        \u003c\/h2\u003e\n\n        \u003cp class=\"tt-section-copy\"\u003e\n          Instead of storing a large volume of hot water,\n          the system heats water as it passes through the unit.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n\n      \u003cdiv class=\"tt-steps\"\u003e\n\n\n        \u003cdiv class=\"tt-step\"\u003e\n\n          \u003cdiv class=\"tt-step-number\"\u003e\n            01\n          \u003c\/div\u003e\n\n          \u003ch3\u003e\n            Water enters\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            Cold water enters the InstantFlow unit\n            through the inlet connection.\n          \u003c\/p\u003e\n\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"tt-step\"\u003e\n\n          \u003cdiv class=\"tt-step-number\"\u003e\n            02\n          \u003c\/div\u003e\n\n          \u003ch3\u003e\n            Water is heated\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            The internal heating element warms the\n            flowing water as it passes through.\n          \u003c\/p\u003e\n\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"tt-step\"\u003e\n\n          \u003cdiv class=\"tt-step-number\"\u003e\n            03\n          \u003c\/div\u003e\n\n          \u003ch3\u003e\n            Hot water flows out\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            Heated water flows toward the connected\n            shower or tap for use.\n          \u003c\/p\u003e\n\n        \u003c\/div\u003e\n\n\n      \u003c\/div\u003e\n\n    \u003c\/section\u003e\n\n\n\n    \u003c!-- ======================================================\n         SPECIFICATIONS\n         ====================================================== --\u003e\n\n    \u003csection class=\"tt-section\"\u003e\n\n      \u003cdiv class=\"tt-section-head\"\u003e\n\n        \u003cdiv class=\"tt-kicker\"\u003e\n          ThermoTech™ InstantFlow\n        \u003c\/div\u003e\n\n        \u003ch2 class=\"tt-section-title\"\u003e\n          Designed for everyday performance.\n        \u003c\/h2\u003e\n\n        \u003cp class=\"tt-section-copy\"\u003e\n          Compact technology with convenient controls\n          and built-in protective features.\n        \u003c\/p\u003e\n\n      \u003c\/div\u003e\n\n\n      \u003cdiv class=\"tt-features\"\u003e\n\n\n        \u003cdiv class=\"tt-feature\"\u003e\n\n          \u003cdiv class=\"tt-feature-icon\"\u003e\n            ⚡\n          \u003c\/div\u003e\n\n          \u003ch3\u003e\n            Fast Heating\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            Designed to provide heated water quickly\n            after activation.\n          \u003c\/p\u003e\n\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"tt-feature\"\u003e\n\n          \u003cdiv class=\"tt-feature-icon\"\u003e\n            🌡️\n          \u003c\/div\u003e\n\n          \u003ch3\u003e\n            35°C – 55°C\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            Adjustable temperature range with digital\n            LED temperature display.\n          \u003c\/p\u003e\n\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"tt-feature\"\u003e\n\n          \u003cdiv class=\"tt-feature-icon\"\u003e\n            🔌\n          \u003c\/div\u003e\n\n          \u003ch3\u003e\n            220V \/ 50Hz\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            Electrical specification designed around\n            standard household power.\n          \u003c\/p\u003e\n\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"tt-feature\"\u003e\n\n          \u003cdiv class=\"tt-feature-icon\"\u003e\n            💧\n          \u003c\/div\u003e\n\n          \u003ch3\u003e\n            Flow-Through Heating\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            Water is heated as it passes through instead\n            of being stored in a conventional tank.\n          \u003c\/p\u003e\n\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"tt-feature\"\u003e\n\n          \u003cdiv class=\"tt-feature-icon\"\u003e\n            🛡️\n          \u003c\/div\u003e\n\n          \u003ch3\u003e\n            Safety Protections\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            Includes overheat, dry-burn and leakage\n            protection features.\n          \u003c\/p\u003e\n\n        \u003c\/div\u003e\n\n\n        \u003cdiv class=\"tt-feature\"\u003e\n\n          \u003cdiv class=\"tt-feature-icon\"\u003e\n            📐\n          \u003c\/div\u003e\n\n          \u003ch3\u003e\n            Space-Saving Design\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            Vertical wall-mounted configuration helps\n            keep your installation area neat and compact.\n          \u003c\/p\u003e\n\n        \u003c\/div\u003e\n\n\n      \u003c\/div\u003e\n\n    \u003c\/section\u003e\n\n\n\n    \u003c!-- ======================================================\n         FINAL CTA\n         ====================================================== --\u003e\n\n    \u003csection class=\"tt-final\" id=\"thermotech-purchase\"\u003e\n\n      \u003cdiv class=\"tt-final-box\"\u003e\n\n        \u003cdiv class=\"tt-kicker\"\u003e\n          ThermoTech™ InstantFlow\n        \u003c\/div\u003e\n\n        \u003ch2\u003e\n          Stop waiting for hot water.\n          \u003cbr\u003e\n          \u003cspan class=\"tt-blue\"\u003e\n            Make it instant.\n          \u003c\/span\u003e\n        \u003c\/h2\u003e\n\n        \u003cp\u003e\n          Bring convenient, on-demand hot water\n          closer to the moments that matter.\n        \u003c\/p\u003e\n\n        \u003ca href=\"#\" class=\"tt-button tt-final-button\"\u003e\n          \u003cspan\u003e\n            Get ThermoTech™ InstantFlow →\n          \u003c\/span\u003e\n        \u003c\/a\u003e\n\n      \u003c\/div\u003e\n\n    \u003c\/section\u003e\n\n\n  \u003c\/div\u003e\n\n\n  \u003c!-- ========================================================\n       MOBILE STICKY CTA\n       ======================================================== --\u003e\n\n  \u003cdiv class=\"tt-mobile-bar\"\u003e\n\n    \u003ca href=\"#\" class=\"tt-mobile-button\"\u003e\n      Get ThermoTech™ InstantFlow →\n    \u003c\/a\u003e\n\n  \u003c\/div\u003e\n\n\u003c\/section\u003e\n\n\n\u003cscript\u003e\n(function () {\n\n  \"use strict\";\n\n\n  \/* ==========================================================\n     FIND THE SHOPIFY PRODUCT IMAGE\n     ----------------------------------------------------------\n     No Liquid is used.\n     The script searches the current product page for an\n     existing Shopify product image and moves a copy into\n     our premium showcase.\n     ========================================================== *\/\n\n  function findProductImage() {\n\n    const selectors = [\n\n      \/* Shopify common product image selectors *\/\n\n      '.product__media img',\n\n      '.product__media-item img',\n\n      '.product-media-container img',\n\n      '[data-media-id] img',\n\n      '.product-gallery img',\n\n      '.product__image img',\n\n      '.product-single__photo img',\n\n      '.product__photos img',\n\n      '.product-gallery__image',\n\n      '.product-image img',\n\n      '.product-form + img'\n\n    ];\n\n\n    for (let i = 0; i \u003c selectors.length; i++) {\n\n      const image =\n        document.querySelector(selectors[i]);\n\n      if (\n        image \u0026\u0026\n        image.src \u0026\u0026\n        image.naturalWidth !== 0\n      ) {\n\n        return image;\n\n      }\n\n    }\n\n\n    \/* ========================================================\n       FALLBACK:\n       Find a reasonably large image on the page that appears\n       to belong to the product area.\n       ======================================================== *\/\n\n    const images =\n      Array.from(\n        document.querySelectorAll('img')\n      );\n\n\n    const candidate =\n      images.find(function (img) {\n\n        const rect =\n          img.getBoundingClientRect();\n\n        const src =\n          (\n            img.currentSrc ||\n            img.src ||\n            \"\"\n          ).toLowerCase();\n\n        return (\n          rect.width \u003e 180 \u0026\u0026\n          rect.height \u003e 180 \u0026\u0026\n          (\n            src.includes('cdn.shopify.com') ||\n            src.includes('shopify')\n          )\n        );\n\n      });\n\n\n    return candidate || null;\n\n  }\n\n\n  function insertProductImage() {\n\n    const holder =\n      document.getElementById(\n        'tt-product-holder'\n      );\n\n    if (!holder) return;\n\n\n    const existing =\n      holder.querySelector(\n        '.tt-product-image'\n      );\n\n    if (existing) return;\n\n\n    const source =\n      findProductImage();\n\n\n    if (!source) {\n\n      const fallback =\n        holder.querySelector(\n          '.tt-fallback-product'\n        );\n\n      if (fallback) {\n        fallback.style.display = 'block';\n      }\n\n      return;\n\n    }\n\n\n    const image =\n      document.createElement('img');\n\n\n    image.className =\n      'tt-product-image';\n\n\n    image.src =\n      source.currentSrc ||\n      source.src;\n\n\n    image.alt =\n      'ThermoTech InstantFlow Instant Water Heater';\n\n\n    image.loading =\n      'eager';\n\n\n    image.decoding =\n      'async';\n\n\n    holder.innerHTML = '';\n\n\n    holder.appendChild(image);\n\n  }\n\n\n  \/* ==========================================================\n     CTA FUNCTION\n     ---------------------------------------------------------- *\/\n\n  function findPurchaseTarget() {\n\n    const selectors = [\n\n      'form[action*=\"\/cart\/add\"]',\n\n      'form[action=\"\/cart\/add\"]',\n\n      '.product-form',\n\n      'product-form',\n\n      '[id*=\"ProductSubmitButton\"]',\n\n      'button[name=\"add\"]',\n\n      'button[type=\"submit\"]'\n\n    ];\n\n\n    for (\n      let i = 0;\n      i \u003c selectors.length;\n      i++\n    ) {\n\n      const target =\n        document.querySelector(\n          selectors[i]\n        );\n\n\n      if (target) {\n\n        return target;\n\n      }\n\n    }\n\n\n    return null;\n\n  }\n\n\n  function scrollToPurchase() {\n\n    const target =\n      findPurchaseTarget();\n\n\n    if (target) {\n\n      target.scrollIntoView({\n        behavior: 'smooth',\n        block: 'center'\n      });\n\n      return;\n\n    }\n\n\n    \/* Fallback *\/\n\n    const productSection =\n      document.querySelector(\n        '.shopify-section'\n      );\n\n\n    if (productSection) {\n\n      productSection.scrollIntoView({\n        behavior: 'smooth',\n        block: 'center'\n      });\n\n    }\n\n  }\n\n\n  \/* ==========================================================\n     CTA BUTTONS\n     ========================================================== *\/\n\n  document\n    .querySelectorAll(\n      '#thermotech-instantflow .tt-scroll-button, ' +\n      '#thermotech-instantflow .tt-final-button, ' +\n      '#thermotech-instantflow .tt-mobile-button'\n    )\n    .forEach(function (button) {\n\n      button.addEventListener(\n        'click',\n        function (event) {\n\n          event.preventDefault();\n\n          scrollToPurchase();\n\n        }\n      );\n\n    });\n\n\n  \/* ==========================================================\n     SCROLL REVEAL\n     ========================================================== *\/\n\n  function setupReveal() {\n\n    const items =\n      document.querySelectorAll(\n        '#thermotech-instantflow ' +\n        '.tt-feature, ' +\n        '#thermotech-instantflow ' +\n        '.tt-step, ' +\n        '#thermotech-instantflow ' +\n        '.tt-owner-card'\n      );\n\n\n    if (\n      !('IntersectionObserver' in window)\n    ) {\n\n      items.forEach(function (item) {\n        item.classList.add('visible');\n      });\n\n      return;\n\n    }\n\n\n    const observer =\n      new IntersectionObserver(\n        function (entries) {\n\n          entries.forEach(\n            function (entry) {\n\n              if (\n                entry.isIntersecting\n              ) {\n\n                entry.target.classList.add(\n                  'visible'\n                );\n\n                observer.unobserve(\n                  entry.target\n                );\n\n              }\n\n            }\n          );\n\n        },\n        {\n          threshold: .10,\n          rootMargin: '0px 0px -30px 0px'\n        }\n      );\n\n\n    items.forEach(function (item) {\n\n      observer.observe(item);\n\n    });\n\n  }\n\n\n  \/* ==========================================================\n     DESKTOP PRODUCT TILT\n     ========================================================== *\/\n\n  function setupProductInteraction() {\n\n    const box =\n      document.querySelector(\n        '#thermotech-instantflow .tt-product-box'\n      );\n\n\n    if (!box) return;\n\n\n    const image =\n      box.querySelector(\n        '.tt-product-image'\n      );\n\n\n    if (!image) return;\n\n\n    box.addEventListener(\n      'mousemove',\n      function (event) {\n\n        if (\n          window.innerWidth \u003c 769\n        ) {\n          return;\n        }\n\n\n        const rect =\n          box.getBoundingClientRect();\n\n\n        const x =\n          (\n            event.clientX -\n            rect.left\n          ) \/ rect.width - .5;\n\n\n        const y =\n          (\n            event.clientY -\n            rect.top\n          ) \/ rect.height - .5;\n\n\n        image.style.transform =\n          'translate(' +\n          (x * 8) +\n          'px,' +\n          (y * 8) +\n          'px)';\n\n      }\n    );\n\n\n    box.addEventListener(\n      'mouseleave',\n      function () {\n\n        image.style.transform = '';\n\n      }\n    );\n\n  }\n\n\n  \/* ==========================================================\n     INITIALISE\n     ========================================================== *\/\n\n  function initialise() {\n\n    insertProductImage();\n\n    setupReveal();\n\n    setupProductInteraction();\n\n  }\n\n\n  \/* ==========================================================\n     SHOPIFY CAN LOAD PRODUCT IMAGES AFTER PAGE LOAD.\n     TRY AGAIN A FEW TIMES WITHOUT CAUSING A LOOP.\n     ========================================================== *\/\n\n  initialise();\n\n\n  let attempts = 0;\n\n\n  const imageTimer =\n    setInterval(\n      function () {\n\n        attempts++;\n\n\n        const productImage =\n          document.querySelector(\n            '#thermotech-instantflow .tt-product-image'\n          );\n\n\n        if (\n          productImage ||\n          attempts \u003e= 10\n        ) {\n\n          clearInterval(\n            imageTimer\n          );\n\n          return;\n\n        }\n\n\n        insertProductImage();\n\n      },\n      500\n    );\n\n\n})();\n\u003c\/script\u003e","brand":"ThermoTech","offers":[{"title":"Default Title","offer_id":43520713195581,"sku":null,"price":0.0,"currency_code":"ZAR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0668\/4216\/5309\/files\/Screenshot_2026-08-26_020548.png?v=1787783007","url":"https:\/\/thermotechza.co.za\/products\/thermotech%e2%84%a2-instantflow-instant-water-heater","provider":"ThermoTech","version":"1.0","type":"link"}