{"id":26,"date":"2026-05-09T15:12:37","date_gmt":"2026-05-09T07:12:37","guid":{"rendered":"http:\/\/openryd.com\/index.php\/products\/"},"modified":"2026-05-18T10:40:09","modified_gmt":"2026-05-18T02:40:09","slug":"products","status":"publish","type":"page","link":"https:\/\/openryd.com\/products\/","title":{"rendered":"Products"},"content":{"rendered":"\n<style>\nbody.page-id-26 #wf_header,\nbody.page-id-26 #wf_footer,\nbody.page-id-26 #wf_pagetitle,\nbody.page-id-26 .mobile-bottom-nav-wrapper,\nbody.page-id-26 .wf_preloader,\nbody.page-id-26 .wf_posts > .wf-container > .wf-row > [class*=\"wf-col-\"]:not(#wf-main) { display: none !important; }\nbody.page-id-26 .wf_posts { padding: 0 !important; margin: 0 !important; background: #fff !important; overflow: hidden !important; }\nbody.page-id-26 .wf_posts > .wf-container { width: 100% !important; max-width: none !important; padding: 0 !important; margin: 0 !important; }\nbody.page-id-26 .wf_posts .wf-row { margin: 0 !important; display: block !important; }\nbody.page-id-26 #wf-main,\nbody.page-id-26 .wf_posts [class*=\"wf-col-\"] { width: 100% !important; max-width: 100% !important; flex: 0 0 100% !important; padding: 0 !important; margin: 0 !important; transform: none !important; animation: none !important; visibility: visible !important; }\nbody.page-id-26 .post.single-post { margin: 0 !important; padding: 0 !important; border: 0 !important; box-shadow: none !important; background: transparent !important; }\nbody.page-id-26 .openryd-products-directory { width: 100% !important; max-width: none !important; margin: 0 !important; overflow: hidden !important; }\nbody.page-id-26 .openryd-products-directory h1,\nbody.page-id-26 .openryd-products-directory h2,\nbody.page-id-26 .openryd-products-directory h3 { letter-spacing: 0 !important; }\nbody.page-id-26 .openryd-products-directory br { display: none !important; }\nhtml, body { overflow-x: hidden; }\n\n\n    :root {\n      --ink: #12201c;\n      --muted: #5b6c66;\n      --line: #dfe7e2;\n      --soft: #f4f7f5;\n      --green: #15a46d;\n      --dark: #0e211c;\n    }\n    * { box-sizing: border-box; }\n    body {\n      margin: 0;\n      font-family: Arial, Helvetica, sans-serif;\n      color: var(--ink);\n      background: #fff;\n    }\n    a { color: inherit; text-decoration: none; }\n    .topbar {\n      background: var(--dark);\n      color: #d9ebe4;\n      font-size: 13px;\n    }\n    .topbar-inner,\n    .nav-inner,\n    .wrap {\n      width: min(1180px, calc(100% - 40px));\n      margin: 0 auto;\n    }\n    .topbar-inner {\n      display: flex;\n      justify-content: space-between;\n      gap: 20px;\n      padding: 10px 0;\n    }\n    .nav {\n      position: sticky;\n      top: 0;\n      z-index: 10;\n      background: rgba(255, 255, 255, .97);\n      border-bottom: 1px solid var(--line);\n      backdrop-filter: blur(12px);\n    }\n    .nav-inner {\n      height: 74px;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      gap: 24px;\n    }\n    .brand img {\n      display: block;\n      width: auto;\n      height: 54px;\n      max-width: 260px;\n      object-fit: contain;\n    }\n    .menu {\n      display: flex;\n      align-items: center;\n      gap: 28px;\n      color: #243832;\n      font-weight: 700;\n      font-size: 15px;\n    }\n    .menu .active { color: var(--green); }\n    .btn {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      min-height: 44px;\n      padding: 0 18px;\n      border-radius: 6px;\n      background: var(--green);\n      color: #fff;\n      font-weight: 800;\n      border: 1px solid var(--green);\n      white-space: nowrap;\n    }\n    .btn.alt {\n      background: #fff;\n      color: var(--ink);\n      border-color: var(--line);\n    }\n    .catalog-hero {\n      background:\n        linear-gradient(90deg, rgba(7, 22, 18, .92), rgba(7, 22, 18, .76), rgba(7, 22, 18, .38)),\n        url(\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-ebike-shop-hero.png\") center \/ cover;\n      color: #fff;\n    }\n    .catalog-hero-inner {\n      width: min(1180px, calc(100% - 40px));\n      min-height: 240px;\n      margin: 0 auto;\n      display: flex;\n      align-items: center;\n      padding: 38px 0;\n    }\n    .kicker {\n      margin: 0 0 12px;\n      color: #38d695;\n      font-weight: 900;\n      font-size: 13px;\n      text-transform: uppercase;\n      letter-spacing: .08em;\n    }\n    h1 {\n      margin: 0 0 18px;\n      max-width: 720px;\n      font-size: 44px;\n      line-height: 1.06;\n      color: #fff;\n      letter-spacing: 0;\n    }\n    .hero-copy {\n      max-width: 660px;\n      margin: 0;\n      color: #e6f1ed;\n      font-size: 17px;\n      line-height: 1.65;\n    }\n    .search-band {\n      background: #fff;\n      border-bottom: 1px solid var(--line);\n    }\n    .search-panel {\n      width: min(1180px, calc(100% - 40px));\n      margin: 0 auto;\n      padding: 22px 0;\n      display: grid;\n      grid-template-columns: 1fr auto;\n      gap: 18px;\n      align-items: center;\n    }\n    .search-box {\n      display: grid;\n      grid-template-columns: 1fr auto;\n      border: 2px solid var(--green);\n      border-radius: 8px;\n      overflow: hidden;\n      min-height: 54px;\n      background: #fff;\n    }\n    .search-box input {\n      border: 0;\n      padding: 0 18px;\n      font-size: 16px;\n      outline: 0;\n    }\n    .search-box button {\n      border: 0;\n      padding: 0 26px;\n      background: var(--green);\n      color: #fff;\n      font-weight: 900;\n      font-size: 15px;\n    }\n    .quick-tags {\n      display: flex;\n      gap: 8px;\n      flex-wrap: wrap;\n      justify-content: flex-end;\n    }\n    .quick-tags a {\n      border: 1px solid var(--line);\n      background: var(--soft);\n      border-radius: 999px;\n      padding: 8px 12px;\n      color: #34443f;\n      font-size: 13px;\n      font-weight: 800;\n    }\n    .catalog {\n      background: var(--soft);\n      padding: 30px 0 78px;\n    }\n    .catalog-layout {\n      width: min(1180px, calc(100% - 40px));\n      margin: 0 auto;\n      display: grid;\n      grid-template-columns: 260px 1fr;\n      gap: 24px;\n      align-items: start;\n    }\n    .side {\n      position: sticky;\n      top: 98px;\n      border: 1px solid var(--line);\n      border-radius: 8px;\n      background: #fff;\n      overflow: hidden;\n    }\n    .side-title {\n      padding: 18px 20px;\n      border-bottom: 1px solid var(--line);\n      font-weight: 900;\n      font-size: 17px;\n    }\n    .side button {\n      display: flex;\n      justify-content: space-between;\n      gap: 10px;\n      width: 100%;\n      padding: 14px 20px;\n      border-bottom: 1px solid var(--line);\n      border-left: 0;\n      border-right: 0;\n      border-top: 0;\n      background: #fff;\n      color: #243832;\n      font-weight: 800;\n      font-size: 14px;\n      text-align: left;\n      cursor: pointer;\n    }\n    .side button:last-child { border-bottom: 0; }\n    .side button.active {\n      color: var(--green);\n      background: #f6fbf8;\n    }\n    .side span {\n      color: var(--muted);\n      font-weight: 700;\n    }\n    .main-panel {\n      display: grid;\n      gap: 22px;\n    }\n    .toolbar {\n      border: 1px solid var(--line);\n      border-radius: 8px;\n      background: #fff;\n      padding: 18px 20px;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      gap: 20px;\n    }\n    .toolbar h2 {\n      margin: 0;\n      font-size: 26px;\n      letter-spacing: 0;\n    }\n    .toolbar p {\n      margin: 4px 0 0;\n      color: var(--muted);\n      line-height: 1.45;\n    }\n    .filters {\n      display: flex;\n      gap: 8px;\n      flex-wrap: wrap;\n      justify-content: flex-end;\n    }\n    .filters button {\n      border: 1px solid var(--line);\n      border-radius: 999px;\n      padding: 9px 12px;\n      background: #fff;\n      color: var(--ink);\n      font-weight: 800;\n      cursor: pointer;\n    }\n    .filters .active {\n      color: #fff;\n      background: var(--dark);\n      border-color: var(--dark);\n    }\n    .product-grid {\n      display: grid;\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n      gap: 18px;\n    }\n    .product-card {\n      border: 1px solid var(--line);\n      border-radius: 8px;\n      background: #fff;\n      overflow: hidden;\n      display: flex;\n      flex-direction: column;\n      min-height: 360px;\n    }\n    .product-img {\n      min-height: 190px;\n      background-size: cover;\n      background-position: center;\n      position: relative;\n    }\n    .product-img:after {\n      content: attr(data-cat);\n      position: absolute;\n      left: 12px;\n      bottom: 12px;\n      border-radius: 999px;\n      padding: 7px 10px;\n      background: rgba(14, 33, 28, .82);\n      color: #fff;\n      font-size: 12px;\n      font-weight: 900;\n    }\n    .img-battery { background-image: url(\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-batteries-chargers.jpg\"); }\n    .img-lights { background-image: url(\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-lights-safety.jpg\"); }\n    .img-locks { background-image: url(\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-locks-security.jpg\"); }\n    .img-bags { background-image: url(\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-bags-racks.jpg\"); }\n    .img-helmets { background-image: url(\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-helmets-protection.jpg\"); }\n    .img-mounts { background-image: url(\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-mounts-holders.jpg\"); }\n    .img-tools { background-image: url(\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-repair-tools.jpg\"); }\n    .img-parts { background-image: url(\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-replacement-parts.jpg\"); }\n    .product-body {\n      padding: 18px;\n      display: flex;\n      flex-direction: column;\n      flex: 1;\n      gap: 14px;\n    }\n    .product-body h3 {\n      margin: 0;\n      font-size: 20px;\n      line-height: 1.22;\n    }\n    .product-body p {\n      margin: 0;\n      color: var(--muted);\n      line-height: 1.58;\n      font-size: 14px;\n    }\n    .meta {\n      display: flex;\n      gap: 8px;\n      flex-wrap: wrap;\n    }\n    .meta span {\n      border: 1px solid var(--line);\n      border-radius: 999px;\n      background: var(--soft);\n      padding: 6px 9px;\n      color: #34443f;\n      font-size: 12px;\n      font-weight: 800;\n    }\n    .card-actions {\n      margin-top: auto;\n      display: flex;\n      gap: 10px;\n      align-items: center;\n    }\n    .card-actions .btn {\n      min-height: 40px;\n      padding: 0 13px;\n      font-size: 14px;\n    }\n    .empty-state {\n      display: none;\n      border: 1px dashed var(--line);\n      border-radius: 8px;\n      background: #fff;\n      padding: 34px;\n      text-align: center;\n      color: var(--muted);\n      line-height: 1.6;\n    }\n    .empty-state.is-visible {\n      display: block;\n    }\n    .supplier-note {\n      border: 1px solid var(--line);\n      border-radius: 8px;\n      background: #fff;\n      padding: 24px;\n      display: grid;\n      grid-template-columns: 1fr auto;\n      gap: 24px;\n      align-items: center;\n    }\n    .supplier-note h2 {\n      margin: 0 0 8px;\n      font-size: 30px;\n    }\n    .supplier-note p {\n      margin: 0;\n      color: var(--muted);\n      line-height: 1.65;\n      max-width: 700px;\n    }\n    .openryd-page .menu,\n    .openryd-products-directory .menu {\n      gap: 34px;\n      font-size: 14px;\n      font-weight: 850;\n    }\n    .openryd-page .menu > a,\n    .openryd-page .menu .or-nav-link,\n    .openryd-products-directory .menu > a,\n    .openryd-products-directory .menu .or-nav-link {\n      height: 74px;\n      letter-spacing: 0;\n    }\n    .mega-menu {\n      left: 50% !important;\n      top: 100% !important;\n      width: min(1180px, calc(100vw - 64px)) !important;\n      transform: translateX(-50%) translateY(14px) !important;\n    }\n    .has-mega:hover .mega-menu,\n    .has-mega:focus-within .mega-menu {\n      transform: translateX(-50%) translateY(0) !important;\n    }\n    .mega-panel {\n      display: block !important;\n      padding: 0 !important;\n      overflow: hidden;\n      border-radius: 8px !important;\n      background: #fff !important;\n      box-shadow: 0 28px 80px rgba(12, 32, 27, .18) !important;\n    }\n    .mega-head {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      gap: 24px;\n      padding: 20px 24px;\n      border-bottom: 1px solid var(--line);\n      background: #fff;\n    }\n    .mega-head span {\n      display: block;\n      margin-bottom: 7px;\n      color: var(--green);\n      font-size: 12px;\n      font-weight: 900;\n      text-transform: uppercase;\n      letter-spacing: .08em;\n    }\n    .mega-head strong {\n      display: block;\n      color: var(--ink);\n      font-size: 24px;\n      line-height: 1.1;\n    }\n    .mega-head > a {\n      display: inline-flex;\n      align-items: center;\n      min-height: 40px;\n      padding: 0 14px;\n      border-radius: 6px;\n      background: var(--dark);\n      color: #fff;\n      font-size: 13px;\n      font-weight: 900;\n    }\n    .mega-layout {\n      display: grid;\n      grid-template-columns: 220px 1fr;\n      gap: 0;\n      background: #fff;\n    }\n    .mega-links {\n      padding: 18px;\n      border-right: 1px solid var(--line);\n      background: #f7faf8;\n    }\n    .mega-links a {\n      display: flex;\n      align-items: center;\n      min-height: 42px;\n      padding: 0 12px;\n      border-radius: 6px;\n      color: #263a34;\n      font-size: 14px;\n      font-weight: 850;\n    }\n    .mega-links a:hover {\n      background: #fff;\n      color: var(--green);\n    }\n    .mega-grid {\n      display: grid !important;\n      grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n      gap: 0 !important;\n      padding: 18px !important;\n    }\n    .mega-card {\n      position: relative;\n      display: block !important;\n      min-height: 0 !important;\n      padding: 14px !important;\n      border: 0 !important;\n      border-radius: 8px !important;\n      background: #fff !important;\n      box-shadow: none !important;\n    }\n    .mega-card:hover {\n      transform: none !important;\n      background: #f7faf8 !important;\n      box-shadow: none !important;\n    }\n    .mega-card img {\n      display: block;\n      width: 100% !important;\n      height: 118px !important;\n      margin-bottom: 12px;\n      border: 1px solid var(--line);\n      border-radius: 8px !important;\n      object-fit: cover;\n      background: #fff;\n    }\n    .mega-card em {\n      position: absolute;\n      top: 24px;\n      left: 24px;\n      display: inline-flex;\n      align-items: center;\n      min-height: 22px;\n      padding: 0 8px;\n      border-radius: 999px;\n      background: var(--green);\n      color: #fff;\n      font-style: normal;\n      font-size: 11px;\n      font-weight: 900;\n    }\n    .mega-card span {\n      display: block;\n      margin-bottom: 5px;\n      color: var(--ink);\n      font-size: 15px;\n      font-weight: 900;\n      line-height: 1.18;\n    }\n    .mega-card small {\n      display: block;\n      color: var(--muted);\n      font-size: 12px;\n      font-weight: 700;\n      line-height: 1.35;\n    }\n  \n    \/* OpenRyd nav desktop isolation *\/\n    .openryd-page .nav-inner,\n    .openryd-products-directory .nav-inner {\n      display: flex !important;\n      align-items: center !important;\n      justify-content: space-between !important;\n      gap: 24px !important;\n      height: 74px !important;\n      min-width: 0 !important;\n    }\n    .openryd-page .brand,\n    .openryd-products-directory .brand {\n      flex: 0 0 auto !important;\n      min-width: 0 !important;\n    }\n    .openryd-page .menu,\n    .openryd-products-directory .menu {\n      display: flex !important;\n      align-items: stretch !important;\n      justify-content: center !important;\n      gap: 34px !important;\n      flex: 1 1 auto !important;\n      min-width: 0 !important;\n      margin: 0 !important;\n      padding: 0 !important;\n      overflow: visible !important;\n      white-space: nowrap !important;\n    }\n    .openryd-page .menu > a,\n    .openryd-page .menu .or-nav-link,\n    .openryd-products-directory .menu > a,\n    .openryd-products-directory .menu .or-nav-link {\n      display: inline-flex !important;\n      align-items: center !important;\n      justify-content: center !important;\n      height: 74px !important;\n      padding: 0 !important;\n      border: 0 !important;\n      background: transparent !important;\n      color: #243832 !important;\n      font-size: 14px !important;\n      font-weight: 850 !important;\n      line-height: 1 !important;\n      text-decoration: none !important;\n      letter-spacing: 0 !important;\n      flex: 0 0 auto !important;\n    }\n    .openryd-page .menu > a.active,\n    .openryd-page .menu .or-nav-link.active,\n    .openryd-products-directory .menu > a.active,\n    .openryd-products-directory .menu .or-nav-link.active,\n    .openryd-page .menu > a:hover,\n    .openryd-page .menu .or-nav-link:hover,\n    .openryd-products-directory .menu > a:hover,\n    .openryd-products-directory .menu .or-nav-link:hover {\n      color: var(--green) !important;\n    }\n    .openryd-page .or-mega-item,\n    .openryd-products-directory .or-mega-item {\n      position: static !important;\n      display: inline-flex !important;\n      align-items: stretch !important;\n      height: 74px !important;\n      flex: 0 0 auto !important;\n      margin: 0 !important;\n      padding: 0 !important;\n      list-style: none !important;\n    }\n    .openryd-page .nav-inner > .or-btn,\n    .openryd-page .nav-inner > .btn,\n    .openryd-products-directory .nav-inner > .or-btn,\n    .openryd-products-directory .nav-inner > .btn {\n      flex: 0 0 auto !important;\n      white-space: nowrap !important;\n    }\n      \/* OpenRyd mega menu float fix *\/\n    .openryd-page .mega-menu,\n    .openryd-products-directory .mega-menu {\n      position: absolute !important;\n      z-index: 50 !important;\n      opacity: 0 !important;\n      visibility: hidden !important;\n      pointer-events: none !important;\n      left: 50% !important;\n      top: 100% !important;\n      width: min(1180px, calc(100vw - 64px)) !important;\n      transform: translateX(-50%) translateY(14px) !important;\n      transition: opacity .18s ease, visibility .18s ease, transform .18s ease !important;\n    }\n    .openryd-page .has-mega:hover .mega-menu,\n    .openryd-page .has-mega:focus-within .mega-menu,\n    .openryd-products-directory .has-mega:hover .mega-menu,\n    .openryd-products-directory .has-mega:focus-within .mega-menu {\n      opacity: 1 !important;\n      visibility: visible !important;\n      pointer-events: auto !important;\n      transform: translateX(-50%) translateY(0) !important;\n    }\n      \/* OpenRyd nav search polish *\/\n    .openryd-page .menu,\n    .openryd-products-directory .menu {\n      gap: 42px !important;\n      flex: 0 1 auto !important;\n    }\n    .or-nav-tools {\n      display: flex !important;\n      align-items: center !important;\n      gap: 14px !important;\n      flex: 0 0 auto !important;\n    }\n    .or-nav-search {\n      position: relative !important;\n      display: flex !important;\n      align-items: center !important;\n      width: 230px !important;\n      height: 42px !important;\n      border: 1px solid #d9e3df !important;\n      border-radius: 999px !important;\n      background: #f7faf8 !important;\n      overflow: hidden !important;\n    }\n    .or-nav-search input {\n      width: 100% !important;\n      height: 100% !important;\n      border: 0 !important;\n      outline: 0 !important;\n      background: transparent !important;\n      padding: 0 44px 0 16px !important;\n      color: #162923 !important;\n      font-size: 13px !important;\n      font-weight: 750 !important;\n      letter-spacing: 0 !important;\n    }\n    .or-nav-search input::placeholder { color: #667871 !important; }\n    .or-nav-search button {\n      position: absolute !important;\n      right: 4px !important;\n      top: 4px !important;\n      width: 34px !important;\n      height: 34px !important;\n      border: 0 !important;\n      border-radius: 50% !important;\n      background: var(--green) !important;\n      color: #fff !important;\n      display: grid !important;\n      place-items: center !important;\n      cursor: pointer !important;\n      font-size: 16px !important;\n      line-height: 1 !important;\n      padding: 0 !important;\n    }\n    .openryd-page .nav-inner > .or-btn,\n    .openryd-page .nav-inner > .btn,\n    .openryd-products-directory .nav-inner > .or-btn,\n    .openryd-products-directory .nav-inner > .btn {\n      min-height: 42px !important;\n      padding: 0 16px !important;\n    }\n      \/* OpenRyd nav search final *\/\n    .openryd-page .menu,\n    .openryd-products-directory .menu {\n      gap: 44px !important;\n      flex: 0 1 auto !important;\n    }\n    .or-nav-tools {\n      display: flex !important;\n      align-items: center !important;\n      gap: 14px !important;\n      flex: 0 0 auto !important;\n    }\n    .or-nav-search {\n      position: relative !important;\n      display: flex !important;\n      align-items: center !important;\n      width: 230px !important;\n      height: 42px !important;\n      border: 1px solid #d9e3df !important;\n      border-radius: 999px !important;\n      background: #f7faf8 !important;\n      overflow: hidden !important;\n    }\n    .or-nav-search input {\n      width: 100% !important;\n      height: 100% !important;\n      border: 0 !important;\n      outline: 0 !important;\n      background: transparent !important;\n      padding: 0 44px 0 16px !important;\n      color: #162923 !important;\n      font-size: 13px !important;\n      font-weight: 750 !important;\n      letter-spacing: 0 !important;\n    }\n    .or-nav-search input::placeholder { color: #667871 !important; }\n    .or-nav-search button {\n      position: absolute !important;\n      right: 4px !important;\n      top: 4px !important;\n      width: 34px !important;\n      height: 34px !important;\n      border: 0 !important;\n      border-radius: 50% !important;\n      background: var(--green) !important;\n      color: #fff !important;\n      display: grid !important;\n      place-items: center !important;\n      cursor: pointer !important;\n      font-size: 13px !important;\n      font-weight: 900 !important;\n      line-height: 1 !important;\n      padding: 0 !important;\n    }\n    .openryd-page .nav-inner > .or-btn,\n    .openryd-page .nav-inner > .btn,\n    .openryd-page .nav-inner > .or-nav-cta,\n    .openryd-products-directory .nav-inner > .or-btn,\n    .openryd-products-directory .nav-inner > .btn,\n    .openryd-products-directory .nav-inner > .or-nav-cta {\n      min-height: 42px !important;\n      padding: 0 16px !important;\n    }\n    \/* OpenRyd audience content *\/\n    .audience-intro {\n      max-width: 540px;\n    }\n    .line-card.feature-card h3 {\n      font-size: 23px;\n      line-height: 1.18;\n    }\n    .line-card.feature-card .line-meta span {\n      color: #27443a;\n      font-weight: 850;\n    }\n  \n\/* OpenRyd unified nav search *\/\n.openryd-page .or-nav-tools, .openryd-products-directory .or-nav-tools { margin-left: auto; display: flex; align-items: center; flex: 0 0 auto; }\n.openryd-page .or-nav-search, .openryd-products-directory .or-nav-search { height: 40px; width: 246px; display: flex; align-items: center; border: 1px solid #d8e1dc; background: #fff; border-radius: 999px; overflow: hidden; box-shadow: 0 10px 24px rgba(10, 28, 22, .06); }\n.openryd-page .or-nav-search input, .openryd-products-directory .or-nav-search input { min-width: 0; flex: 1; height: 100%; border: 0; outline: 0; padding: 0 12px 0 15px; font-size: 13px; color: #13241e; background: transparent; }\n.openryd-page .or-nav-search input::placeholder, .openryd-products-directory .or-nav-search input::placeholder { color: #667871; }\n.openryd-page .or-nav-search button, .openryd-products-directory .or-nav-search button { height: 100%; min-width: 72px; border: 0; padding: 0 14px; background: #15a66d; color: #fff; font-weight: 800; font-size: 12px; cursor: pointer; }\n.openryd-page .nav-inner > .btn, .openryd-page .nav-inner > .or-btn, .openryd-products-directory .nav-inner > .btn, .openryd-products-directory .nav-inner > .or-btn { display: none !important; }\n@media (max-width: 980px) { .openryd-page .or-nav-tools, .openryd-products-directory .or-nav-tools { width: 100%; margin-left: 0; } .openryd-page .or-nav-search, .openryd-products-directory .or-nav-search { width: 100%; } }\n\n<\/style><div class=\"openryd-products-directory\"><style id=\"openryd-canonical-nav-20260517\">\n@media (min-width: 981px) {\n  body .topbar {\n    height: 34px !important;\n    min-height: 34px !important;\n    display: block !important;\n    overflow: hidden !important;\n    background: #071713 !important;\n    color: #d9ebe4 !important;\n    font-size: 13px !important;\n    line-height: 34px !important;\n  }\n  body .topbar .topbar-inner,\n  body .topbar .inner {\n    width: min(1180px, calc(100% - 40px)) !important;\n    height: 34px !important;\n    margin: 0 auto !important;\n    padding: 0 !important;\n    display: flex !important;\n    align-items: center !important;\n    justify-content: space-between !important;\n    gap: 20px !important;\n  }\n  body .topbar .topbar-inner div,\n  body .topbar .inner div {\n    margin: 0 !important;\n    padding: 0 !important;\n    color: #d9ebe4 !important;\n    font-size: 13px !important;\n    font-weight: 600 !important;\n    line-height: 34px !important;\n    white-space: nowrap !important;\n  }\n  body header.nav {\n    height: 76px !important;\n    position: sticky !important;\n    top: 0 !important;\n    z-index: 30 !important;\n    background: rgba(255, 255, 255, .97) !important;\n    border-bottom: 1px solid #dfe7e2 !important;\n    backdrop-filter: blur(12px) !important;\n    font-family: Inter, Arial, sans-serif !important;\n  }\n  body.admin-bar header.nav { top: 32px !important; }\n  body header.nav .nav-inner {\n    width: min(1180px, calc(100% - 40px)) !important;\n    height: 76px !important;\n    margin: 0 auto !important;\n    display: flex !important;\n    align-items: center !important;\n    justify-content: flex-start !important;\n    gap: 0 !important;\n  }\n  body header.nav .brand {\n    flex: 0 0 auto !important;\n    margin-right: 46px !important;\n    min-width: 0 !important;\n  }\n  body header.nav .brand img {\n    display: block !important;\n    width: auto !important;\n    max-width: 154px !important;\n    max-height: 46px !important;\n  }\n  body header.nav .menu {\n    display: flex !important;\n    align-items: stretch !important;\n    justify-content: flex-start !important;\n    gap: 30px !important;\n    flex: 0 1 auto !important;\n    min-width: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    overflow: visible !important;\n    white-space: nowrap !important;\n  }\n  body header.nav .menu > a,\n  body header.nav .menu .or-nav-link {\n    display: inline-flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n    height: 76px !important;\n    padding: 0 !important;\n    border: 0 !important;\n    background: transparent !important;\n    color: #243832 !important;\n    font-family: Inter, Arial, sans-serif !important;\n    font-size: 16px !important;\n    font-weight: 850 !important;\n    line-height: 1 !important;\n    text-decoration: none !important;\n    letter-spacing: 0 !important;\n    flex: 0 0 auto !important;\n  }\n  body header.nav .menu > a.active,\n  body header.nav .menu .or-nav-link.active,\n  body header.nav .menu > a:hover,\n  body header.nav .menu .or-nav-link:hover {\n    color: #15a66d !important;\n  }\n  body header.nav .or-mega-item {\n    position: static !important;\n    display: inline-flex !important;\n    align-items: stretch !important;\n    height: 76px !important;\n    flex: 0 0 auto !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    list-style: none !important;\n  }\n  body header.nav .mega-menu {\n    position: absolute !important;\n    left: 50% !important;\n    top: 76px !important;\n    width: min(1180px, calc(100vw - 64px)) !important;\n    opacity: 0 !important;\n    visibility: hidden !important;\n    pointer-events: none !important;\n    transform: translateX(-50%) translateY(14px) !important;\n    transition: opacity .18s ease, transform .18s ease, visibility .18s ease !important;\n    z-index: 60 !important;\n  }\n  body header.nav .has-mega:hover .mega-menu,\n  body header.nav .has-mega:focus-within .mega-menu {\n    opacity: 1 !important;\n    visibility: visible !important;\n    pointer-events: auto !important;\n    transform: translateX(-50%) translateY(0) !important;\n  }\n  body header.nav .mega-panel {\n    display: block !important;\n    padding: 0 !important;\n    overflow: hidden !important;\n    border-radius: 8px !important;\n    background: #fff !important;\n    box-shadow: 0 28px 80px rgba(12, 32, 27, .18) !important;\n  }\n  body header.nav .mega-head {\n    display: flex !important;\n    align-items: center !important;\n    justify-content: space-between !important;\n    gap: 24px !important;\n    padding: 20px 24px !important;\n    border-bottom: 1px solid #dfe8e3 !important;\n    background: #fff !important;\n  }\n  body header.nav .mega-head span {\n    display: block !important;\n    margin-bottom: 7px !important;\n    color: #15a66d !important;\n    font-size: 12px !important;\n    font-weight: 900 !important;\n    text-transform: uppercase !important;\n    letter-spacing: .08em !important;\n  }\n  body header.nav .mega-head strong {\n    display: block !important;\n    color: #061b15 !important;\n    font-size: 24px !important;\n    line-height: 1.1 !important;\n  }\n  body header.nav .mega-head > a {\n    display: inline-flex !important;\n    align-items: center !important;\n    min-height: 40px !important;\n    padding: 0 14px !important;\n    border-radius: 6px !important;\n    background: #071713 !important;\n    color: #fff !important;\n    font-family: Inter, Arial, sans-serif !important;\n    font-size: 13px !important;\n    font-weight: 900 !important;\n  }\n  body header.nav .mega-layout {\n    display: grid !important;\n    grid-template-columns: 220px 1fr !important;\n    gap: 0 !important;\n    background: #fff !important;\n  }\n  body header.nav .mega-links {\n    padding: 18px !important;\n    border-right: 1px solid #dfe8e3 !important;\n    background: #f7faf8 !important;\n  }\n  body header.nav .mega-links a {\n    display: flex !important;\n    align-items: center !important;\n    min-height: 42px !important;\n    padding: 0 12px !important;\n    border-radius: 6px !important;\n    color: #263a34 !important;\n    font-size: 14px !important;\n    font-weight: 850 !important;\n  }\n  body header.nav .mega-grid {\n    display: grid !important;\n    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n    gap: 0 !important;\n    padding: 18px !important;\n  }\n  body header.nav .mega-card {\n    position: relative !important;\n    display: block !important;\n    min-height: 0 !important;\n    padding: 14px !important;\n    border: 0 !important;\n    border-radius: 8px !important;\n    background: #fff !important;\n    box-shadow: none !important;\n    text-decoration: none !important;\n  }\n  body header.nav .mega-card img {\n    display: block !important;\n    width: 100% !important;\n    height: 118px !important;\n    margin-bottom: 12px !important;\n    border: 1px solid #dfe8e3 !important;\n    border-radius: 8px !important;\n    object-fit: cover !important;\n    background: #fff !important;\n  }\n  body header.nav .mega-card em {\n    position: absolute !important;\n    top: 24px !important;\n    left: 24px !important;\n    display: inline-flex !important;\n    align-items: center !important;\n    min-height: 22px !important;\n    padding: 0 8px !important;\n    border-radius: 999px !important;\n    background: #15a66d !important;\n    color: #fff !important;\n    font-style: normal !important;\n    font-size: 11px !important;\n    font-weight: 900 !important;\n  }\n  body header.nav .mega-card span {\n    display: block !important;\n    margin-bottom: 5px !important;\n    color: #061b15 !important;\n    font-size: 15px !important;\n    font-weight: 900 !important;\n    line-height: 1.18 !important;\n  }\n  body header.nav .mega-card small {\n    display: block !important;\n    color: #51635d !important;\n    font-family: Inter, Arial, sans-serif !important;\n    font-size: 12px !important;\n    font-weight: 700 !important;\n    line-height: 1.35 !important;\n  }\n  body header.nav .or-nav-tools {\n    margin-left: auto !important;\n    display: flex !important;\n    align-items: center !important;\n    flex: 0 0 auto !important;\n  }\n  body header.nav .or-nav-search {\n    width: 246px !important;\n    height: 40px !important;\n    display: flex !important;\n    align-items: center !important;\n    overflow: hidden !important;\n    border: 1px solid #d8e1dc !important;\n    border-radius: 999px !important;\n    background: #fff !important;\n    box-shadow: 0 10px 24px rgba(10, 28, 22, .06) !important;\n  }\n  body header.nav .or-nav-search input {\n    min-width: 0 !important;\n    flex: 1 1 auto !important;\n    width: auto !important;\n    height: 100% !important;\n    margin: 0 !important;\n    padding: 0 12px 0 15px !important;\n    border: 0 !important;\n    outline: 0 !important;\n    background: transparent !important;\n    box-shadow: none !important;\n    color: #13241e !important;\n    font-size: 13px !important;\n    line-height: 40px !important;\n  }\n  body header.nav .or-nav-search input::placeholder {\n    color: #9aa8a2 !important;\n    opacity: 1 !important;\n  }\n  body header.nav .or-nav-search button {\n    position: static !important;\n    flex: 0 0 72px !important;\n    width: 72px !important;\n    min-width: 72px !important;\n    height: 100% !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    border: 0 !important;\n    border-radius: 0 !important;\n    background: #15a66d !important;\n    color: #fff !important;\n    box-shadow: none !important;\n    cursor: pointer !important;\n    font-size: 12px !important;\n    font-weight: 850 !important;\n    line-height: 40px !important;\n    text-align: center !important;\n  }\n  body header.nav .nav-inner > .btn,\n  body header.nav .nav-inner > .or-btn,\n  body header.nav .nav-inner > .or-nav-cta {\n    display: none !important;\n  }\n}\n<\/style>\n<div class=\"topbar\">\n  <div class=\"topbar-inner\">\n    <div>Global B2B supply for e-bike accessories and cycling gear<\/div>\n    <div>EU \/ US market focus | OEM packaging | Product support<\/div>\n  <\/div>\n<\/div>\n<header class=\"nav\">\n  <div class=\"nav-inner\">\n    <a class=\"brand\" href=\"\/\">\n      <img decoding=\"async\" src=\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-header-logo-v3.png\" alt=\"OpenRyd\">\n    <\/a>\n    <nav class=\"menu\">\n      <a  href=\"\/\">Home<\/a>\n      <div class=\"or-mega-item has-mega\">\n        <a class=\"or-nav-link active\" href=\"\/products\/\">Products<\/a>\n        <div class=\"mega-menu\">\n          <div class=\"mega-panel\">\n            <div class=\"mega-head\">\n              <div>\n                <span>OpenRyd product range<\/span>\n                <strong>E-bike accessories by category<\/strong>\n              <\/div>\n              <a href=\"\/products\/\">View all categories<\/a>\n            <\/div>\n            <div class=\"mega-layout\">\n              <div class=\"mega-links\">\n                <a href=\"\/products\/\">OpenRyd Product Lineup<\/a>\n                <a href=\"\/products\/\">Featured Product Ideas<\/a>\n                <a href=\"\/products\/\">OEM Packaging<\/a>\n                <a href=\"\/#sourcing\">Service Support<\/a>\n              <\/div>\n              <div class=\"mega-grid\">\n                <a class=\"mega-card\" href=\"\/products\/\"><img decoding=\"async\" src=\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-batteries-chargers.jpg\" alt=\"Batteries and chargers\"><span>Batteries &amp; Chargers<\/span><small>Power accessories<\/small><\/a>\n                <a class=\"mega-card\" href=\"\/products\/\"><img decoding=\"async\" src=\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-lights-safety.jpg\" alt=\"Lights and safety\"><em>HOT<\/em><span>Lights &amp; Safety<\/span><small>Visibility kits<\/small><\/a>\n                <a class=\"mega-card\" href=\"\/products\/\"><img decoding=\"async\" src=\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-locks-security.jpg\" alt=\"Locks and security\"><span>Locks &amp; Security<\/span><small>Anti-theft range<\/small><\/a>\n                <a class=\"mega-card\" href=\"\/products\/\"><img decoding=\"async\" src=\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-bags-racks.jpg\" alt=\"Bags and racks\"><span>Bags &amp; Racks<\/span><small>Storage solutions<\/small><\/a>\n                <a class=\"mega-card\" href=\"\/products\/\"><img decoding=\"async\" src=\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-helmets-protection.jpg\" alt=\"Helmets and protection\"><span>Helmets &amp; Protection<\/span><small>Rider safety<\/small><\/a>\n                <a class=\"mega-card\" href=\"\/products\/\"><img decoding=\"async\" src=\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-mounts-holders.jpg\" alt=\"Mounts and holders\"><em>HOT<\/em><span>Mounts &amp; Holders<\/span><small>Cockpit add-ons<\/small><\/a>\n                <a class=\"mega-card\" href=\"\/products\/\"><img decoding=\"async\" src=\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-repair-tools.jpg\" alt=\"Repair tools\"><span>Repair Tools<\/span><small>Maintenance kits<\/small><\/a>\n                <a class=\"mega-card\" href=\"\/products\/\"><img decoding=\"async\" src=\"https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-replacement-parts.jpg\" alt=\"Replacement parts\"><span>Replacement Parts<\/span><small>Service items<\/small><\/a>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n      <a  href=\"\/insights\/\">Insights<\/a>\n      <a href=\"\/#sourcing\">Service Support<\/a>\n      <a  href=\"\/about-us\/\">About<\/a>\n      <a  href=\"\/contact-us\/\">Contact<\/a>\n    <\/nav>\n    <div class=\"or-nav-tools\">\n      <form class=\"or-nav-search\" role=\"search\" method=\"get\" action=\"\/\">\n        <input type=\"search\" name=\"s\" placeholder=\"Search products\" aria-label=\"Search products\">\n        <button type=\"submit\" aria-label=\"Search\">Search<\/button>\n      <\/form>\n    <\/div>\n  <\/div>\n<\/header>\n\n\n\n\n\n  <section class=\"catalog-hero\">\n    <div class=\"catalog-hero-inner\">\n      <div>\n        <p class=\"kicker\">Product directory<\/p>\n        <h1>Ready-to-source e-bike accessories for retail and wholesale buyers.<\/h1>\n        <p class=\"hero-copy\">A practical product lineup for lights, phone mounts, storage bags, locks, mirrors, kickstands and repair accessories. Built for fast visual review and buyer inquiry flow.<\/p>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <div class=\"search-band\">\n    <div class=\"search-panel\">\n      <div class=\"search-box\">\n        <input type=\"search\" placeholder=\"Search products, categories, or use cases: lights, locks, chargers, phone mounts...\">\n        <button type=\"button\">Search<\/button>\n      <\/div>\n      <div class=\"quick-tags\">\n        <a href=\"#\">Commuter<\/a>\n        <a href=\"#\">Repair<\/a>\n        <a href=\"#\">Retail bundle<\/a>\n        <a href=\"#\">OEM packaging<\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <main class=\"catalog\">\n    <div class=\"catalog-layout\">\n      <aside class=\"side\">\n        <div class=\"side-title\">Product Categories<\/div>\n        <button type=\"button\" class=\"active\" data-filter=\"all\"><strong>All Products<\/strong><span>12<\/span><\/button>\n        <button type=\"button\" data-filter=\"lights safety\"><strong>Lights &amp; Safety<\/strong><span>4<\/span><\/button>\n        <button type=\"button\" data-filter=\"mounts holders\"><strong>Mounts &amp; Holders<\/strong><span>2<\/span><\/button>\n        <button type=\"button\" data-filter=\"bags racks\"><strong>Bags &amp; Racks<\/strong><span>2<\/span><\/button>\n        <button type=\"button\" data-filter=\"protection tools\"><strong>Protection &amp; Tools<\/strong><span>4<\/span><\/button>\n      <\/aside>\n\n      <section class=\"main-panel\">\n        <div class=\"toolbar\">\n          <div>\n            <h2>OpenRyd Product Lineup<\/h2>\n            <p>A visual product lineup inspired by proven bike accessory supplier ranges, organized for quick browsing and RFQ.<\/p>\n          <\/div>\n          <div class=\"filters\">\n            <button class=\"active\" type=\"button\" data-filter=\"all\">All<\/button>\n            <button type=\"button\" data-filter=\"hot\">Hot<\/button>\n            <button type=\"button\" data-filter=\"retail\">Retail<\/button>\n            <button type=\"button\" data-filter=\"repair\">Repair<\/button>\n            <button type=\"button\" data-filter=\"oem\">OEM<\/button>\n          <\/div>\n        <\/div>\n\n        <div class=\"product-grid\">\n          <article class=\"product-card\" data-search=\"lights safety led front bike light usb rechargeable headlight commuter retail hot\">\n            <div class=\"product-img\" style=\"background-image:url('https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-products-led-front-light.jpg')\" data-cat=\"Lights &amp; Safety\"><\/div>\n            <div class=\"product-body\">\n              <h3>LED Front Bike Light<\/h3>\n              <p>Compact USB rechargeable front light for commuting, retail display and entry-level safety bundles.<\/p>\n              <div class=\"meta\"><span>USB rechargeable<\/span><span>Retail card<\/span><span>Hot SKU<\/span><\/div>\n              <div class=\"card-actions\"><a class=\"btn alt\" href=\"\/contact-us\/\">Request quote<\/a><\/div>\n            <\/div>\n          <\/article>\n          <article class=\"product-card\" data-search=\"lights safety usb rear warning tail light red led commuter delivery hot\">\n            <div class=\"product-img\" style=\"background-image:url('https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-products-rgb-tail-light.jpg')\" data-cat=\"Lights &amp; Safety\"><\/div>\n            <div class=\"product-body\">\n              <h3>USB Rear Warning Tail Light<\/h3>\n              <p>High-visibility rear light with multiple flash modes for commuting, delivery riders and online sellers.<\/p>\n              <div class=\"meta\"><span>Rear safety<\/span><span>Multi-mode<\/span><span>Fast mover<\/span><\/div>\n              <div class=\"card-actions\"><a class=\"btn alt\" href=\"\/contact-us\/\">Request quote<\/a><\/div>\n            <\/div>\n          <\/article>\n          <article class=\"product-card\" data-search=\"lights safety stvzo rear safety light german standard europe waterproof retail\">\n            <div class=\"product-img img-lights\" data-cat=\"Lights &amp; Safety\"><\/div>\n            <div class=\"product-body\">\n              <h3>StVZO Rear Safety Light<\/h3>\n              <p>European-market rear light concept for buyers who need a more professional compliance-style range.<\/p>\n              <div class=\"meta\"><span>EU market<\/span><span>Waterproof<\/span><span>OEM label<\/span><\/div>\n              <div class=\"card-actions\"><a class=\"btn alt\" href=\"\/contact-us\/\">Request quote<\/a><\/div>\n            <\/div>\n          <\/article>\n          <article class=\"product-card\" data-search=\"lights safety front rear light set kit bundle retail wholesale oem\">\n            <div class=\"product-img\" style=\"background-image:url('https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-insight-lights.jpg')\" data-cat=\"Lights &amp; Safety\"><\/div>\n            <div class=\"product-body\">\n              <h3>Front &amp; Rear Light Set<\/h3>\n              <p>Retail-ready light set for shelf programs, starter accessory bundles and OEM packaging projects.<\/p>\n              <div class=\"meta\"><span>Light set<\/span><span>Bundle<\/span><span>OEM box<\/span><\/div>\n              <div class=\"card-actions\"><a class=\"btn alt\" href=\"\/contact-us\/\">Request quote<\/a><\/div>\n            <\/div>\n          <\/article>\n          <article class=\"product-card\" data-search=\"mounts holders cnc anti shock phone mount handlebar navigation delivery hot\">\n            <div class=\"product-img\" style=\"background-image:url('https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-products-phone-mount.jpg')\" data-cat=\"Mounts &amp; Holders\"><\/div>\n            <div class=\"product-body\">\n              <h3>CNC Anti-Shock Phone Mount<\/h3>\n              <p>Metal handlebar phone holder for navigation, delivery riding and higher-value cockpit accessory lines.<\/p>\n              <div class=\"meta\"><span>CNC body<\/span><span>Anti-shock<\/span><span>4.7-7.2 in<\/span><\/div>\n              <div class=\"card-actions\"><a class=\"btn alt\" href=\"\/contact-us\/\">Request quote<\/a><\/div>\n            <\/div>\n          <\/article>\n          <article class=\"product-card\" data-search=\"mounts holders bike mirror foldable rear view safety commuter e-bike\">\n            <div class=\"product-img img-mounts\" data-cat=\"Mounts &amp; Holders\"><\/div>\n            <div class=\"product-body\">\n              <h3>Foldable Bike Safety Mirror<\/h3>\n              <p>Handlebar and bar-end mirror options for commuter e-bikes, city bikes and delivery rider accessories.<\/p>\n              <div class=\"meta\"><span>Safety mirror<\/span><span>Foldable<\/span><span>Commuter<\/span><\/div>\n              <div class=\"card-actions\"><a class=\"btn alt\" href=\"\/contact-us\/\">Request quote<\/a><\/div>\n            <\/div>\n          <\/article>\n          <article class=\"product-card\" data-search=\"bags racks waterproof phone frame bag touch screen top tube storage retail\">\n            <div class=\"product-img\" style=\"background-image:url('https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-cat-mounts-holders-clear.jpg')\" data-cat=\"Bags &amp; Racks\"><\/div>\n            <div class=\"product-body\">\n              <h3>Waterproof Phone Frame Bag<\/h3>\n              <p>Top tube phone bag with touch window for commuters, delivery riders and online store accessory kits.<\/p>\n              <div class=\"meta\"><span>Phone window<\/span><span>Waterproof<\/span><span>Top tube<\/span><\/div>\n              <div class=\"card-actions\"><a class=\"btn alt\" href=\"\/contact-us\/\">Request quote<\/a><\/div>\n            <\/div>\n          <\/article>\n          <article class=\"product-card\" data-search=\"bags racks waterproof top tube bag triangle frame storage commuter delivery\">\n            <div class=\"product-img img-bags\" data-cat=\"Bags &amp; Racks\"><\/div>\n            <div class=\"product-body\">\n              <h3>Waterproof Top Tube Bag<\/h3>\n              <p>Compact storage bag for tools, phones and daily riding essentials with OEM logo and packaging options.<\/p>\n              <div class=\"meta\"><span>Storage<\/span><span>OEM logo<\/span><span>Retail pack<\/span><\/div>\n              <div class=\"card-actions\"><a class=\"btn alt\" href=\"\/contact-us\/\">Request quote<\/a><\/div>\n            <\/div>\n          <\/article>\n          <article class=\"product-card\" data-search=\"protection tools adjustable e-bike kickstand aluminum mtb city bike 24 29 inch\">\n            <div class=\"product-img img-parts\" data-cat=\"Protection &amp; Tools\"><\/div>\n            <div class=\"product-body\">\n              <h3>Adjustable E-Bike Kickstand<\/h3>\n              <p>Aluminum adjustable kickstand for 24-29 inch bikes, suitable for e-bike replacement and shop programs.<\/p>\n              <div class=\"meta\"><span>24-29 inch<\/span><span>Aluminum<\/span><span>Replacement<\/span><\/div>\n              <div class=\"card-actions\"><a class=\"btn alt\" href=\"\/contact-us\/\">Request quote<\/a><\/div>\n            <\/div>\n          <\/article>\n          <article class=\"product-card\" data-search=\"protection tools bike cable lock chain lock security anti theft retail\">\n            <div class=\"product-img\" style=\"background-image:url('https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-products-cable-lock.jpg')\" data-cat=\"Protection &amp; Tools\"><\/div>\n            <div class=\"product-body\">\n              <h3>Bike Cable Lock<\/h3>\n              <p>Everyday anti-theft lock for commuter riders, starter accessory sets and mixed-SKU wholesale orders.<\/p>\n              <div class=\"meta\"><span>Security<\/span><span>Combination<\/span><span>Mixed order<\/span><\/div>\n              <div class=\"card-actions\"><a class=\"btn alt\" href=\"\/contact-us\/\">Request quote<\/a><\/div>\n            <\/div>\n          <\/article>\n          <article class=\"product-card\" data-search=\"protection tools 16 in 1 repair tool kit maintenance pump tire repair retail\">\n            <div class=\"product-img\" style=\"background-image:url('https:\/\/openryd.com\/wp-content\/uploads\/2026\/05\/openryd-products-repair-kit.jpg')\" data-cat=\"Protection &amp; Tools\"><\/div>\n            <div class=\"product-body\">\n              <h3>16-in-1 Repair Tool Kit<\/h3>\n              <p>Compact maintenance multi-tool for repair kits, checkout add-ons and retail service counter products.<\/p>\n              <div class=\"meta\"><span>Multi-tool<\/span><span>Repair<\/span><span>Checkout add-on<\/span><\/div>\n              <div class=\"card-actions\"><a class=\"btn alt\" href=\"\/contact-us\/\">Request quote<\/a><\/div>\n            <\/div>\n          <\/article>\n          <article class=\"product-card\" data-search=\"protection tools mini pump bottle cage accessories repair commuter wholesale\">\n            <div class=\"product-img img-tools\" data-cat=\"Protection &amp; Tools\"><\/div>\n            <div class=\"product-body\">\n              <h3>Mini Pump &amp; Bottle Cage Set<\/h3>\n              <p>Small accessory add-ons to enrich retail bundles and make the product page feel like a full supplier range.<\/p>\n              <div class=\"meta\"><span>Mini pump<\/span><span>Bottle cage<\/span><span>Bundle SKU<\/span><\/div>\n              <div class=\"card-actions\"><a class=\"btn alt\" href=\"\/contact-us\/\">Request quote<\/a><\/div>\n            <\/div>\n          <\/article>\n        <\/div>\n\n        <div class=\"empty-state\" id=\"emptyState\">\n          No matching product yet. Try lights, phone mount, bag, lock, mirror, kickstand, repair kit or contact us with your target product idea.\n        <\/div>\n\n        <div class=\"supplier-note\">\n          <div>\n            <h2>Need help building a sourcing list?<\/h2>\n            <p>This page now works as a visual product lineup for quick buyer review. Individual SKU detail pages can be added after the main website structure is stable.<\/p>\n          <\/div>\n          <a class=\"btn\" href=\"\/contact-us\/\">Contact for sourcing help<\/a>\n        <\/div>\n      <\/section>\n    <\/div>\n  <\/main>\n  <script>\n    (function () {\n      var input = document.querySelector('.search-box input');\n      var searchButton = document.querySelector('.search-box button');\n      var cards = Array.prototype.slice.call(document.querySelectorAll('.product-card'));\n      var empty = document.getElementById('emptyState');\n      var filterButtons = Array.prototype.slice.call(document.querySelectorAll('[data-filter]'));\n\n      function setActive(button) {\n        filterButtons.forEach(function (item) { item.classList.remove('active'); });\n        if (button) button.classList.add('active');\n      }\n\n      function applyFilter(term, activeButton) {\n        var query = (term || '').trim().toLowerCase();\n        var shown = 0;\n        cards.forEach(function (card) {\n          var haystack = (card.getAttribute('data-search') + ' ' + card.textContent).toLowerCase();\n          var isMatch = !query || query === 'all' || haystack.indexOf(query) !== -1;\n          card.style.display = isMatch ? '' : 'none';\n          if (isMatch) shown += 1;\n        });\n        if (empty) empty.classList.toggle('is-visible', shown === 0);\n        if (activeButton) setActive(activeButton);\n      }\n\n      filterButtons.forEach(function (button) {\n        button.addEventListener('click', function () {\n          var filter = button.getAttribute('data-filter') || 'all';\n          if (input) input.value = filter === 'all' ? '' : filter;\n          applyFilter(filter, button);\n        });\n      });\n\n      if (searchButton) {\n        searchButton.addEventListener('click', function () {\n          applyFilter(input ? input.value : '', null);\n        });\n      }\n      if (input) {\n        input.addEventListener('keydown', function (event) {\n          if (event.key === 'Enter') applyFilter(input.value, null);\n        });\n        input.addEventListener('input', function () {\n          applyFilter(input.value, null);\n        });\n      }\n    })();\n  <\/script>\n\n  <script>\n    (function () {\n      var forms = document.querySelectorAll('.or-nav-search');\n      forms.forEach(function (form) {\n        form.addEventListener('submit', function (event) {\n          event.preventDefault();\n          var input = form.querySelector('input');\n          var query = input ? input.value.trim() : '';\n          var target = '\/';\n          window.location.href = query ? target + '?s=' + encodeURIComponent(query) : target;\n        });\n      });\n    })();\n  <\/script><\/div>\n\n\n\n<style id=\"openryd-mobile-nav-fix-20260517\">\n@media (max-width: 760px) {\n  body.page-id-203 .topbar,\n  body.page-id-26 .topbar { height:auto!important; min-height:42px!important; overflow:hidden!important; }\n  body.page-id-203 .topbar-inner,\n  body.page-id-26 .topbar-inner { width:100%!important; height:auto!important; display:grid!important; grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important; column-gap:12px!important; align-items:center!important; padding:6px 20px!important; }\n  body.page-id-203 .topbar-inner div,\n  body.page-id-26 .topbar-inner div { margin:0!important; font-size:11px!important; line-height:1.25!important; white-space:normal!important; overflow:hidden!important; }\n  body.page-id-203 header.nav,\n  body.page-id-26 header.nav { height:auto!important; min-height:0!important; position:relative!important; top:auto!important; }\n  body.admin-bar.page-id-203 header.nav,\n  body.admin-bar.page-id-26 header.nav { top:auto!important; }\n  body.page-id-203 .nav-inner,\n  body.page-id-26 .nav-inner { width:100%!important; height:auto!important; min-height:0!important; display:flex!important; flex-wrap:wrap!important; gap:0!important; align-items:center!important; padding:12px 20px 14px!important; overflow:hidden!important; }\n  body.page-id-203 .brand,\n  body.page-id-26 .brand { width:100%!important; margin:0 0 12px!important; }\n  body.page-id-203 .brand img,\n  body.page-id-26 .brand img { width:150px!important; max-width:150px!important; height:auto!important; }\n  body.page-id-203 .or-nav-tools,\n  body.page-id-26 .or-nav-tools { order:2!important; width:100%!important; display:block!important; margin:0 0 12px!important; flex:0 0 100%!important; }\n  body.page-id-203 .or-nav-search,\n  body.page-id-26 .or-nav-search { width:100%!important; max-width:100%!important; display:flex!important; box-sizing:border-box!important; overflow:hidden!important; }\n  body.page-id-203 .or-nav-search input,\n  body.page-id-26 .or-nav-search input { flex:1 1 auto!important; width:auto!important; min-width:0!important; }\n  body.page-id-203 .or-nav-search button,\n  body.page-id-26 .or-nav-search button { flex:0 0 78px!important; width:78px!important; min-width:78px!important; position:static!important; padding:0!important; }\n  body.page-id-203 .menu,\n  body.page-id-26 .menu { order:3!important; width:100%!important; display:flex!important; flex-wrap:wrap!important; gap:0 14px!important; padding:0!important; margin:0!important; background:#fff!important; white-space:normal!important; overflow:visible!important; }\n  body.page-id-203 .menu > a,\n  body.page-id-203 .menu .or-nav-link,\n  body.page-id-26 .menu > a,\n  body.page-id-26 .menu .or-nav-link { height:auto!important; line-height:1.2!important; padding:8px 0!important; color:#263a34!important; opacity:1!important; font-size:14px!important; white-space:normal!important; }\n  body.page-id-203 .mega-menu,\n  body.page-id-26 .mega-menu { display:none!important; }\n  body.page-id-203 .insights-hero { padding-top:0!important; }\n  body.page-id-203 .insights-wrap { width:calc(100% - 40px)!important; max-width:350px!important; }\n  body.page-id-203 .insights-hero-content { max-width:100%!important; }\n  body.page-id-203 .insights-hero h1 { max-width:100%!important; font-size:30px!important; line-height:1.08!important; overflow-wrap:break-word!important; }\n  body.page-id-203 .insights-hero p { max-width:100%!important; font-size:14px!important; line-height:1.55!important; overflow-wrap:break-word!important; }\n}\n<\/style>","protected":false},"excerpt":{"rendered":"<p>Global B2B supply for e-bike a&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-26","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/openryd.com\/index.php\/wp-json\/wp\/v2\/pages\/26","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/openryd.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/openryd.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/openryd.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/openryd.com\/index.php\/wp-json\/wp\/v2\/comments?post=26"}],"version-history":[{"count":39,"href":"https:\/\/openryd.com\/index.php\/wp-json\/wp\/v2\/pages\/26\/revisions"}],"predecessor-version":[{"id":308,"href":"https:\/\/openryd.com\/index.php\/wp-json\/wp\/v2\/pages\/26\/revisions\/308"}],"wp:attachment":[{"href":"https:\/\/openryd.com\/index.php\/wp-json\/wp\/v2\/media?parent=26"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}