{"product_id":"osprey-escapist-frame-bag","title":"Osprey Escapist Frame Bag","description":"\u003cmeta charset=\"UTF-8\"\u003e\n\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n\u003cstyle\u003e\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Barlow+Condensed:wght@400;600;700;800\u0026family=Barlow:wght@300;400;500\u0026display=swap');\n:root {\n  --black: #0a0a0a;\n  --white: #ffffff;\n  --mid: #f5f5f5;\n  --border: #e0e0e0;\n  --text-muted: #777;\n  --text-body: #222;\n}\nhtml[data-theme=\"dark\"] .spur-wrap {\n  background: #0a0a0a;\n  color: #fff;\n}\nhtml[data-theme=\"dark\"] .spur-header {\n  border-bottom-color: #333;\n}\nhtml[data-theme=\"dark\"] .spur-title {\n  color: #fff;\n}\nhtml[data-theme=\"dark\"] .spur-meta {\n  color: #888;\n}\nhtml[data-theme=\"dark\"] .spur-tab {\n  background: #222;\n  color: #888;\n  border-color: #333;\n}\nhtml[data-theme=\"dark\"] .spur-tab:hover {\n  color: #fff;\n  border-color: #555;\n}\nhtml[data-theme=\"dark\"] .spur-tab.active {\n  background: #fff;\n  color: #0a0a0a;\n  border-color: #fff;\n}\nhtml[data-theme=\"dark\"] .spec-category {\n  color: #fff;\n  border-bottom-color: #fff;\n}\nhtml[data-theme=\"dark\"] .spec-row {\n  border-bottom-color: #333;\n}\nhtml[data-theme=\"dark\"] .spec-row:hover {\n  background: #1a1a1a;\n}\nhtml[data-theme=\"dark\"] .spec-key {\n  color: #888;\n}\nhtml[data-theme=\"dark\"] .spec-val {\n  color: #ccc;\n}\nhtml[data-theme=\"dark\"] .desc-text {\n  color: #ccc;\n}\nhtml[data-theme=\"dark\"] .key-section {\n  border-bottom-color: #333;\n}\nhtml[data-theme=\"dark\"] .key-title {\n  color: #fff;\n}\nhtml[data-theme=\"dark\"] .key-desc {\n  color: #aaa;\n}\nhtml[data-theme=\"dark\"] .carry-section {\n  border-bottom-color: #333;\n}\nhtml[data-theme=\"dark\"] .carry-title {\n  color: #fff;\n}\nhtml[data-theme=\"dark\"] .carry-desc {\n  color: #aaa;\n}\n* {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n.spur-wrap {\n  font-family: 'Barlow', sans-serif;\n  background: var(--white);\n  color: var(--black);\n  max-width: 1100px;\n  margin: 0 auto;\n  padding: 48px 24px;\n}\n.spur-header {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n  margin-bottom: 48px;\n  border-bottom: 1px solid var(--border);\n  padding-bottom: 24px;\n  flex-wrap: wrap;\n  gap: 12px;\n}\n.spur-title {\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: clamp(28px, 5vw, 48px);\n  font-weight: 800;\n  letter-spacing: -0.02em;\n  line-height: 1;\n  text-transform: uppercase;\n}\n.spur-meta {\n  font-size: 12px;\n  font-weight: 500;\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n  color: var(--text-muted);\n}\n.spur-tabs {\n  display: flex;\n  gap: 4px;\n  margin-bottom: 32px;\n}\n.spur-tab {\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: 14px;\n  font-weight: 700;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  padding: 10px 24px;\n  background: var(--mid);\n  color: var(--text-muted);\n  border: 1px solid var(--border);\n  cursor: pointer;\n  transition: all 0.15s;\n  border-radius: 2px;\n}\n.spur-tab:hover {\n  color: var(--black);\n  border-color: #aaa;\n}\n.spur-tab.active {\n  background: var(--black);\n  color: var(--white);\n  border-color: var(--black);\n}\n.spur-panel {\n  display: none;\n}\n.spur-panel.active {\n  display: block;\n}\n.spec-category {\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: 11px;\n  font-weight: 700;\n  letter-spacing: 0.2em;\n  text-transform: uppercase;\n  color: var(--black);\n  padding: 20px 0 8px;\n  border-bottom: 2px solid var(--black);\n  margin-bottom: 0;\n}\n.spec-row {\n  display: grid;\n  grid-template-columns: 200px 1fr;\n  border-bottom: 1px solid var(--border);\n  transition: background: 0.1s;\n}\n.spec-row:hover {\n  background: var(--mid);\n}\n.spec-key {\n  font-size: 12px;\n  font-weight: 500;\n  letter-spacing: 0.05em;\n  text-transform: uppercase;\n  color: var(--text-muted);\n  padding: 12px 16px 12px 0;\n  align-self: start;\n}\n.spec-val {\n  font-size: 14px;\n  font-weight: 300;\n  color: var(--text-body);\n  padding: 12px 0;\n  line-height: 1.5;\n}\n.desc-text {\n  font-size: 14px;\n  font-weight: 300;\n  color: var(--text-body);\n  line-height: 1.7;\n  padding: 16px 0;\n  max-width: 780px;\n}\n.key-section {\n  padding: 12px 0;\n  border-bottom: 1px solid var(--border);\n}\n.key-section:last-child {\n  border-bottom: none;\n}\n.key-title {\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: 15px;\n  font-weight: 700;\n  letter-spacing: 0.05em;\n  text-transform: uppercase;\n  color: var(--black);\n  margin-bottom: 6px;\n}\n.key-desc {\n  font-size: 14px;\n  font-weight: 300;\n  color: var(--text-body);\n  line-height: 1.5;\n}\n.carry-section {\n  padding: 12px 0;\n  border-bottom: 1px solid var(--border);\n}\n.carry-section:last-child {\n  border-bottom: none;\n}\n.carry-title {\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: 15px;\n  font-weight: 700;\n  letter-spacing: 0.05em;\n  text-transform: uppercase;\n  color: var(--black);\n  margin-bottom: 6px;\n}\n.carry-desc {\n  font-size: 14px;\n  font-weight: 300;\n  color: var(--text-body);\n  line-height: 1.5;\n}\n@media (max-width: 600px) {\n  .spec-row {\n    grid-template-columns: 1fr;\n  }\n  .spec-key {\n    padding-bottom: 2px;\n  }\n  .spec-val {\n    padding-top: 0;\n    padding-bottom: 12px;\n  }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"spur-wrap\"\u003e\n\u003cdiv class=\"spur-header\"\u003e\n\u003cdiv class=\"spur-title\"\u003eEscapist Frame Bag\u003c\/div\u003e\n\u003cdiv class=\"spur-meta\"\u003eModular bikepacking frame bag with waterproof zippers\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"spur-tabs\"\u003e\n\u003cbutton class=\"spur-tab active\" onclick=\"showPanel('description', this)\"\u003eDescription\u003c\/button\u003e\n\u003cbutton class=\"spur-tab\" onclick=\"showPanel('features', this)\"\u003eFeatures\u003c\/button\u003e\n\u003cbutton class=\"spur-tab\" onclick=\"showPanel('specs', this)\"\u003eSpecs\u003c\/button\u003e\n\u003cbutton class=\"spur-tab\" onclick=\"showPanel('care', this)\"\u003eCare\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"panel-description\" class=\"spur-panel active\"\u003e\n\u003cdiv class=\"desc-text\"\u003eThe Escapist Family allows you to build a comprehensive bikepacking kit to fit you, your bike and how you ride just right. The Escapist Frame Bag features right-side double-ended zippers for easy front or back access while riding and three sizes (Small, Medium, Large) to accommodate a range of frame sizes and shapes.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"panel-features\" class=\"spur-panel\"\u003e\n\u003cdiv class=\"key-section\"\u003e\n\u003cdiv class=\"key-title\"\u003eCurated Bikepacking System\u003c\/div\u003e\n\u003cdiv class=\"key-desc\"\u003eThoughtfully designed as a modular bikepacking system, Escapist Frame Bags accommodate any rider, any adventure. Mix and match different combinations to fit your needs, from short gravel grinds to multi-day epics.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"key-section\"\u003e\n\u003cdiv class=\"key-title\"\u003eMulti-Frame Compatibility\u003c\/div\u003e\n\u003cdiv class=\"key-desc\"\u003eEscapist Frame Bags are designed to fit the widest array of bike frames and sizes possible, with various size options to choose from depending on your bike.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"key-section\"\u003e\n\u003cdiv class=\"key-title\"\u003eHighly Water Resistant Protection\u003c\/div\u003e\n\u003cdiv class=\"key-desc\"\u003eKeeping your gear dry in variable conditions, the Escapist On-Bike bags are highly water resistant with rugged, water-shedding main fabrics, RF welded seams and waterproof zippers.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"key-section\"\u003e\n\u003cdiv class=\"key-title\"\u003eRider-Focused Design\u003c\/div\u003e\n\u003cdiv class=\"key-desc\"\u003eKeep life convenient in the saddle: reflective hits for visibility, double-ended and glove-friendly zips for easy access, multi-position, soft hook-and-loop attachments help look after your bike and external lashing loops for additional functionality.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"panel-specs\" class=\"spur-panel\"\u003e\n\u003cdiv class=\"spec-row\"\u003e\n\u003cdiv class=\"spec-key\"\u003eMAIN\u003c\/div\u003e\n\u003cdiv class=\"spec-val\"\u003e100% recycled 210D nylon, DWR treatment made without PFAS\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"panel-care\" class=\"spur-panel\"\u003e\n\u003cdiv class=\"spec-row\"\u003e\n\u003cdiv class=\"spec-key\"\u003eProduct Care\u003c\/div\u003e\n\u003cdiv class=\"spec-val\"\u003eHand wash with mild soap. Do not machine wash. Do not bleach. Do not iron. Do not dry clean. Hang dry. Wipe clean with a damp cloth for everyday care.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\nfunction showPanel(id, btn) {\n  document.querySelectorAll('.spur-panel').forEach(p =\u003e p.classList.remove('active'));\n  document.querySelectorAll('.spur-tab').forEach(t =\u003e t.classList.remove('active'));\n  document.getElementById('panel-' + id).classList.add('active');\n  btn.classList.add('active');\n}\n\u003c\/script\u003e","brand":"Osprey","offers":[{"title":"Black \/ S","offer_id":51866421166400,"sku":"10005855","price":62.9,"currency_code":"USD","in_stock":true},{"title":"Black \/ M","offer_id":51866421133632,"sku":"10005932","price":66.6,"currency_code":"USD","in_stock":true},{"title":"Black \/ L","offer_id":51866421100864,"sku":"10005854","price":70.3,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0446\/7487\/5549\/files\/10005854_19867514-a0bd-4fa6-b8c3-cb491cb7280e.jpg?v=1776804735","url":"https:\/\/spokex.com\/products\/osprey-escapist-frame-bag","provider":"SX Collective","version":"1.0","type":"link"}