{"product_id":"apex-hydration-vest","title":"Apex Hydration Vest™(Gear Build For You )","description":"\u003cbody\u003e\n\n\n  \u003cmeta charset=\"UTF-8\"\u003e\n  \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n\n  \u003ctitle\u003eHydration Vest Collection\u003c\/title\u003e\n\n  \u003cstyle\u003e\n    * {\n      margin: 0;\n      padding: 0;\n      box-sizing: border-box;\n    }\n\n    body {\n      font-family: Arial, Helvetica, sans-serif;\n      background: linear-gradient(135deg, #eafaff, #c9f2ff, #f4fcff);\n      color: #123b50;\n      overflow-x: hidden;\n    }\n\n    \/* Animated background bubbles *\/\n    .bubbles {\n      position: fixed;\n      inset: 0;\n      pointer-events: none;\n      overflow: hidden;\n      z-index: 0;\n    }\n\n    .bubble {\n      position: absolute;\n      bottom: -100px;\n      border-radius: 50%;\n      background: rgba(76, 201, 240, 0.18);\n      animation: floatUp linear infinite;\n    }\n\n    .bubble:nth-child(1) {\n      width: 70px;\n      height: 70px;\n      left: 10%;\n      animation-duration: 12s;\n    }\n\n    .bubble:nth-child(2) {\n      width: 35px;\n      height: 35px;\n      left: 30%;\n      animation-duration: 9s;\n      animation-delay: 2s;\n    }\n\n    .bubble:nth-child(3) {\n      width: 90px;\n      height: 90px;\n      left: 65%;\n      animation-duration: 15s;\n      animation-delay: 1s;\n    }\n\n    .bubble:nth-child(4) {\n      width: 45px;\n      height: 45px;\n      left: 85%;\n      animation-duration: 10s;\n      animation-delay: 4s;\n    }\n\n    @keyframes floatUp {\n      0% {\n        transform: translateY(0) scale(1);\n        opacity: 0;\n      }\n\n      20% {\n        opacity: 1;\n      }\n\n      100% {\n        transform: translateY(-120vh) scale(1.4);\n        opacity: 0;\n      }\n    }\n\n    \/* Main section *\/\n    .hydration-section {\n      position: relative;\n      z-index: 1;\n      max-width: 1200px;\n      margin: auto;\n      padding: 90px 25px;\n    }\n\n    .hero {\n      text-align: center;\n      margin-bottom: 65px;\n      animation: fadeDown 1s ease forwards;\n    }\n\n    @keyframes fadeDown {\n      from {\n        opacity: 0;\n        transform: translateY(-30px);\n      }\n\n      to {\n        opacity: 1;\n        transform: translateY(0);\n      }\n    }\n\n    .water-icon {\n      display: inline-block;\n      font-size: 48px;\n      animation: waterBounce 2s ease-in-out infinite;\n    }\n\n    @keyframes waterBounce {\n      0%, 100% {\n        transform: translateY(0) rotate(0deg);\n      }\n\n      50% {\n        transform: translateY(-10px) rotate(4deg);\n      }\n    }\n\n    .hero h1 {\n      margin-top: 10px;\n      font-size: clamp(38px, 6vw, 72px);\n      line-height: 1.05;\n      background: linear-gradient(90deg, #008dcc, #39c5f3, #0077b6);\n      -webkit-background-clip: text;\n      background-clip: text;\n      color: transparent;\n      font-weight: 900;\n    }\n\n    .hero p {\n      max-width: 850px;\n      margin: 25px auto 0;\n      font-size: 18px;\n      line-height: 1.7;\n      color: #416778;\n    }\n\n    \/* Feature cards *\/\n    .features {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 20px;\n      margin-top: 45px;\n    }\n\n    .feature-card {\n      position: relative;\n      padding: 30px 22px;\n      border-radius: 24px;\n      background: rgba(255, 255, 255, 0.72);\n      border: 1px solid rgba(77, 198, 239, 0.3);\n      box-shadow: 0 15px 40px rgba(0, 126, 167, 0.12);\n      backdrop-filter: blur(12px);\n      transition: all 0.35s ease;\n      overflow: hidden;\n    }\n\n    .feature-card::before {\n      content: \"\";\n      position: absolute;\n      width: 120px;\n      height: 120px;\n      border-radius: 50%;\n      background: rgba(65, 200, 240, 0.12);\n      top: -50px;\n      right: -50px;\n      transition: 0.4s ease;\n    }\n\n    .feature-card:hover {\n      transform: translateY(-10px);\n      box-shadow: 0 25px 55px rgba(0, 126, 167, 0.2);\n      border-color: rgba(0, 164, 220, 0.55);\n    }\n\n    .feature-card:hover::before {\n      transform: scale(2);\n    }\n\n    .feature-icon {\n      font-size: 36px;\n      margin-bottom: 18px;\n      display: block;\n      position: relative;\n    }\n\n    .feature-card h3 {\n      font-size: 19px;\n      margin-bottom: 10px;\n      color: #087ca7;\n    }\n\n    .feature-card p {\n      font-size: 14px;\n      line-height: 1.6;\n      color: #557987;\n    }\n\n    \/* Adventure strip *\/\n    .adventure {\n      margin-top: 60px;\n      padding: 50px 30px;\n      border-radius: 30px;\n      text-align: center;\n      background:\n        linear-gradient(\n          135deg,\n          rgba(0, 159, 220, 0.95),\n          rgba(68, 202, 240, 0.9)\n        );\n      color: white;\n      position: relative;\n      overflow: hidden;\n      box-shadow: 0 25px 60px rgba(0, 142, 194, 0.25);\n    }\n\n    .adventure::before {\n      content: \"💧\";\n      position: absolute;\n      font-size: 180px;\n      opacity: 0.08;\n      right: -20px;\n      top: -70px;\n      animation: rotateWater 12s linear infinite;\n    }\n\n    @keyframes rotateWater {\n      from {\n        transform: rotate(0deg);\n      }\n\n      to {\n        transform: rotate(360deg);\n      }\n    }\n\n    .adventure h2 {\n      font-size: clamp(28px, 4vw, 46px);\n      margin-bottom: 15px;\n      position: relative;\n    }\n\n    .adventure p {\n      max-width: 750px;\n      margin: auto;\n      font-size: 17px;\n      line-height: 1.7;\n      position: relative;\n    }\n\n    \/* Responsive *\/\n    @media (max-width: 900px) {\n      .features {\n        grid-template-columns: repeat(2, 1fr);\n      }\n    }\n\n    @media (max-width: 600px) {\n      .hydration-section {\n        padding: 60px 18px;\n      }\n\n      .features {\n        grid-template-columns: 1fr;\n      }\n\n      .hero p {\n        font-size: 16px;\n      }\n    }\n\n    \/* Scroll reveal *\/\n    .reveal {\n      opacity: 0;\n      transform: translateY(35px);\n      transition: opacity 0.8s ease, transform 0.8s ease;\n    }\n\n    .reveal.visible {\n      opacity: 1;\n      transform: translateY(0);\n    }\n  \u003c\/style\u003e\n\n\n\n\n  \u003cdiv class=\"bubbles\"\u003e\n    \u003cdiv class=\"bubble\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"bubble\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"bubble\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"bubble\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003csection class=\"hydration-section\"\u003e\n\n    \u003cdiv class=\"hero\"\u003e\n      \u003cspan class=\"water-icon\"\u003e💧\u003c\/span\u003e\n\n      \u003ch1\u003eStay Hydrated.\u003cbr\u003eStay Unstoppable.\u003c\/h1\u003e\n\n      \u003cp\u003e\n        Whether you're crushing a mountain trail 🏔️,\n        powering through a marathon 🏃, or exploring the great outdoors 🌿 —\n        our Hydration Vest collection has got your back. Literally.\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"features\"\u003e\n\n      \u003cdiv class=\"feature-card reveal\"\u003e\n        \u003cspan class=\"feature-icon\"\u003e⚡\u003c\/span\u003e\n        \u003ch3\u003eLightweight \u0026amp; Breathable\u003c\/h3\u003e\n        \u003cp\u003e\n          Lightweight, breathable construction that moves with you\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"feature-card reveal\"\u003e\n        \u003cspan class=\"feature-icon\"\u003e💦\u003c\/span\u003e\n        \u003ch3\u003eHigh-Capacity Hydration\u003c\/h3\u003e\n        \u003cp\u003e\n          High-capacity water reservoirs \u0026amp; easy-access bottle pockets\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"feature-card reveal\"\u003e\n        \u003cspan class=\"feature-icon\"\u003e🎒\u003c\/span\u003e\n        \u003ch3\u003eSmart Storage\u003c\/h3\u003e\n        \u003cp\u003e\n          Smart storage for your snacks, gear \u0026amp; essentials\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"feature-card reveal\"\u003e\n        \u003cspan class=\"feature-icon\"\u003e🏅\u003c\/span\u003e\n        \u003ch3\u003eErgonomic Fit\u003c\/h3\u003e\n        \u003cp\u003e\n          Ergonomic fit that stays snug — no bounce, no fuss\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"adventure reveal\"\u003e\n      \u003ch2\u003eHydration is your superpower. 🚀\u003c\/h2\u003e\n\n      \u003cp\u003e\n        From sunrise runs to sunset adventures, hydration is your superpower.\n        Don't leave home without it.\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n  \u003cscript\u003e\n    \/\/ Smooth scroll reveal animation\n    const revealElements = document.querySelectorAll(\".reveal\");\n\n    const revealOnScroll = () =\u003e {\n      revealElements.forEach((element) =\u003e {\n        const position = element.getBoundingClientRect().top;\n        const windowHeight = window.innerHeight;\n\n        if (position \u003c windowHeight - 80) {\n          element.classList.add(\"visible\");\n        }\n      });\n    };\n\n    window.addEventListener(\"scroll\", revealOnScroll);\n    revealOnScroll();\n  \u003c\/script\u003e\n\n\n\u003c\/body\u003e","brand":"Apex","offers":[{"title":"Black","offer_id":49250793095412,"sku":null,"price":899.0,"currency_code":"ZAR","in_stock":true},{"title":"Green","offer_id":49250793128180,"sku":null,"price":899.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0846\/8820\/8116\/files\/1786914763384_1.png?v=1786994201","url":"https:\/\/apexhydrationgear.co.za\/products\/apex-hydration-vest","provider":"Apex Hydration","version":"1.0","type":"link"}