{"title":"Automotive \u0026 Travel","description":"\u003cp\u003eGadgets built for life on the road — from tyre inflators to travel essentials, this collection has everything you need to keep moving.\u003c\/p\u003e","products":[{"product_id":"the-gadget-hub™-airdrive-150-smart-portable-inflator","title":"The Gadget Hub™ AirDrive 150 Smart Portable Inflator","description":"\u003cstyle\u003e\n  .ad150 {\n    --green: #a8e000;\n    --green-light: #d7ff55;\n    --black: #07090c;\n    --graphite: #111820;\n    --white: #ffffff;\n    --muted: #b9c2ca;\n    --blue-display: #a9e5ff;\n\n    max-width: 1200px;\n    margin: 30px auto;\n    overflow: hidden;\n    border-radius: 28px;\n    color: var(--white);\n    background:\n      radial-gradient(\n        circle at 82% 12%,\n        rgba(168, 224, 0, 0.18),\n        transparent 28%\n      ),\n      linear-gradient(145deg, var(--black), var(--graphite));\n    box-shadow: 0 28px 80px rgba(0, 0, 0, 0.3);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .ad150 *,\n  .ad150 *::before,\n  .ad150 *::after {\n    box-sizing: border-box;\n  }\n\n  .ad150-inner {\n    padding: clamp(28px, 6vw, 76px);\n  }\n\n  \/* HERO *\/\n\n  .ad150-hero {\n    display: grid;\n    grid-template-columns: 1.05fr 0.95fr;\n    gap: 48px;\n    align-items: center;\n    min-height: 550px;\n  }\n\n  .ad150-brand {\n    display: inline-flex;\n    align-items: center;\n    gap: 9px;\n    padding: 8px 14px;\n    border: 1px solid rgba(168, 224, 0, 0.45);\n    border-radius: 999px;\n    color: var(--green-light);\n    background: rgba(168, 224, 0, 0.08);\n    font-size: 12px;\n    font-weight: 800;\n    letter-spacing: 0.13em;\n    text-transform: uppercase;\n    animation: adFade 0.7s ease both;\n  }\n\n  .ad150-dot {\n    width: 8px;\n    height: 8px;\n    border-radius: 50%;\n    background: var(--green);\n    box-shadow: 0 0 0 5px rgba(168, 224, 0, 0.12);\n    animation: adPulse 1.8s ease-in-out infinite;\n  }\n\n  .ad150-title {\n    margin: 20px 0 15px;\n    color: var(--white);\n    font-size: clamp(44px, 7vw, 84px);\n    font-weight: 900;\n    line-height: 0.93;\n    letter-spacing: -0.055em;\n    text-transform: uppercase;\n    animation: adRise 0.8s 0s ease both;\n  }\n\n  .ad150-title span {\n    display: block;\n    color: var(--green);\n  }\n\n  .ad150-name {\n    margin: 0 0 18px;\n    color: var(--white);\n    font-size: clamp(20px, 2.6vw, 29px);\n    font-weight: 800;\n  }\n\n  .ad150-name strong {\n    color: var(--green);\n  }\n\n  .ad150-description {\n    max-width: 650px;\n    margin: 0;\n    color: #dce2e8;\n    font-size: clamp(16px, 2vw, 19px);\n    line-height: 1.7;\n    animation: adRise 0.8s 0.12s ease both;\n  }\n\n  .ad150-sa {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin-top: 22px;\n    padding: 11px 16px;\n    border-radius: 12px;\n    color: #081000;\n    background: linear-gradient(100deg, var(--green), var(--green-light));\n    font-size: 13px;\n    font-weight: 900;\n    letter-spacing: 0.05em;\n    animation: adRise 0.8s 0.2s ease both;\n  }\n\n  \/* ANIMATED INFLATOR *\/\n\n  .ad150-visual {\n    position: relative;\n    display: grid;\n    place-items: center;\n    min-height: 500px;\n  }\n\n  .ad150-orbit {\n    position: absolute;\n    width: 420px;\n    height: 420px;\n    border: 1px solid rgba(168, 224, 0, 0.2);\n    border-radius: 50%;\n    box-shadow: inset 0 0 90px rgba(168, 224, 0, 0.05);\n    animation: adSpin 18s linear infinite;\n  }\n\n  .ad150-orbit::after {\n    content: \"\";\n    position: absolute;\n    top: 16%;\n    right: 5%;\n    width: 14px;\n    height: 14px;\n    border-radius: 50%;\n    background: var(--green);\n    box-shadow: 0 0 25px var(--green);\n  }\n\n  .ad150-machine {\n    position: relative;\n    z-index: 3;\n    width: 190px;\n    height: 390px;\n    overflow: hidden;\n    border: 1px solid #303841;\n    border-radius: 34px;\n    background:\n      linear-gradient(\n        105deg,\n        #242b31,\n        #050607 42%,\n        #171c21 72%,\n        #030404\n      );\n    box-shadow:\n      0 35px 60px rgba(0, 0, 0, 0.5),\n      0 0 45px rgba(168, 224, 0, 0.13);\n    animation: adFloat 4.5s ease-in-out infinite;\n  }\n\n  .ad150-screen {\n    position: relative;\n    height: 160px;\n    padding-top: 45px;\n    color: var(--blue-display);\n    background:\n      linear-gradient(\n        100deg,\n        rgba(255, 255, 255, 0.1),\n        transparent 35%,\n        rgba(255, 255, 255, 0.04)\n      ),\n      #030608;\n    font-family: \"Courier New\", monospace;\n    text-align: center;\n    box-shadow: inset 0 -1px 0 rgba(255, 255, 255, 0.07);\n  }\n\n  .ad150-reading {\n    font-size: 42px;\n    font-weight: 900;\n    letter-spacing: 0.05em;\n    text-shadow: 0 0 18px rgba(169, 229, 255, 0.5);\n  }\n\n  .ad150-unit {\n    margin-top: 5px;\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: 0.18em;\n  }\n\n  .ad150-controls {\n    display: grid;\n    grid-template-columns: repeat(3, 38px);\n    gap: 4px;\n    justify-content: center;\n    margin-top: 28px;\n  }\n\n  .ad150-button {\n    display: grid;\n    place-items: center;\n    width: 38px;\n    height: 38px;\n    border: 1px solid #4b535a;\n    border-radius: 8px;\n    color: #dfe4e8;\n    background: #1c2227;\n    font-weight: 900;\n    box-shadow: inset 0 2px 5px rgba(255, 255, 255, 0.05);\n  }\n\n  .ad150-button-main {\n    color: #081000;\n    background: var(--green);\n    animation: adPower 1.8s ease-in-out infinite;\n  }\n\n  .ad150-vents {\n    position: absolute;\n    bottom: 34px;\n    left: 50%;\n    width: 92px;\n    height: 65px;\n    background-image: radial-gradient(#4b535a 2px, transparent 2px);\n    background-size: 10px 10px;\n    transform: translateX(-50%);\n  }\n\n  .ad150-hose {\n    position: absolute;\n    z-index: 1;\n    top: 55px;\n    right: 2%;\n    width: 240px;\n    height: 170px;\n    border-top: 12px solid #1d252b;\n    border-right: 12px solid #1d252b;\n    border-radius: 0 95px 0 0;\n    filter: drop-shadow(0 0 6px rgba(168, 224, 0, 0.3));\n  }\n\n  .ad150-light {\n    position: absolute;\n    z-index: 2;\n    right: 4%;\n    bottom: 80px;\n    width: 130px;\n    height: 200px;\n    opacity: 0.42;\n    background: linear-gradient(\n      to right,\n      rgba(220, 245, 255, 0.9),\n      transparent\n    );\n    clip-path: polygon(0 42%, 100% 0, 100% 100%, 0 58%);\n    filter: blur(8px);\n    animation: adLight 2.4s ease-in-out infinite;\n  }\n\n  .ad150-visual-badge {\n    position: absolute;\n    z-index: 4;\n    right: 0;\n    bottom: 15px;\n    padding: 10px 15px;\n    border: 1px solid rgba(168, 224, 0, 0.45);\n    border-radius: 999px;\n    color: var(--green-light);\n    background: rgba(7, 9, 12, 0.9);\n    font-size: 12px;\n    font-weight: 900;\n    letter-spacing: 0.08em;\n  }\n\n  \/* HEADINGS *\/\n\n  .ad150-heading {\n    margin: 65px 0 12px;\n    color: var(--white);\n    font-size: clamp(29px, 4vw, 45px);\n    font-weight: 900;\n    letter-spacing: -0.03em;\n    text-align: center;\n  }\n\n  .ad150-heading span {\n    color: var(--green);\n  }\n\n  .ad150-subheading {\n    max-width: 720px;\n    margin: 0 auto 30px;\n    color: var(--muted);\n    font-size: 16px;\n    line-height: 1.65;\n    text-align: center;\n  }\n\n  \/* FEATURE CARDS *\/\n\n  .ad150-features {\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    gap: 14px;\n  }\n\n  .ad150-card {\n    position: relative;\n    overflow: hidden;\n    padding: 25px 20px;\n    border: 1px solid rgba(255, 255, 255, 0.09);\n    border-radius: 20px;\n    background:\n      linear-gradient(\n        145deg,\n        rgba(255, 255, 255, 0.075),\n        rgba(255, 255, 255, 0.025)\n      );\n    animation: adRise 0.7s ease both;\n    transition:\n      transform 0.35s ease,\n      border-color 0.35s ease,\n      box-shadow 0.35s ease;\n  }\n\n  .ad150-card::after {\n    content: \"\";\n    position: absolute;\n    top: -80%;\n    left: -75%;\n    width: 55%;\n    height: 250%;\n    background: rgba(255, 255, 255, 0.07);\n    transform: rotate(25deg);\n    transition: left 0.65s ease;\n  }\n\n  .ad150-card:hover::after {\n    left: 130%;\n  }\n\n  .ad150-card:hover {\n    border-color: rgba(168, 224, 0, 0.5);\n    box-shadow: 0 19px 36px rgba(0, 0, 0, 0.28);\n    transform: translateY(-8px);\n  }\n\n  .ad150-card:nth-child(2) {\n    animation-delay: 0.08s;\n  }\n\n  .ad150-card:nth-child(3) {\n    animation-delay: 0.16s;\n  }\n\n  .ad150-card:nth-child(4) {\n    animation-delay: 0.24s;\n  }\n\n  .ad150-card:nth-child(5) {\n    animation-delay: 0.32s;\n  }\n\n  .ad150-card:nth-child(6) {\n    animation-delay: 0.4s;\n  }\n\n  .ad150-card:nth-child(7) {\n    animation-delay: 0.48s;\n  }\n\n  .ad150-icon {\n    display: grid;\n    place-items: center;\n    width: 50px;\n    height: 50px;\n    margin-bottom: 18px;\n    border-radius: 14px;\n    color: #081000;\n    background: var(--green);\n    box-shadow: 0 10px 25px rgba(168, 224, 0, 0.18);\n    font-size: 23px;\n  }\n\n  .ad150-card h3 {\n    position: relative;\n    z-index: 2;\n    margin: 0 0 9px;\n    color: var(--white);\n    font-size: 17px;\n    font-weight: 800;\n  }\n\n  .ad150-card p {\n    position: relative;\n    z-index: 2;\n    margin: 0;\n    color: var(--muted);\n    font-size: 14px;\n    line-height: 1.55;\n  }\n\n  \/* DIGITAL DISPLAY *\/\n\n  .ad150-monitor {\n    display: grid;\n    grid-template-columns: 0.9fr 1.1fr;\n    gap: 28px;\n    align-items: center;\n    padding: clamp(25px, 5vw, 50px);\n    border: 1px solid rgba(168, 224, 0, 0.2);\n    border-radius: 24px;\n    background:\n      radial-gradient(\n        circle at 25% 50%,\n        rgba(168, 224, 0, 0.1),\n        transparent 35%\n      ),\n      rgba(255, 255, 255, 0.035);\n  }\n\n  .ad150-display-box {\n    padding: 32px 24px;\n    border: 1px solid rgba(169, 229, 255, 0.18);\n    border-radius: 19px;\n    color: var(--blue-display);\n    background: #030608;\n    font-family: \"Courier New\", monospace;\n    text-align: center;\n    box-shadow:\n      inset 0 0 35px rgba(169, 229, 255, 0.04),\n      0 20px 35px rgba(0, 0, 0, 0.25);\n  }\n\n  .ad150-display-number {\n    font-size: clamp(52px, 9vw, 90px);\n    font-weight: 900;\n    line-height: 1;\n    text-shadow: 0 0 25px rgba(169, 229, 255, 0.5);\n    animation: adDisplay 2s ease-in-out infinite;\n  }\n\n  .ad150-units {\n    margin-top: 12px;\n    color: #dcefff;\n    font-size: 13px;\n    font-weight: 700;\n    letter-spacing: 0.14em;\n  }\n\n  .ad150-monitor-copy h3 {\n    margin: 0 0 13px;\n    color: var(--white);\n    font-size: clamp(26px, 4vw, 40px);\n  }\n\n  .ad150-monitor-copy h3 span {\n    color: var(--green);\n  }\n\n  .ad150-monitor-copy p {\n    margin: 0 0 18px;\n    color: var(--muted);\n    font-size: 15px;\n    line-height: 1.65;\n  }\n\n  .ad150-unit-list {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 9px;\n  }\n\n  .ad150-unit-pill {\n    padding: 8px 13px;\n    border: 1px solid rgba(168, 224, 0, 0.3);\n    border-radius: 999px;\n    color: var(--green-light);\n    background: rgba(168, 224, 0, 0.06);\n    font-size: 12px;\n    font-weight: 800;\n  }\n\n  \/* USES *\/\n\n  .ad150-uses {\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    gap: 14px;\n  }\n\n  .ad150-use {\n    padding: 27px 18px;\n    border: 1px solid rgba(168, 224, 0, 0.18);\n    border-radius: 19px;\n    background: rgba(168, 224, 0, 0.045);\n    text-align: center;\n    transition:\n      transform 0.3s ease,\n      background 0.3s ease;\n  }\n\n  .ad150-use:hover {\n    background: rgba(168, 224, 0, 0.09);\n    transform: scale(1.04);\n  }\n\n  .ad150-use-icon {\n    display: block;\n    margin-bottom: 13px;\n    font-size: 38px;\n  }\n\n  .ad150-use strong {\n    display: block;\n    color: var(--white);\n    font-size: 18px;\n  }\n\n  .ad150-use p {\n    margin: 8px 0 0;\n    color: var(--muted);\n    font-size: 14px;\n    line-height: 1.5;\n  }\n\n  \/* POWER *\/\n\n  .ad150-power {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 15px;\n  }\n\n  .ad150-power-card {\n    position: relative;\n    overflow: hidden;\n    min-height: 220px;\n    padding: 28px 23px;\n    border-radius: 20px;\n    color: #081000;\n    background: linear-gradient(135deg, var(--green), var(--green-light));\n    box-shadow: 0 15px 35px rgba(168, 224, 0, 0.12);\n    transition: transform 0.35s ease;\n  }\n\n  .ad150-power-card:hover {\n    transform: translateY(-7px);\n  }\n\n  .ad150-power-icon {\n    display: grid;\n    place-items: center;\n    width: 48px;\n    height: 48px;\n    margin-bottom: 20px;\n    border-radius: 14px;\n    color: var(--green);\n    background: #081000;\n    font-size: 22px;\n  }\n\n  .ad150-power-card h3 {\n    margin: 0 0 9px;\n    color: #081000;\n    font-size: 21px;\n    font-weight: 900;\n  }\n\n  .ad150-power-card p {\n    margin: 0;\n    color: #182000;\n    font-size: 14px;\n    font-weight: 600;\n    line-height: 1.55;\n  }\n\n  \/* FINAL BANNER *\/\n\n  .ad150-banner {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 22px;\n    margin-top: 48px;\n    padding: 28px 30px;\n    border-radius: 20px;\n    color: #081000;\n    background: linear-gradient(100deg, var(--green), #cfff41);\n  }\n\n  .ad150-banner strong {\n    display: block;\n    color: #081000;\n    font-size: clamp(22px, 3vw, 32px);\n    line-height: 1.15;\n  }\n\n  .ad150-banner p {\n    margin: 6px 0 0;\n    color: #182000;\n    font-weight: 600;\n  }\n\n  .ad150-banner-badge {\n    flex: 0 0 auto;\n    padding: 11px 16px;\n    border-radius: 12px;\n    color: var(--white);\n    background: #081000;\n    font-size: 13px;\n    font-weight: 900;\n    letter-spacing: 0.06em;\n  }\n\n  .ad150-footer {\n    padding: 20px;\n    color: #9fa8b2;\n    font-size: 12px;\n    font-weight: 700;\n    letter-spacing: 0.08em;\n    text-align: center;\n  }\n\n  \/* ANIMATIONS *\/\n\n  @keyframes adRise {\n    from {\n      opacity: 0;\n      transform: translateY(22px);\n    }\n\n    to {\n      opacity: 1;\n      transform: translateY(0);\n    }\n  }\n\n  @keyframes adFade {\n    from {\n      opacity: 0;\n    }\n\n    to {\n      opacity: 1;\n    }\n  }\n\n  @keyframes adPulse {\n    50% {\n      transform: scale(1.25);\n      box-shadow: 0 0 0 9px rgba(168, 224, 0, 0);\n    }\n  }\n\n  @keyframes adFloat {\n    50% {\n      transform: translateY(-10px);\n    }\n  }\n\n  @keyframes adPower {\n    50% {\n      box-shadow: 0 0 25px rgba(168, 224, 0, 0.55);\n    }\n  }\n\n  @keyframes adLight {\n    50% {\n      opacity: 0.7;\n      filter: blur(4px);\n    }\n  }\n\n  @keyframes adDisplay {\n    50% {\n      opacity: 0.72;\n    }\n  }\n\n  @keyframes adSpin {\n    to {\n      transform: rotate(360deg);\n    }\n  }\n\n  \/* TABLET *\/\n\n  @media (max-width: 900px) {\n    .ad150-features {\n      grid-template-columns: repeat(2, 1fr);\n    }\n\n    .ad150-card:last-child {\n      grid-column: span 2;\n    }\n  }\n\n  @media (max-width: 800px) {\n    .ad150 {\n      border-radius: 18px;\n    }\n\n    .ad150-hero {\n      grid-template-columns: 1fr;\n      min-height: 0;\n    }\n\n    .ad150-title {\n      font-size: clamp(42px, 13vw, 66px);\n    }\n\n    .ad150-monitor {\n      grid-template-columns: 1fr;\n    }\n\n    .ad150-uses {\n      grid-template-columns: repeat(2, 1fr);\n    }\n\n    .ad150-banner {\n      align-items: flex-start;\n      flex-direction: column;\n    }\n  }\n\n  \/* MOBILE *\/\n\n  @media (max-width: 560px) {\n    .ad150 {\n      margin: 18px auto;\n    }\n\n    .ad150-inner {\n      padding: 30px 18px;\n    }\n\n    .ad150-title {\n      font-size: clamp(40px, 14vw, 58px);\n    }\n\n    .ad150-description {\n      font-size: 15px;\n    }\n\n    .ad150-visual {\n      min-height: 445px;\n    }\n\n    .ad150-orbit {\n      width: 300px;\n      height: 300px;\n    }\n\n    .ad150-machine {\n      width: 165px;\n      height: 350px;\n    }\n\n    .ad150-screen {\n      height: 145px;\n    }\n\n    .ad150-hose {\n      right: 0;\n      width: 180px;\n    }\n\n    .ad150-features,\n    .ad150-uses,\n    .ad150-power {\n      grid-template-columns: 1fr;\n    }\n\n    .ad150-card:last-child {\n      grid-column: auto;\n    }\n\n    .ad150-heading {\n      margin-top: 48px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .ad150 *,\n    .ad150 *::before,\n    .ad150 *::after {\n      animation: none !important;\n      transition: none !important;\n    }\n  }\n\u003c\/style\u003e\n\u003csection class=\"ad150\"\u003e\n\u003cdiv class=\"ad150-inner\"\u003e\n\u003c!-- HERO --\u003e\n\u003cdiv class=\"ad150-hero\"\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"ad150-brand\"\u003e\n\u003cspan class=\"ad150-dot\"\u003e\u003c\/span\u003e The Gadget Hub™\u003c\/div\u003e\n\u003ch2 class=\"ad150-title\"\u003ePower on \u003cspan\u003ethe go.\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003cdiv class=\"ad150-name\"\u003e\n\u003cstrong\u003eAirDrive 150\u003c\/strong\u003e Smart Portable Inflator\u003c\/div\u003e\n\u003cp class=\"ad150-description\"\u003eWhether you are on the road, at the trail or in your driveway, the AirDrive 150 puts convenient cordless inflation in the palm of your hand. Monitor pressure digitally, illuminate your workspace and inflate wherever the journey takes you.\u003c\/p\u003e\n\u003cdiv class=\"ad150-sa\"\u003e🇿🇦 A SOUTH AFRICAN BRAND\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ad150-visual\"\u003e\n\u003cdiv class=\"ad150-orbit\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"ad150-hose\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"ad150-light\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"ad150-machine\"\u003e\n\u003cdiv class=\"ad150-screen\"\u003e\n\u003cdiv class=\"ad150-reading\"\u003e36.5\u003c\/div\u003e\n\u003cdiv class=\"ad150-unit\"\u003ePSI\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ad150-controls\"\u003e\n\u003cdiv class=\"ad150-button\"\u003e+\u003c\/div\u003e\n\u003cdiv class=\"ad150-button ad150-button-main\"\u003e●\u003c\/div\u003e\n\u003cdiv class=\"ad150-button\"\u003e−\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ad150-vents\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ad150-visual-badge\"\u003e150 PSI MAXIMUM\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- FEATURES --\u003e\n\u003ch2 class=\"ad150-heading\"\u003eCompact size. \u003cspan\u003ePowerful performance.\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003cp class=\"ad150-subheading\"\u003eA versatile inflation solution designed for your car, bakkie, motorcycle, bicycle and sporting equipment.\u003c\/p\u003e\n\u003cdiv class=\"ad150-features\"\u003e\n\u003carticle class=\"ad150-card\"\u003e\n\u003cdiv class=\"ad150-icon\"\u003e◴\u003c\/div\u003e\n\u003ch3\u003e150 PSI Maximum\u003c\/h3\u003e\n\u003cp\u003ePowerful inflation capacity for compatible vehicle tyres, bicycles and sports equipment.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"ad150-card\"\u003e\n\u003cdiv class=\"ad150-icon\"\u003e▦\u003c\/div\u003e\n\u003ch3\u003eDigital Display\u003c\/h3\u003e\n\u003cp\u003eMonitor pressure readings clearly while you inflate.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"ad150-card\"\u003e\n\u003cdiv class=\"ad150-icon\"\u003eϟ\u003c\/div\u003e\n\u003ch3\u003eCordless Operation\u003c\/h3\u003e\n\u003cp\u003eEnjoy convenient inflation without searching for a power cable.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"ad150-card\"\u003e\n\u003cdiv class=\"ad150-icon\"\u003e☀\u003c\/div\u003e\n\u003ch3\u003eBuilt-in LED Light\u003c\/h3\u003e\n\u003cp\u003eIlluminate the work area during low-light or night-time use.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"ad150-card\"\u003e\n\u003cdiv class=\"ad150-icon\"\u003e✓\u003c\/div\u003e\n\u003ch3\u003eValve Adaptors Included\u003c\/h3\u003e\n\u003cp\u003eConnect to compatible tyres, bicycles and sports balls.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"ad150-card\"\u003e\n\u003cdiv class=\"ad150-icon\"\u003e⌁\u003c\/div\u003e\n\u003ch3\u003eUSB Type-C Charging\u003c\/h3\u003e\n\u003cp\u003eRecharge the built-in lithium battery with a compatible cable.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"ad150-card\"\u003e\n\u003cdiv class=\"ad150-icon\"\u003e⚡\u003c\/div\u003e\n\u003ch3\u003eQuick-Charge Capability\u003c\/h3\u003e\n\u003cp\u003eSpend less time waiting and more time getting ready for the road.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c\/div\u003e\n\u003c!-- DIGITAL PRESSURE --\u003e\n\u003ch2 class=\"ad150-heading\"\u003ePressure at \u003cspan\u003ea glance.\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003cp class=\"ad150-subheading\"\u003eView the live pressure reading directly on the built-in digital screen.\u003c\/p\u003e\n\u003cdiv class=\"ad150-monitor\"\u003e\n\u003cdiv class=\"ad150-display-box\"\u003e\n\u003cdiv class=\"ad150-display-number\"\u003e36.5\u003c\/div\u003e\n\u003cdiv class=\"ad150-units\"\u003ePSI\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ad150-monitor-copy\"\u003e\n\u003ch3\u003eSmarter inflation. \u003cspan\u003eGreater control.\u003c\/span\u003e\n\u003c\/h3\u003e\n\u003cp\u003eThe clear digital display allows you to monitor pressure as you inflate. Select your preferred measurement unit for convenient pressure checking.\u003c\/p\u003e\n\u003cdiv class=\"ad150-unit-list\"\u003e\n\u003cspan class=\"ad150-unit-pill\"\u003eBAR\u003c\/span\u003e \u003cspan class=\"ad150-unit-pill\"\u003ePSI\u003c\/span\u003e \u003cspan class=\"ad150-unit-pill\"\u003eKPA\u003c\/span\u003e \u003cspan class=\"ad150-unit-pill\"\u003eKG\/CM²\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- USES --\u003e\n\u003ch2 class=\"ad150-heading\"\u003eOne inflator. \u003cspan\u003eMultiple uses.\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003cp class=\"ad150-subheading\"\u003eKeep it close at home, in your vehicle or on your next adventure.\u003c\/p\u003e\n\u003cdiv class=\"ad150-uses\"\u003e\n\u003carticle class=\"ad150-use\"\u003e\u003cspan class=\"ad150-use-icon\"\u003e🚗\u003c\/span\u003e \u003cstrong\u003eCars \u0026amp; Bakkies\u003c\/strong\u003e\n\u003cp\u003eConveniently monitor and top up compatible vehicle tyres.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"ad150-use\"\u003e\u003cspan class=\"ad150-use-icon\"\u003e🏍️\u003c\/span\u003e \u003cstrong\u003eMotorcycles\u003c\/strong\u003e\n\u003cp\u003eMaintain suitable tyre pressure before your next ride.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e","brand":"GadgetHub","offers":[{"title":"Default Title","offer_id":53841267622251,"sku":null,"price":699.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1009\/1072\/7531\/files\/ChatGPT_Image_Sep_12_2026_02_09_19_PM_2ea06893-7bb7-401d-8f5e-acbd72fe5103.png?v=1789215214"},{"product_id":"the-gadget-hub™-driveguard-duo-dual-lens-dash-cam","title":"The Gadget Hub™ DriveGuard Duo Dual-Lens Dash Cam","description":"\u003cstyle\u003e\n  .dg-duo {\n    --green: #a8e000;\n    --green-light: #d6ff54;\n    --black: #07090c;\n    --graphite: #111820;\n    --panel: #151d25;\n    --white: #ffffff;\n    --muted: #b8c1ca;\n    --record: #ff3b3b;\n\n    max-width: 1200px;\n    margin: 30px auto;\n    overflow: hidden;\n    border-radius: 28px;\n    color: var(--white);\n    background:\n      radial-gradient(\n        circle at 82% 10%,\n        rgba(168, 224, 0, 0.17),\n        transparent 28%\n      ),\n      linear-gradient(145deg, var(--black), var(--graphite));\n    box-shadow: 0 28px 80px rgba(0, 0, 0, 0.3);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .dg-duo *,\n  .dg-duo *::before,\n  .dg-duo *::after {\n    box-sizing: border-box;\n  }\n\n  .dg-inner {\n    padding: clamp(28px, 6vw, 76px);\n  }\n\n  \/* HERO *\/\n\n  .dg-hero {\n    display: grid;\n    grid-template-columns: 1.04fr 0.96fr;\n    gap: 45px;\n    align-items: center;\n    min-height: 550px;\n  }\n\n  .dg-brand {\n    display: inline-flex;\n    align-items: center;\n    gap: 9px;\n    padding: 8px 14px;\n    border: 1px solid rgba(168, 224, 0, 0.45);\n    border-radius: 999px;\n    color: var(--green-light);\n    background: rgba(168, 224, 0, 0.08);\n    font-size: 12px;\n    font-weight: 800;\n    letter-spacing: 0.13em;\n    text-transform: uppercase;\n    animation: dgFade 0.7s ease both;\n  }\n\n  .dg-brand-dot {\n    width: 8px;\n    height: 8px;\n    border-radius: 50%;\n    background: var(--green);\n    box-shadow: 0 0 0 5px rgba(168, 224, 0, 0.12);\n    animation: dgPulse 1.8s ease-in-out infinite;\n  }\n\n  .dg-title {\n    margin: 20px 0 14px;\n    color: var(--white);\n    font-size: clamp(44px, 7vw, 82px);\n    font-weight: 900;\n    line-height: 0.94;\n    letter-spacing: -0.055em;\n    text-transform: uppercase;\n    animation: dgRise 0.8s ease both;\n  }\n\n  .dg-title span {\n    display: block;\n    color: var(--green);\n  }\n\n  .dg-product-name {\n    margin: 0 0 18px;\n    color: var(--white);\n    font-size: clamp(20px, 2.6vw, 29px);\n    font-weight: 800;\n  }\n\n  .dg-product-name strong {\n    color: var(--green);\n  }\n\n  .dg-description {\n    max-width: 650px;\n    margin: 0;\n    color: #dce2e8;\n    font-size: clamp(16px, 2vw, 19px);\n    line-height: 1.7;\n    animation: dgRise 0.8s 0.12s ease both;\n  }\n\n  .dg-sa {\n    display: inline-flex;\n    align-items: center;\n    gap: 9px;\n    margin-top: 22px;\n    padding: 11px 16px;\n    border-radius: 12px;\n    color: #081000;\n    background: linear-gradient(100deg, var(--green), var(--green-light));\n    font-size: 13px;\n    font-weight: 900;\n    letter-spacing: 0.05em;\n    animation: dgRise 0.8s 0.2s ease both;\n  }\n\n  \/* ANIMATED DASH CAM *\/\n\n  .dg-visual {\n    position: relative;\n    display: grid;\n    place-items: center;\n    min-height: 500px;\n  }\n\n  .dg-orbit {\n    position: absolute;\n    width: 420px;\n    height: 420px;\n    border: 1px solid rgba(168, 224, 0, 0.2);\n    border-radius: 50%;\n    box-shadow: inset 0 0 90px rgba(168, 224, 0, 0.05);\n    animation: dgSpin 18s linear infinite;\n  }\n\n  .dg-orbit::after {\n    content: \"\";\n    position: absolute;\n    top: 15%;\n    right: 5%;\n    width: 14px;\n    height: 14px;\n    border-radius: 50%;\n    background: var(--green);\n    box-shadow: 0 0 25px var(--green);\n  }\n\n  .dg-camera {\n    position: relative;\n    z-index: 3;\n    width: 390px;\n    height: 205px;\n    border: 1px solid #303942;\n    border-radius: 22px;\n    background:\n      linear-gradient(\n        110deg,\n               #252c33,\n        #050607 45%,\n        #191e23 72%,\n        #030404\n           );\n       box-shadow:\n      0 35px 60px rgba(0, 0, 0, 0.52),\n      0 0 45px rgba(168, 224, 0, 0.12);\n    animation: dgFloat 4.5s ease-in-out infinite;\n  }\n\n  .dg-mount {\n    position: absolute;\n    bottom: 188px;\n    left: 50%;\n    width: 68px;\n    height: 90px;\n    border-radius: 15px 15px 8px 8px;\n    background: linear-gradient(90deg, #13181d, #333b42, #090b0d);\n    transform: translateX(-50%);\n  }\n\n  .dg-mount::before {\n    content: \"\";\n    position: absolute;\n    bottom: 72px;\n    left: 50%;\n    width: 125px;\n    height: 42px;\n    border-radius: 50%;\n    background: linear-gradient(180deg, #30373e, #080a0c);\n    transform: translateX(-50%);\n  }\n\n  .dg-screen {\n    position: absolute;\n    top: 26px;\n    left: 25px;\n    display: grid;\n    grid-template-columns: 1fr 0.78fr;\n    gap: 3px;\n    width: 260px;\n    height: 150px;\n    padding: 4px;\n    border: 3px solid #343c43;\n    border-radius: 9px;\n    background: #020304;\n    overflow: hidden;\n  }\n\n  .dg-road-view,\n  .dg-cabin-view {\n    position: relative;\n    overflow: hidden;\n  }\n\n  .dg-road-view {\n    background:\n      linear-gradient(\n        145deg,\n        transparent 55%,\n        rgba(168, 224, 0, 0.25)\n      ),\n      linear-gradient(#15304a 0 46%, #2f3336 46% 100%);\n  }\n\n  .dg-road-view::before {\n    content: \"\";\n    position: absolute;\n    right: 46%;\n    bottom: -20px;\n    width: 4px;\n    height: 100px;\n    background: repeating-linear-gradient(\n      to bottom,\n      #ffffff 0 15px,\n      transparent 15px 28px\n    );\n    transform: rotate(8deg);\n  }\n\n  .dg-cabin-view {\n    background:\n      radial-gradient(\n        circle at 50% 55%,\n        #7a8288 0 13%,\n        transparent 14%\n      ),\n      linear-gradient(145deg, #30363b, #0b0e10);\n  }\n\n  .dg-rec {\n    position: absolute;\n    z-index: 4;\n    top: 34px;\n    left: 35px;\n    display: flex;\n    align-items: center;\n    gap: 5px;\n    color: var(--white);\n    font-size: 10px;\n    font-weight: 900;\n  }\n\n  .dg-rec-dot {\n    width: 8px;\n    height: 8px;\n    border-radius: 50%;\n    background: var(--record);\n    box-shadow: 0 0 10px var(--record);\n    animation: dgRecord 1.2s ease-in-out infinite;\n  }\n\n  .dg-lens {\n    position: absolute;\n    top: 37px;\n    right: -17px;\n    display: grid;\n    place-items: center;\n    width: 90px;\n    height: 90px;\n    border: 8px solid #242b30;\n    border-radius: 22px;\n    background:\n      radial-gradient(\n        circle,\n        #b366ff 0 13%,\n        #527dff 14% 28%,\n        #0a1018 29% 47%,\n        #222a31 48% 100%\n      );\n    box-shadow:\n      0 0 0 3px #586068,\n      0 0 30px rgba(168, 224, 0, 0.14);\n    animation: dgLens 2.5s ease-in-out infinite;\n  }\n\n  .dg-cabin-lens {\n    position: absolute;\n    top: 42px;\n    left: -44px;\n    width: 72px;\n    height: 95px;\n    border-radius: 35px 10px 10px 35px;\n    background: linear-gradient(90deg, #2d343a, #080a0c);\n    box-shadow: inset 7px 0 10px rgba(255, 255, 255, 0.05);\n  }\n\n  .dg-visual-badge {\n    position: absolute;\n    z-index: 5;\n    right: 0;\n    bottom: 25px;\n    padding: 10px 15px;\n    border: 1px solid rgba(168, 224, 0, 0.45);\n    border-radius: 999px;\n    color: var(--green-light);\n    background: rgba(7, 9, 12, 0.9);\n    font-size: 12px;\n    font-weight: 900;\n    letter-spacing: 0.08em;\n  }\n\n  \/* SECTION HEADINGS *\/\n\n  .dg-heading {\n    margin: 65px 0 12px;\n    color: var(--white);\n    font-size: clamp(29px, 4vw, 45px);\n    font-weight: 900;\n    letter-spacing: -0.03em;\n    text-align: center;\n  }\n\n  .dg-heading span {\n    color: var(--green);\n  }\n\n  .dg-subheading {\n    max-width: 730px;\n    margin: 0 auto 30px;\n    color: var(--muted);\n    font-size: 16px;\n    line-height: 1.65;\n    text-align: center;\n  }\n\n  \/* FEATURES *\/\n\n  .dg-features {\n    display: grid;\n    grid-template-columns: repeat(5, 1fr);\n    gap: 13px;\n  }\n\n  .dg-card {\n    position: relative;\n    overflow: hidden;\n    padding: 25px 18px;\n    border: 1px solid rgba(255, 255, 255, 0.09);\n    border-radius: 19px;\n    background:\n      linear-gradient(\n        145deg,\n        rgba(255, 255, 255, 0.075),\n        rgba(255, 255, 255, 0.025)\n      );\n    transition:\n      transform 0.35s ease,\n      border-color 0.35s ease,\n      box-shadow 0.35s ease;\n    animation: dgRise 0.7s ease both;\n  }\n\n  .dg-card::after {\n    content: \"\";\n    position: absolute;\n    top: -80%;\n    left: -75%;\n    width: 55%;\n    height: 250%;\n    background: rgba(255, 255, 255, 0.07);\n    transform: rotate(25deg);\n    transition: left 0.65s ease;\n  }\n\n  .dg-card:hover::after {\n    left: 130%;\n  }\n\n  .dg-card:hover {\n    border-color: rgba(168, 224, 0, 0.5);\n    box-shadow: 0 19px 36px rgba(0, 0, 0, 0.28);\n    transform: translateY(-8px);\n  }\n\n  .dg-card:nth-child(2) {\n    animation-delay: 0.08s;\n  }\n\n  .dg-card:nth-child(3) {\n    animation-delay: 0.16s;\n  }\n\n  .dg-card:nth-child(4) {\n    animation-delay: 0.24s;\n  }\n\n  .dg-card:nth-child(5) {\n    animation-delay: 0.32s;\n  }\n\n  .dg-icon {\n    display: grid;\n    place-items: center;\n    width: 50px;\n    height: 50px;\n    margin-bottom: 18px;\n    border-radius: 14px;\n    color: #081000;\n    background: var(--green);\n    box-shadow: 0 10px 25px rgba(168, 224, 0, 0.18);\n    font-size: 23px;\n  }\n\n  .dg-card h3 {\n    position: relative;\n    z-index: 2;\n    margin: 0 0 9px;\n    color: var(--white);\n    font-size: 16px;\n    font-weight: 800;\n  }\n\n  .dg-card p {\n    position: relative;\n    z-index: 2;\n    margin: 0;\n    color: var(--muted);\n    font-size: 13px;\n    line-height: 1.55;\n  }\n\n  \/* DUAL CAMERA PANEL *\/\n\n  .dg-dual-panel {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 15px;\n  }\n\n  .dg-view {\n    position: relative;\n    min-height: 310px;\n    overflow: hidden;\n    padding: 28px;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 22px;\n  }\n\n  .dg-front {\n    background:\n      linear-gradient(\n        to bottom,\n        rgba(5, 8, 10, 0.05),\n        rgba(5, 8, 10, 0.92)\n      ),\n      linear-gradient(145deg, #34688a, #111820 58%);\n  }\n\n  .dg-inside {\n    background:\n      radial-gradient(\n        circle at 50% 38%,\n        rgba(168, 224, 0, 0.13),\n        transparent 30%\n      ),\n      linear-gradient(145deg, #262e34, #0a0d10);\n  }\n\n  .dg-view-label {\n    display: inline-block;\n    padding: 8px 12px;\n    border-radius: 999px;\n    color: #081000;\n    background: var(--green);\n    font-size: 12px;\n    font-weight: 900;\n  }\n\n  .dg-view h3 {\n    margin: 70px 0 10px;\n    color: var(--white);\n    font-size: clamp(27px, 4vw, 43px);\n    line-height: 1;\n  }\n\n  .dg-view h3 span {\n    color: var(--green);\n  }\n\n  .dg-view p {\n    margin: 0;\n    color: #dbe1e6;\n    line-height: 1.6;\n  }\n\n  .dg-angle {\n    position: absolute;\n    right: 25px;\n    bottom: 25px;\n    left: 25px;\n    height: 65px;\n    border-top: 3px solid var(--green);\n    border-radius: 50% 50% 0 0;\n    color: var(--green-light);\n    font-size: 15px;\n    font-weight: 900;\n    text-align: center;\n    padding-top: 18px;\n    animation: dgAngle 2.5s ease-in-out infinite;\n  }\n\n  \/* PROTECTION *\/\n\n  .dg-protection {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 15px;\n  }\n\n  .dg-protection-card {\n    padding: 28px 23px;\n    border: 1px solid rgba(168, 224, 0, 0.18);\n    border-radius: 20px;\n    background: rgba(168, 224, 0, 0.045);\n    text-align: center;\n    transition:\n      transform 0.35s ease,\n      background 0.35s ease;\n  }\n\n  .dg-protection-card:hover {\n    background: rgba(168, 224, 0, 0.09);\n    transform: translateY(-7px);\n  }\n\n  .dg-protection-icon {\n    display: grid;\n    place-items: center;\n    width: 58px;\n    height: 58px;\n    margin: 0 auto 18px;\n    border-radius: 17px;\n    color: #081000;\n    background: var(--green);\n    font-size: 27px;\n    box-shadow: 0 10px 25px rgba(168, 224, 0, 0.18);\n  }\n\n  .dg-protection-card h3 {\n    margin: 0 0 9px;\n    color: var(--white);\n    font-size: 19px;\n  }\n\n  .dg-protection-card-card p,\n  .dg-protection-card p {\n    margin: 0;\n    color: var(--muted);\n    font-size: 14px;\n    line-height: 1.58;\n  }\n\n  \/* SOUTH AFRICAN ROADS *\/\n\n  .dg-local {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 14px;\n  }\n\n  .dg-local-item {\n    padding: 24px 20px;\n    border-radius: 18px;\n    color: #081000;\n    background: linear-gradient(135deg, var(--green), var(--green-light));\n    transition: transform 0.35s ease;\n  }\n\n  .dg-local-item:hover {\n    transform: scale(1.035);\n  }\n\n  .dg-local-item strong {\n    display: block;\n    margin-bottom: 7px;\n    color: #081000;\n    font-size: 19px;\n  }\n\n  .dg-local-item p {\n    margin: 0;\n    color: #182000;\n    font-size: 14px;\n    font-weight: 600;\n    line-height: 1.5;\n  }\n\n  \/* NOTICE *\/\n\n  .dg-notice {\n    display: flex;\n    gap: 17px;\n    align-items: flex-start;\n    margin-top: 42px;\n    padding: 22px 24px;\n    border: 1px solid rgba(255, 193, 7, 0.35);\n    border-radius: 18px;\n    background: rgba(255, 193, 7, 0.07);\n  }\n\n  .dg-notice-icon {\n    flex: 0 0 auto;\n    font-size: 28px;\n  }\n\n  .dg-notice strong {\n    display: block;\n    margin-bottom: 6px;\n    color: #ffe298;\n    font-size: 17px;\n  }\n\n  .dg-notice p {\n    margin: 0;\n    color: #d8d1bc;\n    font-size: 14px;\n    line-height: 1.55;\n  }\n\n  \/* FINAL BANNER *\/\n\n  .dg-banner {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 22px;\n    margin-top: 28px;\n    padding: 28px 30px;\n    border-radius: 20px;\n    color: #081000;\n    background: linear-gradient(100deg, var(--green), #cfff41);\n  }\n\n  .dg-banner strong {\n    display: block;\n    color: #081000;\n    font-size: clamp(22px, 3vw, 32px);\n    line-height: 1.15;\n  }\n\n  .dg-banner p {\n    margin: 6px 0 0;\n    color: #182000;\n    font-weight: 600;\n  }\n\n  .dg-banner-badge {\n    flex: 0 0 auto;\n    padding: 11px 16px;\n    border-radius: 12px;\n    color: var(--white);\n    background: #081000;\n    font-size: 13px;\n    font-weight: 900;\n    letter-spacing: 0.06em;\n  }\n\n  .dg-footer {\n    padding: 20px;\n    color: #9fa8b2;\n    font-size: 12px;\n    font-weight: 700;\n    letter-spacing: 0.08em;\n    text-align: center or;\n  }\n\n  \/* ANIMATIONS *\/\n\n  @keyframes dgRise {\n    from {\n      opacity: 0;\n      transform: translateY(22px);\n    }\n\n    to {\n      opacity: 1;\n      transform: translateY(0);\n    }\n  }\n\n  @keyframes dgFade {\n    from {\n      opacity: 0;\n    }\n\n    to {\n      opacity: 1;\n    }\n  }\n\n  @keyframes dgPulse {\n    50% {\n      transform: scale(1.25);\n      box-shadow: 0 0 0 9px rgba(168, 224, 0, 0);\n    }\n  }\n\n  @keyframes dgFloat {\n    50% {\n      transform: translateY(-10px);\n    }\n  }\n\n  @keyframes dgRecord {\n    50% {\n      opacity: 0.25;\n    }\n  }\n\n  @keyframes dgLens {\n    50% {\n      box-shadow:\n        0 0 0 3px #586068,\n        0 0 38px rgba(168, 224, 0, 0.4);\n    }\n  }\n\n  @keyframes dgAngle {\n    50% {\n      opacity: 0.55;\n      transform: scaleX(0.92);\n    }\n  }\n\n  @keyframes dgSpin {\n    to {\n      transform: rotate(360deg);\n    }\n  }\n\n  \/* TABLET *\/\n\n  @media (max-width: 920px) {\n    .dg-features {\n      grid-template-columns: repeat(2, 1fr);\n    }\n\n    .dg-card:last-child {\n      grid-column: span 2;\n    }\n  }\n\n  @media (max-width: 800px) {\n    .dg-duo {\n      border-radius: 18px;\n    }\n\n    .dg-hero {\n      grid-template-columns: 1fr;\n      min-height: 0;\n    }\n\n    .dg-title {\n      font-size: clamp(42px, 13vw, 66px);\n    }\n\n    .dg-visual {\n      min-height: 470px;\n    }\n\n    .dg-dual-panel {\n      grid-template-columns: 1fr;\n    }\n\n    .dg-protection,\n    .dg-local {\n      grid-template-columns: 1fr;\n    }\n\n    .dg-banner {\n      align-items: flex-start;\n      flex-direction: column;\n    }\n  }\n\n  \/* MOBILE *\/\n\n  @media (max-width: 560px) {\n    .dg-duo {\n      margin: 18px auto;\n    }\n\n    .dg-inner {\n      padding: 30px 18px;\n    }\n\n    .dg-title {\n      font-size: clamp(40px, 14vw, 58px);\n    }\n\n    .dg-description {\n      font-size: 15px;\n    }\n\n    .dg-orbit {\n      width: 300px;\n      height: 300px;\n    }\n\n    .dg-camera {\n      width: 290px;\n      height: 165px;\n    }\n\n    .dg-screen {\n      top: 22px;\n      left: 18px;\n      width: 192px;\n      height: 118px;\n    }\n\n    .dg-mount {\n      bottom: 150px;\n    }\n\n    .dg-lens {\n      top: 32px;\n      right: -12px;\n      width: 68px;\n      height: 68px;\n      border-width: 6px;\n    }\n\n    .dg-cabin-lens {\n      top: 35px;\n      left: -30px;\n      width: 52px;\n      height: 75px;\n    }\n\n    .dg-features {\n      grid-template-columns: 1fr;\n    }\n\n    .dg-card:last-child {\n      grid-column: auto;\n    }\n\n    .dg-heading {\n      margin-top: 48px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .dg-duo *,\n    .dg-duo *::before,\n    .dg-duo *::after {\n      animation: none !important;\n      transition: none !important;\n    }\n  }\n\u003c\/style\u003e\n\u003csection class=\"dg-duo\"\u003e\n\u003cdiv class=\"dg-inner\"\u003e\n\u003c!-- HERO --\u003e\n\u003cdiv class=\"dg-hero\"\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"dg-brand\"\u003e\n\u003cspan class=\"dg-brand-dot\"\u003e\u003c\/span\u003e The Gadget Hub™\u003c\/div\u003e\n\u003ch2 class=\"dg-title\"\u003eSee more. \u003cspan\u003eRecord more.\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003cdiv class=\"dg-product-name\"\u003e\n\u003cstrong\u003eDriveGuard Duo\u003c\/strong\u003e Dual-Lens Dash Cam\u003c\/div\u003e\n\u003cp class=\"dg-description\"\u003eJohannesburg roads demand more than a basic dash cam. DriveGuard Duo records the road ahead in 1080P and the cabin in 720P simultaneously, giving you two useful perspectives in one compact device.\u003c\/p\u003e\n\u003cdiv class=\"dg-sa\"\u003e🇿🇦 A SOUTH AFRICAN BRAND\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"dg-visual\"\u003e\n\u003cdiv class=\"dg-orbit\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"dg-camera\"\u003e\n\u003cdiv class=\"dg-mount\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"dg-screen\"\u003e\n\u003cdiv class=\"dg-road-view\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"dg-cabin-view\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"dg-rec\"\u003e\n\u003cspan class=\"dg-rec-dot\"\u003e\u003c\/span\u003e REC\u003c\/div\u003e\n\u003cdiv class=\"dg-lens\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"dg-cabin-lens\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"dg-visual-badge\"\u003eDUAL-LENS RECORDING\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- FEATURES --\u003e\n\u003ch2 class=\"dg-heading\"\u003eTwo views. \u003cspan\u003eOne journey.\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003cp class=\"dg-subheading\"\u003eCapture the road and cabin simultaneously with a compact camera designed for everyday South African driving.\u003c\/p\u003e\n\u003cdiv class=\"dg-features\"\u003e\n\u003carticle class=\"dg-card\"\u003e\n\u003cdiv class=\"dg-icon\"\u003e🎥\u003c\/div\u003e\n\u003ch3\u003eDual-Lens Recording\u003c\/h3\u003e\n\u003cp\u003eCapture the road ahead and your vehicle interior at the same time.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"dg-card\"\u003e\n\u003cdiv class=\"dg-icon\"\u003e1080\u003c\/div\u003e\n\u003ch3\u003eFront 1080P\u003c\/h3\u003e\n\u003cp\u003eRecords the forward-facing road view in Full HD resolution.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"dg-card\"\u003e\n\u003cdiv class=\"dg-icon\"\u003e720\u003c\/div\u003e\n\u003ch3\u003eCabin 720P\u003c\/h3\u003e\n\u003cp\u003eRecords a secondary view of your vehicle's interior.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"dg-card\"\u003e\n\u003cdiv class=\"dg-icon\"\u003e170°\u003c\/div\u003e\n\u003ch3\u003eWide-Angle Lens\u003c\/h3\u003e\n\u003cp\u003eCaptures a broader view of lanes and roadside surroundings.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"dg-card\"\u003e\n\u003cdiv class=\"dg-icon\"\u003e☾\u003c\/div\u003e\n\u003ch3\u003eNight Vision\u003c\/h3\u003e\n\u003cp\u003eSupports clearer recording during evening and low-light journeys.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c\/div\u003e\n\u003c!-- TWO CAMERA VIEWS --\u003e\n\u003ch2 class=\"dg-heading\"\u003eCoverage inside \u003cspan\u003eand out.\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003cp class=\"dg-subheading\"\u003eTwo cameras work together to record two perspectives from one device.\u003c\/p\u003e\n\u003cdiv class=\"\"\u003e\n\u003cdiv class=\"dg-dual-panel\"\u003e\n\u003carticle class=\"dg-view dg-front\"\u003e\n\u003cdiv class=\"dg-view-label\"\u003eFRONT CAMERA\u003c\/div\u003e\n\u003ch3\u003e\n\u003cspan\u003e1080P\u003c\/span\u003e Full HD\u003c\/h3\u003e\n\u003cp\u003eRecords the road ahead with a wide 170° viewing angle.\u003c\/p\u003e\n\u003cdiv class=\"dg-angle\"\u003e170° ROAD VIEW\u003c\/div\u003e\n\u003c\/article\u003e\n\u003carticle class=\"dg-view dg-inside\"\u003e\n\u003cdiv class=\"dg-view-label\"\u003eCABIN CAMERA\u003c\/div\u003e\n\u003ch3\u003e\n\u003cspan\u003e720P\u003c\/span\u003e Cabin View\u003c\/h3\u003e\n\u003cp\u003eCaptures activity inside your vehicle while the front camera records the road.\u003c\/p\u003e\n\u003cdiv class=\"dg-angle\"\u003eDUAL-LENS COVERAGE\u003c\/div\u003e\n\u003c\/article\u003e\n\u003c\/div\u003e\n\u003c!-- PARKING FEATURES --\u003e\n\u003ch2 class=\"dg-heading\"\u003eRecording that \u003cspan\u003ekeeps watch.\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003cp class=\"dg-subheading\"\u003eSmart recording features help manage your footage while driving and when your vehicle is parked.\u003c\/p\u003e\n\u003cdiv class=\"dg-protection\"\u003e\n\u003carticle class=\"dg-protection-card\"\u003e\n\u003cdiv class=\"dg-protection-icon\"\u003eP\u003c\/div\u003e\n\u003ch3\u003e24-Hour Parking Monitor\u003c\/h3\u003e\n\u003cp\u003eSupports parking monitoring when correctly installed and supplied with continuous power.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"dg-protection-card\"\u003e\n\u003cdiv class=\"dg-protection-icon\"\u003e↻\u003c\/div\u003e\n\u003ch3\u003eLoop Recording\u003c\/h3\u003e\n\u003cp\u003eAutomatically replaces older unlocked footage when the memory card becomes full.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"dg-protection-card\"\u003e\n\u003cdiv class=\"dg-protection-icon\"\u003e!\u003c\/div\u003e\n\u003ch3\u003eG-Sensor Event Lock\u003c\/h3\u003e\n\u003cp\u003eDetects sudden impacts and protects relevant footage from routine loop overwriting.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c\/div\u003e\n\u003c!-- LOCAL POSITIONING --\u003e\n\u003ch2 class=\"dg-heading\"\u003eBuilt for \u003cspan\u003eSouth African journeys.\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003cp class=\"dg-subheading\"\u003eUseful recording support for busy commutes, long-distance travel and everyday driving.\u003c\/p\u003e\n\u003cdiv class=\"dg-local\"\u003e\n\u003carticle class=\"dg-local-item\"\u003e\u003cstrong\u003eJohannesburg Traffic\u003c\/strong\u003e\n\u003cp\u003eRecord your daily commute through busy intersections and highways.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"dg-local-item\"\u003e\u003cstrong\u003eLong-Distance Travel\u003c\/strong\u003e\n\u003cp\u003eCapture both road and cabin views during longer journeys.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"dg-local-item\"\u003e\u003cstrong\u003eEveryday Peace of Mind\u003c\/strong\u003e\n\u003cp\u003eKeep a video record of unexpected events encountered on the road.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c\/div\u003e\n\u003c!-- IMPORTANT NOTICE --\u003e\n\u003cdiv class=\"dg-notice\"\u003e\n\u003cdiv class=\"dg-notice-icon\"\u003e⚠️\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cstrong\u003eMicro SD card required — not included\u003c\/strong\u003e\n\u003cp\u003eA compatible high-endurance Class 10 micro SD card is recommended. Parking monitoring may require a compatible continuous-power or hardwire kit, depending on your installation.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- FINAL BANNER --\u003e\n\u003cdiv class=\"dg-banner\"\u003e\n\u003cdiv\u003ereit \u003cstrong\u003eDrive smarter. Travel safer.\u003c\/strong\u003e\n\u003cp\u003eSee more of every journey with DriveGuard Duo.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"dg-banner-badge\"\u003eROAD READY\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"dg-footer\"\u003eTHE GADGET HUB™ • SMART GADGETS FOR EVERYDAY LIFE\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e","brand":"The Gadget Hub","offers":[{"title":"Default Title","offer_id":53841285087595,"sku":null,"price":799.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1009\/1072\/7531\/files\/ChatGPT_Image_Sep_12_2026_02_52_08_PM_2_a4aeb579-f8db-470d-a99a-e3a14ababe0d.png?v=1789217650"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1009\/1072\/7531\/collections\/ChatGPT_Image_Sep_12_2026_02_40_22_PM.png?v=1789216875","url":"https:\/\/thegadgethub.co.za\/collections\/automotive-travel.oembed","provider":"GadgetHub","version":"1.0","type":"link"}