{"title":"Lane Splitter","description":null,"products":[{"product_id":"511-lane-splitter-swallowtail","title":"5'11 Lane Splitter Swallowtail","description":"\u003cp\u003e5'11 × 20 x 2 5\/8 - 32.2L | Opaque Sage Tint Deck | 2 x FCS2\u003c\/p\u003e","brand":"Christenson Surfboards","offers":[{"title":"Default Title","offer_id":45476094246959,"sku":"SQ3813141","price":1423.4,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0770\/9596\/0623\/files\/IMG_7601.webp?v=1781465960"},{"product_id":"lane-splitter-squash-1","title":"Lane Splitter Swallow","description":"\u003cdiv id=\"ff-configurator-wrapper\" style=\"width:100vw;position:relative;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw;max-width:100vw;overflow:visible;\"\u003e\n  \u003ciframe id=\"ff-configurator\" style=\"width:100%;height:900px;min-height:600px;border:none;border-radius:0;display:block;overflow:hidden;\" frameborder=\"0\" scrolling=\"no\" title=\"Board Configurator\"\u003e\u003c\/iframe\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var CONFIGURATOR_URL = \"https:\/\/sales.shapersportal.app\/configurator?shape_id=6a2228ae7ca211e884b3ed8a\u0026v=1785013831042\u0026app_id=6a026ac871b32618c4472776\";\n  var DRAFT_ORDER_URL = \"https:\/\/sales.shapersportal.app\/functions\/createDraftOrder\";\n  var SHAPE_ID = \"6a2228ae7ca211e884b3ed8a\";\n  var submitting = false;\n\n  \/\/ Un-clip only ancestors that actually CLIP the iframe (overflow hidden\/clip\n  \/\/ or a max-height). NEVER touch scrollable containers (overflow auto\/scroll)\n  \/\/ — some themes (e.g. Horizon) scroll the page through an inner wrapper, and\n  \/\/ forcing it to overflow:visible kills page scrolling entirely.\n  function clearClipping(f){\n    var p = f.parentElement;\n    while (p \u0026\u0026 p !== document.body){\n      var cs = window.getComputedStyle(p);\n      var oy = cs.overflowY;\n      if (oy === 'hidden' || oy === 'clip'){\n        p.style.overflow = 'visible';\n        p.style.maxHeight = 'none';\n        p.style.height = 'auto';\n      } else if (cs.maxHeight !== 'none'){\n        p.style.maxHeight = 'none';\n      }\n      p = p.parentElement;\n    }\n  }\n\n  \/\/ Resolve the buyer's SELECTED country from Shopify's storefront (the\n  \/\/ currency\/country dropdown), so the configurator prices for the country the\n  \/\/ buyer picked rather than their geo-IP. Shopify exposes the active country\n  \/\/ on window.Shopify.country (ISO-2). Fall back to nothing → the configurator\n  \/\/ uses geo-IP. Append it as a ?country= param on the iframe src.\n  function buyerCountry(){\n    try { if (window.Shopify \u0026\u0026 window.Shopify.country) return String(window.Shopify.country).toUpperCase(); } catch(e){}\n    return '';\n  }\n  (function(){\n    var f = document.getElementById('ff-configurator');\n    if (f){\n      var c = buyerCountry();\n      f.src = CONFIGURATOR_URL + (c ? '\u0026country=' + encodeURIComponent(c) : '');\n    }\n  })();\n\n  window.addEventListener('message', function(event){\n    var data = event.data || {};\n    if (data.type === 'ff_add_to_cart'){\n      if (submitting) return;\n      submitting = true;\n      fetch(DRAFT_ORDER_URL, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application\/json', 'Accept': 'application\/json' },\n        body: JSON.stringify({\n          shape_id: SHAPE_ID,\n          config: data.config || {},\n          deposit_price: data.price,\n          total_price: data.totalPrice,\n          currency: data.currency,\n          country_code: data.country_code,\n          fin_variant_id: data.fin_variant_id,\n          fin_variant_price: data.fin_variant_price\n        })\n      }).then(function(r){\n        return r.json().then(function(body){ return { ok: r.ok, body: body }; });\n      }).then(function(res){\n        submitting = false;\n        if (!res.ok || !res.body || !res.body.invoice_url){\n          throw new Error((res.body \u0026\u0026 res.body.error) || 'Could not start checkout');\n        }\n        window.top.location.href = res.body.invoice_url;\n      }).catch(function(err){\n        submitting = false;\n        alert(err.message || 'Could not start checkout. Please try again.');\n      });\n    }\n    if (data.type === 'ff_resize'){\n      var f = document.getElementById('ff-configurator');\n      if (f \u0026\u0026 data.height){\n        f.style.height = data.height + 'px';\n        f.style.minHeight = data.height + 'px';\n        clearClipping(f);\n      }\n    }\n  });\n\n  \/\/ Clear any inherited clipping on the wrapper chain immediately on load, so a\n  \/\/ theme that ships its description area as overflow-hidden doesn't trap the\n  \/\/ iframe before the first resize message lands.\n  (function(){\n    var f = document.getElementById('ff-configurator');\n    if (f) clearClipping(f);\n  })();\n})();\n\u003c\/script\u003e","brand":"Christenson Surfboards","offers":[{"title":"Default Title","offer_id":45523690389551,"sku":null,"price":0.0,"currency_code":"USD","in_stock":true}]},{"product_id":"lane-splitter-squash","title":"Lane Splitter Squash","description":"\u003cdiv id=\"ff-configurator-wrapper\" style=\"width:100vw;position:relative;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw;max-width:100vw;overflow:visible;\"\u003e\n  \u003ciframe id=\"ff-configurator\" style=\"width:100%;height:900px;min-height:600px;border:none;border-radius:0;display:block;overflow:hidden;\" frameborder=\"0\" scrolling=\"no\" title=\"Board Configurator\"\u003e\u003c\/iframe\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var CONFIGURATOR_URL = \"https:\/\/sales.shapersportal.app\/configurator?shape_id=6a3ef8f8ab78144debdfe83d\u0026v=1785013831059\u0026app_id=6a026ac871b32618c4472776\";\n  var DRAFT_ORDER_URL = \"https:\/\/sales.shapersportal.app\/functions\/createDraftOrder\";\n  var SHAPE_ID = \"6a3ef8f8ab78144debdfe83d\";\n  var submitting = false;\n\n  \/\/ Un-clip only ancestors that actually CLIP the iframe (overflow hidden\/clip\n  \/\/ or a max-height). NEVER touch scrollable containers (overflow auto\/scroll)\n  \/\/ — some themes (e.g. Horizon) scroll the page through an inner wrapper, and\n  \/\/ forcing it to overflow:visible kills page scrolling entirely.\n  function clearClipping(f){\n    var p = f.parentElement;\n    while (p \u0026\u0026 p !== document.body){\n      var cs = window.getComputedStyle(p);\n      var oy = cs.overflowY;\n      if (oy === 'hidden' || oy === 'clip'){\n        p.style.overflow = 'visible';\n        p.style.maxHeight = 'none';\n        p.style.height = 'auto';\n      } else if (cs.maxHeight !== 'none'){\n        p.style.maxHeight = 'none';\n      }\n      p = p.parentElement;\n    }\n  }\n\n  \/\/ Resolve the buyer's SELECTED country from Shopify's storefront (the\n  \/\/ currency\/country dropdown), so the configurator prices for the country the\n  \/\/ buyer picked rather than their geo-IP. Shopify exposes the active country\n  \/\/ on window.Shopify.country (ISO-2). Fall back to nothing → the configurator\n  \/\/ uses geo-IP. Append it as a ?country= param on the iframe src.\n  function buyerCountry(){\n    try { if (window.Shopify \u0026\u0026 window.Shopify.country) return String(window.Shopify.country).toUpperCase(); } catch(e){}\n    return '';\n  }\n  (function(){\n    var f = document.getElementById('ff-configurator');\n    if (f){\n      var c = buyerCountry();\n      f.src = CONFIGURATOR_URL + (c ? '\u0026country=' + encodeURIComponent(c) : '');\n    }\n  })();\n\n  window.addEventListener('message', function(event){\n    var data = event.data || {};\n    if (data.type === 'ff_add_to_cart'){\n      if (submitting) return;\n      submitting = true;\n      fetch(DRAFT_ORDER_URL, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application\/json', 'Accept': 'application\/json' },\n        body: JSON.stringify({\n          shape_id: SHAPE_ID,\n          config: data.config || {},\n          deposit_price: data.price,\n          total_price: data.totalPrice,\n          currency: data.currency,\n          country_code: data.country_code,\n          fin_variant_id: data.fin_variant_id,\n          fin_variant_price: data.fin_variant_price\n        })\n      }).then(function(r){\n        return r.json().then(function(body){ return { ok: r.ok, body: body }; });\n      }).then(function(res){\n        submitting = false;\n        if (!res.ok || !res.body || !res.body.invoice_url){\n          throw new Error((res.body \u0026\u0026 res.body.error) || 'Could not start checkout');\n        }\n        window.top.location.href = res.body.invoice_url;\n      }).catch(function(err){\n        submitting = false;\n        alert(err.message || 'Could not start checkout. Please try again.');\n      });\n    }\n    if (data.type === 'ff_resize'){\n      var f = document.getElementById('ff-configurator');\n      if (f \u0026\u0026 data.height){\n        f.style.height = data.height + 'px';\n        f.style.minHeight = data.height + 'px';\n        clearClipping(f);\n      }\n    }\n  });\n\n  \/\/ Clear any inherited clipping on the wrapper chain immediately on load, so a\n  \/\/ theme that ships its description area as overflow-hidden doesn't trap the\n  \/\/ iframe before the first resize message lands.\n  (function(){\n    var f = document.getElementById('ff-configurator');\n    if (f) clearClipping(f);\n  })();\n})();\n\u003c\/script\u003e","brand":"Christenson Surfboards","offers":[{"title":"Default Title","offer_id":45567705907247,"sku":null,"price":0.0,"currency_code":"USD","in_stock":true}]},{"product_id":"58-lane-splitter-swallow-xtr","title":"5'8 Lane Splitter Swallow XTR","description":"\u003cp\u003e5'8 × 19 3\/4 × 2 9\/16 | 30.5L | 2x Futures\u003c\/p\u003e\u003cp\u003eCarbon Lite Construction\u003c\/p\u003e\u003cp\u003e\u003cstrong\u003eAll sales are final.\u003c\/strong\u003e\u003c\/p\u003e\u003cp\u003eIf you require us to ship the board to you we will need to calculate the freight after purchase of the board. This will need to be paid for before the board leaves us here. Thanks!\u003c\/p\u003e","brand":"Christenson Surfboards","offers":[{"title":"Default Title","offer_id":45638169722927,"sku":"SQ3701774","price":1200.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0770\/9596\/0623\/files\/IMG_0049.webp?v=1784423251"},{"product_id":"6-lane-splitter-xtr","title":"6' Lane Splitter XTR","description":"\u003cp\u003e5'6 × 20 1\/4 x 2 3\/4 | 30.82L | 2x Futures\u003c\/p\u003e\u003cp\u003eXTR Carbon Lite Construction\u003c\/p\u003e\u003cp\u003e\u003cstrong\u003eAll sales are final.\u003c\/strong\u003e\u003c\/p\u003e\u003cp\u003eIf you require us to ship the board to you we will need to calculate the freight after purchase of the board. This will need to be paid for before the board leaves us here. Thanks!\u003c\/p\u003e","brand":"Christenson Surfboards","offers":[{"title":"Default Title","offer_id":45638169919535,"sku":"SQ0872692","price":1213.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0770\/9596\/0623\/files\/IMG_0059.jpg?v=1784423256"},{"product_id":"510-lane-splitter-swallow-xtr","title":"5'10 Lane Splitter Swallow XTR","description":"\u003cp\u003e5'10 × 20 × 2 11\/16 | 33.5L | 2x Futures\u003c\/p\u003e\u003cp\u003eCarbon Lite Construction\u003c\/p\u003e\u003cp\u003e\u003cstrong\u003eAll sales are final.\u003c\/strong\u003e\u003c\/p\u003e\u003cp\u003eIf you require us to ship the board to you we will need to calculate the freight after purchase of the board. This will need to be paid for before the board leaves us here. Thanks!\u003c\/p\u003e","brand":"Christenson Surfboards","offers":[{"title":"Default Title","offer_id":45638171394095,"sku":"SQ0022598","price":1200.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0770\/9596\/0623\/files\/IMG_0049_4ec0857d-e02e-4cd3-91a6-4c65a356a691.webp?v=1784423313"}],"url":"https:\/\/christensonsurfboards.com\/collections\/lane-splitter.oembed","provider":"Christenson Surfboards","version":"1.0","type":"link"}