{"product_id":"vaultguard-pistol-rack","title":"VaultGuard Pistol Rack","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  \u003cmeta name=\"description\" content=\"VaultGuard Pistol Rack for organised, moisture-resistant storage of revolvers and standard pistols in gun safes, cabinets and range setups.\"\u003e\n  \u003ctitle\u003eVaultGuard Pistol Rack\u003c\/title\u003e\n\n  \u003cstyle\u003e\n    .bosveld-rod-section {\n      --olive-dark: #26351f;\n      --olive: #556b2f;\n      --olive-medium: #718447;\n      --olive-light: #a8b486;\n      --cream: #f6f2e7;\n      --white: #ffffff;\n      --gold: #d4af37;\n      --text: #252a22;\n      --muted: #535c4d;\n      --border: rgba(85, 107, 47, 0.18);\n\n      position: relative;\n      width: 100%;\n      overflow: hidden;\n      padding: 72px 20px;\n      color: var(--text);\n      font-family: Arial, Helvetica, sans-serif;\n      background:\n        radial-gradient(\n          circle at 10% 10%,\n          rgba(113, 132, 71, 0.18),\n          transparent 32%\n        ),\n        radial-gradient(\n          circle at 90% 80%,\n          rgba(85, 107, 47, 0.14),\n          transparent 30%\n        ),\n        var(--cream);\n    }\n\n    .bosveld-rod-section,\n    .bosveld-rod-section * {\n      box-sizing: border-box;\n    }\n\n    .bosveld-rod-container {\n      position: relative;\n      z-index: 2;\n      width: min(100%, 860px);\n      margin: 0 auto;\n    }\n\n    .bosveld-decoration {\n      position: absolute;\n      border-radius: 50%;\n      pointer-events: none;\n      animation: bosveld-float 7s ease-in-out infinite;\n    }\n\n    .bosveld-decoration--one {\n      top: 40px;\n      right: 4%;\n      width: 130px;\n      height: 130px;\n      border: 2px solid rgba(85, 107, 47, 0.18);\n    }\n\n    .bosveld-decoration--two {\n      bottom: 100px;\n      left: 3%;\n      width: 84px;\n      height: 84px;\n      background: rgba(113, 132, 71, 0.1);\n      animation-delay: -3s;\n    }\n\n    .bosveld-eyebrow {\n      margin: 0 0 14px;\n      color: var(--olive);\n      font-size: 0.8rem;\n      font-weight: 900;\n      letter-spacing: 2.2px;\n      text-transform: uppercase;\n      animation: bosveld-fade-up 0.7s ease both;\n    }\n\n    .bosveld-title {\n      max-width: 100%;\n      margin: 0;\n      color: var(--olive-dark);\n      font-size: clamp(2.7rem, 8vw, 5.4rem);\n      line-height: 0.95;\n      letter-spacing: -0.055em;\n      overflow-wrap: normal;\n      word-break: normal;\n      animation: bosveld-fade-up 0.8s 0.1s ease both;\n    }\n\n    .bosveld-title span {\n      display: block;\n      color: var(--olive-medium);\n    }\n\n    .bosveld-tagline {\n      margin: 22px 0 0;\n      color: #9a7637;\n      font-size: clamp(1.05rem, 2vw, 1.35rem);\n      font-weight: 900;\n      line-height: 1.4;\n      animation: bosveld-fade-up 0.8s 0.15s ease both;\n    }\n\n    .bosveld-intro {\n      max-width: 760px;\n      margin: 18px 0 36px;\n      color: #3f4939;\n      font-size: 1.05rem;\n      line-height: 1.75;\n      animation: bosveld-fade-up 0.8s 0.2s ease both;\n    }\n\n    .bosveld-product-visual {\n      position: relative;\n      display: grid;\n      width: 100%;\n      min-height: 480px;\n      margin-bottom: 38px;\n      overflow: hidden;\n      place-items: center;\n      border: 1px solid var(--border);\n      border-radius: 26px;\n      background:\n        radial-gradient(\n          circle at center,\n          rgba(168, 180, 134, 0.25),\n          transparent 46%\n        ),\n        linear-gradient(150deg, #ffffff, #e8eddc);\n      box-shadow: 0 22px 48px rgba(38, 53, 31, 0.14);\n    }\n\n    .bosveld-product-visual::before {\n      position: absolute;\n      width: 430px;\n      height: 430px;\n      border-radius: 50%;\n      background: rgba(113, 132, 71, 0.1);\n      content: \"\";\n      animation: bosveld-halo 5s ease-in-out infinite;\n    }\n\n    .bosveld-product-badge {\n      position: absolute;\n      top: 22px;\n      right: 22px;\n      z-index: 4;\n      display: grid;\n      width: 96px;\n      height: 96px;\n      place-items: center;\n      border-radius: 50%;\n      color: #dce7be;\n      text-align: center;\n      background: var(--olive-dark);\n      box-shadow: 0 14px 30px rgba(38, 53, 31, 0.25);\n    }\n\n    .bosveld-product-badge strong {\n      display: block;\n      font-size: 0.95rem;\n      line-height: 1.1;\n    }\n\n    .bosveld-product-badge span {\n      display: block;\n      margin-top: 5px;\n      color: rgba(255, 255, 255, 0.68);\n      font-size: 0.5rem;\n      font-weight: 900;\n      letter-spacing: 0.08em;\n      text-transform: uppercase;\n    }\n\n    .bosveld-rod-bag {\n      position: relative;\n      z-index: 3;\n      width: min(650px, 86%);\n      height: 290px;\n      animation: bosveld-product-float 4s ease-in-out infinite;\n    }\n\n    .bosveld-bag-body {\n      position: absolute;\n      inset: 28px 48px 28px 32px;\n      overflow: hidden;\n      border: 8px solid #151915;\n      border-radius: 32px 18px 18px 32px;\n      background:\n        repeating-linear-gradient(\n          90deg,\n          rgba(255, 255, 255, 0.025) 0 5px,\n          rgba(0, 0, 0, 0.035) 5px 10px\n        ),\n        linear-gradient(145deg, #333a33, #181c18 70%);\n      box-shadow:\n        inset 10px 10px 18px rgba(255, 255, 255, 0.035),\n        inset -14px -14px 24px rgba(0, 0, 0, 0.3),\n        0 26px 38px rgba(34, 40, 31, 0.22);\n    }\n\n    .bosveld-bag-tip {\n      position: absolute;\n      top: 88px;\n      right: 0;\n      width: 88px;\n      height: 118px;\n      border: 8px solid #151915;\n      border-left: 0;\n      border-radius: 0 64px 64px 0;\n      background: linear-gradient(145deg, #2d332d, #151915);\n    }\n\n    .bosveld-strap {\n      position: absolute;\n      top: 0;\n      left: 125px;\n      width: 350px;\n      height: 92px;\n      border: 18px solid #2b312b;\n      border-bottom: 0;\n      border-radius: 50% 50% 0 0;\n      box-shadow: inset 0 0 0 4px #454d44;\n      transform: rotate(-4deg);\n    }\n\n    .bosveld-zip-line {\n      position: absolute;\n      z-index: 2;\n      top: 66px;\n      left: 60px;\n      right: 62px;\n      height: 4px;\n      border-radius: 999px;\n      background: #737c6c;\n      box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.18);\n    }\n\n    .bosveld-pocket {\n      position: absolute;\n      z-index: 2;\n      bottom: 52px;\n      height: 72px;\n      border: 4px solid #121612;\n      border-radius: 14px;\n      background: linear-gradient(145deg, #3b4339, #232923);\n    }\n\n    .bosveld-pocket::before {\n      position: absolute;\n      top: 11px;\n      left: 14px;\n      right: 14px;\n      height: 3px;\n      border-radius: 999px;\n      background: #717a69;\n      content: \"\";\n    }\n\n    .bosveld-pocket--one {\n      left: 90px;\n      width: 180px;\n    }\n\n    .bosveld-pocket--two {\n      left: 292px;\n      width: 150px;\n    }\n\n    .bosveld-brand-mark {\n      position: absolute;\n      z-index: 4;\n      top: 111px;\n      left: 50%;\n      width: 160px;\n      padding: 12px 14px;\n      border: 2px solid rgba(228, 236, 205, 0.55);\n      color: #f0f3e7;\n      font-size: 0.78rem;\n      font-weight: 900;\n      letter-spacing: 0.14em;\n      text-align: center;\n      text-transform: uppercase;\n      background: #3a462c;\n      transform: translateX(-50%) rotate(-2deg);\n      box-shadow: 0 14px 28px rgba(32, 39, 28, 0.2);\n    }\n\n    .bosveld-section {\n      width: 100%;\n      margin-bottom: 36px;\n      padding: clamp(24px, 5vw, 40px);\n      border: 1px solid var(--border);\n      border-radius: 22px;\n      background: rgba(255, 255, 255, 0.94);\n      box-shadow: 0 14px 35px rgba(38, 53, 31, 0.08);\n    }\n\n    .bosveld-section--dark {\n      color: var(--white);\n      background: var(--olive-dark);\n      box-shadow: 0 20px 45px rgba(38, 53, 31, 0.18);\n    }\n\n    .bosveld-section-heading {\n      max-width: 100%;\n      margin: 0 0 10px;\n      color: var(--olive-dark);\n      font-size: clamp(1.65rem, 4vw, 2.45rem);\n      line-height: 1.15;\n      letter-spacing: -0.03em;\n    }\n\n    .bosveld-section--dark .bosveld-section-heading {\n      color: var(--white);\n    }\n\n    .bosveld-section-intro {\n      max-width: 680px;\n      margin: 0 0 24px;\n      color: var(--muted);\n      line-height: 1.65;\n    }\n\n    .bosveld-section--dark .bosveld-section-intro {\n      color: rgba(255, 255, 255, 0.72);\n    }\n\n    .bosveld-benefit-grid,\n    .bosveld-feature-grid,\n    .bosveld-spec-grid,\n    .bosveld-review-grid {\n      display: grid;\n      width: 100%;\n      gap: 16px;\n    }\n\n    .bosveld-benefit-grid {\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n    }\n\n    .bosveld-feature-grid {\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n    }\n\n    .bosveld-spec-grid {\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n    }\n\n    .bosveld-review-grid {\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n    }\n\n    .bosveld-benefit-card,\n    .bosveld-feature-card,\n    .bosveld-spec-card,\n    .bosveld-review-card {\n      position: relative;\n      overflow: hidden;\n      min-width: 0;\n      border-radius: 17px;\n      transition:\n        transform 0.35s ease,\n        box-shadow 0.35s ease,\n        border-color 0.35s ease,\n        background 0.35s ease;\n    }\n\n    .bosveld-benefit-card {\n      padding: 22px;\n      border: 1px solid rgba(255, 255, 255, 0.13);\n      background: rgba(255, 255, 255, 0.07);\n    }\n\n    .bosveld-benefit-card:hover {\n      border-color: rgba(255, 255, 255, 0.32);\n      background: rgba(255, 255, 255, 0.12);\n      transform: translateY(-6px);\n    }\n\n    .bosveld-benefit-icon {\n      display: grid;\n      width: 48px;\n      height: 48px;\n      margin-bottom: 14px;\n      place-items: center;\n      border-radius: 15px;\n      color: var(--olive-dark);\n      font-size: 1.3rem;\n      background: #dce7be;\n      animation: bosveld-icon-bob 3.3s ease-in-out infinite;\n    }\n\n    .bosveld-benefit-card:nth-child(2) .bosveld-benefit-icon {\n      animation-delay: 0.3s;\n    }\n\n    .bosveld-benefit-card:nth-child(3) .bosveld-benefit-icon {\n      animation-delay: 0.6s;\n    }\n\n    .bosveld-benefit-card strong,\n    .bosveld-feature-card strong,\n    .bosveld-spec-card strong {\n      display: block;\n      margin-bottom: 8px;\n      font-size: 0.96rem;\n    }\n\n    .bosveld-benefit-card p {\n      margin: 0;\n      color: rgba(255, 255, 255, 0.72);\n      font-size: 0.86rem;\n      line-height: 1.6;\n    }\n\n    .bosveld-feature-card,\n    .bosveld-spec-card {\n      padding: 20px;\n      border: 1px solid var(--border);\n      background: #f8faf3;\n    }\n\n    .bosveld-feature-card:hover,\n    .bosveld-spec-card:hover {\n      border-color: var(--olive-medium);\n      box-shadow: 0 18px 36px rgba(38, 53, 31, 0.12);\n      transform: translateY(-6px);\n    }\n\n    .bosveld-feature-card p,\n    .bosveld-spec-card p {\n      margin: 0;\n      color: var(--muted);\n      font-size: 0.86rem;\n      line-height: 1.6;\n    }\n\n    .bosveld-review-card {\n      padding: 24px;\n      border: 1px solid var(--border);\n      background: var(--white);\n      box-shadow: 0 12px 30px rgba(38, 53, 31, 0.07);\n      cursor: pointer;\n    }\n\n    .bosveld-review-card::before {\n      position: absolute;\n      top: 0;\n      left: -120%;\n      width: 70%;\n      height: 100%;\n      background: linear-gradient(\n        120deg,\n        transparent,\n        rgba(255, 255, 255, 0.8),\n        transparent\n      );\n      content: \"\";\n      transition: left 0.7s ease;\n    }\n\n    .bosveld-review-card:hover {\n      border-color: var(--olive-medium);\n      box-shadow: 0 24px 50px rgba(38, 53, 31, 0.16);\n      transform: translateY(-8px);\n    }\n\n    .bosveld-review-card:hover::before {\n      left: 150%;\n    }\n\n    .bosveld-review-stars {\n      position: relative;\n      z-index: 2;\n      margin-bottom: 14px;\n      color: var(--gold);\n      font-size: 1.2rem;\n      letter-spacing: 3px;\n      animation: bosveld-star-glow 2.2s ease-in-out infinite;\n    }\n\n    .bosveld-review-quote {\n      position: relative;\n      z-index: 2;\n      margin: 0 0 18px;\n      color: #3f473a;\n      font-size: 0.92rem;\n      font-style: italic;\n      line-height: 1.7;\n    }\n\n    .bosveld-reviewer-name {\n      position: relative;\n      z-index: 2;\n      display: block;\n      color: var(--olive-dark);\n      font-size: 0.92rem;\n      font-weight: 900;\n    }\n\n    .bosveld-reviewer-location {\n      position: relative;\n      z-index: 2;\n      display: block;\n      margin-top: 3px;\n      color: #70786a;\n      font-size: 0.78rem;\n    }\n\n    .bosveld-cta {\n      display: grid;\n      grid-template-columns: minmax(0, 1fr);\n      gap: 18px;\n      padding: clamp(24px, 5vw, 38px);\n      border-radius: 22px;\n      color: var(--white);\n      background: linear-gradient(135deg, var(--olive), var(--olive-dark));\n      box-shadow: 0 20px 45px rgba(38, 53, 31, 0.2);\n    }\n\n    .bosveld-cta h2 {\n      margin: 0 0 8px;\n      font-size: clamp(1.55rem, 4vw, 2.2rem);\n    }\n\n    .bosveld-cta p {\n      margin: 0;\n      color: rgba(255, 255, 255, 0.76);\n      line-height: 1.65;\n    }\n\n    .bosveld-button-group {\n      display: grid;\n      grid-template-columns: 1fr;\n      gap: 12px;\n    }\n\n    .bosveld-button {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      min-height: 52px;\n      overflow: hidden;\n      padding: 0 22px;\n      border: 2px solid var(--white);\n      border-radius: 10px;\n      font-weight: 900;\n      text-align: center;\n      text-decoration: none;\n      transition:\n        transform 0.3s ease,\n        background 0.3s ease,\n        color 0.3s ease,\n        box-shadow 0.3s ease;\n    }\n\n    .bosveld-button:hover {\n      transform: translateY(-4px);\n      box-shadow: 0 12px 25px rgba(0, 0, 0, 0.18);\n    }\n\n    .bosveld-button--primary {\n      color: var(--olive-dark);\n      background: var(--white);\n    }\n\n    .bosveld-button--secondary {\n      color: var(--white);\n      background: transparent;\n    }\n\n    .bosveld-footer-tagline {\n      margin: 30px 0 0;\n      color: var(--olive-dark);\n      font-size: 0.86rem;\n      font-weight: 900;\n      letter-spacing: 2.3px;\n      text-align: center;\n      text-transform: uppercase;\n    }\n\n    .bosveld-reveal {\n      opacity: 0;\n      transform: translateY(28px);\n      transition:\n        opacity 0.75s ease,\n        transform 0.75s ease;\n    }\n\n    .bosveld-reveal.is-visible {\n      opacity: 1;\n      transform: translateY(0);\n    }\n\n    @keyframes bosveld-fade-up {\n      from {\n        opacity: 0;\n        transform: translateY(24px);\n      }\n\n      to {\n        opacity: 1;\n        transform: translateY(0);\n      }\n    }\n\n    @keyframes bosveld-float {\n      0%,\n      100% {\n        transform: translateY(0) rotate(0deg);\n      }\n\n      50% {\n        transform: translateY(-18px) rotate(8deg);\n      }\n    }\n\n    @keyframes bosveld-product-float {\n      0%,\n      100% {\n        transform: translateY(0) rotate(-1deg);\n      }\n\n      50% {\n        transform: translateY(-12px) rotate(1deg);\n      }\n    }\n\n    @keyframes bosveld-halo {\n      0%,\n      100% {\n        opacity: 0.75;\n        transform: scale(0.92);\n      }\n\n      50% {\n        opacity: 1;\n        transform: scale(1.06);\n      }\n    }\n\n    @keyframes bosveld-icon-bob {\n      0%,\n      100% {\n        transform: translateY(0) rotate(-2deg);\n      }\n\n      50% {\n        transform: translateY(-7px) rotate(2deg);\n      }\n    }\n\n    @keyframes bosveld-star-glow {\n      0%,\n      100% {\n        transform: scale(1);\n        text-shadow:\n          0 0 6px rgba(212, 175, 55, 0.45),\n          0 0 14px rgba(212, 175, 55, 0.22);\n      }\n\n      50% {\n        transform: scale(1.05);\n        text-shadow:\n          0 0 10px rgba(212, 175, 55, 0.85),\n          0 0 22px rgba(212, 175, 55, 0.46);\n      }\n    }\n\n    @media screen and (max-width: 760px) {\n      .bosveld-rod-section {\n        padding: 48px 16px;\n      }\n\n      .bosveld-title {\n        font-size: clamp(2.45rem, 13vw, 4rem);\n      }\n\n      .bosveld-product-visual {\n        min-height: 390px;\n      }\n\n      .bosveld-rod-bag {\n        width: min(500px, 90%);\n        height: 225px;\n      }\n\n      .bosveld-bag-body {\n        inset: 22px 38px 24px 24px;\n      }\n\n      .bosveld-bag-tip {\n        top: 68px;\n        width: 66px;\n        height: 92px;\n      }\n\n      .bosveld-strap {\n        left: 92px;\n        width: 270px;\n        height: 68px;\n        border-width: 14px;\n      }\n\n      .bosveld-zip-line {\n        top: 51px;\n        left: 45px;\n        right: 50px;\n      }\n\n      .bosveld-pocket {\n        bottom: 42px;\n        height: 56px;\n      }\n\n      .bosveld-pocket--one {\n        left: 66px;\n        width: 130px;\n      }\n\n      .bosveld-pocket--two {\n        left: 214px;\n        width: 105px;\n      }\n\n      .bosveld-brand-mark {\n        top: 84px;\n        width: 130px;\n        padding: 9px 11px;\n      }\n\n      .bosveld-benefit-grid,\n      .bosveld-feature-grid,\n      .bosveld-spec-grid,\n      .bosveld-review-grid {\n        grid-template-columns: 1fr;\n      }\n\n      .bosveld-product-badge {\n        top: 14px;\n        right: 14px;\n        width: 76px;\n        height: 76px;\n      }\n    }\n\n    @media screen and (max-width: 430px) {\n      .bosveld-rod-section {\n        padding-inline: 10px;\n      }\n\n      .bosveld-rod-container {\n        width: 100%;\n      }\n\n      .bosveld-title {\n        font-size: clamp(2.2rem, 14vw, 3.35rem);\n      }\n\n      .bosveld-intro {\n        font-size: 0.96rem;\n      }\n\n      .bosveld-product-visual {\n        min-height: 330px;\n        border-radius: 20px;\n      }\n\n      .bosveld-rod-bag {\n        width: 94%;\n        height: 190px;\n      }\n\n      .bosveld-bag-body {\n        inset: 20px 34px 20px 20px;\n        border-width: 6px;\n      }\n\n      .bosveld-bag-tip {\n        top: 60px;\n        width: 54px;\n        height: 74px;\n        border-width: 6px;\n      }\n\n      .bosveld-strap {\n        left: 70px;\n        width: 220px;\n        height: 58px;\n        border-width: 12px;\n      }\n\n      .bosveld-pocket {\n        display: none;\n      }\n\n      .bosveld-brand-mark {\n        top: 72px;\n        width: 110px;\n        font-size: 0.67rem;\n      }\n\n      .bosveld-product-badge {\n        width: 66px;\n        height: 66px;\n      }\n\n      .bosveld-section {\n        padding: 22px 17px;\n      }\n    }\n\n    @media (prefers-reduced-motion: reduce) {\n      .bosveld-rod-section *,\n      .bosveld-rod-section *::before,\n      .bosveld-rod-section *::after {\n        animation-duration: 0.01ms !important;\n        animation-iteration-count: 1 !important;\n        transition-duration: 0.01ms !important;\n      }\n\n      .bosveld-reveal {\n        opacity: 1;\n        transform: none;\n      }\n    }\n  \u003c\/style\u003e\n\n  \u003cstyle\u003e\n    \/* Creative animation upgrade *\/\n    .bosveld-product-visual {\n      perspective: 1200px;\n    }\n\n    .bosveld-product-visual::after {\n      position: absolute;\n      left: 50%;\n      bottom: 30px;\n      width: 72%;\n      height: 34px;\n      border-radius: 50%;\n      background: rgba(34, 48, 29, 0.18);\n      filter: blur(18px);\n      content: \"\";\n      transform: translateX(-50%);\n      animation: bosveld-shadow-breathe 4s ease-in-out infinite;\n    }\n\n    .bosveld-water-ripple,\n    .bosveld-water-ripple::before,\n    .bosveld-water-ripple::after {\n      position: absolute;\n      left: 50%;\n      bottom: 42px;\n      border: 2px solid rgba(85, 107, 47, 0.16);\n      border-radius: 50%;\n      content: \"\";\n      pointer-events: none;\n      transform: translateX(-50%) scale(0.35);\n      animation: bosveld-ripple 4.8s ease-out infinite;\n    }\n\n    .bosveld-water-ripple {\n      z-index: 1;\n      width: 360px;\n      height: 74px;\n    }\n\n    .bosveld-water-ripple::before {\n      bottom: -2px;\n      width: 280px;\n      height: 58px;\n      animation-delay: 1.2s;\n    }\n\n    .bosveld-water-ripple::after {\n      bottom: -2px;\n      width: 210px;\n      height: 44px;\n      animation-delay: 2.4s;\n    }\n\n    .bosveld-floating-lure {\n      position: absolute;\n      top: 72px;\n      left: 8%;\n      z-index: 5;\n      display: grid;\n      width: 48px;\n      height: 48px;\n      place-items: center;\n      border-radius: 50% 50% 48% 52%;\n      color: var(--olive-dark);\n      font-size: 1.35rem;\n      background: rgba(255, 255, 255, 0.86);\n      box-shadow: 0 12px 28px rgba(38, 53, 31, 0.14);\n      animation: bosveld-lure-swing 4.6s ease-in-out infinite;\n    }\n\n    .bosveld-floating-lure::before {\n      position: absolute;\n      left: 50%;\n      bottom: 100%;\n      width: 1px;\n      height: 90px;\n      background: linear-gradient(\n        to top,\n        rgba(38, 53, 31, 0.34),\n        transparent\n      );\n      content: \"\";\n    }\n\n    .bosveld-rod-bag {\n      transform-style: preserve-3d;\n      will-change: transform;\n      transition: transform 0.28s ease;\n    }\n\n    .bosveld-brand-mark {\n      animation: bosveld-brand-pulse 3.4s ease-in-out infinite;\n    }\n\n    .bosveld-zip-line {\n      overflow: hidden;\n    }\n\n    .bosveld-zip-line::after {\n      position: absolute;\n      top: 0;\n      left: -40%;\n      width: 40%;\n      height: 100%;\n      border-radius: inherit;\n      background: linear-gradient(\n        90deg,\n        transparent,\n        rgba(255, 255, 255, 0.75),\n        transparent\n      );\n      content: \"\";\n      animation: bosveld-zip-shine 3.8s ease-in-out infinite;\n    }\n\n    .bosveld-product-badge {\n      animation:\n        bosveld-badge-float 3.5s ease-in-out infinite,\n        bosveld-badge-glow 2.8s ease-in-out infinite;\n    }\n\n    .bosveld-section {\n      isolation: isolate;\n    }\n\n    .bosveld-section::before {\n      position: absolute;\n      inset: 0;\n      z-index: -1;\n      border-radius: inherit;\n      background:\n        radial-gradient(\n          circle at 100% 0%,\n          rgba(168, 180, 134, 0.15),\n          transparent 30%\n        );\n      content: \"\";\n      opacity: 0;\n      transition: opacity 0.4s ease;\n    }\n\n    .bosveld-section:hover::before {\n      opacity: 1;\n    }\n\n    .bosveld-benefit-card,\n    .bosveld-feature-card,\n    .bosveld-spec-card,\n    .bosveld-review-card {\n      transform-style: preserve-3d;\n      will-change: transform;\n    }\n\n    .bosveld-benefit-card::after,\n    .bosveld-feature-card::after,\n    .bosveld-spec-card::after,\n    .bosveld-review-card::after {\n      position: absolute;\n      inset: 0;\n      border-radius: inherit;\n      background: linear-gradient(\n        135deg,\n        rgba(255, 255, 255, 0.16),\n        transparent 42%\n      );\n      content: \"\";\n      opacity: 0;\n      pointer-events: none;\n      transition: opacity 0.35s ease;\n    }\n\n    .bosveld-benefit-card:hover::after,\n    .bosveld-feature-card:hover::after,\n    .bosveld-spec-card:hover::after,\n    .bosveld-review-card:hover::after {\n      opacity: 1;\n    }\n\n    .bosveld-benefit-icon {\n      box-shadow:\n        0 10px 24px rgba(38, 53, 31, 0.18),\n        inset 0 0 0 1px rgba(255, 255, 255, 0.3);\n    }\n\n    .bosveld-review-card:nth-child(2) {\n      transition-delay: 0.04s;\n    }\n\n    .bosveld-review-card:nth-child(3) {\n      transition-delay: 0.08s;\n    }\n\n    .bosveld-button {\n      isolation: isolate;\n    }\n\n    .bosveld-button::before {\n      position: absolute;\n      top: 50%;\n      left: 50%;\n      z-index: -1;\n      width: 0;\n      height: 0;\n      border-radius: 50%;\n      background: rgba(168, 180, 134, 0.34);\n      content: \"\";\n      transform: translate(-50%, -50%);\n      transition:\n        width 0.45s ease,\n        height 0.45s ease;\n    }\n\n    .bosveld-button:hover::before {\n      width: 360px;\n      height: 360px;\n    }\n\n    .bosveld-button--primary:hover {\n      color: var(--olive-dark);\n      background: #edf1e1;\n    }\n\n    .bosveld-footer-tagline {\n      animation: bosveld-letter-breathe 4s ease-in-out infinite;\n    }\n\n    .bosveld-reveal {\n      filter: blur(7px);\n    }\n\n    .bosveld-reveal.is-visible {\n      filter: blur(0);\n    }\n\n    .bosveld-stagger \u003e * {\n      opacity: 0;\n      transform: translateY(18px);\n      transition:\n        opacity 0.6s ease,\n        transform 0.6s ease;\n    }\n\n    .bosveld-reveal.is-visible .bosveld-stagger \u003e * {\n      opacity: 1;\n      transform: translateY(0);\n    }\n\n    .bosveld-reveal.is-visible .bosveld-stagger \u003e *:nth-child(1) {\n      transition-delay: 0.08s;\n    }\n\n    .bosveld-reveal.is-visible .bosveld-stagger \u003e *:nth-child(2) {\n      transition-delay: 0.16s;\n    }\n\n    .bosveld-reveal.is-visible .bosveld-stagger \u003e *:nth-child(3) {\n      transition-delay: 0.24s;\n    }\n\n    .bosveld-reveal.is-visible .bosveld-stagger \u003e *:nth-child(4) {\n      transition-delay: 0.32s;\n    }\n\n    .bosveld-reveal.is-visible .bosveld-stagger \u003e *:nth-child(5) {\n      transition-delay: 0.40s;\n    }\n\n    .bosveld-reveal.is-visible .bosveld-stagger \u003e *:nth-child(6) {\n      transition-delay: 0.48s;\n    }\n\n    @keyframes bosveld-ripple {\n      0% {\n        opacity: 0;\n        transform: translateX(-50%) scale(0.35);\n      }\n\n      20% {\n        opacity: 0.75;\n      }\n\n      100% {\n        opacity: 0;\n        transform: translateX(-50%) scale(1.35);\n      }\n    }\n\n    @keyframes bosveld-shadow-breathe {\n      0%,\n      100% {\n        opacity: 0.34;\n        transform: translateX(-50%) scaleX(0.85);\n      }\n\n      50% {\n        opacity: 0.18;\n        transform: translateX(-50%) scaleX(0.7);\n      }\n    }\n\n    @keyframes bosveld-lure-swing {\n      0%,\n      100% {\n        transform: translateY(0) rotate(-10deg);\n      }\n\n      50% {\n        transform: translateY(14px) rotate(10deg);\n      }\n    }\n\n    @keyframes bosveld-brand-pulse {\n      0%,\n      100% {\n        box-shadow: 0 14px 28px rgba(32, 39, 28, 0.2);\n      }\n\n      50% {\n        box-shadow:\n          0 16px 34px rgba(32, 39, 28, 0.28),\n          0 0 24px rgba(168, 180, 134, 0.22);\n      }\n    }\n\n    @keyframes bosveld-zip-shine {\n      0%,\n      45% {\n        left: -40%;\n      }\n\n      75%,\n      100% {\n        left: 120%;\n      }\n    }\n\n    @keyframes bosveld-badge-float {\n      0%,\n      100% {\n        transform: translateY(0) rotate(-2deg);\n      }\n\n      50% {\n        transform: translateY(-7px) rotate(2deg);\n      }\n    }\n\n    @keyframes bosveld-badge-glow {\n      0%,\n      100% {\n        box-shadow: 0 14px 30px rgba(38, 53, 31, 0.25);\n      }\n\n      50% {\n        box-shadow:\n          0 18px 38px rgba(38, 53, 31, 0.32),\n          0 0 25px rgba(168, 180, 134, 0.2);\n      }\n    }\n\n    @keyframes bosveld-letter-breathe {\n      0%,\n      100% {\n        letter-spacing: 2.3px;\n      }\n\n      50% {\n        letter-spacing: 3.2px;\n      }\n    }\n\n    @media screen and (max-width: 760px) {\n      .bosveld-floating-lure {\n        top: 58px;\n        left: 6%;\n        width: 42px;\n        height: 42px;\n        font-size: 1.1rem;\n      }\n\n      .bosveld-water-ripple {\n        width: 270px;\n        height: 56px;\n      }\n    }\n\n    @media screen and (max-width: 430px) {\n      .bosveld-floating-lure {\n        display: none;\n      }\n\n      .bosveld-water-ripple {\n        width: 210px;\n        height: 44px;\n      }\n\n      .bosveld-button:hover::before {\n        width: 260px;\n        height: 260px;\n      }\n    }\n\n    @media (hover: none) {\n      .bosveld-benefit-card,\n      .bosveld-feature-card,\n      .bosveld-spec-card,\n      .bosveld-review-card {\n        transform: none !important;\n      }\n    }\n\n    @media (prefers-reduced-motion: reduce) {\n      .bosveld-reveal {\n        filter: none;\n      }\n\n      .bosveld-stagger \u003e * {\n        opacity: 1;\n        transform: none;\n      }\n\n      .bosveld-water-ripple,\n      .bosveld-floating-lure {\n        display: none;\n      }\n    }\n  \u003c\/style\u003e\n\n\n  \u003cstyle\u003e\n    \/* Alternate layouts while preserving the same section formatting *\/\n\n    .bosveld-feature-timeline {\n      position: relative;\n      display: grid;\n      gap: 16px;\n      margin-top: 24px;\n      padding-left: 26px;\n    }\n\n    .bosveld-feature-timeline::before {\n      position: absolute;\n      top: 10px;\n      bottom: 10px;\n      left: 9px;\n      width: 2px;\n      border-radius: 999px;\n      background: linear-gradient(\n        to bottom,\n        var(--olive-light),\n        var(--olive),\n        var(--olive-light)\n      );\n      content: \"\";\n      opacity: 0.65;\n    }\n\n    .bosveld-feature-step {\n      position: relative;\n      display: grid;\n      grid-template-columns: 42px minmax(0, 1fr);\n      gap: 14px;\n      align-items: start;\n      padding: 18px;\n      border: 1px solid var(--border);\n      border-radius: 17px;\n      background: #f8faf3;\n      transition:\n        transform 0.35s ease,\n        box-shadow 0.35s ease,\n        border-color 0.35s ease;\n    }\n\n    .bosveld-feature-step::before {\n      position: absolute;\n      top: 28px;\n      left: -23px;\n      width: 14px;\n      height: 14px;\n      border: 4px solid var(--cream);\n      border-radius: 50%;\n      background: var(--olive);\n      box-shadow: 0 0 0 3px rgba(85, 107, 47, 0.14);\n      content: \"\";\n      transition: transform 0.35s ease;\n    }\n\n    .bosveld-feature-step:hover {\n      border-color: var(--olive-medium);\n      box-shadow: 0 18px 36px rgba(38, 53, 31, 0.12);\n      transform: translateX(8px);\n    }\n\n    .bosveld-feature-step:hover::before {\n      transform: scale(1.25);\n    }\n\n    .bosveld-feature-step-number {\n      display: grid;\n      width: 42px;\n      height: 42px;\n      place-items: center;\n      border-radius: 13px;\n      color: var(--olive-dark);\n      font-size: 0.76rem;\n      font-weight: 900;\n      background: #dce7be;\n      box-shadow: 0 8px 18px rgba(38, 53, 31, 0.12);\n    }\n\n    .bosveld-feature-step strong {\n      display: block;\n      margin: 2px 0 6px;\n      color: var(--olive-dark);\n      font-size: 0.98rem;\n    }\n\n    .bosveld-feature-step p {\n      margin: 0;\n      color: var(--muted);\n      font-size: 0.86rem;\n      line-height: 1.62;\n    }\n\n    .bosveld-spec-table-wrap {\n      width: 100%;\n      margin-top: 24px;\n      overflow: hidden;\n      border: 1px solid var(--border);\n      border-radius: 18px;\n      background: var(--white);\n      box-shadow: 0 12px 28px rgba(38, 53, 31, 0.06);\n    }\n\n    .bosveld-spec-table {\n      width: 100%;\n      border-collapse: collapse;\n    }\n\n    .bosveld-spec-table tr {\n      transition: background 0.3s ease;\n    }\n\n    .bosveld-spec-table tr:hover {\n      background: #f1f5e5;\n    }\n\n    .bosveld-spec-table th,\n    .bosveld-spec-table td {\n      padding: 18px 20px;\n      border-bottom: 1px solid var(--border);\n      text-align: left;\n      vertical-align: top;\n    }\n\n    .bosveld-spec-table tr:last-child th,\n    .bosveld-spec-table tr:last-child td {\n      border-bottom: 0;\n    }\n\n    .bosveld-spec-table th {\n      width: 34%;\n      color: var(--olive-dark);\n      font-size: 0.86rem;\n      font-weight: 900;\n      letter-spacing: 0.02em;\n      background: rgba(168, 180, 134, 0.12);\n    }\n\n    .bosveld-spec-table td {\n      color: var(--muted);\n      font-size: 0.88rem;\n      line-height: 1.55;\n    }\n\n    .bosveld-review-showcase {\n      display: grid;\n      grid-template-columns: minmax(0, 1.15fr) minmax(250px, 0.85fr);\n      gap: 18px;\n      margin-top: 24px;\n    }\n\n    .bosveld-review-featured {\n      position: relative;\n      overflow: hidden;\n      padding: 30px;\n      border-radius: 20px;\n      color: var(--white);\n      background:\n        radial-gradient(\n          circle at 100% 0%,\n          rgba(168, 180, 134, 0.18),\n          transparent 36%\n        ),\n        linear-gradient(145deg, var(--olive), var(--olive-dark));\n      box-shadow: 0 20px 42px rgba(38, 53, 31, 0.16);\n      transition:\n        transform 0.35s ease,\n        box-shadow 0.35s ease;\n    }\n\n    .bosveld-review-featured:hover {\n      transform: translateY(-7px);\n      box-shadow: 0 28px 54px rgba(38, 53, 31, 0.24);\n    }\n\n    .bosveld-review-featured::before {\n      position: absolute;\n      top: 18px;\n      right: 22px;\n      color: rgba(255, 255, 255, 0.09);\n      font-family: Georgia, serif;\n      font-size: 7rem;\n      line-height: 1;\n      content: \"“\";\n    }\n\n    .bosveld-review-featured .bosveld-review-stars {\n      color: #f3d86b;\n    }\n\n    .bosveld-review-featured .bosveld-review-quote {\n      max-width: 92%;\n      color: rgba(255, 255, 255, 0.88);\n      font-size: 1rem;\n      line-height: 1.8;\n    }\n\n    .bosveld-review-featured .bosveld-reviewer-name {\n      color: var(--white);\n    }\n\n    .bosveld-review-featured .bosveld-reviewer-location {\n      color: rgba(255, 255, 255, 0.7);\n    }\n\n    .bosveld-review-mini-list {\n      display: grid;\n      gap: 14px;\n    }\n\n    .bosveld-review-mini {\n      position: relative;\n      overflow: hidden;\n      padding: 20px;\n      border: 1px solid var(--border);\n      border-radius: 17px;\n      background: var(--white);\n      box-shadow: 0 12px 28px rgba(38, 53, 31, 0.07);\n      transition:\n        transform 0.35s ease,\n        box-shadow 0.35s ease,\n        border-color 0.35s ease;\n    }\n\n    .bosveld-review-mini:hover {\n      border-color: var(--olive-medium);\n      box-shadow: 0 20px 40px rgba(38, 53, 31, 0.13);\n      transform: translateX(7px);\n    }\n\n    .bosveld-review-mini .bosveld-review-stars {\n      margin-bottom: 10px;\n      font-size: 1rem;\n    }\n\n    .bosveld-review-mini .bosveld-review-quote {\n      margin-bottom: 14px;\n      font-size: 0.86rem;\n      line-height: 1.62;\n    }\n\n    @media screen and (max-width: 760px) {\n      .bosveld-review-showcase {\n        grid-template-columns: 1fr;\n      }\n\n      .bosveld-feature-timeline {\n        padding-left: 20px;\n      }\n\n      .bosveld-feature-step {\n        grid-template-columns: 36px minmax(0, 1fr);\n      }\n\n      .bosveld-feature-step-number {\n        width: 36px;\n        height: 36px;\n      }\n\n      .bosveld-spec-table th,\n      .bosveld-spec-table td {\n        padding: 15px 14px;\n      }\n    }\n\n    @media screen and (max-width: 500px) {\n      .bosveld-spec-table,\n      .bosveld-spec-table tbody,\n      .bosveld-spec-table tr,\n      .bosveld-spec-table th,\n      .bosveld-spec-table td {\n        display: block;\n        width: 100%;\n      }\n\n      .bosveld-spec-table tr {\n        padding: 14px 0;\n        border-bottom: 1px solid var(--border);\n      }\n\n      .bosveld-spec-table tr:last-child {\n        border-bottom: 0;\n      }\n\n      .bosveld-spec-table th,\n      .bosveld-spec-table td {\n        border: 0;\n      }\n\n      .bosveld-spec-table th {\n        padding-bottom: 6px;\n      }\n\n      .bosveld-spec-table td {\n        padding-top: 0;\n      }\n\n      .bosveld-review-featured {\n        padding: 24px 20px;\n      }\n\n      .bosveld-review-featured .bosveld-review-quote {\n        max-width: 100%;\n      }\n    }\n  \u003c\/style\u003e\n\n\n  \u003cstyle\u003e\n    \/* Website-first desktop layout *\/\n    html,\n    body {\n      width: 100%;\n      max-width: 100%;\n      margin: 0;\n      overflow-x: hidden;\n    }\n\n    .bosveld-rod-section {\n      width: 100%;\n      padding: 64px 28px 80px;\n    }\n\n    .bosveld-rod-container {\n      width: min(1180px, 100%);\n      max-width: 1180px;\n      margin: 0 auto;\n    }\n\n    .bosveld-title,\n    .bosveld-tagline,\n    .bosveld-intro {\n      text-align: left;\n    }\n\n    .bosveld-title {\n      max-width: 1000px;\n      font-size: clamp(3.8rem, 6vw, 6.8rem);\n    }\n\n    .bosveld-intro {\n      max-width: 900px;\n    }\n\n    .bosveld-product-visual {\n      width: 100%;\n      min-height: 600px;\n    }\n\n    .bosveld-rod-bag {\n      width: min(760px, 82%);\n      height: 330px;\n    }\n\n    .bosveld-section {\n      width: 100%;\n      padding: 38px;\n    }\n\n    .bosveld-benefit-grid {\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n    }\n\n    .bosveld-feature-timeline {\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      padding-left: 0;\n    }\n\n    .bosveld-feature-timeline::before {\n      display: none;\n    }\n\n    .bosveld-feature-step::before {\n      display: none;\n    }\n\n    .bosveld-feature-step {\n      min-height: 150px;\n    }\n\n    .bosveld-spec-table th {\n      width: 28%;\n    }\n\n    .bosveld-review-showcase {\n      grid-template-columns: minmax(0, 1.2fr) minmax(320px, 0.8fr);\n    }\n\n    .bosveld-cta {\n      grid-template-columns: minmax(0, 1fr) minmax(300px, 0.55fr);\n      align-items: center;\n    }\n\n    .bosveld-button-group {\n      grid-template-columns: 1fr;\n    }\n\n    @media screen and (max-width: 980px) {\n      .bosveld-rod-container {\n        width: min(860px, 100%);\n      }\n\n      .bosveld-title {\n        font-size: clamp(3.2rem, 8vw, 5.4rem);\n      }\n\n      .bosveld-product-visual {\n        min-height: 520px;\n      }\n\n      .bosveld-feature-timeline {\n        grid-template-columns: 1fr;\n      }\n\n      .bosveld-review-showcase {\n        grid-template-columns: 1fr;\n      }\n\n      .bosveld-cta {\n        grid-template-columns: 1fr;\n      }\n    }\n\n    @media screen and (max-width: 760px) {\n      .bosveld-rod-section {\n        padding: 42px 16px 56px;\n      }\n\n      .bosveld-title {\n        font-size: clamp(2.65rem, 12vw, 4.2rem);\n      }\n\n      .bosveld-product-visual {\n        min-height: 400px;\n      }\n\n      .bosveld-benefit-grid,\n      .bosveld-feature-timeline,\n      .bosveld-review-showcase {\n        grid-template-columns: 1fr;\n      }\n\n      .bosveld-section {\n        padding: 26px 20px;\n      }\n    }\n\n    @media screen and (max-width: 430px) {\n      .bosveld-rod-section {\n        padding-inline: 10px;\n      }\n\n      .bosveld-title {\n        font-size: clamp(2.25rem, 13vw, 3.35rem);\n      }\n\n      .bosveld-product-visual {\n        min-height: 330px;\n      }\n\n      .bosveld-section {\n        padding: 22px 16px;\n      }\n    }\n  \u003c\/style\u003e\n\n\n  \u003cstyle\u003e\n    \/* Final single-column fix for every section *\/\n    .bosveld-benefit-grid,\n    .bosveld-feature-timeline,\n    .bosveld-feature-grid,\n    .bosveld-spec-grid,\n    .bosveld-review-grid,\n    .bosveld-review-showcase,\n    .bosveld-review-mini-list,\n    .bosveld-cta {\n      display: grid !important;\n      grid-template-columns: 1fr !important;\n      width: 100% !important;\n      gap: 16px !important;\n    }\n\n    .bosveld-benefit-card,\n    .bosveld-feature-step,\n    .bosveld-feature-card,\n    .bosveld-spec-card,\n    .bosveld-review-card,\n    .bosveld-review-featured,\n    .bosveld-review-mini {\n      width: 100% !important;\n      max-width: 100% !important;\n      min-width: 0 !important;\n    }\n\n    .bosveld-feature-timeline {\n      padding-left: 22px !important;\n    }\n\n    .bosveld-feature-timeline::before {\n      display: block !important;\n    }\n\n    .bosveld-feature-step::before {\n      display: block !important;\n    }\n\n    .bosveld-spec-table-wrap {\n      width: 100% !important;\n      overflow: hidden;\n    }\n\n    .bosveld-spec-table {\n      width: 100% !important;\n      table-layout: fixed;\n    }\n\n    .bosveld-spec-table th,\n    .bosveld-spec-table td {\n      width: auto !important;\n      overflow-wrap: anywhere;\n      word-break: normal;\n    }\n\n    .bosveld-review-showcase {\n      align-items: stretch;\n    }\n\n    .bosveld-review-featured,\n    .bosveld-review-mini {\n      display: block;\n    }\n\n    .bosveld-review-featured .bosveld-review-quote,\n    .bosveld-review-mini .bosveld-review-quote {\n      max-width: 100% !important;\n    }\n\n    .bosveld-section {\n      overflow: hidden;\n    }\n\n    @media screen and (max-width: 760px) {\n      .bosveld-feature-timeline {\n        padding-left: 20px !important;\n      }\n    }\n\n    @media screen and (max-width: 500px) {\n      .bosveld-spec-table,\n      .bosveld-spec-table tbody,\n      .bosveld-spec-table tr,\n      .bosveld-spec-table th,\n      .bosveld-spec-table td {\n        display: block;\n        width: 100% !important;\n      }\n\n      .bosveld-spec-table tr {\n        padding: 14px 0;\n        border-bottom: 1px solid var(--border);\n      }\n\n      .bosveld-spec-table tr:last-child {\n        border-bottom: 0;\n      }\n\n      .bosveld-spec-table th,\n      .bosveld-spec-table td {\n        border: 0;\n      }\n\n      .bosveld-spec-table th {\n        padding-bottom: 6px;\n      }\n\n      .bosveld-spec-table td {\n        padding-top: 0;\n      }\n    }\n  \u003c\/style\u003e\n\n\n\n\n  \n  \u003cstyle\u003e\n    \/* Earmuff case illustration overrides *\/\n    .bosveld-earmuff-case {\n      width: min(650px, 86%);\n      height: 330px;\n    }\n\n    .bosveld-earmuff-case .bosveld-case-shell {\n      inset: 42px 54px 34px;\n      border-radius: 72px 66px 60px 72px;\n    }\n\n    .bosveld-earmuff-case .bosveld-case-handle {\n      top: 5px;\n      left: 50%;\n      width: 235px;\n      height: 78px;\n      transform: translateX(-50%);\n    }\n\n    .bosveld-earmuff-case .bosveld-case-zip {\n      top: 65px;\n      left: 80px;\n      right: 80px;\n      height: 4px;\n    }\n\n    .bosveld-headband {\n      position: absolute;\n      z-index: 3;\n      top: 74px;\n      left: 50%;\n      width: 330px;\n      height: 155px;\n      border: 18px solid #242a24;\n      border-bottom: 0;\n      border-radius: 50% 50% 0 0;\n      transform: translateX(-50%);\n    }\n\n    .bosveld-earcup {\n      position: absolute;\n      z-index: 4;\n      top: 98px;\n      width: 96px;\n      height: 132px;\n      border: 10px solid #171b17;\n      border-radius: 46px;\n      background: linear-gradient(145deg, #454d44, #222722);\n      box-shadow: inset 0 0 0 6px rgba(255,255,255,.04);\n    }\n\n    .bosveld-earcup--left {\n      left: 126px;\n      transform: rotate(-7deg);\n    }\n\n    .bosveld-earcup--right {\n      right: 126px;\n      transform: rotate(7deg);\n    }\n\n    .bosveld-earmuff-case .bosveld-brand-mark {\n      top: 150px;\n      width: 190px;\n    }\n\n    .bosveld-earmuff-case .bosveld-case-pocket {\n      left: 50%;\n      bottom: 58px;\n      width: 280px;\n      height: 48px;\n      transform: translateX(-50%);\n    }\n\n    .bosveld-earmuff-case .bosveld-pocket--two,\n    .bosveld-earmuff-case .bosveld-bag-tip {\n      display: none;\n    }\n\n    @media screen and (max-width: 760px) {\n      .bosveld-earmuff-case {\n        width: min(500px, 92%);\n        height: 250px;\n      }\n\n      .bosveld-earmuff-case .bosveld-case-shell {\n        inset: 34px 34px 28px;\n      }\n\n      .bosveld-earmuff-case .bosveld-case-handle {\n        width: 175px;\n        height: 60px;\n        border-width: 14px;\n      }\n\n      .bosveld-headband {\n        top: 61px;\n        width: 245px;\n        height: 115px;\n        border-width: 14px;\n      }\n\n      .bosveld-earcup {\n        top: 77px;\n        width: 72px;\n        height: 100px;\n        border-width: 8px;\n      }\n\n      .bosveld-earcup--left { left: 78px; }\n      .bosveld-earcup--right { right: 78px; }\n\n      .bosveld-earmuff-case .bosveld-brand-mark {\n        top: 112px;\n        width: 145px;\n      }\n\n      .bosveld-earmuff-case .bosveld-case-pocket {\n        bottom: 42px;\n        width: 210px;\n        height: 36px;\n        display: block;\n      }\n    }\n\n    @media screen and (max-width: 430px) {\n      .bosveld-earmuff-case {\n        width: 96%;\n        height: 205px;\n      }\n\n      .bosveld-earmuff-case .bosveld-case-shell {\n        inset: 30px 18px 24px;\n        border-width: 6px;\n      }\n\n      .bosveld-earmuff-case .bosveld-case-handle {\n        width: 138px;\n        height: 50px;\n        border-width: 11px;\n      }\n\n      .bosveld-headband {\n        top: 54px;\n        width: 188px;\n        height: 91px;\n        border-width: 11px;\n      }\n\n      .bosveld-earcup {\n        top: 65px;\n        width: 58px;\n        height: 80px;\n        border-width: 7px;\n      }\n\n      .bosveld-earcup--left { left: 47px; }\n      .bosveld-earcup--right { right: 47px; }\n\n      .bosveld-earmuff-case .bosveld-brand-mark {\n        top: 92px;\n        width: 118px;\n        font-size: .65rem;\n      }\n\n      .bosveld-earmuff-case .bosveld-case-pocket {\n        bottom: 35px;\n        width: 165px;\n        height: 28px;\n        display: block;\n      }\n    }\n  \u003c\/style\u003e\n\n\n\n  \u003cstyle\u003e\n    \/* Bosveld tactical soft gun case illustration *\/\n    .bosveld-tactical-case {\n      position: relative;\n      z-index: 3;\n      width: min(820px, 92%);\n      height: 350px;\n      transform-style: preserve-3d;\n      animation: bosveld-product-float 4s ease-in-out infinite;\n    }\n\n    .tactical-case-body {\n      position: absolute;\n      inset: 58px 46px 42px 38px;\n      overflow: hidden;\n      border: 8px solid #3a2c1c;\n      border-radius: 26px 54px 54px 26px;\n      background:\n        repeating-linear-gradient(0deg, rgba(255,255,255,.025) 0 3px, rgba(0,0,0,.025) 3px 7px),\n        linear-gradient(145deg, #b38a56, #8a6238 72%);\n      box-shadow: inset 0 0 0 4px rgba(255,255,255,.05), 0 28px 38px rgba(62,44,25,.28);\n    }\n\n    .tactical-case-body::after {\n      position: absolute;\n      inset: 17px;\n      border: 2px dashed rgba(63,43,24,.42);\n      border-radius: 18px 42px 42px 18px;\n      content: \"\";\n    }\n\n    .tactical-case-zip {\n      position: absolute;\n      z-index: 4;\n      top: 79px;\n      left: 70px;\n      right: 82px;\n      height: 5px;\n      border-radius: 999px;\n      background: #4b3924;\n      box-shadow: 0 0 0 2px rgba(255,255,255,.1);\n      overflow: hidden;\n    }\n\n    .tactical-case-zip::after {\n      position: absolute;\n      top: 0;\n      left: -35%;\n      width: 34%;\n      height: 100%;\n      background: linear-gradient(90deg, transparent, rgba(255,255,255,.62), transparent);\n      content: \"\";\n      animation: bosveld-zip-shine 3.8s ease-in-out infinite;\n    }\n\n    .tactical-handle {\n      position: absolute;\n      z-index: 2;\n      top: 19px;\n      left: 50%;\n      width: 250px;\n      height: 82px;\n      border: 20px solid #60462b;\n      border-bottom: 0;\n      border-radius: 50% 50% 0 0;\n      transform: translateX(-50%);\n      box-shadow: inset 0 0 0 4px rgba(255,255,255,.08);\n    }\n\n    .tactical-pocket {\n      position: absolute;\n      z-index: 5;\n      bottom: 67px;\n      height: 92px;\n      border: 6px solid #4a351f;\n      border-radius: 16px;\n      background: linear-gradient(145deg, #a47747, #75502d);\n      box-shadow: inset 0 0 0 3px rgba(255,255,255,.04), 0 10px 18px rgba(54,36,19,.18);\n    }\n\n    .tactical-pocket::before {\n      position: absolute;\n      top: 15px;\n      left: 15px;\n      right: 15px;\n      height: 4px;\n      border-radius: 999px;\n      background: #4b3621;\n      content: \"\";\n    }\n\n    .tactical-pocket--one { left: 86px; width: 210px; }\n    .tactical-pocket--two { left: 316px; width: 170px; }\n    .tactical-pocket--three { right: 92px; width: 155px; }\n\n    .tactical-webbing {\n      position: absolute;\n      z-index: 6;\n      left: 112px;\n      right: 115px;\n      bottom: 89px;\n      height: 18px;\n      border-top: 7px solid #49351f;\n      border-bottom: 7px solid #49351f;\n      opacity: .62;\n    }\n\n    .tactical-sling {\n      position: absolute;\n      z-index: 1;\n      top: 83px;\n      left: 160px;\n      width: 470px;\n      height: 210px;\n      border: 18px solid #52402b;\n      border-top: 0;\n      border-radius: 0 0 50% 50%;\n      transform: rotate(-4deg);\n      opacity: .92;\n    }\n\n    .tactical-brand {\n      position: absolute;\n      z-index: 7;\n      top: 132px;\n      left: 50%;\n      width: 170px;\n      padding: 12px 14px;\n      border: 2px solid rgba(255,244,221,.5);\n      color: #fff4dd;\n      font-size: .78rem;\n      font-weight: 900;\n      letter-spacing: .14em;\n      text-align: center;\n      text-transform: uppercase;\n      background: #594326;\n      transform: translateX(-50%) rotate(-1deg);\n      animation: bosveld-brand-pulse 3.4s ease-in-out infinite;\n    }\n\n    .tactical-colour-row {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 12px;\n      margin-top: 18px;\n    }\n\n    .tactical-colour {\n      display: inline-flex;\n      align-items: center;\n      gap: 9px;\n      padding: 10px 14px;\n      border: 1px solid var(--border);\n      border-radius: 999px;\n      color: var(--olive-dark);\n      font-size: .86rem;\n      font-weight: 900;\n      background: #fff;\n    }\n\n    .tactical-swatch {\n      width: 18px;\n      height: 18px;\n      border: 2px solid rgba(38,53,31,.18);\n      border-radius: 50%;\n      background: #a87943;\n    }\n\n    @media screen and (max-width:760px) {\n      .bosveld-tactical-case { width:min(600px,96%); height:280px; }\n      .tactical-case-body { inset:48px 25px 32px 22px; border-width:7px; }\n      .tactical-handle { width:190px; height:65px; border-width:16px; }\n      .tactical-case-zip { top:65px; left:50px; right:55px; }\n      .tactical-pocket { bottom:49px; height:73px; }\n      .tactical-pocket--one { left:52px; width:155px; }\n      .tactical-pocket--two { left:220px; width:130px; }\n      .tactical-pocket--three { right:58px; width:115px; }\n      .tactical-sling { left:110px; width:350px; height:160px; border-width:14px; }\n      .tactical-brand { top:106px; width:140px; }\n      .tactical-webbing { left:75px; right:78px; bottom:66px; }\n    }\n\n    @media screen and (max-width:430px) {\n      .bosveld-tactical-case { height:220px; }\n      .tactical-case-body { inset:42px 10px 25px 10px; border-width:6px; }\n      .tactical-handle { top:17px; width:140px; height:52px; border-width:12px; }\n      .tactical-case-zip { top:57px; left:30px; right:34px; }\n      .tactical-pocket { bottom:38px; height:56px; border-width:4px; }\n      .tactical-pocket--one { left:28px; width:112px; }\n      .tactical-pocket--two { left:149px; width:90px; }\n      .tactical-pocket--three { right:29px; width:82px; }\n      .tactical-pocket::before { top:10px; left:10px; right:10px; }\n      .tactical-brand { top:88px; width:112px; padding:9px; font-size:.65rem; }\n      .tactical-sling { display:none; }\n      .tactical-webbing { left:45px; right:45px; bottom:51px; height:12px; border-width:5px; }\n    }\n  \u003c\/style\u003e\n\n\n\n\u003csection class=\"bosveld-rod-section\"\u003e\n  \u003cspan class=\"bosveld-decoration bosveld-decoration--one\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\n  \u003cspan class=\"bosveld-decoration bosveld-decoration--two\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\n\n  \u003cstyle\u003e\n    .pistolrack-product {\n      position: relative;\n      z-index: 3;\n      width: min(720px, 92%);\n      height: 390px;\n      animation: bosveld-product-float 4s ease-in-out infinite;\n      transform-style: preserve-3d;\n    }\n\n    .pistolrack-safe {\n      position: absolute;\n      left: 50%;\n      bottom: 24px;\n      width: 520px;\n      height: 300px;\n      border: 10px solid #242a24;\n      border-radius: 28px;\n      background:\n        linear-gradient(145deg, rgba(255,255,255,.08), transparent 30%),\n        linear-gradient(145deg, #4b5549, #252b24 72%);\n      box-shadow:\n        inset 0 0 0 5px rgba(255,255,255,.03),\n        0 30px 48px rgba(38,53,31,.22);\n      transform: translateX(-50%);\n      overflow: hidden;\n    }\n\n    .pistolrack-safe::before {\n      position: absolute;\n      inset: 24px;\n      border: 3px solid rgba(255,255,255,.08);\n      border-radius: 18px;\n      content: \"\";\n    }\n\n    .pistolrack-base {\n      position: absolute;\n      z-index: 4;\n      left: 50%;\n      bottom: 54px;\n      width: 390px;\n      height: 82px;\n      border: 8px solid #171b17;\n      border-radius: 22px;\n      background:\n        repeating-linear-gradient(90deg,#555f53 0 20px,#485046 20px 24px);\n      box-shadow:\n        inset 0 0 0 4px rgba(255,255,255,.035),\n        0 18px 28px rgba(0,0,0,.2);\n      transform: translateX(-50%);\n    }\n\n    .pistolrack-slot {\n      position: absolute;\n      bottom: 77px;\n      width: 54px;\n      height: 150px;\n      border: 8px solid #171b17;\n      border-bottom: 0;\n      border-radius: 26px 26px 0 0;\n      background: linear-gradient(145deg,#5e685b,#353c34);\n    }\n\n    .pistolrack-slot--1 { left: 94px; }\n    .pistolrack-slot--2 { left: 172px; }\n    .pistolrack-slot--3 { left: 250px; }\n    .pistolrack-slot--4 { left: 328px; }\n\n    .pistolrack-grip {\n      position: absolute;\n      z-index: 6;\n      width: 44px;\n      height: 112px;\n      border: 7px solid #111511;\n      border-radius: 16px 16px 22px 22px;\n      background:\n        repeating-linear-gradient(45deg,#303630 0 7px,#232823 7px 14px);\n      box-shadow: inset 0 0 0 3px rgba(255,255,255,.025);\n    }\n\n    .pistolrack-grip::before {\n      position: absolute;\n      top: -46px;\n      left: -17px;\n      width: 94px;\n      height: 50px;\n      border: 7px solid #111511;\n      border-radius: 16px 20px 10px 10px;\n      background: linear-gradient(145deg,#454d44,#202520);\n      content: \"\";\n    }\n\n    .pistolrack-grip--1 { left: 99px; bottom: 94px; transform: rotate(-3deg); }\n    .pistolrack-grip--2 { left: 177px; bottom: 94px; transform: rotate(2deg); }\n    .pistolrack-grip--3 { left: 255px; bottom: 94px; transform: rotate(-2deg); }\n    .pistolrack-grip--4 { left: 333px; bottom: 94px; transform: rotate(3deg); }\n\n    .pistolrack-label {\n      position: absolute;\n      z-index: 7;\n      left: 50%;\n      bottom: 28px;\n      width: 230px;\n      padding: 11px 15px;\n      border: 2px solid rgba(236,242,225,.52);\n      border-radius: 999px;\n      color: #eff4e8;\n      font-size: .7rem;\n      font-weight: 900;\n      letter-spacing: .11em;\n      text-align: center;\n      text-transform: uppercase;\n      background: #35402f;\n      transform: translateX(-50%);\n      box-shadow: 0 14px 26px rgba(22,27,21,.22);\n    }\n\n    .pistolrack-icon {\n      position: absolute;\n      top: 64px;\n      left: 8%;\n      z-index: 6;\n      display: grid;\n      width: 52px;\n      height: 52px;\n      place-items: center;\n      border-radius: 50%;\n      color: var(--olive-dark);\n      font-size: 1.35rem;\n      background: rgba(255,255,255,.88);\n      box-shadow: 0 12px 28px rgba(38,53,31,.14);\n      animation: bosveld-lure-swing 4.6s ease-in-out infinite;\n    }\n\n    .pistolrack-use-grid {\n      display: grid !important;\n      grid-template-columns: 1fr !important;\n      gap: 14px;\n    }\n\n    .pistolrack-use-item {\n      display: grid;\n      grid-template-columns: 52px minmax(0,1fr);\n      gap: 15px;\n      align-items: center;\n      padding: 18px;\n      border: 1px solid var(--border);\n      border-radius: 16px;\n      background: #f8faf3;\n    }\n\n    .pistolrack-use-icon {\n      display: grid;\n      width: 52px;\n      height: 52px;\n      place-items: center;\n      border-radius: 15px;\n      font-size: 1.35rem;\n      background: #dce7be;\n    }\n\n    @media screen and (max-width:760px) {\n      .pistolrack-product { height: 315px; }\n      .pistolrack-safe { width: 390px; height: 245px; border-width: 8px; }\n      .pistolrack-base { width: 300px; height: 66px; }\n      .pistolrack-slot { width: 42px; height: 120px; }\n      .pistolrack-slot--1 { left: 67px; }\n      .pistolrack-slot--2 { left: 126px; }\n      .pistolrack-slot--3 { left: 185px; }\n      .pistolrack-slot--4 { left: 244px; }\n      .pistolrack-grip { width: 34px; height: 88px; border-width: 6px; }\n      .pistolrack-grip::before { top:-38px;left:-14px;width:74px;height:42px;border-width:6px; }\n      .pistolrack-grip--1 { left:72px; }\n      .pistolrack-grip--2 { left:131px; }\n      .pistolrack-grip--3 { left:190px; }\n      .pistolrack-grip--4 { left:249px; }\n    }\n\n    @media screen and (max-width:430px) {\n      .pistolrack-product { width:96%;height:250px; }\n      .pistolrack-safe { width:285px;height:200px;border-width:6px; }\n      .pistolrack-base { width:220px;height:54px;bottom:42px;border-width:6px; }\n      .pistolrack-slot { bottom:58px;width:34px;height:98px;border-width:6px; }\n      .pistolrack-slot--1 { left:43px; }\n      .pistolrack-slot--2 { left:89px; }\n      .pistolrack-slot--3 { left:135px; }\n      .pistolrack-slot--4 { left:181px; }\n      .pistolrack-grip { width:28px;height:72px;border-width:5px;bottom:72px; }\n      .pistolrack-grip::before { top:-31px;left:-11px;width:61px;height:34px;border-width:5px; }\n      .pistolrack-grip--1 { left:47px; }\n      .pistolrack-grip--2 { left:93px; }\n      .pistolrack-grip--3 { left:139px; }\n      .pistolrack-grip--4 { left:185px; }\n      .pistolrack-label { width:170px;font-size:.55rem;padding:9px;bottom:20px; }\n      .pistolrack-icon { display:none; }\n    }\n  \n    .vaultguard-variant-selector {\n      width: 100%;\n      margin: 0 0 36px;\n      padding: clamp(22px, 4vw, 32px);\n      border: 1px solid var(--border);\n      border-radius: 22px;\n      background: rgba(255,255,255,.94);\n      box-shadow: 0 14px 35px rgba(38,53,31,.08);\n    }\n\n    .vaultguard-variant-selector h2 {\n      margin: 0 0 8px;\n      color: var(--olive-dark);\n      font-size: clamp(1.45rem, 3vw, 2rem);\n      letter-spacing: -.025em;\n    }\n\n    .vaultguard-variant-selector p {\n      margin: 0 0 18px;\n      color: var(--muted);\n      line-height: 1.6;\n    }\n\n    .vaultguard-variant-options {\n      display: grid;\n      grid-template-columns: repeat(2, minmax(0,1fr));\n      gap: 14px;\n    }\n\n    .vaultguard-variant-option {\n      position: relative;\n      display: grid;\n      min-height: 116px;\n      padding: 18px;\n      border: 2px solid var(--border);\n      border-radius: 17px;\n      text-align: left;\n      background: #f8faf3;\n      cursor: pointer;\n      transition:\n        transform .3s ease,\n        border-color .3s ease,\n        box-shadow .3s ease,\n        background .3s ease;\n    }\n\n    .vaultguard-variant-option:hover {\n      border-color: var(--olive-medium);\n      box-shadow: 0 16px 30px rgba(38,53,31,.12);\n      transform: translateY(-4px);\n    }\n\n    .vaultguard-variant-option.is-selected {\n      border-color: var(--olive-dark);\n      background: #eaf0dd;\n      box-shadow:\n        0 16px 32px rgba(38,53,31,.15),\n        inset 0 0 0 2px rgba(85,107,47,.12);\n    }\n\n    .vaultguard-variant-option strong {\n      display: block;\n      margin-bottom: 5px;\n      color: var(--olive-dark);\n      font-size: 1.05rem;\n    }\n\n    .vaultguard-variant-option span {\n      display: block;\n      color: var(--muted);\n      font-size: .84rem;\n      line-height: 1.5;\n    }\n\n    .vaultguard-variant-option::after {\n      position: absolute;\n      top: 14px;\n      right: 14px;\n      display: grid;\n      width: 26px;\n      height: 26px;\n      place-items: center;\n      border: 2px solid var(--olive-light);\n      border-radius: 50%;\n      color: white;\n      font-size: .8rem;\n      font-weight: 900;\n      content: \"\";\n      background: transparent;\n    }\n\n    .vaultguard-variant-option.is-selected::after {\n      content: \"✓\";\n      border-color: var(--olive-dark);\n      background: var(--olive-dark);\n    }\n\n    .vaultguard-selected-note {\n      margin: 14px 0 0 !important;\n      color: var(--olive-dark) !important;\n      font-size: .88rem;\n      font-weight: 900;\n    }\n\n    @media screen and (max-width: 560px) {\n      .vaultguard-variant-options {\n        grid-template-columns: 1fr;\n      }\n    }\n\u003c\/style\u003e\n\n  \u003cdiv class=\"bosveld-rod-container\"\u003e\n    \u003cp class=\"bosveld-eyebrow\"\u003ePurpose-built safe organisation\u003c\/p\u003e\n\n    \u003ch1 class=\"bosveld-title\"\u003e\n      VaultGuard\n      \u003cspan\u003ePistol Rack\u003c\/span\u003e\n    \u003c\/h1\u003e\n\n    \u003cp class=\"bosveld-tagline\"\u003eKeep Your Pistols Protected and Perfectly Organised.\u003c\/p\u003e\n\n    \u003cp class=\"bosveld-intro\"\u003e\n      A cluttered gun safe is more than an inconvenience — it can increase the\n      chance of scratches, trapped moisture and difficult access. This EVA Foam\n      Pistol Rack keeps revolvers and standard pistols separated, supported and\n      neatly arranged in one compact storage system.\n    \u003c\/p\u003e\n\n    \u003cdiv class=\"bosveld-product-visual\" data-parallax\u003e\n      \u003cdiv class=\"bosveld-water-ripple\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"pistolrack-icon\" aria-hidden=\"true\"\u003e🧩\u003c\/div\u003e\n\n      \u003cdiv class=\"bosveld-product-badge\"\u003e\n        \u003cdiv\u003e\n          \u003cstrong\u003eEVA Foam\u003c\/strong\u003e\n          \u003cspan\u003eSoft, moisture resistant\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"pistolrack-product\" role=\"img\" aria-label=\"EVA foam rack holding four pistols upright inside a gun safe\"\u003e\n        \u003cdiv class=\"pistolrack-safe\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"pistolrack-base\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"pistolrack-slot pistolrack-slot--1\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"pistolrack-slot pistolrack-slot--2\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"pistolrack-slot pistolrack-slot--3\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"pistolrack-slot pistolrack-slot--4\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"pistolrack-grip pistolrack-grip--1\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"pistolrack-grip pistolrack-grip--2\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"pistolrack-grip pistolrack-grip--3\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"pistolrack-grip pistolrack-grip--4\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"pistolrack-label\"\u003eVaultGuard Pistol Rack\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \n    \u003csection class=\"vaultguard-variant-selector bosveld-reveal\" aria-labelledby=\"vaultguard-size-heading\"\u003e\n      \u003ch2 id=\"vaultguard-size-heading\"\u003eChoose your rack size\u003c\/h2\u003e\n      \u003cp\u003eSelect the capacity that best suits your safe or storage setup.\u003c\/p\u003e\n\n      \u003cdiv class=\"vaultguard-variant-options\" role=\"radiogroup\" aria-label=\"Pistol rack slot count\"\u003e\n        \u003cbutton type=\"button\" class=\"vaultguard-variant-option is-selected\" data-vaultguard-option=\"4 Slots\" role=\"radio\" aria-checked=\"true\"\u003e\n          \u003cstrong\u003e4 Slots\u003c\/strong\u003e\n          \u003cspan\u003eCompact organisation for up to four compatible pistols or revolvers.\u003c\/span\u003e\n        \u003c\/button\u003e\n\n        \u003cbutton type=\"button\" class=\"vaultguard-variant-option\" data-vaultguard-option=\"6 Slots\" role=\"radio\" aria-checked=\"false\"\u003e\n          \u003cstrong\u003e6 Slots\u003c\/strong\u003e\n          \u003cspan\u003eExpanded capacity for larger handgun collections and wider safe shelves.\u003c\/span\u003e\n        \u003c\/button\u003e\n      \u003c\/div\u003e\n\n      \u003cp class=\"vaultguard-selected-note\"\u003e\n        Selected: \u003cspan id=\"vaultguard-selected-value\"\u003e4 Slots\u003c\/span\u003e\n      \u003c\/p\u003e\n    \u003c\/section\u003e\n\n\u003csection class=\"bosveld-section bosveld-section--dark bosveld-reveal\"\u003e\n      \u003ch2 class=\"bosveld-section-heading\"\u003eProtect more. Store smarter.\u003c\/h2\u003e\n      \u003cp class=\"bosveld-section-intro\"\u003e\n        Give each handgun its own supported position while making better use of\n        the available space inside your safe.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"bosveld-benefit-grid bosveld-stagger\"\u003e\n        \u003carticle class=\"bosveld-benefit-card\"\u003e\n          \u003cdiv class=\"bosveld-benefit-icon\" aria-hidden=\"true\"\u003e🛡️\u003c\/div\u003e\n          \u003cstrong\u003eProtects Firearm Finishes\u003c\/strong\u003e\n          \u003cp\u003eSoft, scratch-resistant EVA foam helps prevent marks caused by loose contact between stored firearms.\u003c\/p\u003e\n        \u003c\/article\u003e\n\n        \u003carticle class=\"bosveld-benefit-card\"\u003e\n          \u003cdiv class=\"bosveld-benefit-icon\" aria-hidden=\"true\"\u003e💧\u003c\/div\u003e\n          \u003cstrong\u003eMoisture Resistant\u003c\/strong\u003e\n          \u003cp\u003eThe foam resists moisture absorption, helping support cleaner, drier storage conditions.\u003c\/p\u003e\n        \u003c\/article\u003e\n\n        \u003carticle class=\"bosveld-benefit-card\"\u003e\n          \u003cdiv class=\"bosveld-benefit-icon\" aria-hidden=\"true\"\u003e📦\u003c\/div\u003e\n          \u003cstrong\u003eMaximises Safe Space\u003c\/strong\u003e\n          \u003cp\u003eVertical organisation reduces clutter and makes better use of limited shelf capacity.\u003c\/p\u003e\n        \u003c\/article\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003csection class=\"bosveld-section bosveld-reveal\" id=\"features\"\u003e\n      \u003ch2 class=\"bosveld-section-heading\"\u003eKey features\u003c\/h2\u003e\n      \u003cp class=\"bosveld-section-intro\"\u003e\n        Simple, durable organisation designed specifically for handgun storage.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"bosveld-feature-timeline bosveld-stagger\"\u003e\n        \u003carticle class=\"bosveld-feature-step\"\u003e\n          \u003cspan class=\"bosveld-feature-step-number\"\u003e01\u003c\/span\u003e\n          \u003cdiv\u003e\n\u003cstrong\u003eSoft EVA Foam Construction\u003c\/strong\u003e\u003cp\u003eSupports stored firearms without hard edges that may damage their finish.\u003c\/p\u003e\n\u003c\/div\u003e\n        \u003c\/article\u003e\n\n        \u003carticle class=\"bosveld-feature-step\"\u003e\n          \u003cspan class=\"bosveld-feature-step-number\"\u003e02\u003c\/span\u003e\n          \u003cdiv\u003e\n\u003cstrong\u003eScratch-Resistant Surface\u003c\/strong\u003e\u003cp\u003eHelps reduce rubbing, contact marks and storage-related scuffs.\u003c\/p\u003e\n\u003c\/div\u003e\n        \u003c\/article\u003e\n\n        \u003carticle class=\"bosveld-feature-step\"\u003e\n          \u003cspan class=\"bosveld-feature-step-number\"\u003e03\u003c\/span\u003e\n          \u003cdiv\u003e\n\u003cstrong\u003eMoisture-Proof Material\u003c\/strong\u003e\u003cp\u003eResists humidity and moisture absorption during normal storage use.\u003c\/p\u003e\n\u003c\/div\u003e\n        \u003c\/article\u003e\n\n        \u003carticle class=\"bosveld-feature-step\"\u003e\n          \u003cspan class=\"bosveld-feature-step-number\"\u003e04\u003c\/span\u003e\n          \u003cdiv\u003e\n\u003cstrong\u003eStandard Handgun Compatibility\u003c\/strong\u003e\u003cp\u003eDesigned for revolvers and many standard-size pistols.\u003c\/p\u003e\n\u003c\/div\u003e\n        \u003c\/article\u003e\n\n        \u003carticle class=\"bosveld-feature-step\"\u003e\n          \u003cspan class=\"bosveld-feature-step-number\"\u003e05\u003c\/span\u003e\n          \u003cdiv\u003e\n\u003cstrong\u003eTool-Free Assembly\u003c\/strong\u003e\u003cp\u003eSimple components slot together in minutes without specialist tools.\u003c\/p\u003e\n\u003c\/div\u003e\n        \u003c\/article\u003e\n\n        \u003carticle class=\"bosveld-feature-step\"\u003e\n          \u003cspan class=\"bosveld-feature-step-number\"\u003e06\u003c\/span\u003e\n          \u003cdiv\u003e\n\u003cstrong\u003eSpace-Saving Layout\u003c\/strong\u003e\u003cp\u003eKeeps handguns upright, separated and easier to identify at a glance.\u003c\/p\u003e\n\u003c\/div\u003e\n        \u003c\/article\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003csection class=\"bosveld-section bosveld-reveal\"\u003e\n      \u003ch2 class=\"bosveld-section-heading\"\u003eWhy organise your gun safe?\u003c\/h2\u003e\n      \u003cp class=\"bosveld-section-intro\"\u003e\n        Proper organisation supports protection, visibility and responsible access.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"pistolrack-use-grid bosveld-stagger\"\u003e\n        \u003cdiv class=\"pistolrack-use-item\"\u003e\n          \u003cdiv class=\"pistolrack-use-icon\"\u003e✨\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cstrong\u003eReduce Surface Contact\u003c\/strong\u003e\u003cp\u003eSeparated storage helps prevent firearms from rubbing against one another.\u003c\/p\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"pistolrack-use-item\"\u003e\n          \u003cdiv class=\"pistolrack-use-icon\"\u003e🔍\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cstrong\u003eImprove Visibility\u003c\/strong\u003e\u003cp\u003eSee each stored handgun clearly without moving a loose stack.\u003c\/p\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"pistolrack-use-item\"\u003e\n          \u003cdiv class=\"pistolrack-use-icon\"\u003e🌬️\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cstrong\u003eSupport Airflow\u003c\/strong\u003e\u003cp\u003eOrganised spacing helps avoid tightly packed storage areas where moisture can collect.\u003c\/p\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"pistolrack-use-item\"\u003e\n          \u003cdiv class=\"pistolrack-use-icon\"\u003e📐\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cstrong\u003eUse Space Efficiently\u003c\/strong\u003e\u003cp\u003eVertical positioning can create additional usable shelf room.\u003c\/p\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003csection class=\"bosveld-section bosveld-reveal\"\u003e\n      \u003ch2 class=\"bosveld-section-heading\"\u003eIdeal for\u003c\/h2\u003e\n      \u003cdiv class=\"pistolrack-use-grid bosveld-stagger\"\u003e\n        \u003cdiv class=\"pistolrack-use-item\"\u003e\n\u003cdiv class=\"pistolrack-use-icon\"\u003e🔐\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cstrong\u003eGun Safe Organisation\u003c\/strong\u003e\u003cp\u003eCreate a cleaner, more structured safe interior.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"pistolrack-use-item\"\u003e\n\u003cdiv class=\"pistolrack-use-icon\"\u003e🎯\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cstrong\u003eHome \u0026amp; Range Storage\u003c\/strong\u003e\u003cp\u003eKeep compatible pistols organised between range visits.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"pistolrack-use-item\"\u003e\n\u003cdiv class=\"pistolrack-use-icon\"\u003e🔄\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cstrong\u003eRevolvers \u0026amp; Pistols\u003c\/strong\u003e\u003cp\u003eSuitable for many standard handgun profiles.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003csection class=\"bosveld-section bosveld-reveal\"\u003e\n      \u003ch2 class=\"bosveld-section-heading\"\u003eAssembly\u003c\/h2\u003e\n      \u003cp class=\"bosveld-section-intro\"\u003eA straightforward, tool-free setup.\u003c\/p\u003e\n\n      \u003cdiv class=\"bosveld-feature-timeline bosveld-stagger\"\u003e\n        \u003carticle class=\"bosveld-feature-step\"\u003e\u003cspan class=\"bosveld-feature-step-number\"\u003e01\u003c\/span\u003e\u003cdiv\u003e\n\u003cstrong\u003eUnpack the Components\u003c\/strong\u003e\u003cp\u003eLay out the foam base and divider pieces on a clean surface.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/article\u003e\n        \u003carticle class=\"bosveld-feature-step\"\u003e\u003cspan class=\"bosveld-feature-step-number\"\u003e02\u003c\/span\u003e\u003cdiv\u003e\n\u003cstrong\u003eAlign the Slots\u003c\/strong\u003e\u003cp\u003eMatch each divider with the corresponding opening in the base.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/article\u003e\n        \u003carticle class=\"bosveld-feature-step\"\u003e\u003cspan class=\"bosveld-feature-step-number\"\u003e03\u003c\/span\u003e\u003cdiv\u003e\n\u003cstrong\u003ePress into Position\u003c\/strong\u003e\u003cp\u003ePush the foam components together until they sit securely.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/article\u003e\n        \u003carticle class=\"bosveld-feature-step\"\u003e\u003cspan class=\"bosveld-feature-step-number\"\u003e04\u003c\/span\u003e\u003cdiv\u003e\n\u003cstrong\u003ePlace in Your Safe\u003c\/strong\u003e\u003cp\u003ePosition the completed rack on a stable shelf before adding unloaded firearms.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/article\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003csection class=\"bosveld-section bosveld-reveal\"\u003e\n      \u003ch2 class=\"bosveld-section-heading\"\u003eProduct specifications\u003c\/h2\u003e\n      \u003cdiv class=\"bosveld-spec-table-wrap\"\u003e\n        \u003ctable class=\"bosveld-spec-table\"\u003e\n          \u003ctbody\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eProduct Type\u003c\/th\u003e\n\u003ctd\u003eHandgun storage rack\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eMaterial\u003c\/th\u003e\n\u003ctd\u003eEVA foam\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eSurface\u003c\/th\u003e\n\u003ctd\u003eSoft and scratch resistant\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eMoisture Resistance\u003c\/th\u003e\n\u003ctd\u003eYes\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eAvailable Capacities\u003c\/th\u003e\n\u003ctd\u003e4-slot and 6-slot options\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth scope=\"row\"\u003eCompatibility\u003c\/th\u003e\n\u003ctd\u003eRevolvers and many standard pistols\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eAssembly\u003c\/th\u003e\n\u003ctd\u003eRequired; tool-free setup\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eIntended Use\u003c\/th\u003e\n\u003ctd\u003eGun safes, cabinets and organised home or range storage\u003c\/td\u003e\n\u003c\/tr\u003e\n          \u003c\/tbody\u003e\n        \u003c\/table\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003cdiv class=\"bosveld-section bosveld-reveal\" style=\"padding:22px 24px;border-left:6px solid var(--olive);background:#edf1e1;\"\u003e\n      \u003cstrong\u003eResponsible storage:\u003c\/strong\u003e Rack only. Firearms shown are for illustration\n      and are not included. Always unload firearms before storage, use a compliant safe,\n      store ammunition as legally required and confirm that each firearm sits securely\n      without pressure on the trigger or controls.\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"bosveld-cta bosveld-reveal\"\u003e\n      \u003cdiv\u003e\n        \u003ch2\u003eReady for a safer, better-organised gun safe?\u003c\/h2\u003e\n        \u003cp\u003e\n          Protect firearm finishes, improve visibility and make better use of\n          your available storage space.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"bosveld-button-group\"\u003e\n        \u003ca class=\"bosveld-button bosveld-button--primary\" href=\"#features\"\u003eView Product Features\u003c\/a\u003e\n        \u003cbutton type=\"button\" class=\"bosveld-button bosveld-button--secondary\" id=\"bosveld-add-to-cart\" data-bosveld-add-to-cart\u003e\n          🛒 Add to Cart\n        \u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cp class=\"bosveld-footer-tagline\"\u003eProtected. Organised. Ready.\u003c\/p\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\u003cscript\u003e\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  const revealItems = document.querySelectorAll(\".bosveld-reveal\");\n  if (\"IntersectionObserver\" in window) {\n    const observer = new IntersectionObserver(function(entries, revealObserver) {\n      entries.forEach(function(entry) {\n        if (!entry.isIntersecting) return;\n        entry.target.classList.add(\"is-visible\");\n        revealObserver.unobserve(entry.target);\n      });\n    }, { threshold: 0.14 });\n    revealItems.forEach(function(item) { observer.observe(item); });\n  } else {\n    revealItems.forEach(function(item) { item.classList.add(\"is-visible\"); });\n  }\n\n  document.querySelectorAll('.bosveld-rod-section a[href^=\"#\"]').forEach(function(link) {\n    link.addEventListener(\"click\", function(event) {\n      const target = document.querySelector(link.getAttribute(\"href\"));\n      if (!target) return;\n      event.preventDefault();\n      target.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n    });\n  });\n\n  const canHover = window.matchMedia(\"(hover: hover) and (pointer: fine)\").matches;\n  if (canHover) {\n    const visual = document.querySelector(\"[data-parallax]\");\n    const product = document.querySelector(\".bosveld-tactical-case\");\n    if (visual \u0026\u0026 product) {\n      visual.addEventListener(\"mousemove\", function(event) {\n        const rect = visual.getBoundingClientRect();\n        const x = (event.clientX - rect.left) \/ rect.width - 0.5;\n        const y = (event.clientY - rect.top) \/ rect.height - 0.5;\n        product.style.animation = \"none\";\n        product.style.transform = \"rotateY(\" + x * 8 + \"deg) rotateX(\" + y * -6 + \"deg) translate3d(\" + x * 14 + \"px,\" + y * 10 + \"px,20px)\";\n      });\n      visual.addEventListener(\"mouseleave\", function() {\n        product.style.transform = \"\";\n        product.style.animation = \"bosveld-product-float 4s ease-in-out infinite\";\n      });\n    }\n  }\n\n  document.querySelectorAll(\".bosveld-section, .bosveld-cta\").forEach(function(section, index) {\n    section.style.transitionDelay = index * 0.04 + \"s\";\n  });\n});\n\u003c\/script\u003e\n\n\n\n\n\n\u003cscript\u003e\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  const buttons = document.querySelectorAll(\n    \"#bosveld-add-to-cart, [data-bosveld-add-to-cart]\"\n  );\n\n  if (!buttons.length) return;\n\n  function getSelectedVariantId() {\n    const productForms = document.querySelectorAll(\n      'form[action*=\"\/cart\/add\"], product-form form'\n    );\n\n    for (const form of productForms) {\n      const selectedVariant = form.querySelector(\n        'input[name=\"id\"]:checked, select[name=\"id\"], input[name=\"id\"]'\n      );\n\n      if (selectedVariant \u0026\u0026 selectedVariant.value) {\n        const variantId = Number(selectedVariant.value);\n        if (Number.isInteger(variantId) \u0026\u0026 variantId \u003e 0) return variantId;\n      }\n    }\n\n    const variantField = document.querySelector(\n      '[name=\"id\"][value], [data-variant-id]'\n    );\n\n    if (variantField) {\n      const rawValue =\n        variantField.value ||\n        variantField.getAttribute(\"data-variant-id\");\n\n      const variantId = Number(rawValue);\n      if (Number.isInteger(variantId) \u0026\u0026 variantId \u003e 0) return variantId;\n    }\n\n    for (const button of buttons) {\n      const manualId = Number(button.dataset.variantId);\n      if (Number.isInteger(manualId) \u0026\u0026 manualId \u003e 0) return manualId;\n    }\n\n    return null;\n  }\n\n  async function addToCart(button) {\n    const variantId = getSelectedVariantId();\n\n    if (!variantId) {\n      alert(\"No Shopify variant could be detected. Place this section on the Shopify product page or add data-variant-id to the button.\");\n      return;\n    }\n\n    const originalText = button.innerHTML;\n\n    buttons.forEach(function (item) {\n      item.disabled = true;\n      item.setAttribute(\"aria-busy\", \"true\");\n      item.innerHTML = \"Adding…\";\n    });\n\n    try {\n      const root =\n        window.Shopify \u0026\u0026 window.Shopify.routes\n          ? window.Shopify.routes.root\n          : \"\/\";\n\n      const response = await fetch(root + \"cart\/add.js\", {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application\/json\",\n          \"Accept\": \"application\/json\"\n        },\n        body: JSON.stringify({\n          items: [{ id: variantId, quantity: 1 }]\n        })\n      });\n\n      const result = await response.json();\n\n      if (!response.ok) {\n        throw new Error(\n          result.description ||\n          result.message ||\n          \"The product could not be added.\"\n        );\n      }\n\n      buttons.forEach(function (item) {\n        item.innerHTML = \"Added ✓\";\n        item.removeAttribute(\"aria-busy\");\n      });\n\n      document.documentElement.dispatchEvent(\n        new CustomEvent(\"cart:refresh\", { bubbles: true })\n      );\n\n      document.dispatchEvent(\n        new CustomEvent(\"cart:updated\", {\n          bubbles: true,\n          detail: result\n        })\n      );\n\n      setTimeout(function () {\n        window.location.href = root + \"cart\";\n      }, 450);\n    } catch (error) {\n      console.error(\"Bosveld Add to Cart:\", error);\n\n      buttons.forEach(function (item) {\n        item.disabled = false;\n        item.removeAttribute(\"aria-busy\");\n        item.innerHTML = originalText;\n      });\n\n      alert(error.message || \"Unable to add this product to the cart.\");\n    }\n  }\n\n  buttons.forEach(function (button) {\n    button.addEventListener(\"click\", function () {\n      addToCart(button);\n    });\n  });\n});\n\u003c\/script\u003e\n\n\n\u003cscript\u003e\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  const options = document.querySelectorAll(\"[data-vaultguard-option]\");\n  const selectedLabel = document.getElementById(\"vaultguard-selected-value\");\n\n  if (!options.length) return;\n\n  function normalise(value) {\n    return String(value || \"\")\n      .trim()\n      .toLowerCase()\n      .replace(\/\\s+\/g, \" \");\n  }\n\n  function selectShopifyVariantOption(optionText) {\n    const desired = normalise(optionText);\n\n    \/*\n     * Native Shopify radio-style variant pickers.\n     *\/\n    const radioInputs = document.querySelectorAll(\n      'input[type=\"radio\"][name^=\"options\"], variant-radios input[type=\"radio\"], input[type=\"radio\"][data-option-value-id]'\n    );\n\n    for (const input of radioInputs) {\n      const label = document.querySelector('label[for=\"' + input.id + '\"]');\n      const candidateText = normalise(\n        input.value ||\n        input.getAttribute(\"data-value\") ||\n        (label ? label.textContent : \"\")\n      );\n\n      if (\n        candidateText === desired ||\n        candidateText.includes(desired) ||\n        desired.includes(candidateText)\n      ) {\n        input.checked = true;\n        input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n        input.dispatchEvent(new Event(\"input\", { bubbles: true }));\n        return true;\n      }\n    }\n\n    \/*\n     * Native Shopify select-style variant pickers.\n     *\/\n    const selects = document.querySelectorAll(\n      'select[name^=\"options\"], variant-selects select'\n    );\n\n    for (const select of selects) {\n      for (const option of select.options) {\n        const candidateText = normalise(option.textContent || option.value);\n\n        if (\n          candidateText === desired ||\n          candidateText.includes(desired) ||\n          desired.includes(candidateText)\n        ) {\n          select.value = option.value;\n          select.dispatchEvent(new Event(\"change\", { bubbles: true }));\n          select.dispatchEvent(new Event(\"input\", { bubbles: true }));\n          return true;\n        }\n      }\n    }\n\n    \/*\n     * Fallback: match a variant directly from product JSON.\n     *\/\n    const productJson =\n      document.querySelector('script[type=\"application\/json\"][data-product-json]') ||\n      document.querySelector('product-form script[type=\"application\/json\"]') ||\n      document.querySelector('variant-selects script[type=\"application\/json\"]');\n\n    if (productJson) {\n      try {\n        const data = JSON.parse(productJson.textContent);\n        const variants = Array.isArray(data) ? data : data.variants;\n\n        if (Array.isArray(variants)) {\n          const matched = variants.find(function (variant) {\n            return normalise(variant.title).includes(desired);\n          });\n\n          if (matched \u0026\u0026 matched.id) {\n            const idFields = document.querySelectorAll(\n              'form[action*=\"\/cart\/add\"] input[name=\"id\"]'\n            );\n\n            idFields.forEach(function (field) {\n              field.value = matched.id;\n              field.dispatchEvent(new Event(\"change\", { bubbles: true }));\n            });\n\n            return true;\n          }\n        }\n      } catch (error) {\n        console.warn(\"VaultGuard variant JSON could not be read:\", error);\n      }\n    }\n\n    return false;\n  }\n\n  function setSelected(optionButton) {\n    const optionText = optionButton.dataset.vaultguardOption;\n\n    options.forEach(function (item) {\n      const selected = item === optionButton;\n      item.classList.toggle(\"is-selected\", selected);\n      item.setAttribute(\"aria-checked\", selected ? \"true\" : \"false\");\n    });\n\n    if (selectedLabel) {\n      selectedLabel.textContent = optionText;\n    }\n\n    document\n      .querySelectorAll(\"[data-bosveld-add-to-cart]\")\n      .forEach(function (button) {\n        button.dataset.selectedOption = optionText;\n      });\n\n    selectShopifyVariantOption(optionText);\n  }\n\n  options.forEach(function (optionButton) {\n    optionButton.addEventListener(\"click\", function () {\n      setSelected(optionButton);\n    });\n  });\n\n  setSelected(\n    document.querySelector(\".vaultguard-variant-option.is-selected\") ||\n    options[0]\n  );\n});\n\u003c\/script\u003e\n\n\u003c\/body\u003e","brand":"Bosveld Tactical","offers":[{"title":"4 Slots","offer_id":48353453310105,"sku":null,"price":349.0,"currency_code":"ZAR","in_stock":true},{"title":"6 Slots","offer_id":48353453342873,"sku":null,"price":599.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0732\/9375\/8617\/files\/ChatGPT_Image_Aug_11_2026_12_29_35_PM.png?v=1786444275","url":"https:\/\/bosveldtactical.co.za\/products\/vaultguard-pistol-rack","provider":"Bosveld Tactical ","version":"1.0","type":"link"}