Step 1 of 3: Your details
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="data:,"><title>OPENROAD Dream Setup</title><style>:root{--red:#f3261d;--paper:#f8f5ee;--muted:#b9aeac;--line:#482022;--surface:#111113}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 70% 48%,#220000 0,transparent 62%),#080707;color:var(--paper);font-family:Arial,Helvetica,sans-serif}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ff7d75;outline-offset:4px}[hidden]{display:none!important}.campaign-shell{max-width:1180px;margin:auto}.campaign-banner{position:relative;container-type:inline-size;margin:auto;max-width:1100px;background:#050505}.campaign-banner>img{display:block;width:100%;height:auto}.banner-revised-copy{position:absolute;left:4.25%;top:57.35%;width:33.2%;height:8.6%;background:#000;display:flex;flex-direction:column;justify-content:center;color:#eee;font-size:1.42cqw;line-height:1.12;letter-spacing:-.01em}.banner-revised-copy span{display:block;white-space:nowrap}.join-section{display:grid;grid-template-columns:1fr 1.12fr;gap:70px;padding:80px 0 94px}.eyebrow{font-size:12px;color:var(--red);font-weight:900;letter-spacing:2px}.join-copy h1{font-size:clamp(42px,4.9vw,70px);line-height:.98;letter-spacing:-2px;margin:16px 0 25px;font-weight:950}.join-copy>p{font-size:17px;line-height:1.65;color:#d2c9c5;margin:0 0 34px;max-width:490px}.rules-table{margin:0;border:1px solid var(--line);background:#0c0c0d}.rules-table div{display:grid;grid-template-columns:96px 1fr;gap:16px;padding:20px 17px;border-bottom:1px solid var(--line)}.rules-table div:last-child{border:0}.rules-table dt{font-size:10px;color:#ff4b42;letter-spacing:1px;font-weight:900}.rules-table dd{margin:0;color:#e0d9d6;font-size:13px;line-height:1.6}.join-form{background:var(--surface);border:1px solid #4b2425;padding:39px;align-self:start}.join-form h2{font-size:31px;letter-spacing:-1px;margin:0 0 12px}.join-form>p{color:var(--muted);font-size:14px;line-height:1.7;margin:0 0 30px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px 14px}.form-field label{display:block;font-size:10px;font-weight:900;letter-spacing:1px;margin-bottom:10px}.form-field input,.form-field select{display:block;width:100%;height:50px;border:1px solid #af8f8f;padding:0 13px;background:#fcfbf9;color:#222;border-radius:0;min-width:0}.consent{display:flex;align-items:flex-start;gap:10px;margin:30px 0 22px;font-size:11px;color:#c2b7b7;line-height:1.6}.consent input{margin:3px 0 0;accent-color:var(--red)}.primary-button{display:block;width:100%;padding:19px 16px;border:0;color:#fff;background:linear-gradient(115deg,#ff2d22,#c20000);font-size:12px;letter-spacing:1px;font-weight:900;text-align:center;text-decoration:none;cursor:pointer}.primary-button:hover{filter:brightness(1.12)}.join-form .prototype-note{font-size:10px;color:#958b8c;margin-top:40px;line-height:1.6}.campaign-footer{border-top:1px solid var(--line);padding:26px max(24px,calc((100% - 1180px)/2));font-size:10px;color:#8f8585;line-height:1.6}.form-message{color:#ffb7ad;font-size:12px;line-height:1.5}.back-link{float:right;font-size:11px;color:#bcaead;text-decoration:none;padding:6px 0}.build-page{padding-top:22px}.build-page .builder{align-items:start}.build-page .catalog{max-height:610px}.build-page .asset-note{border-top:1px solid #382325;margin-top:8px}.build-page .stage-note{font-size:10px}.build-page .stage-panel{position:relative}.build-page .step-title{padding-right:5px}.share-page{max-width:1180px;margin:auto;padding:32px 24px 70px}.journey-top{display:flex;justify-content:space-between;align-items:center;color:#b4a6a5;font-size:11px;margin-bottom:34px}.wordmark{font-weight:950;font-size:20px;letter-spacing:2px;color:#fff}.wordmark span{color:var(--red)}.share-layout{display:grid;grid-template-columns:1.3fr .8fr;gap:36px;align-items:start}.share-copy h1{font-size:44px;line-height:1.05;letter-spacing:-1px;margin:14px 0 20px}.share-copy p{color:var(--muted);font-size:14px;line-height:1.7}.share-form{margin-top:30px}.share-form input{background:#171113;border:1px solid #6a3434;color:#fff;padding:15px;width:100%;margin:10px 0 14px;min-width:0}.share-form label{font-size:11px;letter-spacing:1px;font-weight:800}.share-card{overflow:hidden;border:1px solid #713132;background:radial-gradient(ellipse at 90% 0,#690d0d,transparent 60%),#111;box-shadow:0 24px 60px #0006}.share-card-top{display:flex;justify-content:space-between;align-items:center;padding:22px 24px;border-bottom:1px solid #5b2424;font-weight:900;font-size:12px}.share-card-top span:last-child{color:#ff4a3e}.share-card h2{font-size:32px;line-height:1.05;margin:24px 24px 8px;overflow-wrap:anywhere}.share-vehicle{color:#c9bcb8;font-size:12px;padding:0 24px;line-height:1.6}.share-preview{display:block;width:100%;height:320px;object-fit:contain;background:radial-gradient(ellipse,#c8c2c1,#5b5354);margin-top:18px}.share-preview-placeholder{height:240px;background:var(--openroad-campaign-image) center 20%/cover}.share-products{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:20px 24px}.share-product{display:flex;align-items:center;gap:10px;min-width:0}.share-product img{width:48px;height:48px;object-fit:contain;background:#fff;border-radius:4px}.share-product strong{display:block;font-size:10px;line-height:1.4}.share-product small{display:block;color:#ff867b;font-size:10px;margin-top:4px}.share-total{display:flex;justify-content:space-between;padding:20px 24px;border-top:1px solid #5b2424;gap:10px;font-size:13px}.share-total b{color:#ff4a3e;font-size:23px}.share-tagline{padding:0 24px 22px;font-size:10px;color:#b1a3a1}.share-actions{display:grid;gap:12px;margin-top:20px}.secondary-button{display:block;width:100%;padding:15px;border:1px solid #633334;background:#1a1011;color:#fff;text-align:center;text-decoration:none;font-size:12px;font-weight:800;cursor:pointer}.empty-state{padding:60px 20px;border:1px solid #5b2424;text-align:center;max-width:650px;margin:60px auto}.empty-state p{color:var(--muted);line-height:1.7}.empty-state .primary-button{max-width:300px;margin:25px auto 0}.challenge{padding:20px;border:1px solid #5b2424;background:#160d0e;margin-top:28px}.challenge strong{font-size:15px}.challenge p{margin:9px 0 0;font-size:12px}.no-save{display:none}.join-copy h1{font-size:clamp(42px,4.35vw,63px);letter-spacing:-1.6px}.join-form>p{max-width:440px}.banner-revised-copy{height:8.6%;font-size:1.42cqw}.build-page .cap-tuner{display:block}.build-page .cap-tuner[hidden]{display:none}.calibration-toolbar{margin-top:14px;padding:14px;border:1px solid #654044;border-radius:10px;background:#160e10}.calibration-toolbar>strong{font-size:13px}.calibration-toolbar>p{font-size:11px;line-height:1.6;color:#c3b2b2;margin:8px 0}.calibration-toolbar .tuner-actions button{border:1px solid #753033;background:#241112;color:#fff;border-radius:7px;padding:8px 11px;font-size:11px;font-weight:800;cursor:pointer}.calibration-toolbar .tuner-actions .primary{background:#ef241c}.calibration-toolbar button:disabled{opacity:.4;cursor:default}.build-page .cap-tuner-head{display:grid;gap:7px}.build-page .cap-tuner-head span{font-size:11px;line-height:1.5;color:#c6adab}.build-page .tuner-control{grid-template-columns:minmax(60px,1fr) 65px;gap:5px 8px}.build-page .tuner-control output{grid-column:1/-1;text-align:left;font-size:10px;color:#bd9d98}.tune-number{width:100%;background:#1a1113;border:1px solid #733c40;color:#fff;padding:5px;border-radius:4px;font-size:11px}.build-page .tuner-message{line-height:1.6;overflow-wrap:anywhere}.build-page .tuner-actions button{cursor:pointer}.build-page .tuner-grid{gap:12px 16px}.config-mode-switch{display:flex;gap:6px;padding:12px;border-bottom:1px solid #5b2022}.config-mode-switch button{flex:1;padding:11px 8px;background:#281719;border:1px solid #674044;border-radius:7px;font-size:12px;font-weight:900;color:#fff;cursor:pointer}.config-mode-switch button.active{background:#ef241c;border-color:#ef241c}.config[data-mode=tune] #tabs,.config[data-mode=tune] #catalog,.config[data-mode=tune] .summary,.config[data-mode=tune] #configLock{display:none}.calibration-mode{padding:0 12px 12px;max-height:680px;overflow:auto;overscroll-behavior:contain}.calibration-mode .tuner-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.calibration-mode .cap-tuner,.calibration-mode .calibration-toolbar{padding:12px}.calibration-mode .tuner-actions{gap:7px}.calibration-mode .tuner-actions button{font-size:10px}.calibration-mode .cap-tuner-head strong{font-size:13px}@media(min-width:921px){.build-page .stage-panel{position:sticky;top:12px}}@media(max-width:500px){.calibration-mode{max-height:none;overflow:visible}}@media(min-width:1500px){.campaign-banner{max-width:1180px}}@media(max-width:1240px){.campaign-shell{padding:0 30px}.join-section{gap:45px}.join-form{padding:30px}.share-layout{gap:24px}}@media(max-width:800px){.join-section{grid-template-columns:1fr;gap:36px;padding:45px 0 55px}.join-copy h1{font-size:52px}.join-copy>p{max-width:none}.share-layout{grid-template-columns:1fr}.share-copy{grid-row:1}.share-form{margin-top:20px}.share-copy h1{font-size:35px}.share-preview{height:290px}.join-form .prototype-note{margin-top:25px}}@media(max-width:500px){.campaign-shell{padding:0 16px}.campaign-banner{margin:0 -16px}.join-copy h1{font-size:44px;letter-spacing:-1px}.join-copy>p{font-size:15px}.join-form{padding:24px 20px}.join-form h2{font-size:28px}.form-grid{grid-template-columns:1fr;gap:18px}.rules-table div{grid-template-columns:72px 1fr;gap:8px;padding:17px 13px}.rules-table dd{font-size:12px}.consent{margin-top:23px}.share-page{padding:24px 16px 45px}.share-products{padding:18px 16px;grid-template-columns:1fr 1fr}.share-card h2{font-size:27px}.share-card-top{padding:18px 16px}.share-preview{height:245px}.share-total{padding:20px 16px}.journey-top{margin-bottom:25px}.wordmark{font-size:17px}.build-page .back-link{font-size:9px}.build-page .stage-ui .badge{max-width:150px}}.preview-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;align-items:start}.preview-layout.has-cards{grid-template-columns:minmax(0,1fr) clamp(110px,23%,160px)}.preview-layout .stage{min-width:0}.preview-cards{min-width:0;max-height:520px;overflow:auto;overscroll-behavior:contain;border:1px solid #633033;border-radius:10px;padding:8px;background:#170e0f}.preview-cards h3{font-size:10px;letter-spacing:1px;margin:2px 0 8px;color:#e5c6c3}.preview-cards .stage-gear{max-width:none;gap:8px;pointer-events:auto}.preview-cards .gear-card img{height:96px;object-fit:contain}.preview-cards .gear-card figcaption{overflow-wrap:anywhere}.preview-cards .gear-card button{width:25px;height:25px;box-shadow:0 0 0 1px #fff8}.preview-layout.has-cards .stage-ui .badge{max-width:220px}.preview-layout .stage-actions{align-self:start}.preview-layout .stage-ui{flex-wrap:wrap}.preview-layout .stage{transition:none}@media(max-width:600px){.preview-layout.has-cards{grid-template-columns:minmax(0,1fr)}.preview-cards{order:-1;max-height:190px}.preview-cards .stage-gear{display:flex;overflow:auto;justify-content:flex-start;max-width:none}.preview-cards .gear-card{flex:0 0 120px}.preview-cards .gear-card img{height:76px}.preview-cards h3{text-align:right}.preview-layout .stage{min-height:390px}}.preview-cards .stage-gear{width:100%;grid-template-columns:minmax(0,1fr);max-height:none;overflow:visible}.preview-cards .gear-card{min-width:0}.config-mode-switch{flex-wrap:wrap}.config-mode-switch #showAwningTuneMode{border-color:#f15448;color:#ffe1dc;white-space:nowrap}.awning-tune-hint{padding:12px 16px;background:#321417;border-bottom:1px solid #6a3034;color:#ffded8;font-size:12px;line-height:1.6}.calibration-mode[data-focus=awning]{display:flex;flex-direction:column}.calibration-mode[data-focus=awning]>section{flex:0 0 auto}.calibration-mode[data-focus=awning] #calibrationToolbar{order:0}.calibration-mode[data-focus=awning] #awningTuner{order:1}.calibration-mode[data-focus=awning] #capTuner{order:2}.calibration-mode[data-focus=awning] #rttTuner{order:3}.calibration-mode[data-focus=awning] #coverTuner{order:4}.form-wide{grid-column:1/-1}.other-vehicle{margin:0 0 14px}.other-vehicle input{width:100%;padding:12px;background:#0c1217;border:1px solid #633334;border-radius:8px;color:#fff}.other-vehicle label{display:block;font-size:11px;margin-bottom:8px}.other-vehicle p{font-size:12px;color:#b9aeac;line-height:1.5}.builder.other-mode{grid-template-columns:minmax(0,1fr);gap:16px}.other-mode .stage-panel{padding:22px}.other-mode #previewLayout,.other-mode .asset-note,.other-mode .stage-note,.other-mode #vehiclePreviewNote,.other-mode .config-mode-switch,.other-mode #calibrationMode,.other-mode #awningTuneHint{display:none!important}.other-mode #catalog{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;max-height:none;padding:18px}.other-mode .product{display:flex;flex-direction:column;align-items:stretch;gap:12px;padding:14px;min-width:0;cursor:pointer}.other-mode .product img{width:100%;height:170px;object-fit:contain;background:#fff;border-radius:8px}.other-mode .product>div{flex:1}.other-mode .product h3{font-size:16px;line-height:1.35;margin:5px 0 8px}.other-mode .product .add{align-self:flex-end}.other-mode .product.selected{background:#32181b;border-color:#f3261d}.other-mode .other-vehicle{margin-bottom:0}.other-mode .config-head,.other-mode .summary{padding:20px}@media(max-width:1100px){.other-mode #catalog{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px){.other-mode #catalog{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px;gap:10px}.other-mode .product img{height:135px}.other-mode .product h3{font-size:14px}}@media(max-width:380px){.other-mode #catalog{grid-template-columns:1fr}}.other-mode .mode-label{display:none}.product img,.other-mode .product img,.gear-card img,.preview-cards .gear-card img{height:auto;aspect-ratio:1 / 1;object-fit:contain} :root{--openroad-campaign-image:url("https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-campaign-banner.jpg?v=1793017323")}</style><script>window.OPENROAD_SHOPIFY={urls:{"dream-setup-assets/product-models/folding-tonneau-cover.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-folding-tonneau-cover.bin?v=1793023790"],"bytes":44098416,"compressedBytes":11832893,"sha256":"945f58e523d2b43a39e90f369e36fc5c86d1dc9740bdce96676039eb35931395","fallback":"https://cdn.shopify.com/3d/models/44a793088d339123/folding-tonneau-cover.glb"},"dream-setup-assets/web-models/aluminum-truck-cap-universal.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-aluminum-truck-cap-universal.bin?v=1793023772"],"bytes":2249136,"compressedBytes":1022656,"sha256":"6bad6521d505df7c6ac2648377a567d5767f471e492945ca9150657b6fcab7f4","fallback":"https://cdn.shopify.com/3d/models/6e3759683fff0521/aluminum-truck-cap-universal.glb"},"dream-setup-assets/web-models/awning-180.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-awning-180.bin?v=1793023774"],"bytes":4409084,"compressedBytes":1452766,"sha256":"825d9b07f2b615dcdbdf08d7157bd1dfc90e2d68b4184f976f09ae47ac4d1e25","fallback":"https://cdn.shopify.com/3d/models/e75135c63e2a8cd9/awning-180.glb"},"dream-setup-assets/web-models/awning-270-plus.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-awning-270-plus.bin?v=1793023777"],"bytes":8858496,"compressedBytes":2727221,"sha256":"f4573831b1c8631718fcc00a4fc51880436ae251acf6d14cec5de7785db1ea50","fallback":"https://cdn.shopify.com/3d/models/2110f2331c073a5b/awning-270-plus.glb"},"dream-setup-assets/web-models/awning-270-trail-gray-v3.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-awning-270-trail-gray-v3.bin?v=1793023776"],"bytes":6035636,"compressedBytes":2311519,"sha256":"09e14618fa5b37ee93c5ed73da88a9681b6f0ba1f7532e5ccc551929fc9150c9","fallback":"https://cdn.shopify.com/3d/models/77af0bd3249ed80a/awning-270-trail-gray-v3.glb"},"dream-setup-assets/web-models/awning-270.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-awning-270.bin?v=1793023791"],"bytes":39001988,"compressedBytes":12515377,"sha256":"3715f648d659e9684634c2bb676ee01b0a1e062f5dd588b425dfcb90c371eae7","fallback":"https://cdn.shopify.com/3d/models/e5170c03ac8c84ac/awning-270.glb"},"dream-setup-assets/web-models/lt-rtt.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-lt-rtt.bin?v=1793023780"],"bytes":6632520,"compressedBytes":4184758,"sha256":"98d0075aa37c28dea867ec99f427902642be6c5f1abf2e7f1a4347e2830f1483","fallback":"https://cdn.shopify.com/3d/models/0bf3dfc786c2adb8/lt-rtt.glb"},"dream-setup-assets/web-models/retractable-tonneau-cover.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-retractable-tonneau-cover.bin?v=1793023787"],"bytes":25747456,"compressedBytes":8256896,"sha256":"a7718fe86a93daaa014744bd5d3f09e20c6c1f29eabef6c62a8763729fe43f4a","fallback":"https://cdn.shopify.com/3d/models/58a1bbb61a542341/retractable-tonneau-cover.glb"},"dream-setup-assets/web-models/sliding-glass-truck-cap.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-sliding-glass-truck-cap.part1.bin?v=1793023790","https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-sliding-glass-truck-cap.part2.bin?v=1793023788"],"bytes":60582156,"compressedBytes":21908158,"sha256":"abaff91ce0db053a465e02f05be4f1b61c5a6fca64896ca5878e6082398b1685","fallback":{"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-sliding-glass-truck-cap.glb.part1.bin?v=1793014452","https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-sliding-glass-truck-cap.glb.part2.bin?v=1793014452","https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-sliding-glass-truck-cap.glb.part3.bin?v=1793014452","https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-sliding-glass-truck-cap.glb.part4.bin?v=1793014451"],"bytes":60582156,"sha256":"abaff91ce0db053a465e02f05be4f1b61c5a6fca64896ca5878e6082398b1685"}},"dream-setup-assets/web-models/triangle-rtt.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-triangle-rtt.bin?v=1793023790"],"bytes":31775360,"compressedBytes":10988051,"sha256":"00255b34430409087205b89369fab0c1703ddf6355ffce73cefcb5655fcb944c","fallback":"https://cdn.shopify.com/3d/models/11b1c0ea954bf7bc/triangle-rtt.glb"},"dream-setup-assets/web-models/vehicle-colorado-2015-2022-5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-colorado-2015-2022-5ft.bin?v=1793023778"],"bytes":5462092,"compressedBytes":3570371,"sha256":"1d274f613a71f968577af122697d72076dfc7a29e9ff39ccd8750d5c222dceeb","fallback":"https://cdn.shopify.com/3d/models/8e3e60e73aae1384/vehicle-colorado-2015-2022-5ft.glb"},"dream-setup-assets/web-models/vehicle-colorado-2023-2026-5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-colorado-2023-2026-5ft.bin?v=1793023781"],"bytes":8668744,"compressedBytes":5071501,"sha256":"49e98e5a9ed45a5eebebfe6e3f585fe2dbe53c6202e34d7fca9eb34444604520","fallback":"https://cdn.shopify.com/3d/models/4c6e292d3d74cea5/vehicle-colorado-2023-2026-5ft.glb"},"dream-setup-assets/web-models/vehicle-f150-2021-2026-5.7ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-f150-2021-2026-5.7ft.bin?v=1793023788"],"bytes":22753508,"compressedBytes":9036776,"sha256":"18cf12bd66e3db47c6eab3bf4226975a7cc3df2e8f45ebbe2fe653a90f81b04a","fallback":{"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-vehicle-f150-2021-2026-5.7ft.glb.part1.bin?v=1793013714","https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-vehicle-f150-2021-2026-5.7ft.glb.part2.bin?v=1793013711"],"bytes":22753508,"sha256":"18cf12bd66e3db47c6eab3bf4226975a7cc3df2e8f45ebbe2fe653a90f81b04a"}},"dream-setup-assets/web-models/vehicle-frontier-2022-2026-5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-frontier-2022-2026-5ft.bin?v=1793023792"],"bytes":49613920,"compressedBytes":17116118,"sha256":"f609c50ccee8a74bdd0a7d325d7c0189d6515879a79c201e7b189ede54d7e53f","fallback":"https://cdn.shopify.com/3d/models/3395da7fd361428d/vehicle-frontier-2022-2026-5ft.glb"},"dream-setup-assets/web-models/vehicle-gmc-sierra1500-2019-2026-5.8ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-gmc-sierra1500-2019-2026-5.8ft.bin?v=1793023791"],"bytes":35495668,"compressedBytes":12177296,"sha256":"b2b02521fa4851cb90c80a28407379bb3f28d9593df40d16afc91f43545b0384","fallback":"https://cdn.shopify.com/3d/models/1190a56494dee9af/vehicle-gmc-sierra1500-2019-2026-5_8ft.glb"},"dream-setup-assets/web-models/vehicle-jeep-gladiator-2019-2026.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-jeep-gladiator-2019-2026.bin?v=1793023777"],"bytes":5318148,"compressedBytes":2859338,"sha256":"853d1bb2615e008739e62eb5ef478bae701963a4bd02e2ba87b1f70dcd2a6702","fallback":"https://cdn.shopify.com/3d/models/a08145e5b800be89/vehicle-jeep-gladiator-2019-2026.glb"},"dream-setup-assets/web-models/vehicle-ram1500-dt-2019-2026-5.7ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-ram1500-dt-2019-2026-5.7ft.bin?v=1793023776"],"bytes":13032192,"compressedBytes":2876787,"sha256":"592310fa4d014e61c6c3b061a59cae38bea828997e8909d46498acb876e77178","fallback":{"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-vehicle-ram1500-dt-2019-2026-5.7ft.glb.part1.bin?v=1793013714"],"bytes":13032192,"sha256":"592310fa4d014e61c6c3b061a59cae38bea828997e8909d46498acb876e77178"}},"dream-setup-assets/web-models/vehicle-ram2500-3500-2009-2026-6.4ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-ram2500-3500-2009-2026-6.4ft.bin?v=1793023792"],"bytes":51559588,"compressedBytes":16774805,"sha256":"24c07f98d6a53c3c6db8db4521eb571d62ef1d46fdab895bcae3285cfa189e45","fallback":"https://cdn.shopify.com/3d/models/fe8eab3af26919fe/vehicle-ram2500-3500-2009-2026-6_4ft.glb"},"dream-setup-assets/web-models/vehicle-silverado1500-2019-2026-5.8ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-silverado1500-2019-2026-5.8ft.bin?v=1793023779"],"bytes":6799016,"compressedBytes":3601556,"sha256":"956499ff5ecafe16c36bb0ff3bb919a6f4541b760547dadb32ca66d2b91e38e3","fallback":"https://cdn.shopify.com/3d/models/94cb107ea35056c5/vehicle-silverado1500-2019-2026-5_8ft.glb"},"dream-setup-assets/web-models/vehicle-tacoma-2016-2023-5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tacoma-2016-2023-5ft.bin?v=1793023792"],"bytes":40334160,"compressedBytes":15315558,"sha256":"bc7d627e07211d020448a2c2d26bcb242af9bacb0f4bef6f87c5d3b000e9fbf4","fallback":"https://cdn.shopify.com/3d/models/34ca33a0642c642f/vehicle-tacoma-2016-2023-5ft.glb"},"dream-setup-assets/web-models/vehicle-tacoma-2016-2023-6ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tacoma-2016-2023-6ft.bin?v=1793023792"],"bytes":40334160,"compressedBytes":15315558,"sha256":"bc7d627e07211d020448a2c2d26bcb242af9bacb0f4bef6f87c5d3b000e9fbf4","fallback":"https://cdn.shopify.com/3d/models/03e7f49ac1afc74d/vehicle-tacoma-2016-2023-6ft.glb"},"dream-setup-assets/web-models/vehicle-tacoma-2024-2026-5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tacoma-2024-2026-5ft.bin?v=1793023789"],"bytes":26697916,"compressedBytes":10540848,"sha256":"738eb02ad6b27195bc483e9a346fb2a1bdcdc02888add48cf3028521b6b1bfaf","fallback":"https://cdn.shopify.com/3d/models/9ca5b22f6554a9cc/vehicle-tacoma-2024-2026-5ft.glb"},"dream-setup-assets/web-models/vehicle-tacoma-2024-2026-6ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tacoma-2024-2026-6ft.bin?v=1793023790"],"bytes":26697916,"compressedBytes":10540848,"sha256":"738eb02ad6b27195bc483e9a346fb2a1bdcdc02888add48cf3028521b6b1bfaf","fallback":"https://cdn.shopify.com/3d/models/9cc93c46c6dc481c/vehicle-tacoma-2024-2026-6ft.glb"},"dream-setup-assets/web-models/vehicle-tundra-2014-2021-5.5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tundra-2014-2021-5.5ft.bin?v=1793023783"],"bytes":12906228,"compressedBytes":5715116,"sha256":"b56b07f9677e2f1aa3b7ff09d8fdf0b73d662dfa4db63d96850de29ddfb2d5e6","fallback":"https://cdn.shopify.com/3d/models/5427b674f487ff8c/vehicle-tundra-2014-2021-5_5ft.glb"},"dream-setup-assets/web-models/vehicle-tundra-2022-2026-5.5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tundra-2022-2026-5.5ft.bin?v=1793023784"],"bytes":14102608,"compressedBytes":6756793,"sha256":"3be85911fa5088fc6e06459045d0e9311923197498b13eab505ab040bf19483a","fallback":"https://cdn.shopify.com/3d/models/8a5e4b4d3c713f88/vehicle-tundra-2022-2026-5_5ft.glb"},"dream-setup-assets/images/campaign-banner.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-campaign-banner.jpg?v=1793017323","dream-setup-assets/images/product-0.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-0.png?v=1793017325","dream-setup-assets/images/product-1.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-1.jpg?v=1793017322","dream-setup-assets/images/product-2.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-2.jpg?v=1793017321","dream-setup-assets/images/product-3.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-3.jpg?v=1793017322","dream-setup-assets/images/product-4.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-4.jpg?v=1793017323","dream-setup-assets/images/product-5.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-5.jpg?v=1793017323","dream-setup-assets/images/product-6.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-6.jpg?v=1793017323","dream-setup-assets/images/product-7.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-7.jpg?v=1793017322","dream-setup-assets/images/product-8.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-8.jpg?v=1793017322","dream-setup-assets/images/product-9.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-9.jpg?v=1793017322","dream-setup-assets/product-photos/a180.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-a180.jpg?v=1793017322","dream-setup-assets/product-photos/a270-trail-pending.svg":"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22600%22%20height%3D%22500%22%20viewBox%3D%220%200%20600%20500%22%3E%3Crect%20width%3D%22600%22%20height%3D%22500%22%20fill%3D%22%23f4f1ef%22%2F%3E%3Crect%20x%3D%2280%22%20y%3D%22105%22%20width%3D%22440%22%20height%3D%22260%22%20rx%3D%2214%22%20fill%3D%22none%22%20stroke%3D%22%23c3b7b4%22%20stroke-width%3D%223%22%2F%3E%3Ctext%20x%3D%22300%22%20y%3D%22228%22%20fill%3D%22%233c3333%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%22%20font-size%3D%2229%22%3E270%C2%B0%20Trail%20Awning%3C%2Ftext%3E%3Ctext%20x%3D%22300%22%20y%3D%22275%22%20fill%3D%22%23867574%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%22%20font-size%3D%2220%22%3EProduct%20photo%20pending%3C%2Ftext%3E%3C%2Fsvg%3E","dream-setup-assets/product-photos/a270-trail.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-a270-trail.jpg?v=1793017322","dream-setup-assets/product-photos/a270-xl.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-a270-xl.png?v=1793017323","dream-setup-assets/product-photos/a270.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-a270.png?v=1793017325","dream-setup-assets/product-photos/cap-crossbars.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-cap-crossbars.jpg?v=1793017321","dream-setup-assets/product-photos/cap.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-cap.png?v=1793017325","dream-setup-assets/product-photos/edge-rtt.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-edge-rtt.png?v=1793017325","dream-setup-assets/product-photos/folding.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-folding.png?v=1793017325","dream-setup-assets/product-photos/glass-cap.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-glass-cap.png?v=1793017325","dream-setup-assets/product-photos/glass-roof-rack.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-glass-roof-rack.png?v=1793017327","dream-setup-assets/product-photos/lt-rtt.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-lt-rtt.png?v=1793017325","dream-setup-assets/product-photos/rack.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-rack.png?v=1793017325","dream-setup-assets/product-photos/retractable.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-retractable.png?v=1793017326","dream-setup-assets/product-photos/storage-box.webp":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-storage-box.jpg?v=1793017322"}};</script><style> body:has(.join-redesign){background:#090909} .join-redesign{max-width:1440px;padding:0!important} .join-redesign .campaign-banner{max-width:none;margin:0;background:#080808} .join-redesign .campaign-banner>img{display:block;width:100%;height:auto;aspect-ratio:1672/941;object-fit:contain} .how-it-works{max-width:1200px;margin:0 auto;padding:34px 28px 38px;border-bottom:1px solid #342323} .how-it-works ol{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0} .how-it-works li{padding:0 28px;border-left:1px solid #442626} .how-it-works li:first-child{padding-left:0;border:0}.how-it-works li:last-child{padding-right:0} .step-index,.form-kicker{display:block;color:#ff493e;font-size:11px;font-weight:800;letter-spacing:1.7px} .how-it-works h2{font-size:23px;line-height:1.18;letter-spacing:-.6px;margin:12px 0 10px} .how-it-works p{font-size:13px;line-height:1.6;color:#bcb5b3;margin:0;max-width:300px} .join-redesign .join-section{max-width:1200px;margin:auto;padding:64px 28px 76px;grid-template-columns:1fr 1.12fr;gap:76px;align-items:start} .join-redesign .join-copy{padding-top:14px}.join-redesign .eyebrow{font-size:10px;letter-spacing:1.8px} .join-redesign .join-copy h1{font-size:clamp(36px,4.6vw,60px);line-height:1.02;letter-spacing:-2.2px;margin:20px 0 24px} .join-redesign .join-copy>p{font-size:16px;line-height:1.7;color:#bcb5b3;margin:0 0 30px;max-width:410px} .entry-facts{border-top:1px solid #382424;border-bottom:1px solid #382424;padding:22px 0;display:grid;gap:22px} .entry-facts>div{display:grid;grid-template-columns:112px 1fr;gap:12px}.entry-facts span{font-size:10px;letter-spacing:1.2px;color:#ff6359;font-weight:800;padding-top:3px}.entry-facts strong{font-size:14px;line-height:1.6;font-weight:500;color:#e0d9d5} .join-redesign .join-copy>.entry-guidance{font-size:12px;color:#8f8885;margin:24px 0 0;max-width:350px} .join-redesign .join-form{padding:34px;background:#121212;border:1px solid #382626;border-top:3px solid #f12e23;box-shadow:none} .join-redesign .join-form h2{font-size:30px;margin:12px 0 10px}.join-redesign .join-form>p{font-size:13px;margin-bottom:26px} .join-redesign .form-grid{gap:20px 14px}.join-redesign .form-wide{grid-column:1/-1} .join-redesign .form-field label{font-size:10px;color:#ded9d7;letter-spacing:1.2px} .join-redesign .form-field input,.join-redesign .form-field select{height:49px;border:1px solid #484140;background:#1d1b1b;color:#fff;color-scheme:dark;padding:0 12px;border-radius:3px} .join-redesign input::placeholder{color:#938b88}.join-redesign .consent{font-size:11px;margin:24px 0 18px;color:#aaa19e} .join-redesign .primary-button{background:#f12d22;border-radius:3px;min-height:54px;font-size:12px;letter-spacing:1px} .join-redesign .join-form .prototype-note{margin:18px 0 0;color:#8f8784;font-size:10px;line-height:1.6} .join-redesign .form-message:empty{display:none}.campaign-footer{background:#090909} @media(max-width:900px){.join-redesign .join-section{gap:34px;padding:44px 28px 54px}.join-redesign .join-copy h1{font-size:40px}.join-redesign .join-form{padding:26px}.how-it-works h2{font-size:20px}.how-it-works li{padding:0 18px}} @media(max-width:650px){.how-it-works{padding:25px 20px 28px}.how-it-works ol{grid-template-columns:1fr;gap:20px}.how-it-works li,.how-it-works li:first-child,.how-it-works li:last-child{padding:0 0 0 15px;border-left:2px solid #d52c24}.how-it-works h2{font-size:19px;margin:7px 0 6px}.how-it-works p{max-width:none;font-size:12px}.step-index{font-size:10px}.join-redesign .join-section{grid-template-columns:1fr;gap:28px;padding:32px 20px 44px}.join-redesign .join-copy{padding:0}.join-redesign .join-copy h1{font-size:41px;letter-spacing:-1.5px;margin:16px 0 18px}.join-redesign .join-copy>p{font-size:14px;margin-bottom:22px}.join-redesign .join-copy>.entry-guidance{display:none}.entry-facts{gap:16px;padding:18px 0}.join-redesign .join-form{padding:24px 20px}.join-redesign .form-grid{grid-template-columns:1fr 1fr;gap:18px 12px}.join-redesign .form-field:nth-child(2){grid-column:auto}.join-redesign .form-field input,.join-redesign .form-field select{font-size:16px}.join-redesign .form-field:nth-child(1),.join-redesign .form-field:nth-child(2){grid-column:1/-1}.campaign-footer{padding:22px 20px}} </style><link rel="preconnect" href="https://cdn.shopify.com" crossorigin><script>(()=>{ let host=window;try{if(window.parent!==window&&window.parent.document)host=window.parent}catch{} if(host.OPENROAD_MODEL_BYTES){window.OPENROAD_MODEL_BYTES=host.OPENROAD_MODEL_BYTES;return} const inflight=new Map(),memory=new Map();let memoryBytes=0; const limit=96*1024*1024,stats={networkBytes:0,networkRequests:0,memoryHits:0,diskHits:0,loads:0}; const keyOf=url=>typeof url==='string'?url:JSON.stringify(url); async function part(url,progress){ let cache;try{cache=await caches.open('openroad-model-gzip-v1');const hit=await cache.match(url);if(hit){stats.diskHits++;return hit.arrayBuffer()}}catch{} const r=await fetch(url,{mode:'cors'});if(!r.ok)throw Error('Model download failed: '+r.status); const copy=r.clone(),total=Number(r.headers.get('content-length'))||0;let bytes; if(r.body&&progress){const reader=r.body.getReader(),chunks=[];let count=0;for(;;){const {done,value}=await reader.read();if(done)break;chunks.push(value);count+=value.length;progress(count,total)}const a=new Uint8Array(count);let offset=0;for(const c of chunks){a.set(c,offset);offset+=c.length}bytes=a.buffer}else bytes=await r.arrayBuffer(); stats.networkRequests++;stats.networkBytes+=bytes.byteLength; if(cache)cache.put(url,copy).then(async()=>{const keys=await cache.keys();if(keys.length>40)await Promise.all(keys.slice(0,keys.length-40).map(k=>cache.delete(k)))}).catch(()=>{}); return bytes; } function remember(key,bytes){if(bytes.byteLength>limit)return;while(memoryBytes+bytes.byteLength>limit&&memory.size){const first=memory.keys().next().value;memoryBytes-=memory.get(first).byteLength;memory.delete(first)}memory.set(key,bytes);memoryBytes+=bytes.byteLength} async function read(url,progress){ const key=keyOf(url);if(memory.has(key)){const b=memory.get(key);memory.delete(key);memory.set(key,b);stats.memoryHits++;return b}if(inflight.has(key))return inflight.get(key); const task=(async()=>{ stats.loads++;let bytes; if(url?.gzip&&typeof DecompressionStream==='undefined')return read(url.fallback,progress); if(url?.chunks){const sizes=new Map(),parts=await Promise.all(url.chunks.map((u,i)=>part(u,(n,t)=>{sizes.set(i,[n,t]);if(progress)progress([...sizes.values()].reduce((a,v)=>a+v[0],0),url.compressedBytes||[...sizes.values()].reduce((a,v)=>a+v[1],0))})));const length=parts.reduce((n,p)=>n+p.byteLength,0),a=new Uint8Array(length);let at=0;for(const p of parts){a.set(new Uint8Array(p),at);at+=p.byteLength}bytes=a.buffer; if(url.gzip)bytes=await new Response(new Blob([bytes]).stream().pipeThrough(new DecompressionStream('gzip'))).arrayBuffer(); if(url.bytes&&bytes.byteLength!==url.bytes)throw Error('Model length mismatch'); if(url.sha256){const hash=Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256',bytes)),b=>b.toString(16).padStart(2,'0')).join('');if(hash!==url.sha256)throw Error('Model integrity mismatch')} }else bytes=await part(url,progress); remember(key,bytes);return bytes; })();inflight.set(key,task);try{return await task}finally{inflight.delete(key)} } const api={read,stats,prime:url=>url?read(url).catch(()=>null):Promise.resolve(null)}; host.OPENROAD_MODEL_BYTES=api;window.OPENROAD_MODEL_BYTES=api; })(); </script><style>.campaign-shell.join-redesign,.join-redesign .campaign-banner{max-width:none!important;width:100%;margin-inline:0}.join-redesign .campaign-banner>img{width:100%;height:auto}</style></head><body><script>(()=>{"use strict";let n=null,o=null,d=null,r=0,a=!1;function s(e){n&&o&&window.parent.postMessage({...e,type:"openroad-flow:"+e.type,token:n},o)}function u(){if(a=!1,!document.body)return;const e=Math.ceil(document.body.getBoundingClientRect().height)+2;e!==r&&(r=e,s({type:"height",height:e}))}function t(){a||(a=!0,requestAnimationFrame(u))}window.OPENROAD_SHOPIFY.go=e=>{if(["join","build","share"].includes(e)){if(!n){d=e;return}s({type:"navigate",stage:e})}},window.OPENROAD_SHOPIFY.download=(e,i)=>{if(!n)throw Error("Please wait for the page to finish loading.");s({type:"download",blob:e,filename:i})},window.addEventListener("message",e=>{if(e.source===window.parent){if(e.data?.type==="openroad-flow:continue"&&e.origin===o&&e.data.token===n){document.getElementById("joinForm")?.requestSubmit();return}if(!(e.data?.type!=="openroad-flow:init"||typeof e.data.token!="string"||e.data.token.length<16)&&!(o&&e.origin!==o)&&(o=e.origin,n=e.data.token,r=0,t(),d)){const i=d;d=null,window.OPENROAD_SHOPIFY.go(i)}}}),document.addEventListener("click",e=>{const i=e.target.closest?.("a[data-openroad-step]");!i||e.defaultPrevented||(e.preventDefault(),window.OPENROAD_SHOPIFY.go(i.dataset.openroadStep))}),new ResizeObserver(t).observe(document.body),window.addEventListener("resize",t),window.addEventListener("load",t),document.addEventListener("load",t,!0),document.fonts?.ready.then(t),window.parent!==window&&window.parent.postMessage({type:"openroad-flow:ready"},"*"),t()})(); </script> <main class="campaign-shell join-redesign"> <section class="campaign-banner" aria-label="OPENROAD $5K Dream Setup campaign"> <img src="https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-win-your-5k-dream-setup-banner.png?v=1793073355" width="1672" height="941" fetchpriority="high" loading="eager" alt="Win your $5K dream setup. Build it. Share it. Win it. October 25–November 27. Red Toyota Tacoma equipped with OPENROAD gear."> </section> <section class="how-it-works" aria-label="How to join"><ol> <li><span class="step-index">01 / JOIN</span><h2>Your truck. Your starting point.</h2><p>Enter your details to find gear for your vehicle.</p></li> <li><span class="step-index">02 / BUILD</span><h2>Make $5,000 your own.</h2><p>Build a setup worth up to $5,000. Choose each product once.</p></li> <li><span class="step-index">03 / SHARE</span><h2>Give your setup a name.</h2><p>Download your share card and post it on social media.</p></li> </ol></section> <section class="join-section" aria-label="Entry details and registration"><div class="join-copy"> <div class="entry-facts"><div><span>WHERE</span><strong>United States</strong></div><div><span>HOW WE PICK</span><strong>A random drawing.<br>Equal chance for every valid entry.</strong></div></div> </div><form class="join-form" id="joinForm"><div class="form-kicker">01 / YOUR DETAILS</div><h2>Start your build</h2><p>Tell us who you are and what you drive. We’ll match the gear to your truck.</p><div class="form-grid"> <div class="form-field"><label for="firstName">FIRST NAME</label><input id="firstName" name="firstName" placeholder="Alex" autocomplete="given-name" maxlength="60" required></div> <div class="form-field"><label for="entryEmail">EMAIL</label><input id="entryEmail" name="email" type="email" placeholder="alex@example.com" autocomplete="email" maxlength="150" required></div> <div class="form-field"><label for="entryMake">MAKES</label><select id="entryMake" required></select></div> <div class="form-field"><label for="entryModel">MODELS</label><select id="entryModel" required disabled></select></div> <div class="form-field form-wide"><label for="entryYearBed">YEAR / BED</label><select id="entryYearBed" required disabled></select></div> <div class="form-field form-wide" id="entryOtherField" hidden><label for="entryOther">OTHER · YOUR VEHICLE</label><input id="entryOther" maxlength="150" placeholder="Make, model, year and bed length"></div> </div><label class="consent"><input id="entryConsent" type="checkbox" required><span>I confirm that I am eligible to enter and agree to the official rules and privacy terms.</span></label> <p class="form-message" id="entryMessage" role="status"></p><button type="submit" class="primary-button">CHOOSE MY GEAR →</button><p class="prototype-note">Prototype only: your details stay in this browser tab for this preview. No information is sent to OPENROAD and no real giveaway entry is submitted.</p></form></section></main> <footer class="campaign-footer">© 2026 OPENROAD 4WD · Campaign preview. Final eligibility and official rules must be confirmed before launch.</footer> <script>const vehicleFitments=[{make:"Toyota",model:"Tacoma",year:"2016\u20132023",bed:"5 ft",label:"Toyota Tacoma (2016\u20132023) \xB7 5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-tacoma-2016-2023-5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!0,glassCap:!0},{make:"Toyota",model:"Tacoma",year:"2024\u20132026",bed:"5 ft",label:"Toyota Tacoma (2024\u20132026) \xB7 5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-tacoma-2024-2026-5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!0,glassCap:!0},{make:"Toyota",model:"Tacoma",year:"2016\u20132023",bed:"6 ft",label:"Toyota Tacoma (2016\u20132023) \xB7 6 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-tacoma-2016-2023-6ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"Toyota",model:"Tacoma",year:"2024\u20132026",bed:"6 ft",label:"Toyota Tacoma (2024\u20132026) \xB7 6 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-tacoma-2024-2026-6ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"Toyota",model:"Tundra",year:"2014\u20132021",bed:"5.5 ft",label:"Toyota Tundra (2014\u20132021) \xB7 5.5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-tundra-2014-2021-5.5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"Toyota",model:"Tundra",year:"2022\u20132026",bed:"5.5 ft",label:"Toyota Tundra (2022\u20132026) \xB7 5.5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-tundra-2022-2026-5.5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"Jeep",model:"Gladiator",year:"2019\u20132026",bed:"Standard Bed",label:"Jeep Gladiator (2019\u20132026) \xB7 Standard Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-jeep-gladiator-2019-2026.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!0,glassCap:!0},{make:"Chevrolet",model:"Silverado 1500",year:"2019\u20132026",bed:"5.8 ft",label:"Chevrolet Silverado 1500 (2019\u20132026) \xB7 5.8 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-silverado1500-2019-2026-5.8ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"GMC",model:"Sierra 1500",year:"2019\u20132026",bed:"5.8 ft",label:"GMC Sierra 1500 (2019\u20132026) \xB7 5.8 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-gmc-sierra1500-2019-2026-5.8ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"Chevrolet",model:"Colorado",year:"2023\u20132026",bed:"5 ft",label:"Chevrolet Colorado (2023\u20132026) \xB7 5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-colorado-2023-2026-5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"Chevrolet",model:"Colorado",year:"2015\u20132022",bed:"5 ft",label:"Chevrolet Colorado (2015\u20132022) \xB7 5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-colorado-2015-2022-5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"GMC",model:"Canyon",year:"2023\u20132026",bed:"5 ft",label:"GMC Canyon (2023\u20132026) \xB7 5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-colorado-2023-2026-5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1,previewNote:"COLORADO / CANYON SHARED PLATFORM PREVIEW"},{make:"GMC",model:"Canyon",year:"2015\u20132022",bed:"5 ft",label:"GMC Canyon (2015\u20132022) \xB7 5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-colorado-2015-2022-5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1,previewNote:"COLORADO / CANYON SHARED PLATFORM PREVIEW"},{make:"Ford",model:"F-150",year:"2021\u20132026",bed:"5.7 ft",label:"Ford F-150 (2021\u20132026) \xB7 5.7 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-f150-2021-2026-5.7ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"RAM",model:"1500 DT",year:"2019\u20132026",bed:"5.7 ft",label:"RAM 1500 DT (2019\u20132026) \xB7 5.7 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-ram1500-dt-2019-2026-5.7ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"RAM",model:"2500 / 3500",year:"2009\u20132026",bed:"6.4 ft",label:"RAM 2500 / 3500 (2009\u20132026) \xB7 6.4 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-ram2500-3500-2009-2026-6.4ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"Nissan",model:"Frontier",year:"2022\u20132026",bed:"5 ft",label:"Nissan Frontier (2022\u20132026) \xB7 5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-frontier-2022-2026-5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!0,glassCap:!1}]; </script><script>window.Journey={read(t){try{return JSON.parse(sessionStorage.getItem(t)||"null")}catch{return null}},save(t,e){try{return sessionStorage.setItem(t,JSON.stringify(e)),!0}catch{return!1}},money(t){return"$"+Number(t||0).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},text(t){return String(t??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e])}}; </script><script>window.VehicleOptions={other:"OTHER",make:e=>["Chevrolet","GMC"].includes(e.make)?"CHEVROLET / GMC":e.make,model(e){return this.make(e)==="CHEVROLET / GMC"?["Colorado","Canyon"].includes(e.model)?"COLORADO / GMC CANYON":e.model.toUpperCase():e.model},fits:vehicleFitments.filter(e=>!(e.make==="GMC"&&e.model==="Canyon")),custom(e,o){return o=o.trim().slice(0,150),o?{make:e&&e!==this.other?e:"Other",model:"Other",year:"Other",bed:"Other",custom:!0,customDetails:o,label:(e&&e!==this.other?e+" \xB7 ":"")+o,previewNote:"Custom vehicle: products are shown as photos. A matching truck model is not available."}:null},fill(e,o,r){e.replaceChildren(new Option(r,""),...o.map(t=>new Option(t===this.other?"Other":t,t))),e.disabled=!o.length}}; </script><script>const form=document.getElementById("joinForm"),makeSelect=document.getElementById("entryMake"),modelSelect=document.getElementById("entryModel"),yearSelect=document.getElementById("entryYearBed"),otherField=document.getElementById("entryOtherField"),otherInput=document.getElementById("entryOther"),options=VehicleOptions,distinct=e=>[...new Set(e)],isOther=()=>makeSelect.value===options.other||modelSelect.value===options.other||yearSelect.value===options.other,matches=()=>options.fits.filter(e=>options.make(e)===makeSelect.value&&options.model(e)===modelSelect.value);function toggleOther(){otherField.hidden=!isOther(),otherInput.required=isOther(),yearSelect.required=!isOther()}options.fill(makeSelect,[...distinct(options.fits.map(e=>options.make(e))),options.other],"Choose make"),options.fill(modelSelect,[],"Choose model"),options.fill(yearSelect,[],"Choose year / bed"),makeSelect.onchange=()=>{options.fill(modelSelect,makeSelect.value&&makeSelect.value!==options.other?[...distinct(options.fits.filter(e=>options.make(e)===makeSelect.value).map(e=>options.model(e))),options.other]:[],"Choose model"),modelSelect.required=makeSelect.value!==options.other,options.fill(yearSelect,[],"Choose year / bed"),toggleOther()},modelSelect.onchange=()=>{yearSelect.replaceChildren(new Option("Choose year / bed",""));for(const e of matches())yearSelect.add(new Option(`${e.year} / ${e.bed}${e.bed==="Standard Bed"?"":" Bed"}`,String(options.fits.indexOf(e))));matches().length&&yearSelect.add(new Option("Other",options.other)),yearSelect.disabled=!matches().length,toggleOther()},yearSelect.onchange=toggleOther;function entryFit(){return isOther()?options.custom(makeSelect.value,otherInput.value):matches().find(e=>String(options.fits.indexOf(e))===yearSelect.value)}const prior=Journey.read("openroad_dream_setup_entry");if(prior&&(document.getElementById("firstName").value=prior.firstName||"",document.getElementById("entryEmail").value=prior.email||"",prior.fit)){const e=prior.fit;makeSelect.value=e.custom?Array.from(makeSelect.options).some(t=>t.value===e.make)?e.make:options.other:options.make(e),makeSelect.onchange(),e.custom?(modelSelect.value=options.other,otherInput.value=e.customDetails||e.label,toggleOther()):(modelSelect.value=options.model(e),modelSelect.onchange(),yearSelect.value=String(options.fits.findIndex(t=>t.label===e.label)))}form.addEventListener("submit",e=>{if(e.preventDefault(),!form.reportValidity())return;const t=document.getElementById("firstName").value.trim(),n=entryFit();if(!t||!n){document.getElementById("entryMessage").textContent="Please enter your name and complete your truck details.";return}Journey.read("openroad_dream_setup_draft")?.fit?.label!==n.label&&Journey.save("openroad_dream_setup_draft",{fit:n,ids:[]}),Journey.save("openroad_dream_setup_entry",{firstName:t,email:document.getElementById("entryEmail").value.trim(),fit:n,consent:document.getElementById("entryConsent").checked}),window.OPENROAD_SHOPIFY.go("build")}),prior?.consent&&(document.getElementById("entryConsent").checked=!0); </script><script>(()=>{let timer,key;function warm(){clearTimeout(timer);timer=setTimeout(()=>{if(navigator.connection?.saveData||/2g/.test(navigator.connection?.effectiveType||''))return;const fit=entryFit();if(!fit?.vehicleModelUrl)return;const next=JSON.stringify(fit.vehicleModelUrl);if(next===key)return;key=next;window.OPENROAD_MODEL_BYTES.prime(fit.vehicleModelUrl)},350)}document.getElementById('joinForm').addEventListener('change',warm);warm()})();</script></body></html> <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="data:,"><title>OPENROAD Dream Setup</title><style>:root{--red:#f3261d;--paper:#f8f5ee;--muted:#b9aeac;--line:#482022;--surface:#111113}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 70% 48%,#220000 0,transparent 62%),#080707;color:var(--paper);font-family:Arial,Helvetica,sans-serif}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ff7d75;outline-offset:4px}[hidden]{display:none!important}.campaign-shell{max-width:1180px;margin:auto}.campaign-banner{position:relative;container-type:inline-size;margin:auto;max-width:1100px;background:#050505}.campaign-banner>img{display:block;width:100%;height:auto}.banner-revised-copy{position:absolute;left:4.25%;top:57.35%;width:33.2%;height:8.6%;background:#000;display:flex;flex-direction:column;justify-content:center;color:#eee;font-size:1.42cqw;line-height:1.12;letter-spacing:-.01em}.banner-revised-copy span{display:block;white-space:nowrap}.join-section{display:grid;grid-template-columns:1fr 1.12fr;gap:70px;padding:80px 0 94px}.eyebrow{font-size:12px;color:var(--red);font-weight:900;letter-spacing:2px}.join-copy h1{font-size:clamp(42px,4.9vw,70px);line-height:.98;letter-spacing:-2px;margin:16px 0 25px;font-weight:950}.join-copy>p{font-size:17px;line-height:1.65;color:#d2c9c5;margin:0 0 34px;max-width:490px}.rules-table{margin:0;border:1px solid var(--line);background:#0c0c0d}.rules-table div{display:grid;grid-template-columns:96px 1fr;gap:16px;padding:20px 17px;border-bottom:1px solid var(--line)}.rules-table div:last-child{border:0}.rules-table dt{font-size:10px;color:#ff4b42;letter-spacing:1px;font-weight:900}.rules-table dd{margin:0;color:#e0d9d6;font-size:13px;line-height:1.6}.join-form{background:var(--surface);border:1px solid #4b2425;padding:39px;align-self:start}.join-form h2{font-size:31px;letter-spacing:-1px;margin:0 0 12px}.join-form>p{color:var(--muted);font-size:14px;line-height:1.7;margin:0 0 30px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px 14px}.form-field label{display:block;font-size:10px;font-weight:900;letter-spacing:1px;margin-bottom:10px}.form-field input,.form-field select{display:block;width:100%;height:50px;border:1px solid #af8f8f;padding:0 13px;background:#fcfbf9;color:#222;border-radius:0;min-width:0}.consent{display:flex;align-items:flex-start;gap:10px;margin:30px 0 22px;font-size:11px;color:#c2b7b7;line-height:1.6}.consent input{margin:3px 0 0;accent-color:var(--red)}.primary-button{display:block;width:100%;padding:19px 16px;border:0;color:#fff;background:linear-gradient(115deg,#ff2d22,#c20000);font-size:12px;letter-spacing:1px;font-weight:900;text-align:center;text-decoration:none;cursor:pointer}.primary-button:hover{filter:brightness(1.12)}.join-form .prototype-note{font-size:10px;color:#958b8c;margin-top:40px;line-height:1.6}.campaign-footer{border-top:1px solid var(--line);padding:26px max(24px,calc((100% - 1180px)/2));font-size:10px;color:#8f8585;line-height:1.6}.form-message{color:#ffb7ad;font-size:12px;line-height:1.5}.back-link{float:right;font-size:11px;color:#bcaead;text-decoration:none;padding:6px 0}.build-page{padding-top:22px}.build-page .builder{align-items:start}.build-page .catalog{max-height:610px}.build-page .asset-note{border-top:1px solid #382325;margin-top:8px}.build-page .stage-note{font-size:10px}.build-page .stage-panel{position:relative}.build-page .step-title{padding-right:5px}.share-page{max-width:1180px;margin:auto;padding:32px 24px 70px}.journey-top{display:flex;justify-content:space-between;align-items:center;color:#b4a6a5;font-size:11px;margin-bottom:34px}.wordmark{font-weight:950;font-size:20px;letter-spacing:2px;color:#fff}.wordmark span{color:var(--red)}.share-layout{display:grid;grid-template-columns:1.3fr .8fr;gap:36px;align-items:start}.share-copy h1{font-size:44px;line-height:1.05;letter-spacing:-1px;margin:14px 0 20px}.share-copy p{color:var(--muted);font-size:14px;line-height:1.7}.share-form{margin-top:30px}.share-form input{background:#171113;border:1px solid #6a3434;color:#fff;padding:15px;width:100%;margin:10px 0 14px;min-width:0}.share-form label{font-size:11px;letter-spacing:1px;font-weight:800}.share-card{overflow:hidden;border:1px solid #713132;background:radial-gradient(ellipse at 90% 0,#690d0d,transparent 60%),#111;box-shadow:0 24px 60px #0006}.share-card-top{display:flex;justify-content:space-between;align-items:center;padding:22px 24px;border-bottom:1px solid #5b2424;font-weight:900;font-size:12px}.share-card-top span:last-child{color:#ff4a3e}.share-card h2{font-size:32px;line-height:1.05;margin:24px 24px 8px;overflow-wrap:anywhere}.share-vehicle{color:#c9bcb8;font-size:12px;padding:0 24px;line-height:1.6}.share-preview{display:block;width:100%;height:320px;object-fit:contain;background:radial-gradient(ellipse,#c8c2c1,#5b5354);margin-top:18px}.share-preview-placeholder{height:240px;background:var(--openroad-campaign-image) center 20%/cover}.share-products{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:20px 24px}.share-product{display:flex;align-items:center;gap:10px;min-width:0}.share-product img{width:48px;height:48px;object-fit:contain;background:#fff;border-radius:4px}.share-product strong{display:block;font-size:10px;line-height:1.4}.share-product small{display:block;color:#ff867b;font-size:10px;margin-top:4px}.share-total{display:flex;justify-content:space-between;padding:20px 24px;border-top:1px solid #5b2424;gap:10px;font-size:13px}.share-total b{color:#ff4a3e;font-size:23px}.share-tagline{padding:0 24px 22px;font-size:10px;color:#b1a3a1}.share-actions{display:grid;gap:12px;margin-top:20px}.secondary-button{display:block;width:100%;padding:15px;border:1px solid #633334;background:#1a1011;color:#fff;text-align:center;text-decoration:none;font-size:12px;font-weight:800;cursor:pointer}.empty-state{padding:60px 20px;border:1px solid #5b2424;text-align:center;max-width:650px;margin:60px auto}.empty-state p{color:var(--muted);line-height:1.7}.empty-state .primary-button{max-width:300px;margin:25px auto 0}.challenge{padding:20px;border:1px solid #5b2424;background:#160d0e;margin-top:28px}.challenge strong{font-size:15px}.challenge p{margin:9px 0 0;font-size:12px}.no-save{display:none}.join-copy h1{font-size:clamp(42px,4.35vw,63px);letter-spacing:-1.6px}.join-form>p{max-width:440px}.banner-revised-copy{height:8.6%;font-size:1.42cqw}.build-page .cap-tuner{display:block}.build-page .cap-tuner[hidden]{display:none}.calibration-toolbar{margin-top:14px;padding:14px;border:1px solid #654044;border-radius:10px;background:#160e10}.calibration-toolbar>strong{font-size:13px}.calibration-toolbar>p{font-size:11px;line-height:1.6;color:#c3b2b2;margin:8px 0}.calibration-toolbar .tuner-actions button{border:1px solid #753033;background:#241112;color:#fff;border-radius:7px;padding:8px 11px;font-size:11px;font-weight:800;cursor:pointer}.calibration-toolbar .tuner-actions .primary{background:#ef241c}.calibration-toolbar button:disabled{opacity:.4;cursor:default}.build-page .cap-tuner-head{display:grid;gap:7px}.build-page .cap-tuner-head span{font-size:11px;line-height:1.5;color:#c6adab}.build-page .tuner-control{grid-template-columns:minmax(60px,1fr) 65px;gap:5px 8px}.build-page .tuner-control output{grid-column:1/-1;text-align:left;font-size:10px;color:#bd9d98}.tune-number{width:100%;background:#1a1113;border:1px solid #733c40;color:#fff;padding:5px;border-radius:4px;font-size:11px}.build-page .tuner-message{line-height:1.6;overflow-wrap:anywhere}.build-page .tuner-actions button{cursor:pointer}.build-page .tuner-grid{gap:12px 16px}.config-mode-switch{display:flex;gap:6px;padding:12px;border-bottom:1px solid #5b2022}.config-mode-switch button{flex:1;padding:11px 8px;background:#281719;border:1px solid #674044;border-radius:7px;font-size:12px;font-weight:900;color:#fff;cursor:pointer}.config-mode-switch button.active{background:#ef241c;border-color:#ef241c}.config[data-mode=tune] #tabs,.config[data-mode=tune] #catalog,.config[data-mode=tune] .summary,.config[data-mode=tune] #configLock{display:none}.calibration-mode{padding:0 12px 12px;max-height:680px;overflow:auto;overscroll-behavior:contain}.calibration-mode .tuner-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.calibration-mode .cap-tuner,.calibration-mode .calibration-toolbar{padding:12px}.calibration-mode .tuner-actions{gap:7px}.calibration-mode .tuner-actions button{font-size:10px}.calibration-mode .cap-tuner-head strong{font-size:13px}@media(min-width:921px){.build-page .stage-panel{position:sticky;top:12px}}@media(max-width:500px){.calibration-mode{max-height:none;overflow:visible}}@media(min-width:1500px){.campaign-banner{max-width:1180px}}@media(max-width:1240px){.campaign-shell{padding:0 30px}.join-section{gap:45px}.join-form{padding:30px}.share-layout{gap:24px}}@media(max-width:800px){.join-section{grid-template-columns:1fr;gap:36px;padding:45px 0 55px}.join-copy h1{font-size:52px}.join-copy>p{max-width:none}.share-layout{grid-template-columns:1fr}.share-copy{grid-row:1}.share-form{margin-top:20px}.share-copy h1{font-size:35px}.share-preview{height:290px}.join-form .prototype-note{margin-top:25px}}@media(max-width:500px){.campaign-shell{padding:0 16px}.campaign-banner{margin:0 -16px}.join-copy h1{font-size:44px;letter-spacing:-1px}.join-copy>p{font-size:15px}.join-form{padding:24px 20px}.join-form h2{font-size:28px}.form-grid{grid-template-columns:1fr;gap:18px}.rules-table div{grid-template-columns:72px 1fr;gap:8px;padding:17px 13px}.rules-table dd{font-size:12px}.consent{margin-top:23px}.share-page{padding:24px 16px 45px}.share-products{padding:18px 16px;grid-template-columns:1fr 1fr}.share-card h2{font-size:27px}.share-card-top{padding:18px 16px}.share-preview{height:245px}.share-total{padding:20px 16px}.journey-top{margin-bottom:25px}.wordmark{font-size:17px}.build-page .back-link{font-size:9px}.build-page .stage-ui .badge{max-width:150px}}.preview-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;align-items:start}.preview-layout.has-cards{grid-template-columns:minmax(0,1fr) clamp(110px,23%,160px)}.preview-layout .stage{min-width:0}.preview-cards{min-width:0;max-height:520px;overflow:auto;overscroll-behavior:contain;border:1px solid #633033;border-radius:10px;padding:8px;background:#170e0f}.preview-cards h3{font-size:10px;letter-spacing:1px;margin:2px 0 8px;color:#e5c6c3}.preview-cards .stage-gear{max-width:none;gap:8px;pointer-events:auto}.preview-cards .gear-card img{height:96px;object-fit:contain}.preview-cards .gear-card figcaption{overflow-wrap:anywhere}.preview-cards .gear-card button{width:25px;height:25px;box-shadow:0 0 0 1px #fff8}.preview-layout.has-cards .stage-ui .badge{max-width:220px}.preview-layout .stage-actions{align-self:start}.preview-layout .stage-ui{flex-wrap:wrap}.preview-layout .stage{transition:none}@media(max-width:600px){.preview-layout.has-cards{grid-template-columns:minmax(0,1fr)}.preview-cards{order:-1;max-height:190px}.preview-cards .stage-gear{display:flex;overflow:auto;justify-content:flex-start;max-width:none}.preview-cards .gear-card{flex:0 0 120px}.preview-cards .gear-card img{height:76px}.preview-cards h3{text-align:right}.preview-layout .stage{min-height:390px}}.preview-cards .stage-gear{width:100%;grid-template-columns:minmax(0,1fr);max-height:none;overflow:visible}.preview-cards .gear-card{min-width:0}.config-mode-switch{flex-wrap:wrap}.config-mode-switch #showAwningTuneMode{border-color:#f15448;color:#ffe1dc;white-space:nowrap}.awning-tune-hint{padding:12px 16px;background:#321417;border-bottom:1px solid #6a3034;color:#ffded8;font-size:12px;line-height:1.6}.calibration-mode[data-focus=awning]{display:flex;flex-direction:column}.calibration-mode[data-focus=awning]>section{flex:0 0 auto}.calibration-mode[data-focus=awning] #calibrationToolbar{order:0}.calibration-mode[data-focus=awning] #awningTuner{order:1}.calibration-mode[data-focus=awning] #capTuner{order:2}.calibration-mode[data-focus=awning] #rttTuner{order:3}.calibration-mode[data-focus=awning] #coverTuner{order:4}.form-wide{grid-column:1/-1}.other-vehicle{margin:0 0 14px}.other-vehicle input{width:100%;padding:12px;background:#0c1217;border:1px solid #633334;border-radius:8px;color:#fff}.other-vehicle label{display:block;font-size:11px;margin-bottom:8px}.other-vehicle p{font-size:12px;color:#b9aeac;line-height:1.5}.builder.other-mode{grid-template-columns:minmax(0,1fr);gap:16px}.other-mode .stage-panel{padding:22px}.other-mode #previewLayout,.other-mode .asset-note,.other-mode .stage-note,.other-mode #vehiclePreviewNote,.other-mode .config-mode-switch,.other-mode #calibrationMode,.other-mode #awningTuneHint{display:none!important}.other-mode #catalog{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;max-height:none;padding:18px}.other-mode .product{display:flex;flex-direction:column;align-items:stretch;gap:12px;padding:14px;min-width:0;cursor:pointer}.other-mode .product img{width:100%;height:170px;object-fit:contain;background:#fff;border-radius:8px}.other-mode .product>div{flex:1}.other-mode .product h3{font-size:16px;line-height:1.35;margin:5px 0 8px}.other-mode .product .add{align-self:flex-end}.other-mode .product.selected{background:#32181b;border-color:#f3261d}.other-mode .other-vehicle{margin-bottom:0}.other-mode .config-head,.other-mode .summary{padding:20px}@media(max-width:1100px){.other-mode #catalog{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px){.other-mode #catalog{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px;gap:10px}.other-mode .product img{height:135px}.other-mode .product h3{font-size:14px}}@media(max-width:380px){.other-mode #catalog{grid-template-columns:1fr}}.other-mode .mode-label{display:none}.product img,.other-mode .product img,.gear-card img,.preview-cards .gear-card img{height:auto;aspect-ratio:1 / 1;object-fit:contain} :root{--openroad-campaign-image:url("https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-campaign-banner.jpg?v=1793017323")}</style><script>window.OPENROAD_SHOPIFY={urls:{"dream-setup-assets/product-models/folding-tonneau-cover.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-folding-tonneau-cover.bin?v=1793023790"],"bytes":44098416,"compressedBytes":11832893,"sha256":"945f58e523d2b43a39e90f369e36fc5c86d1dc9740bdce96676039eb35931395","fallback":"https://cdn.shopify.com/3d/models/44a793088d339123/folding-tonneau-cover.glb"},"dream-setup-assets/web-models/aluminum-truck-cap-universal.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-aluminum-truck-cap-universal.bin?v=1793023772"],"bytes":2249136,"compressedBytes":1022656,"sha256":"6bad6521d505df7c6ac2648377a567d5767f471e492945ca9150657b6fcab7f4","fallback":"https://cdn.shopify.com/3d/models/6e3759683fff0521/aluminum-truck-cap-universal.glb"},"dream-setup-assets/web-models/awning-180.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-awning-180.bin?v=1793023774"],"bytes":4409084,"compressedBytes":1452766,"sha256":"825d9b07f2b615dcdbdf08d7157bd1dfc90e2d68b4184f976f09ae47ac4d1e25","fallback":"https://cdn.shopify.com/3d/models/e75135c63e2a8cd9/awning-180.glb"},"dream-setup-assets/web-models/awning-270-plus.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-awning-270-plus.bin?v=1793023777"],"bytes":8858496,"compressedBytes":2727221,"sha256":"f4573831b1c8631718fcc00a4fc51880436ae251acf6d14cec5de7785db1ea50","fallback":"https://cdn.shopify.com/3d/models/2110f2331c073a5b/awning-270-plus.glb"},"dream-setup-assets/web-models/awning-270-trail-gray-v3.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-awning-270-trail-gray-v3.bin?v=1793023776"],"bytes":6035636,"compressedBytes":2311519,"sha256":"09e14618fa5b37ee93c5ed73da88a9681b6f0ba1f7532e5ccc551929fc9150c9","fallback":"https://cdn.shopify.com/3d/models/77af0bd3249ed80a/awning-270-trail-gray-v3.glb"},"dream-setup-assets/web-models/awning-270.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-awning-270.bin?v=1793023791"],"bytes":39001988,"compressedBytes":12515377,"sha256":"3715f648d659e9684634c2bb676ee01b0a1e062f5dd588b425dfcb90c371eae7","fallback":"https://cdn.shopify.com/3d/models/e5170c03ac8c84ac/awning-270.glb"},"dream-setup-assets/web-models/lt-rtt.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-lt-rtt.bin?v=1793023780"],"bytes":6632520,"compressedBytes":4184758,"sha256":"98d0075aa37c28dea867ec99f427902642be6c5f1abf2e7f1a4347e2830f1483","fallback":"https://cdn.shopify.com/3d/models/0bf3dfc786c2adb8/lt-rtt.glb"},"dream-setup-assets/web-models/retractable-tonneau-cover.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-retractable-tonneau-cover.bin?v=1793023787"],"bytes":25747456,"compressedBytes":8256896,"sha256":"a7718fe86a93daaa014744bd5d3f09e20c6c1f29eabef6c62a8763729fe43f4a","fallback":"https://cdn.shopify.com/3d/models/58a1bbb61a542341/retractable-tonneau-cover.glb"},"dream-setup-assets/web-models/sliding-glass-truck-cap.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-sliding-glass-truck-cap.part1.bin?v=1793023790","https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-sliding-glass-truck-cap.part2.bin?v=1793023788"],"bytes":60582156,"compressedBytes":21908158,"sha256":"abaff91ce0db053a465e02f05be4f1b61c5a6fca64896ca5878e6082398b1685","fallback":{"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-sliding-glass-truck-cap.glb.part1.bin?v=1793014452","https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-sliding-glass-truck-cap.glb.part2.bin?v=1793014452","https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-sliding-glass-truck-cap.glb.part3.bin?v=1793014452","https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-sliding-glass-truck-cap.glb.part4.bin?v=1793014451"],"bytes":60582156,"sha256":"abaff91ce0db053a465e02f05be4f1b61c5a6fca64896ca5878e6082398b1685"}},"dream-setup-assets/web-models/triangle-rtt.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-triangle-rtt.bin?v=1793023790"],"bytes":31775360,"compressedBytes":10988051,"sha256":"00255b34430409087205b89369fab0c1703ddf6355ffce73cefcb5655fcb944c","fallback":"https://cdn.shopify.com/3d/models/11b1c0ea954bf7bc/triangle-rtt.glb"},"dream-setup-assets/web-models/vehicle-colorado-2015-2022-5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-colorado-2015-2022-5ft.bin?v=1793023778"],"bytes":5462092,"compressedBytes":3570371,"sha256":"1d274f613a71f968577af122697d72076dfc7a29e9ff39ccd8750d5c222dceeb","fallback":"https://cdn.shopify.com/3d/models/8e3e60e73aae1384/vehicle-colorado-2015-2022-5ft.glb"},"dream-setup-assets/web-models/vehicle-colorado-2023-2026-5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-colorado-2023-2026-5ft.bin?v=1793023781"],"bytes":8668744,"compressedBytes":5071501,"sha256":"49e98e5a9ed45a5eebebfe6e3f585fe2dbe53c6202e34d7fca9eb34444604520","fallback":"https://cdn.shopify.com/3d/models/4c6e292d3d74cea5/vehicle-colorado-2023-2026-5ft.glb"},"dream-setup-assets/web-models/vehicle-f150-2021-2026-5.7ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-f150-2021-2026-5.7ft.bin?v=1793023788"],"bytes":22753508,"compressedBytes":9036776,"sha256":"18cf12bd66e3db47c6eab3bf4226975a7cc3df2e8f45ebbe2fe653a90f81b04a","fallback":{"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-vehicle-f150-2021-2026-5.7ft.glb.part1.bin?v=1793013714","https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-vehicle-f150-2021-2026-5.7ft.glb.part2.bin?v=1793013711"],"bytes":22753508,"sha256":"18cf12bd66e3db47c6eab3bf4226975a7cc3df2e8f45ebbe2fe653a90f81b04a"}},"dream-setup-assets/web-models/vehicle-frontier-2022-2026-5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-frontier-2022-2026-5ft.bin?v=1793023792"],"bytes":49613920,"compressedBytes":17116118,"sha256":"f609c50ccee8a74bdd0a7d325d7c0189d6515879a79c201e7b189ede54d7e53f","fallback":"https://cdn.shopify.com/3d/models/3395da7fd361428d/vehicle-frontier-2022-2026-5ft.glb"},"dream-setup-assets/web-models/vehicle-gmc-sierra1500-2019-2026-5.8ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-gmc-sierra1500-2019-2026-5.8ft.bin?v=1793023791"],"bytes":35495668,"compressedBytes":12177296,"sha256":"b2b02521fa4851cb90c80a28407379bb3f28d9593df40d16afc91f43545b0384","fallback":"https://cdn.shopify.com/3d/models/1190a56494dee9af/vehicle-gmc-sierra1500-2019-2026-5_8ft.glb"},"dream-setup-assets/web-models/vehicle-jeep-gladiator-2019-2026.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-jeep-gladiator-2019-2026.bin?v=1793023777"],"bytes":5318148,"compressedBytes":2859338,"sha256":"853d1bb2615e008739e62eb5ef478bae701963a4bd02e2ba87b1f70dcd2a6702","fallback":"https://cdn.shopify.com/3d/models/a08145e5b800be89/vehicle-jeep-gladiator-2019-2026.glb"},"dream-setup-assets/web-models/vehicle-ram1500-dt-2019-2026-5.7ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-ram1500-dt-2019-2026-5.7ft.bin?v=1793023776"],"bytes":13032192,"compressedBytes":2876787,"sha256":"592310fa4d014e61c6c3b061a59cae38bea828997e8909d46498acb876e77178","fallback":{"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-vehicle-ram1500-dt-2019-2026-5.7ft.glb.part1.bin?v=1793013714"],"bytes":13032192,"sha256":"592310fa4d014e61c6c3b061a59cae38bea828997e8909d46498acb876e77178"}},"dream-setup-assets/web-models/vehicle-ram2500-3500-2009-2026-6.4ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-ram2500-3500-2009-2026-6.4ft.bin?v=1793023792"],"bytes":51559588,"compressedBytes":16774805,"sha256":"24c07f98d6a53c3c6db8db4521eb571d62ef1d46fdab895bcae3285cfa189e45","fallback":"https://cdn.shopify.com/3d/models/fe8eab3af26919fe/vehicle-ram2500-3500-2009-2026-6_4ft.glb"},"dream-setup-assets/web-models/vehicle-silverado1500-2019-2026-5.8ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-silverado1500-2019-2026-5.8ft.bin?v=1793023779"],"bytes":6799016,"compressedBytes":3601556,"sha256":"956499ff5ecafe16c36bb0ff3bb919a6f4541b760547dadb32ca66d2b91e38e3","fallback":"https://cdn.shopify.com/3d/models/94cb107ea35056c5/vehicle-silverado1500-2019-2026-5_8ft.glb"},"dream-setup-assets/web-models/vehicle-tacoma-2016-2023-5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tacoma-2016-2023-5ft.bin?v=1793023792"],"bytes":40334160,"compressedBytes":15315558,"sha256":"bc7d627e07211d020448a2c2d26bcb242af9bacb0f4bef6f87c5d3b000e9fbf4","fallback":"https://cdn.shopify.com/3d/models/34ca33a0642c642f/vehicle-tacoma-2016-2023-5ft.glb"},"dream-setup-assets/web-models/vehicle-tacoma-2016-2023-6ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tacoma-2016-2023-6ft.bin?v=1793023792"],"bytes":40334160,"compressedBytes":15315558,"sha256":"bc7d627e07211d020448a2c2d26bcb242af9bacb0f4bef6f87c5d3b000e9fbf4","fallback":"https://cdn.shopify.com/3d/models/03e7f49ac1afc74d/vehicle-tacoma-2016-2023-6ft.glb"},"dream-setup-assets/web-models/vehicle-tacoma-2024-2026-5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tacoma-2024-2026-5ft.bin?v=1793023789"],"bytes":26697916,"compressedBytes":10540848,"sha256":"738eb02ad6b27195bc483e9a346fb2a1bdcdc02888add48cf3028521b6b1bfaf","fallback":"https://cdn.shopify.com/3d/models/9ca5b22f6554a9cc/vehicle-tacoma-2024-2026-5ft.glb"},"dream-setup-assets/web-models/vehicle-tacoma-2024-2026-6ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tacoma-2024-2026-6ft.bin?v=1793023790"],"bytes":26697916,"compressedBytes":10540848,"sha256":"738eb02ad6b27195bc483e9a346fb2a1bdcdc02888add48cf3028521b6b1bfaf","fallback":"https://cdn.shopify.com/3d/models/9cc93c46c6dc481c/vehicle-tacoma-2024-2026-6ft.glb"},"dream-setup-assets/web-models/vehicle-tundra-2014-2021-5.5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tundra-2014-2021-5.5ft.bin?v=1793023783"],"bytes":12906228,"compressedBytes":5715116,"sha256":"b56b07f9677e2f1aa3b7ff09d8fdf0b73d662dfa4db63d96850de29ddfb2d5e6","fallback":"https://cdn.shopify.com/3d/models/5427b674f487ff8c/vehicle-tundra-2014-2021-5_5ft.glb"},"dream-setup-assets/web-models/vehicle-tundra-2022-2026-5.5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tundra-2022-2026-5.5ft.bin?v=1793023784"],"bytes":14102608,"compressedBytes":6756793,"sha256":"3be85911fa5088fc6e06459045d0e9311923197498b13eab505ab040bf19483a","fallback":"https://cdn.shopify.com/3d/models/8a5e4b4d3c713f88/vehicle-tundra-2022-2026-5_5ft.glb"},"dream-setup-assets/images/campaign-banner.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-campaign-banner.jpg?v=1793017323","dream-setup-assets/images/product-0.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-0.png?v=1793017325","dream-setup-assets/images/product-1.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-1.jpg?v=1793017322","dream-setup-assets/images/product-2.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-2.jpg?v=1793017321","dream-setup-assets/images/product-3.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-3.jpg?v=1793017322","dream-setup-assets/images/product-4.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-4.jpg?v=1793017323","dream-setup-assets/images/product-5.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-5.jpg?v=1793017323","dream-setup-assets/images/product-6.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-6.jpg?v=1793017323","dream-setup-assets/images/product-7.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-7.jpg?v=1793017322","dream-setup-assets/images/product-8.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-8.jpg?v=1793017322","dream-setup-assets/images/product-9.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-9.jpg?v=1793017322","dream-setup-assets/product-photos/a180.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-a180.jpg?v=1793017322","dream-setup-assets/product-photos/a270-trail-pending.svg":"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22600%22%20height%3D%22500%22%20viewBox%3D%220%200%20600%20500%22%3E%3Crect%20width%3D%22600%22%20height%3D%22500%22%20fill%3D%22%23f4f1ef%22%2F%3E%3Crect%20x%3D%2280%22%20y%3D%22105%22%20width%3D%22440%22%20height%3D%22260%22%20rx%3D%2214%22%20fill%3D%22none%22%20stroke%3D%22%23c3b7b4%22%20stroke-width%3D%223%22%2F%3E%3Ctext%20x%3D%22300%22%20y%3D%22228%22%20fill%3D%22%233c3333%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%22%20font-size%3D%2229%22%3E270%C2%B0%20Trail%20Awning%3C%2Ftext%3E%3Ctext%20x%3D%22300%22%20y%3D%22275%22%20fill%3D%22%23867574%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%22%20font-size%3D%2220%22%3EProduct%20photo%20pending%3C%2Ftext%3E%3C%2Fsvg%3E","dream-setup-assets/product-photos/a270-trail.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-a270-trail.jpg?v=1793017322","dream-setup-assets/product-photos/a270-xl.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-a270-xl.png?v=1793017323","dream-setup-assets/product-photos/a270.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-a270.png?v=1793017325","dream-setup-assets/product-photos/cap-crossbars.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-cap-crossbars.jpg?v=1793017321","dream-setup-assets/product-photos/cap.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-cap.png?v=1793017325","dream-setup-assets/product-photos/edge-rtt.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-edge-rtt.png?v=1793017325","dream-setup-assets/product-photos/folding.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-folding.png?v=1793017325","dream-setup-assets/product-photos/glass-cap.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-glass-cap.png?v=1793017325","dream-setup-assets/product-photos/glass-roof-rack.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-glass-roof-rack.png?v=1793017327","dream-setup-assets/product-photos/lt-rtt.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-lt-rtt.png?v=1793017325","dream-setup-assets/product-photos/rack.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-rack.png?v=1793017325","dream-setup-assets/product-photos/retractable.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-retractable.png?v=1793017326","dream-setup-assets/product-photos/storage-box.webp":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-storage-box.jpg?v=1793017322"}};</script><style>.config-mode-switch,#calibrationMode,#awningTuneHint,.cap-tuner,#bedCoverTuner{display:none!important}</style><link rel="preconnect" href="https://cdn.shopify.com" crossorigin><script>(()=>{ let host=window;try{if(window.parent!==window&&window.parent.document)host=window.parent}catch{} if(host.OPENROAD_MODEL_BYTES){window.OPENROAD_MODEL_BYTES=host.OPENROAD_MODEL_BYTES;return} const inflight=new Map(),memory=new Map();let memoryBytes=0; const limit=96*1024*1024,stats={networkBytes:0,networkRequests:0,memoryHits:0,diskHits:0,loads:0}; const keyOf=url=>typeof url==='string'?url:JSON.stringify(url); async function part(url,progress){ let cache;try{cache=await caches.open('openroad-model-gzip-v1');const hit=await cache.match(url);if(hit){stats.diskHits++;return hit.arrayBuffer()}}catch{} const r=await fetch(url,{mode:'cors'});if(!r.ok)throw Error('Model download failed: '+r.status); const copy=r.clone(),total=Number(r.headers.get('content-length'))||0;let bytes; if(r.body&&progress){const reader=r.body.getReader(),chunks=[];let count=0;for(;;){const {done,value}=await reader.read();if(done)break;chunks.push(value);count+=value.length;progress(count,total)}const a=new Uint8Array(count);let offset=0;for(const c of chunks){a.set(c,offset);offset+=c.length}bytes=a.buffer}else bytes=await r.arrayBuffer(); stats.networkRequests++;stats.networkBytes+=bytes.byteLength; if(cache)cache.put(url,copy).then(async()=>{const keys=await cache.keys();if(keys.length>40)await Promise.all(keys.slice(0,keys.length-40).map(k=>cache.delete(k)))}).catch(()=>{}); return bytes; } function remember(key,bytes){if(bytes.byteLength>limit)return;while(memoryBytes+bytes.byteLength>limit&&memory.size){const first=memory.keys().next().value;memoryBytes-=memory.get(first).byteLength;memory.delete(first)}memory.set(key,bytes);memoryBytes+=bytes.byteLength} async function read(url,progress){ const key=keyOf(url);if(memory.has(key)){const b=memory.get(key);memory.delete(key);memory.set(key,b);stats.memoryHits++;return b}if(inflight.has(key))return inflight.get(key); const task=(async()=>{ stats.loads++;let bytes; if(url?.gzip&&typeof DecompressionStream==='undefined')return read(url.fallback,progress); if(url?.chunks){const sizes=new Map(),parts=await Promise.all(url.chunks.map((u,i)=>part(u,(n,t)=>{sizes.set(i,[n,t]);if(progress)progress([...sizes.values()].reduce((a,v)=>a+v[0],0),url.compressedBytes||[...sizes.values()].reduce((a,v)=>a+v[1],0))})));const length=parts.reduce((n,p)=>n+p.byteLength,0),a=new Uint8Array(length);let at=0;for(const p of parts){a.set(new Uint8Array(p),at);at+=p.byteLength}bytes=a.buffer; if(url.gzip)bytes=await new Response(new Blob([bytes]).stream().pipeThrough(new DecompressionStream('gzip'))).arrayBuffer(); if(url.bytes&&bytes.byteLength!==url.bytes)throw Error('Model length mismatch'); if(url.sha256){const hash=Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256',bytes)),b=>b.toString(16).padStart(2,'0')).join('');if(hash!==url.sha256)throw Error('Model integrity mismatch')} }else bytes=await part(url,progress); remember(key,bytes);return bytes; })();inflight.set(key,task);try{return await task}finally{inflight.delete(key)} } const api={read,stats,prime:url=>url?read(url).catch(()=>null):Promise.resolve(null)}; host.OPENROAD_MODEL_BYTES=api;window.OPENROAD_MODEL_BYTES=api; })(); </script></head><body><script>(()=>{"use strict";let n=null,o=null,d=null,r=0,a=!1;function s(e){n&&o&&window.parent.postMessage({...e,type:"openroad-flow:"+e.type,token:n},o)}function u(){if(a=!1,!document.body)return;const e=Math.ceil(document.body.getBoundingClientRect().height)+2;e!==r&&(r=e,s({type:"height",height:e}))}function t(){a||(a=!0,requestAnimationFrame(u))}window.OPENROAD_SHOPIFY.go=e=>{if(["join","build","share"].includes(e)){if(!n){d=e;return}s({type:"navigate",stage:e})}},window.OPENROAD_SHOPIFY.download=(e,i)=>{if(!n)throw Error("Please wait for the page to finish loading.");s({type:"download",blob:e,filename:i})},window.addEventListener("message",e=>{if(e.source===window.parent){if(e.data?.type==="openroad-flow:continue"&&e.origin===o&&e.data.token===n){document.getElementById("joinForm")?.requestSubmit();return}if(!(e.data?.type!=="openroad-flow:init"||typeof e.data.token!="string"||e.data.token.length<16)&&!(o&&e.origin!==o)&&(o=e.origin,n=e.data.token,r=0,t(),d)){const i=d;d=null,window.OPENROAD_SHOPIFY.go(i)}}}),document.addEventListener("click",e=>{const i=e.target.closest?.("a[data-openroad-step]");!i||e.defaultPrevented||(e.preventDefault(),window.OPENROAD_SHOPIFY.go(i.dataset.openroadStep))}),new ResizeObserver(t).observe(document.body),window.addEventListener("resize",t),window.addEventListener("load",t),document.addEventListener("load",t,!0),document.fonts?.ready.then(t),window.parent!==window&&window.parent.postMessage({type:"openroad-flow:ready"},"*"),t()})(); </script><style> :root{--bg:#080b0e;--panel:#12191f;--panel2:#1a242c;--line:#33414b;--lime:#c8ff55;--text:#f5f7f8;--muted:#9eacb6;--red:#ff6c60}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:Arial,Helvetica,sans-serif}button,select,input{font:inherit}.wrap{max-width:1440px;margin:auto;padding:18px}.topbar{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}.brand{font-weight:950;letter-spacing:2px;font-size:25px}.brand span,.lime{color:var(--lime)}.campaign{font-size:12px;color:var(--muted);text-align:right}.hero{margin:18px 0;padding:30px;border-radius:18px;background:linear-gradient(90deg,rgba(6,9,12,.96),rgba(6,9,12,.48)),url('https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-0.png?v=1793017325') center/cover;min-height:240px;display:flex;align-items:center}.hero>div{max-width:680px}.eyebrow{color:var(--lime);font-size:12px;font-weight:900;letter-spacing:2px}.hero h1{font-size:clamp(38px,6vw,72px);line-height:.95;margin:12px 0}.hero p{color:#d4dde2;line-height:1.55}.builder{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(390px,.8fr);gap:16px}.panel{background:var(--panel);border:1px solid #202d36;border-radius:16px}.stage-panel{padding:16px}.vehiclebar{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:12px}.field label{display:block;font-size:10px;letter-spacing:1px;color:var(--muted);margin:0 0 5px}.field select{width:100%;background:#0c1217;color:#fff;border:1px solid var(--line);border-radius:8px;padding:10px}.stage{position:relative;min-height:520px;overflow:hidden;border-radius:14px;background:radial-gradient(circle at 50% 48%,#e9eef0 0,#b9c3c8 48%,#6e7a82 100%);touch-action:none}.stage canvas{position:absolute;inset:0;width:100%;height:100%;z-index:2}.model-fallback{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:1}.model-progress{position:absolute;z-index:8;left:50%;top:50%;transform:translate(-50%,-50%);width:min(360px,70%);padding:16px;background:rgba(8,12,15,.9);border:1px solid #59656c;border-radius:12px;text-align:center}.model-progress b{font-size:11px;letter-spacing:1px}.model-track{height:7px;background:#3b474e;border-radius:8px;overflow:hidden;margin-top:10px}.model-track span{display:block;width:0;height:100%;background:var(--lime);transition:width .2s}.stage-ui{position:absolute;z-index:7;inset:14px 14px auto 14px;display:flex;justify-content:space-between;gap:10px;pointer-events:none}.stage-ui button{pointer-events:auto}.badge{background:rgba(6,10,13,.8);border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:8px 10px;font-size:11px;backdrop-filter:blur(8px)}.viewbar{position:absolute;z-index:7;left:50%;bottom:15px;transform:translateX(-50%);display:flex;gap:7px;padding:6px;background:rgba(4,7,9,.82);border-radius:10px}.viewbar button,.reset{border:1px solid #52616b;background:#182127;color:#fff;border-radius:7px;padding:8px 11px;font-weight:800;font-size:11px}.viewbar button.active{background:var(--lime);color:#0b100c}.stage-note{display:flex;justify-content:space-between;gap:12px;margin-top:12px;color:var(--muted);font-size:12px}.config{overflow:hidden}.config-head{padding:18px;border-bottom:1px solid var(--line)}.budget-row{display:flex;justify-content:space-between;align-items:end}.budget-row strong{font-size:30px;color:var(--lime)}.track{height:8px;background:#35414a;border-radius:9px;overflow:hidden;margin-top:10px}.fill{height:100%;width:0;background:var(--lime);transition:.25s}.tabs{display:flex;gap:6px;overflow:auto;padding:12px;border-bottom:1px solid var(--line)}.tabs button{white-space:nowrap;border:0;border-radius:7px;padding:9px 11px;background:#26333d;color:#dce5ea;font-size:11px;font-weight:900}.tabs button.active{background:var(--lime);color:#101510}.catalog{display:grid;gap:10px;padding:12px;max-height:650px;overflow:auto}.product{display:grid;grid-template-columns:92px 1fr auto;gap:11px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}.product.selected{border-color:var(--lime);box-shadow:0 0 0 1px var(--lime) inset}.product img{width:92px;height:78px;object-fit:cover;border-radius:8px;background:#fff}.product h3{font-size:14px;margin:0 0 5px}.product p{font-size:11px;color:var(--muted);margin:0}.price{font-weight:900;color:var(--lime);margin-top:6px}.add{width:34px;height:34px;border-radius:50%;border:0;background:var(--lime);font-size:20px;font-weight:900}.add.remove{background:#fff}.add:disabled{opacity:.35}.summary{padding:15px;border-top:1px solid var(--line)}.picked{display:flex;gap:6px;flex-wrap:wrap;min-height:29px}.chip{border:1px solid #52616b;background:#202c34;border-radius:99px;padding:6px 9px;font-size:10px}.warning{display:none;margin:10px 0;padding:9px 11px;background:#412e23;color:#ffd4a4;border-left:3px solid #ffb35c;font-size:11px;line-height:1.45}.warning.show{display:block}.submit{width:100%;border:0;border-radius:9px;padding:14px;background:var(--lime);font-weight:950;color:#0b110c}.submit:disabled{opacity:.38}.source{font-size:10px;color:#73838e;margin-top:9px;line-height:1.45}.rules{margin:18px 0;padding:22px}.rules h2{margin-top:0}.rulegrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.rule{padding:14px;border-radius:10px;background:#19232a}.rule b{display:block;color:var(--lime);margin-bottom:6px}.rule span{color:var(--muted);font-size:12px;line-height:1.4}.modal{position:fixed;inset:0;background:rgba(0,0,0,.78);z-index:20;display:none;place-items:center;padding:20px}.modal.open{display:grid}.modal-card{width:min(620px,100%);background:#152028;border:1px solid var(--line);padding:25px;border-radius:16px}.modal-card h2{margin-top:0}.modal-card input{width:100%;padding:12px;border:1px solid var(--line);border-radius:8px;background:#0b1115;color:#fff;margin:8px 0 14px}.close{float:right;background:transparent;color:#fff;border:0;font-size:25px}.legal{color:var(--muted);font-size:11px;line-height:1.5}@media(max-width:920px){.builder{grid-template-columns:1fr}.config{display:flex;flex-direction:column}.catalog{max-height:none}.stage{min-height:430px}.rulegrid{grid-template-columns:1fr 1fr}}@media(max-width:600px){.wrap{padding:10px}.hero{padding:22px;min-height:260px}.vehiclebar{grid-template-columns:1fr 1fr}.stage{min-height:390px}.product{grid-template-columns:76px 1fr auto}.product img{width:76px;height:68px}.rulegrid{grid-template-columns:1fr}.campaign{display:none}.stage-note{flex-direction:column}.viewbar{width:calc(100% - 20px);justify-content:center;overflow:auto}.viewbar button{padding:7px 8px;white-space:nowrap}} /* Red/black campaign theme */ :root{--bg:#050505;--panel:#111011;--panel2:#1b1112;--line:#5b2022;--lime:#ef241c;--text:#f8f4ef;--muted:#b8a9a8;--red:#ff443b} body{background:radial-gradient(circle at 40% 10%,#260000 0,transparent 28%),#050505}.panel{border-color:#4c1c1e}.hero{margin-top:0;border:1px solid #5d1d1f;border-radius:0;background:linear-gradient(90deg,rgba(6,4,4,.97),rgba(30,0,0,.58)),url('https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-0.png?v=1793017325') center/cover}.hero h1{white-space:nowrap;text-shadow:0 5px 0 #4a0000}.stage{background:radial-gradient(circle at 50% 48%,#d9d2d2 0,#968c8c 48%,#3f3435 100%)}.field select{background:#130b0c;border-color:#673033}.tabs button{background:#2a181a}.viewbar button,.reset{background:#211314;border-color:#6e3032}.product.selected{box-shadow:0 0 0 1px var(--lime) inset}.add.remove{background:#f8f4ef;color:#111}.track{background:#3b2527}.chip{background:#281719;border-color:#713638}.warning{background:#421517;color:#ffd0cc;border-color:#ef241c}.submit{color:#fff;background:linear-gradient(135deg,#ff3027,#a80000)}.modal-card{background:#150d0e;border-color:#682629}.modal-card input{background:#080606;border-color:#713033}.rules{display:none}.topbar{display:none} @media(max-width:760px){.hero h1{white-space:normal}} .vehiclebar{grid-template-columns:repeat(4,minmax(0,1fr))}.vehiclebar .field select{padding:12px}@media(max-width:1080px){.vehiclebar{grid-template-columns:1fr 1fr}}@media(max-width:600px){.vehiclebar{grid-template-columns:1fr}} .cap-tuner{margin-top:12px;padding:14px;border:1px solid #5b2022;border-radius:12px;background:#0d090a}.cap-tuner[hidden]{display:none}.cap-tuner-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}.cap-tuner-head strong{font-size:13px;letter-spacing:1px}.cap-tuner-head span{font-size:10px;color:var(--muted)}.tuner-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.tuner-control{display:grid;grid-template-columns:1fr 48px;gap:7px;align-items:center}.tuner-control label{grid-column:1/-1;font-size:10px;color:#d8caca;letter-spacing:.7px}.tuner-control input[type=range]{width:100%;accent-color:var(--lime)}.tuner-control output{font-size:10px;text-align:right;color:#fff}.tuner-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:13px}.tuner-actions button{border:1px solid #753033;background:#241112;color:#fff;border-radius:7px;padding:8px 11px;font-size:10px;font-weight:900}.tuner-actions button.primary{background:var(--lime);border-color:var(--lime)}.tuner-message{min-height:16px;margin-top:8px;color:#d7b9b7;font-size:10px}@media(max-width:600px){.tuner-grid{grid-template-columns:1fr 1fr}} .stage-actions{display:grid;justify-items:end;gap:7px}.stage-gear{display:grid;gap:5px;max-width:220px}.stage-gear:empty{display:none}.stage-gear span{background:rgba(33,8,9,.9);border:1px solid #ef241c;border-radius:7px;padding:6px 8px;color:#fff;font-size:9px;font-weight:800;text-align:right;letter-spacing:.3px}@media(max-width:600px){.stage-gear{max-width:150px}} [hidden]{display:none!important}.step-title{font-size:16px;margin:2px 0 14px}.step-title b{display:inline-grid;place-items:center;background:var(--lime);border-radius:50%;width:25px;height:25px;margin-right:8px;color:#fff;font-size:12px}.step-title small{display:block;margin:9px 0;color:var(--muted);font-size:12px;font-weight:400;line-height:1.5}.config.locked #tabs,.config.locked #catalog,.config.locked .summary{display:none}.config-lock{padding:32px 22px;color:var(--muted);line-height:1.7}.stage-empty{position:absolute;inset:0;display:grid;place-content:center;text-align:center;padding:28px;color:#fff;background:radial-gradient(ellipse at center,#432021,#130e0f);z-index:1}.stage-empty strong{font-size:26px}.stage-empty p{font-size:13px;color:#d5baba;max-width:350px;line-height:1.7}.stage-gear{grid-template-columns:repeat(2,minmax(0,1fr));width:220px;max-height:340px;overflow:auto;pointer-events:auto}.gear-card{position:relative;background:rgba(20,12,13,.94);border:1px solid #793236;border-radius:9px;overflow:hidden;margin:0}.gear-card img{display:block;width:100%;height:75px;object-fit:contain;background:#fff}.gear-card figcaption{padding:7px;font-size:10px;line-height:1.4}.gear-card button{position:absolute;right:3px;top:3px;width:22px;height:22px;background:#180e0f;color:#fff;border:0;border-radius:50%;cursor:pointer}.product{position:relative}.product-choice{display:contents}.product img{object-fit:contain}.mode-label{font-size:10px;color:#cfb7b6;display:block;margin-top:5px}.config-head .step-title{margin-bottom:18px}.stage-ui .badge{max-width:300px}.stage-ui{gap:6px}.hero p{max-width:580px}.asset-note{padding:12px;color:var(--muted);font-size:11px;line-height:1.6}.asset-note button{background:#281719;border:1px solid #713638;color:#fff;padding:7px 10px;border-radius:6px;cursor:pointer}.model-status-error{color:#ffd0cc}.stage-note{line-height:1.6}@media(max-width:600px){.stage-gear{width:150px;max-height:270px}.gear-card img{height:54px}.stage-ui .badge{max-width:150px;font-size:9px}.stage-empty strong{font-size:21px}} .stage-actions{align-content:start}.reset{align-self:start}</style> <main class="wrap build-page"> <section class="builder" id="builderLayout" aria-label="Dream Setup configurator"> <div class="panel stage-panel"> <a class="back-link" href="#openroad-step-join" data-openroad-step="join">← Back to campaign</a><h2 class="step-title"><b>1</b> CHOOSE YOUR TRUCK<small>Select make, model, year and bed length to start.</small></h2><div class="vehiclebar"> <div class="field"><label for="makeFitment">MAKE</label><select id="makeFitment"></select></div> <div class="field"><label for="modelFitment">MODEL</label><select id="modelFitment"></select></div> <div class="field"><label for="yearFitment">YEAR</label><select id="yearFitment"></select></div> <div class="field"><label for="bedFitment">BED LENGTH</label><select id="bedFitment"></select></div> </div> <div class="other-vehicle" id="otherVehicleField" hidden><label for="otherVehicle">OTHER · YOUR VEHICLE</label><input id="otherVehicle" maxlength="150" placeholder="Make, model, year and bed length"><p>Aluminum truck caps, glass truck caps and retractable covers are unavailable for other vehicles.</p></div><p class="source" id="vehiclePreviewNote" hidden></p><div class="preview-layout" id="previewLayout"><div class="stage" id="stage"> <div class="stage-empty" id="stageEmpty"><strong>Your build starts here.</strong><p>Choose your truck using the four filters above, then select your gear on the right.</p></div><div class="stage-ui"><div><div class="badge" id="vehicleName">CHOOSE YOUR TRUCK</div><div class="badge" id="modelStatus" role="status" aria-live="polite" style="margin-top:6px">WAITING FOR VEHICLE SELECTION</div></div><div class="stage-actions"><button class="reset" id="resetView">RESET VIEW</button></div></div> <img hidden class="model-fallback" id="modelFallback" alt="OPENROAD vehicle fallback" src="https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-0.png?v=1793017325" width="1200" height="640"> <canvas id="modelCanvas" hidden aria-label="Interactive truck and selected products 3D preview"></canvas> <div class="model-progress" id="modelProgress" hidden><b>LOADING 3D MODEL · 0%</b><div class="model-track"><span></span></div></div> <div class="viewbar"><button data-camera="front">FRONT</button><button data-camera="side">SIDE</button><button data-camera="rear">REAR</button><button id="autoRotate">AUTO ROTATE</button></div> </div> <aside class="preview-cards" id="previewCards" hidden aria-label="Selected product photo cards"><h3>SELECTED GEAR</h3><div class="stage-gear" id="stageGear" aria-label="Selected gear photos" aria-live="polite"></div></aside></div> <div class="stage-note"><span>DRAG TO ROTATE · SCROLL TO ZOOM</span><span>FIRST PICK IN 3D · EXTRA PICKS AS PHOTOS AT RIGHT</span></div> <div class="asset-note">Have the model files? <button type="button" id="importAssets">Import model folder</button><input hidden type="file" id="assetFolder" webkitdirectory multiple><span id="assetMessage" role="status"></span></div> </div> <aside class="panel config locked" id="configPanel"> <div class="config-head"><h2 class="step-title"><b>2</b> BUILD YOUR SETUP<small id="setupSubhead">Truck cap, RTT, covers and awnings in 3D · Extra selections as photos</small></h2><div class="eyebrow">YOUR DREAM SETUP</div><div class="budget-row"><div><strong id="remaining">$5,000.00</strong><div class="source">REMAINING BUDGET</div></div><div><b id="itemCount">0 PRODUCTS</b><div class="source">PRODUCTS</div></div></div><div class="track"><div class="fill" id="fill"></div></div></div> <div class="config-mode-switch" hidden inert aria-hidden="true"><button type="button" id="showProductsMode" class="active">选择产品</button><button type="button" id="showTuneMode">安装参数调节</button><button type="button" id="showAwningTuneMode">Awning 调节</button></div><div id="awningTuneHint" class="awning-tune-hint" role="status" hidden></div><div class="config-lock" id="configLock">Start with your truck.<br>Complete the four filters on the left to browse compatible gear.</div><div class="tabs" id="tabs"></div> <div class="catalog" id="catalog"></div> <div class="summary"><div class="picked" id="picked"><span class="source">No gear selected yet.</span></div><div class="warning" id="warning"></div><button class="submit" id="submit" disabled>CHOOSE YOUR GEAR</button><div class="source">Choose different eligible products. Total must not exceed $5,000.</div></div> <div id="calibrationMode" class="calibration-mode" hidden inert aria-hidden="true"><section id="calibrationToolbar" class="calibration-toolbar" aria-label="车型参数保存与备份"><strong>安装参数 · 按车型和产品分别保存</strong><p>先在右侧选择高盖、RTT、货箱盖或遮阳棚,即可显示调节面板。面板对应当前三维模型,按车型和产品独立保存到当前浏览器,可导出备份。</p><div class="tuner-actions"><button id="saveAllFitTunes" class="primary" disabled>保存本车全部参数</button><button id="exportFitTunes">导出全部车型参数</button><button id="importFitTunes">导入参数</button><button id="viewFitTunes">查看已保存参数</button><input id="fitTunesFile" type="file" accept=".json,application/json" hidden></div><details id="fitParameterDetails" hidden><summary>已保存参数 JSON</summary><textarea id="fitParameterText" readonly rows="10" aria-label="已保存安装参数 JSON" style="width:100%;background:#180e10;color:#f5eded;font-size:11px"></textarea></details><div id="calibrationMessage" class="tuner-message" role="status" aria-live="polite"></div></section><section class="cap-tuner" id="capTuner" hidden aria-label="高盖安装调节 · TRUCK CAP"><div class="cap-tuner-head"><strong>高盖安装调节 · TRUCK CAP</strong><span id="capTuneVehicle"></span></div><div class="tuner-grid"><div class="tuner-control"><label for="cap-scaleLong">长度 / 沿车身</label><input id="cap-scaleLong" data-tune-key="scaleLong" type="range" min="10" max="300" step="0.1" value="100"><input class="tune-number" type="number" aria-label="高盖安装调节 · TRUCK CAP 长度 / 沿车身 数值" min="10" max="300" step="0.1" value="100"><output>100%</output></div><div class="tuner-control"><label for="cap-scaleShort">宽度 / 横向</label><input id="cap-scaleShort" data-tune-key="scaleShort" type="range" min="10" max="300" step="0.1" value="100"><input class="tune-number" type="number" aria-label="高盖安装调节 · TRUCK CAP 宽度 / 横向 数值" min="10" max="300" step="0.1" value="100"><output>100%</output></div><div class="tuner-control"><label for="cap-scaleY">高度</label><input id="cap-scaleY" data-tune-key="scaleY" type="range" min="10" max="300" step="0.1" value="100"><input class="tune-number" type="number" aria-label="高盖安装调节 · TRUCK CAP 高度 数值" min="10" max="300" step="0.1" value="100"><output>100%</output></div><div class="tuner-control"><label for="cap-rotationX">俯仰 / X 轴</label><input id="cap-rotationX" data-tune-key="rotationX" type="range" min="-180" max="180" step="0.1" value="0"><input class="tune-number" type="number" aria-label="高盖安装调节 · TRUCK CAP 俯仰 / X 轴 数值" min="-180" max="180" step="0.1" value="0"><output>0°</output></div><div class="tuner-control"><label for="cap-rotationY">方向 / Y 轴</label><input id="cap-rotationY" data-tune-key="rotationY" type="range" min="-180" max="180" step="0.1" value="0"><input class="tune-number" type="number" aria-label="高盖安装调节 · TRUCK CAP 方向 / Y 轴 数值" min="-180" max="180" step="0.1" value="0"><output>0°</output></div><div class="tuner-control"><label for="cap-rotationZ">侧倾 / Z 轴</label><input id="cap-rotationZ" data-tune-key="rotationZ" type="range" min="-180" max="180" step="0.1" value="0"><input class="tune-number" type="number" aria-label="高盖安装调节 · TRUCK CAP 侧倾 / Z 轴 数值" min="-180" max="180" step="0.1" value="0"><output>0°</output></div><div class="tuner-control"><label for="cap-moveLong">前后位置 / 车长 %</label><input id="cap-moveLong" data-tune-key="moveLong" type="range" min="-100" max="100" step="0.1" value="0"><input class="tune-number" type="number" aria-label="高盖安装调节 · TRUCK CAP 前后位置 / 车长 % 数值" min="-100" max="100" step="0.1" value="0"><output>0%</output></div><div class="tuner-control"><label for="cap-moveShort">左右位置 / 车宽 %</label><input id="cap-moveShort" data-tune-key="moveShort" type="range" min="-100" max="100" step="0.1" value="0"><input class="tune-number" type="number" aria-label="高盖安装调节 · TRUCK CAP 左右位置 / 车宽 % 数值" min="-100" max="100" step="0.1" value="0"><output>0%</output></div><div class="tuner-control"><label for="cap-moveY">上下位置 / 车高 %</label><input id="cap-moveY" data-tune-key="moveY" type="range" min="-100" max="100" step="0.1" value="0"><input class="tune-number" type="number" aria-label="高盖安装调节 · TRUCK CAP 上下位置 / 车高 % 数值" min="-100" max="100" step="0.1" value="0"><output>0%</output></div></div><div class="tuner-actions"><button type="button" id="resetCapTune">恢复自动匹配</button><button type="button" class="primary" id="saveCapTune">保存此车型参数</button></div><div class="tuner-message" id="capTuneMessage" role="status" aria-live="polite"></div></section><section class="cap-tuner" id="rttTuner" hidden aria-label="RTT 安装调节"><div class="cap-tuner-head"><strong>RTT 安装调节</strong><span id="rttTuneVehicle"></span></div><div class="tuner-grid"><div class="tuner-control"><label for="rtt-scale">整体尺寸</label><input id="rtt-scale" data-tune-key="scale" type="range" min="10" max="300" step="0.1" value="100"><input class="tune-number" type="number" aria-label="RTT 安装调节 整体尺寸 数值" min="10" max="300" step="0.1" value="100"><output>100%</output></div><div class="tuner-control"><label for="rtt-scaleLong">长度 / 沿车身</label><input id="rtt-scaleLong" data-tune-key="scaleLong" type="range" min="10" max="300" step="0.1" value="100"><input class="tune-number" type="number" aria-label="RTT 安装调节 长度 / 沿车身 数值" min="10" max="300" step="0.1" value="100"><output>100%</output></div><div class="tuner-control"><label for="rtt-scaleShort">宽度 / 横向</label><input id="rtt-scaleShort" data-tune-key="scaleShort" type="range" min="10" max="300" step="0.1" value="100"><input class="tune-number" type="number" aria-label="RTT 安装调节 宽度 / 横向 数值" min="10" max="300" step="0.1" value="100"><output>100%</output></div><div class="tuner-control"><label for="rtt-scaleY">高度</label><input id="rtt-scaleY" data-tune-key="scaleY" type="range" min="10" max="300" step="0.1" value="100"><input class="tune-number" type="number" aria-label="RTT 安装调节 高度 数值" min="10" max="300" step="0.1" value="100"><output>100%</output></div><div class="tuner-control"><label for="rtt-rotationX">俯仰 / X 轴</label><input id="rtt-rotationX" data-tune-key="rotationX" type="range" min="-180" max="180" step="0.1" value="0"><input class="tune-number" type="number" aria-label="RTT 安装调节 俯仰 / X 轴 数值" min="-180" max="180" step="0.1" value="0"><output>0°</output></div><div class="tuner-control"><label for="rtt-rotationY">方向 / Y 轴</label><input id="rtt-rotationY" data-tune-key="rotationY" type="range" min="-180" max="180" step="0.1" value="0"><input class="tune-number" type="number" aria-label="RTT 安装调节 方向 / Y 轴 数值" min="-180" max="180" step="0.1" value="0"><output>0°</output></div><div class="tuner-control"><label for="rtt-rotationZ">侧倾 / Z 轴</label><input id="rtt-rotationZ" data-tune-key="rotationZ" type="range" min="-180" max="180" step="0.1" value="0"><input class="tune-number" type="number" aria-label="RTT 安装调节 侧倾 / Z 轴 数值" min="-180" max="180" step="0.1" value="0"><output>0°</output></div><div class="tuner-control"><label for="rtt-moveLong">前后位置 / 车长 %</label><input id="rtt-moveLong" data-tune-key="moveLong" type="range" min="-100" max="100" step="0.1" value="0"><input class="tune-number" type="number" aria-label="RTT 安装调节 前后位置 / 车长 % 数值" min="-100" max="100" step="0.1" value="0"><output>0%</output></div><div class="tuner-control"><label for="rtt-moveShort">左右位置 / 车宽 %</label><input id="rtt-moveShort" data-tune-key="moveShort" type="range" min="-100" max="100" step="0.1" value="0"><input class="tune-number" type="number" aria-label="RTT 安装调节 左右位置 / 车宽 % 数值" min="-100" max="100" step="0.1" value="0"><output>0%</output></div><div class="tuner-control"><label for="rtt-moveY">上下位置 / 车高 %</label><input id="rtt-moveY" data-tune-key="moveY" type="range" min="-100" max="100" step="0.1" value="0"><input class="tune-number" type="number" aria-label="RTT 安装调节 上下位置 / 车高 % 数值" min="-100" max="100" step="0.1" value="0"><output>0%</output></div></div><div class="tuner-actions"><button type="button" id="resetRttTune">恢复自动匹配</button><button type="button" class="primary" id="saveRttTune">保存此车型参数</button></div><div class="tuner-message" id="rttTuneMessage" role="status" aria-live="polite"></div></section><section class="cap-tuner" id="coverTuner" hidden aria-label="货箱盖安装调节"><div class="cap-tuner-head"><strong>货箱盖安装调节</strong><span id="coverTuneVehicle"></span></div><div class="tuner-grid"><div class="tuner-control"><label for="cover-scale">整体尺寸</label><input id="cover-scale" data-tune-key="scale" type="range" min="10" max="300" step="0.1" value="100"><input class="tune-number" type="number" aria-label="货箱盖安装调节 整体尺寸 数值" min="10" max="300" step="0.1" value="100"><output>100%</output></div><div class="tuner-control"><label for="cover-scaleLong">长度 / 沿车身</label><input id="cover-scaleLong" data-tune-key="scaleLong" type="range" min="10" max="300" step="0.1" value="100"><input class="tune-number" type="number" aria-label="货箱盖安装调节 长度 / 沿车身 数值" min="10" max="300" step="0.1" value="100"><output>100%</output></div><div class="tuner-control"><label for="cover-scaleShort">宽度 / 横向</label><input id="cover-scaleShort" data-tune-key="scaleShort" type="range" min="10" max="300" step="0.1" value="100"><input class="tune-number" type="number" aria-label="货箱盖安装调节 宽度 / 横向 数值" min="10" max="300" step="0.1" value="100"><output>100%</output></div><div class="tuner-control"><label for="cover-scaleY">高度</label><input id="cover-scaleY" data-tune-key="scaleY" type="range" min="10" max="300" step="0.1" value="100"><input class="tune-number" type="number" aria-label="货箱盖安装调节 高度 数值" min="10" max="300" step="0.1" value="100"><output>100%</output></div><div class="tuner-control"><label for="cover-rotationX">俯仰 / X 轴</label><input id="cover-rotationX" data-tune-key="rotationX" type="range" min="-180" max="180" step="0.1" value="0"><input class="tune-number" type="number" aria-label="货箱盖安装调节 俯仰 / X 轴 数值" min="-180" max="180" step="0.1" value="0"><output>0°</output></div><div class="tuner-control"><label for="cover-rotationY">方向 / Y 轴</label><input id="cover-rotationY" data-tune-key="rotationY" type="range" min="-180" max="180" step="0.1" value="0"><input class="tune-number" type="number" aria-label="货箱盖安装调节 方向 / Y 轴 数值" min="-180" max="180" step="0.1" value="0"><output>0°</output></div><div class="tuner-control"><label for="cover-rotationZ">侧倾 / Z 轴</label><input id="cover-rotationZ" data-tune-key="rotationZ" type="range" min="-180" max="180" step="0.1" value="0"><input class="tune-number" type="number" aria-label="货箱盖安装调节 侧倾 / Z 轴 数值" min="-180" max="180" step="0.1" value="0"><output>0°</output></div><div class="tuner-control"><label for="cover-moveLong">前后位置 / 车长 %</label><input id="cover-moveLong" data-tune-key="moveLong" type="range" min="-100" max="100" step="0.1" value="0"><input class="tune-number" type="number" aria-label="货箱盖安装调节 前后位置 / 车长 % 数值" min="-100" max="100" step="0.1" value="0"><output>0%</output></div><div class="tuner-control"><label for="cover-moveShort">左右位置 / 车宽 %</label><input id="cover-moveShort" data-tune-key="moveShort" type="range" min="-100" max="100" step="0.1" value="0"><input class="tune-number" type="number" aria-label="货箱盖安装调节 左右位置 / 车宽 % 数值" min="-100" max="100" step="0.1" value="0"><output>0%</output></div><div class="tuner-control"><label for="cover-moveY">上下位置 / 车高 %</label><input id="cover-moveY" data-tune-key="moveY" type="range" min="-100" max="100" step="0.1" value="0"><input class="tune-number" type="number" aria-label="货箱盖安装调节 上下位置 / 车高 % 数值" min="-100" max="100" step="0.1" value="0"><output>0%</output></div></div><div class="tuner-actions"><button type="button" id="resetCoverTune">恢复自动匹配</button><button type="button" class="primary" id="saveCoverTune">保存此车型参数</button></div><div class="tuner-message" id="coverTuneMessage" role="status" aria-live="polite"></div></section><section class="cap-tuner" id="awningTuner" hidden aria-label="遮阳棚安装调节 · AWNING"><div class="cap-tuner-head"><strong>遮阳棚安装调节 · AWNING</strong><span id="awningTuneVehicle"></span></div><div class="tuner-grid"><div class="tuner-control"><label for="awning-scale">整体尺寸</label><input id="awning-scale" data-tune-key="scale" type="range" min="10" max="300" step="0.1" value="100"><input class="tune-number" type="number" aria-label="遮阳棚安装调节 · AWNING 整体尺寸 数值" min="10" max="300" step="0.1" value="100"><output>100%</output></div><div class="tuner-control"><label for="awning-scaleLong">长度 / 沿车身</label><input id="awning-scaleLong" data-tune-key="scaleLong" type="range" min="10" max="300" step="0.1" value="100"><input class="tune-number" type="number" aria-label="遮阳棚安装调节 · AWNING 长度 / 沿车身 数值" min="10" max="300" step="0.1" value="100"><output>100%</output></div><div class="tuner-control"><label for="awning-scaleShort">宽度 / 横向</label><input id="awning-scaleShort" data-tune-key="scaleShort" type="range" min="10" max="300" step="0.1" value="100"><input class="tune-number" type="number" aria-label="遮阳棚安装调节 · AWNING 宽度 / 横向 数值" min="10" max="300" step="0.1" value="100"><output>100%</output></div><div class="tuner-control"><label for="awning-scaleY">高度</label><input id="awning-scaleY" data-tune-key="scaleY" type="range" min="10" max="300" step="0.1" value="100"><input class="tune-number" type="number" aria-label="遮阳棚安装调节 · AWNING 高度 数值" min="10" max="300" step="0.1" value="100"><output>100%</output></div><div class="tuner-control"><label for="awning-rotationX">俯仰 / X 轴</label><input id="awning-rotationX" data-tune-key="rotationX" type="range" min="-180" max="180" step="0.1" value="0"><input class="tune-number" type="number" aria-label="遮阳棚安装调节 · AWNING 俯仰 / X 轴 数值" min="-180" max="180" step="0.1" value="0"><output>0°</output></div><div class="tuner-control"><label for="awning-rotationY">方向 / Y 轴</label><input id="awning-rotationY" data-tune-key="rotationY" type="range" min="-180" max="180" step="0.1" value="0"><input class="tune-number" type="number" aria-label="遮阳棚安装调节 · AWNING 方向 / Y 轴 数值" min="-180" max="180" step="0.1" value="0"><output>0°</output></div><div class="tuner-control"><label for="awning-rotationZ">侧倾 / Z 轴</label><input id="awning-rotationZ" data-tune-key="rotationZ" type="range" min="-180" max="180" step="0.1" value="0"><input class="tune-number" type="number" aria-label="遮阳棚安装调节 · AWNING 侧倾 / Z 轴 数值" min="-180" max="180" step="0.1" value="0"><output>0°</output></div><div class="tuner-control"><label for="awning-moveLong">前后位置 / 车长 %</label><input id="awning-moveLong" data-tune-key="moveLong" type="range" min="-100" max="100" step="0.1" value="0"><input class="tune-number" type="number" aria-label="遮阳棚安装调节 · AWNING 前后位置 / 车长 % 数值" min="-100" max="100" step="0.1" value="0"><output>0%</output></div><div class="tuner-control"><label for="awning-moveShort">左右位置 / 车宽 %</label><input id="awning-moveShort" data-tune-key="moveShort" type="range" min="-100" max="100" step="0.1" value="0"><input class="tune-number" type="number" aria-label="遮阳棚安装调节 · AWNING 左右位置 / 车宽 % 数值" min="-100" max="100" step="0.1" value="0"><output>0%</output></div><div class="tuner-control"><label for="awning-moveY">上下位置 / 车高 %</label><input id="awning-moveY" data-tune-key="moveY" type="range" min="-100" max="100" step="0.1" value="0"><input class="tune-number" type="number" aria-label="遮阳棚安装调节 · AWNING 上下位置 / 车高 % 数值" min="-100" max="100" step="0.1" value="0"><output>0%</output></div></div><div class="tuner-actions"><button type="button" id="resetAwningTune">恢复自动匹配</button><button type="button" class="primary" id="saveAwningTune">保存此车型参数</button></div><div class="tuner-message" id="awningTuneMessage" role="status" aria-live="polite"></div></section></div> </aside> </section> </main> <script>const vehicleFitments=[{make:"Toyota",model:"Tacoma",year:"2016\u20132023",bed:"5 ft",label:"Toyota Tacoma (2016\u20132023) \xB7 5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-tacoma-2016-2023-5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!0,glassCap:!0},{make:"Toyota",model:"Tacoma",year:"2024\u20132026",bed:"5 ft",label:"Toyota Tacoma (2024\u20132026) \xB7 5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-tacoma-2024-2026-5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!0,glassCap:!0},{make:"Toyota",model:"Tacoma",year:"2016\u20132023",bed:"6 ft",label:"Toyota Tacoma (2016\u20132023) \xB7 6 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-tacoma-2016-2023-6ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"Toyota",model:"Tacoma",year:"2024\u20132026",bed:"6 ft",label:"Toyota Tacoma (2024\u20132026) \xB7 6 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-tacoma-2024-2026-6ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"Toyota",model:"Tundra",year:"2014\u20132021",bed:"5.5 ft",label:"Toyota Tundra (2014\u20132021) \xB7 5.5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-tundra-2014-2021-5.5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"Toyota",model:"Tundra",year:"2022\u20132026",bed:"5.5 ft",label:"Toyota Tundra (2022\u20132026) \xB7 5.5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-tundra-2022-2026-5.5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"Jeep",model:"Gladiator",year:"2019\u20132026",bed:"Standard Bed",label:"Jeep Gladiator (2019\u20132026) \xB7 Standard Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-jeep-gladiator-2019-2026.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!0,glassCap:!0},{make:"Chevrolet",model:"Silverado 1500",year:"2019\u20132026",bed:"5.8 ft",label:"Chevrolet Silverado 1500 (2019\u20132026) \xB7 5.8 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-silverado1500-2019-2026-5.8ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"GMC",model:"Sierra 1500",year:"2019\u20132026",bed:"5.8 ft",label:"GMC Sierra 1500 (2019\u20132026) \xB7 5.8 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-gmc-sierra1500-2019-2026-5.8ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"Chevrolet",model:"Colorado",year:"2023\u20132026",bed:"5 ft",label:"Chevrolet Colorado (2023\u20132026) \xB7 5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-colorado-2023-2026-5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"Chevrolet",model:"Colorado",year:"2015\u20132022",bed:"5 ft",label:"Chevrolet Colorado (2015\u20132022) \xB7 5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-colorado-2015-2022-5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"GMC",model:"Canyon",year:"2023\u20132026",bed:"5 ft",label:"GMC Canyon (2023\u20132026) \xB7 5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-colorado-2023-2026-5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1,previewNote:"COLORADO / CANYON SHARED PLATFORM PREVIEW"},{make:"GMC",model:"Canyon",year:"2015\u20132022",bed:"5 ft",label:"GMC Canyon (2015\u20132022) \xB7 5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-colorado-2015-2022-5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1,previewNote:"COLORADO / CANYON SHARED PLATFORM PREVIEW"},{make:"Ford",model:"F-150",year:"2021\u20132026",bed:"5.7 ft",label:"Ford F-150 (2021\u20132026) \xB7 5.7 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-f150-2021-2026-5.7ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"RAM",model:"1500 DT",year:"2019\u20132026",bed:"5.7 ft",label:"RAM 1500 DT (2019\u20132026) \xB7 5.7 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-ram1500-dt-2019-2026-5.7ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"RAM",model:"2500 / 3500",year:"2009\u20132026",bed:"6.4 ft",label:"RAM 2500 / 3500 (2009\u20132026) \xB7 6.4 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-ram2500-3500-2009-2026-6.4ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!1,glassCap:!1},{make:"Nissan",model:"Frontier",year:"2022\u20132026",bed:"5 ft",label:"Nissan Frontier (2022\u20132026) \xB7 5 ft Bed",vehicleModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/vehicle-frontier-2022-2026-5ft.glb"],capModelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],retractableCover:!0,foldingCover:!0,glassCap:!1}]; </script><script>const retractableCoverCatalog=[{id:"tacoma5",label:"Toyota Tacoma (2016\u20132023) \xB7 5 ft",price:549.99,source:"https://openroad4wd.com/products/openroad-aluminum-retractable-tonneau-cover-for-toyota-tacoma-2016-2023-5ft-with-handle",matches:[["Toyota","Tacoma",2016,2023,"5 ft"]]},{id:"tacoma6",label:"Toyota Tacoma (2022\u20132026) \xB7 6 ft",price:649.99,source:"https://openroad4wd.com/products/openroad-aluminum-retractable-tonneau-cover-for-toyota-tacoma-2022-2026-6ft-with-handle",matches:[["Toyota","Tacoma",2022,2026,"6 ft"]]},{id:"jeep",label:"Jeep Gladiator (2019\u20132026) \xB7 5 ft",price:549.99,source:"https://openroad4wd.com/products/openroad-aluminum-retractable-tonneau-cover-for-jeep-gladiator-2019-2026-5ft-with-handle",matches:[["Jeep","Gladiator",2019,2026,"Standard Bed"]]},{id:"f150",label:"Ford F-150 (2004\u20132026) \xB7 5.5 ft",price:649.99,source:"https://openroad4wd.com/products/openroad-aluminum-retractable-tonneau-cover-for-f150-2004-2025-5-5ft-with-handle",matches:[["Ford","F-150",2004,2026,"5.5 ft"]]},{id:"gm",label:"Chevrolet Silverado / GMC Sierra 1500 (2019\u20132026) \xB7 5.8 ft",price:649.99,source:"https://openroad4wd.com/products/openroad-aluminum-retractable-tonneau-cover-for-chevy-silverado-sierra-1500-2019-2026-5-8f-with-handle",matches:[["Chevrolet","Silverado 1500",2019,2026,"5.8 ft"],["GMC","Sierra 1500",2019,2026,"5.8 ft"]]},{id:"ram",label:"RAM 1500 (2009\u20132026) \xB7 5.7 ft",price:649.99,source:"https://openroad4wd.com/products/openroad-aluminum-retractable-tonneau-cover-for-ram-15002009-2026-5-7ft-with-handle",matches:[["RAM","1500 DT",2009,2026,"5.7 ft"]]},{id:"tundra",label:"Toyota Tundra (2007\u20132026) \xB7 5.5 ft",price:549.99,source:"https://openroad4wd.com/products/openroad-aluminum-retractable-tonneau-cover-for-toyota-tundra-2007-2026-5-5ft-with-handle",matches:[["Toyota","Tundra",2007,2026,"5.5 ft"]]},{id:"nissan",label:"Nissan Frontier (2022\u20132026) \xB7 5 ft",price:549.99,source:"https://openroad4wd.com/products/openroad-aluminum-retractable-tonneau-cover-for-nissan-frontier-2022-2026-5-0-ft-with-handle",matches:[["Nissan","Frontier",2022,2026,"5 ft"]]}];function getRetractableFitment(e){if(!e)return null;const a=e.year.match(/\d{4}/g)?.map(Number)||[];return retractableCoverCatalog.find(o=>o.matches.some(([t,r,n,c,d])=>e.make===t&&e.model===r&&(e.bed===d||t==="Ford"&&r==="F-150"&&d==="5.5 ft"&&e.bed==="5.7 ft")&&a.length===2&&a[0]>=n&&a[1]<=c))||null}const foldingCoverFitments=[{make:"Toyota",model:"Tacoma",year:"2016\u20132023",bed:"5 ft"},{make:"Toyota",model:"Tacoma",year:"2024\u20132026",bed:"5 ft"},{make:"Jeep",model:"Gladiator",year:"2019\u20132026",bed:"Standard Bed"},{make:"Nissan",model:"Frontier",year:"2022\u20132026",bed:"5 ft"}];function getFoldingFitment(e){return e&&foldingCoverFitments.find(a=>["make","model","year","bed"].every(o=>a[o]===e[o]))||null}const glassCapFitments=[{make:"Toyota",model:"Tacoma",year:"2016\u20132023",bed:"5 ft"},{make:"Toyota",model:"Tacoma",year:"2024\u20132026",bed:"5 ft"},{make:"Jeep",model:"Gladiator",year:"2019\u20132026",bed:"Standard Bed"}];function getGlassCapFitment(e){return e&&glassCapFitments.find(a=>["make","model","year","bed"].every(o=>a[o]===e[o]))||null} </script><script>const legacyProducts=[{id:"edge",cat:"RTT",name:"EdgeRoof Aluminum Hard Shell RTT",price:1399.99,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-3.jpg"],handle:"openroad-aluminum-hard-shell-roof-top-tent-edgeroof-series-1"},{id:"peak",cat:"RTT",name:"PeakRoof LT V2 RTT",price:2299.99,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-4.jpg"],handle:"aluminum-hard-shell-best-roof-top-tent-peakroof-lt-series"},{id:"flow",cat:"RTT",name:"FlowRoof Side-Open RTT",price:2499.99,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-5.jpg"],handle:"openroad-flowroof-side-open-hard-shell-rooftop-tent"},{id:"a270",cat:"AWNING",name:"270\xB0 Freestanding Awning",price:599.99,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-6.jpg"],handle:"openroad-270-degree-freestanding-awning"},{id:"a180",cat:"AWNING",name:"180\xB0 Freestanding Awning",price:449.99,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-7.jpg"],handle:"180-free-standing-awning"},{id:"cap",cat:"BED SYSTEM",name:"Aluminum Truck Cap",price:2599.99,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-1.jpg"],handle:"openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light"},{id:"tonneau",cat:"BED SYSTEM",name:"Aluminum Retractable Tonneau Cover",price:549.99,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-8.jpg"],handle:"openroad-tonneau-cover"},{id:"rack",cat:"ACCESSORIES",name:"Adjustable Bed Rack",price:549,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-9.jpg"],handle:"openroad-bed-rack"},{id:"ret-f250",cat:"RETRACTABLE TONNEAU",name:"Retractable Tonneau Cover \xB7 Ford F-250",price:549.99,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-8.jpg"],fitment:"Ford F-250 \xB7 2017\u20132026 \xB7 6.75 ft",make:"Ford",model:"F-250",year:"2026",bed:"6.75 ft",modelUrl:"dream-setup-assets/product-models/retractable-f250-2017-2026-6.75ft.glb"},{id:"ret-canyon",cat:"RETRACTABLE TONNEAU",name:"Retractable Tonneau Cover \xB7 GMC Canyon",price:549.99,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-8.jpg"],fitment:"GMC Canyon \xB7 2023\u20132026 \xB7 bed length to confirm",make:"GMC",model:"Canyon",year:"2026",bed:"Not sure",modelUrl:"dream-setup-assets/product-models/retractable-gmc-canyon-2023-2026.glb"},{id:"ret-ridgeline",cat:"RETRACTABLE TONNEAU",name:"Retractable Tonneau Cover \xB7 Honda Ridgeline",price:549.99,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-8.jpg"],fitment:"Honda Ridgeline \xB7 year and bed length to confirm",make:"Honda",model:"Ridgeline",year:"2026",bed:"Not sure",modelUrl:"dream-setup-assets/product-models/retractable-honda-ridgeline.glb"},{id:"ret-ram2500",cat:"RETRACTABLE TONNEAU",name:"Retractable Tonneau Cover \xB7 RAM 2500",price:549.99,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-8.jpg"],fitment:"RAM 2500 \xB7 6.4 ft",make:"RAM",model:"2500",year:"2026",bed:"6.4 ft",modelUrl:"dream-setup-assets/product-models/retractable-ram2500-6.4ft.glb"},{id:"ret-frontier",cat:"RETRACTABLE TONNEAU",name:"Retractable Tonneau Cover \xB7 Nissan Frontier",price:549.99,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-8.jpg"],fitment:"Nissan Frontier \xB7 year and bed length to confirm",make:"Nissan",model:"Frontier",year:"2026",bed:"Not sure",modelUrl:"dream-setup-assets/product-models/retractable-nissan-frontier.glb"},{id:"br-f250",cat:"BED RACK",name:"Bed Rack \xB7 Ford F-250",price:549,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-9.jpg"],fitment:"Ford F-250 \xB7 2017\u20132026 \xB7 6.75 ft",make:"Ford",model:"F-250",year:"2026",bed:"6.75 ft",modelUrl:"dream-setup-assets/product-models/bed-rack-f250-2017-2026-6.75ft.glb"},{id:"br-canyon",cat:"BED RACK",name:"Bed Rack \xB7 GMC Canyon",price:549,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-9.jpg"],fitment:"GMC Canyon \xB7 2023\u20132026 \xB7 bed length to confirm",make:"GMC",model:"Canyon",year:"2026",bed:"Not sure",modelUrl:"dream-setup-assets/product-models/bed-rack-gmc-canyon-2023-2026.glb"},{id:"br-ridgeline",cat:"BED RACK",name:"Bed Rack \xB7 Honda Ridgeline",price:549,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-9.jpg"],fitment:"Honda Ridgeline \xB7 year and bed length to confirm",make:"Honda",model:"Ridgeline",year:"2026",bed:"Not sure",modelUrl:"dream-setup-assets/product-models/bed-rack-honda-ridgeline.glb"},{id:"br-ram2500",cat:"BED RACK",name:"Bed Rack \xB7 RAM 2500",price:549,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-9.jpg"],fitment:"RAM 2500 \xB7 6.4 ft",make:"RAM",model:"2500",year:"2026",bed:"6.4 ft",modelUrl:"dream-setup-assets/product-models/bed-rack-ram2500-6.4ft.glb"},{id:"fold-f150",cat:"FOLDING TONNEAU",name:"Aluminum Folding Tonneau Cover \xB7 Ford F-150",price:549.99,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-8.jpg"],fitment:"Ford F-150 \xB7 2015\u20132026 \xB7 5.5 ft",make:"Ford",model:"F-150",year:"2026",bed:"5.5 ft",modelUrl:"dream-setup-assets/product-models/folding-f150-2015-2026-5.5ft.glb"},{id:"fold-silverado",cat:"FOLDING TONNEAU",name:"Aluminum Folding Tonneau Cover \xB7 Silverado 1500",price:549.99,image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/images/product-8.jpg"],fitment:"Chevrolet Silverado 1500 \xB7 year and bed length to confirm",make:"Chevrolet",model:"Silverado 1500",year:"2026",bed:"Not sure",modelUrl:"dream-setup-assets/product-models/folding-silverado1500.glb"}],products=[{id:"cap",cat:"TRUCK CAP",name:"Aluminum Truck Cap",price:2599.99,image:legacyProducts.find(e=>e.id==="cap").image,modelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/aluminum-truck-cap-universal.glb"],modelMode:"accessory"},{id:"glass-cap",cat:"TRUCK CAP",name:"Sliding Glass Truck Cap",price:null,image:legacyProducts.find(e=>e.id==="cap").image,modelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/sliding-glass-truck-cap.glb"],modelMode:"accessory"},{id:"storage-box",cat:"CAP ACCESSORY",name:"Truck Cap Storage Box",price:null,image:legacyProducts.find(e=>e.id==="cap").image},{id:"cap-crossbars",cat:"CAP ACCESSORY",name:"Aluminum Truck Cap Crossbars",price:null,image:legacyProducts.find(e=>e.id==="cap").image},{id:"glass-roof-rack",cat:"CAP ACCESSORY",name:"Sliding Glass Truck Cap Roof Rack",price:null,image:legacyProducts.find(e=>e.id==="cap").image},{id:"lt-rtt",cat:"RTT",name:"LT RTT",price:2299.99,image:legacyProducts.find(e=>e.id==="peak").image,modelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/lt-rtt.glb"],modelMode:"rtt"},{id:"edge-rtt",cat:"RTT",name:"Edge RTT",price:1399.99,image:legacyProducts.find(e=>e.id==="edge").image,modelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/triangle-rtt.glb"],modelMode:"rtt"},{id:"a270",cat:"AWNING",name:"270\xB0 Awning",price:599.99,image:legacyProducts.find(e=>e.id==="a270").image,modelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/awning-270.glb"],modelMode:"awning"},{id:"a270-trail",cat:"AWNING",name:"270\xB0 Trail Awning",price:null,image:legacyProducts.find(e=>e.id==="a270").image,modelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/awning-270-trail-gray-v3.glb"],modelMode:"awning"},{id:"a270-xl",cat:"AWNING",name:"270\xB0 Awning XL",price:null,image:legacyProducts.find(e=>e.id==="a270").image,modelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/awning-270-plus.glb"],modelMode:"awning"},{id:"a180",cat:"AWNING",name:"180\xB0 Awning",price:449.99,image:legacyProducts.find(e=>e.id==="a180").image,modelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/awning-180.glb"],modelMode:"awning"},{id:"retractable",cat:"TONNEAU COVER",name:"Retractable Tonneau Cover",price:549.99,image:legacyProducts.find(e=>e.id==="tonneau").image,modelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/web-models/retractable-tonneau-cover.glb"],modelMode:"bedCover"},{id:"folding",cat:"TONNEAU COVER",name:"Folding Tonneau Cover",price:549.99,image:legacyProducts.find(e=>e.id==="tonneau").image,modelUrl:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/product-models/folding-tonneau-cover.glb"],modelMode:"bedCover"},{id:"rack",cat:"BED RACK",name:"Bed Rack",price:549,image:legacyProducts.find(e=>e.id==="rack").image}];products.forEach(e=>{["accessory","rtt","bedCover","awning"].includes(e.modelMode)||(delete e.modelMode,delete e.modelUrl)});const officialProductPhotos={cap:{image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/product-photos/cap.png"],source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light"},"glass-cap":{image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/product-photos/glass-cap.png"],source:"https://openroad4wd.com/products/openroad-truck-cap-sliding-glass-side-series"},"storage-box":{image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/product-photos/storage-box.webp"],source:"https://openroad4wd.com/products/openroad-truck-cap-storage-box"},"cap-crossbars":{image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/product-photos/cap-crossbars.png"],source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars"},"glass-roof-rack":{image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/product-photos/glass-roof-rack.png"],source:"https://openroad4wd.com/products/openroad-sliding-glass-roof-rack-crossbars"},"lt-rtt":{image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/product-photos/lt-rtt.png"],source:"https://openroad4wd.com/products/aluminum-hard-shell-best-roof-top-tent-peakroof-lt-series"},"edge-rtt":{image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/product-photos/edge-rtt.png"],source:"https://openroad4wd.com/products/openroad-aluminum-hard-shell-roof-top-tent-edgeroof-series-1"},a270:{image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/product-photos/a270.png"],source:"https://openroad4wd.com/products/openroad-270-degree-freestanding-awning"},"a270-xl":{image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/product-photos/a270-xl.png"],source:"https://openroad4wd.com/products/270-degree-awning-plus"},a180:{image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/product-photos/a180.jpg"],source:"https://openroad4wd.com/products/180-free-standing-awning"},retractable:{image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/product-photos/retractable.png"],source:"https://openroad4wd.com/products/openroad-tonneau-cover"},folding:{image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/product-photos/folding.png"],source:"https://openroad4wd.com/products/openroad-aluminum-folding-tonneau-cover"},rack:{image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/product-photos/rack.png"],source:"https://openroad4wd.com/products/openroad-bed-rack"},"a270-trail":{image:window.OPENROAD_SHOPIFY.urls["dream-setup-assets/product-photos/a270-trail.jpg"],source:"https://openroad4wd.com/products/openroad-270-free-standing-awning-for-camping-trail-series"}};products.forEach(e=>{const a=officialProductPhotos[e.id];a&&(e.image=a.image,e.sourceUrl=a.source)}); </script><script>window.Journey={read(t){try{return JSON.parse(sessionStorage.getItem(t)||"null")}catch{return null}},save(t,e){try{return sessionStorage.setItem(t,JSON.stringify(e)),!0}catch{return!1}},money(t){return"$"+Number(t||0).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},text(t){return String(t??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e])}}; </script><script>function productMountGroup(e){return["accessory","bedCover"].includes(e.modelMode)?"bed":["rtt","awning"].includes(e.modelMode)?e.modelMode:null}function getSetupPresentation(e,u){const d=[...new Set(e)].map(n=>u.find(o=>o.id===n)).filter(Boolean),t=new Set,r=[],i=[];for(const n of d){const o=productMountGroup(n);o&&!t.has(o)?(t.add(o),r.push(n)):i.push(n)}return{ordered:d,models:r,cards:i}}function selectionWithinBudget(e,u,d=5e3){return e.reduce((t,r)=>t+(u.find(i=>i.id===r)?.price||0),0)<=d+1e-7} </script><script>window.VehicleOptions={other:"OTHER",make:e=>["Chevrolet","GMC"].includes(e.make)?"CHEVROLET / GMC":e.make,model(e){return this.make(e)==="CHEVROLET / GMC"?["Colorado","Canyon"].includes(e.model)?"COLORADO / GMC CANYON":e.model.toUpperCase():e.model},fits:vehicleFitments.filter(e=>!(e.make==="GMC"&&e.model==="Canyon")),custom(e,o){return o=o.trim().slice(0,150),o?{make:e&&e!==this.other?e:"Other",model:"Other",year:"Other",bed:"Other",custom:!0,customDetails:o,label:(e&&e!==this.other?e+" \xB7 ":"")+o,previewNote:"Custom vehicle: products are shown as photos. A matching truck model is not available."}:null},fill(e,o,r){e.replaceChildren(new Option(r,""),...o.map(t=>new Option(t===this.other?"Other":t,t))),e.disabled=!o.length}}; </script><script>const officialPriceDefaults={"storage-box":{price:399,variant:"Toyota Tacoma (2016-2023) -5ft / Driver | Pre-Sale | ETA Dec.3",source:"https://openroad4wd.com/products/openroad-truck-cap-storage-box?variant=46721655603363",note:"One storage box \xB7 One side"},"lt-rtt":{price:2499.99,variant:"Standard Shipping",source:"https://openroad4wd.com/products/aluminum-hard-shell-best-roof-top-tent-peakroof-lt-series?variant=44143321350307",note:"Standard shipping \xB7 Tent only"},"edge-rtt":{price:1399.99,variant:"Roof Top Tent Only",source:"https://openroad4wd.com/products/openroad-aluminum-hard-shell-roof-top-tent-edgeroof-series-1?variant=47987755483299",note:"Tent only"},a270:{price:599.99,variant:"Driver / Awning Only",source:"https://openroad4wd.com/products/openroad-270-degree-freestanding-awning?variant=43735140630691",note:"Awning only \xB7 No sidewalls"},"a270-trail":{price:449.99,variant:"Driver",source:"https://openroad4wd.com/products/openroad-270-free-standing-awning-for-camping-trail-series?variant=47525179359395",note:"Awning only"},"a270-xl":{price:899.99,variant:"Driver / Awning Only",source:"https://openroad4wd.com/products/270-degree-awning-plus?variant=45537852162211",note:"Awning only \xB7 No sidewalls"},a180:{price:449.99,variant:"Awning",source:"https://openroad4wd.com/products/180-free-standing-awning?variant=45537859371171",note:"Awning only \xB7 No sidewalls"},folding:{price:399.99,variant:"Toyota Tacoma (2016-2023) -5ft",source:"https://openroad4wd.com/products/openroad-aluminum-folding-tonneau-cover?variant=47561656795299",note:"Folding cover only"},rack:{price:549,variant:"Bed Rack with Rail System",source:"https://openroad4wd.com/products/openroad-bed-rack?variant=45878957539491",note:"One bed rack"}},officialVehiclePrices={"Toyota|Tacoma|2016\u20132023|5 ft":{cap:{price:2599.99,variant:"Toyota Tacoma 2016-2023 -5ft Bed / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=46020937613475",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:199.99,variant:"Toyota Tacoma 2016-2023 -5ft",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=47365878775971",note:"One crossbar set"},"glass-cap":{price:2999.99,variant:"Toyota Tacoma 2016-2023 -5ft",source:"https://openroad4wd.com/products/openroad-truck-cap-sliding-glass-side-series?variant=47548670181539",note:"Glass truck cap only"},"glass-roof-rack":{price:199.99,variant:"Toyota Tacoma 2016-2023 -5ft",source:"https://openroad4wd.com/products/openroad-sliding-glass-roof-rack-crossbars?variant=47799347806371",note:"One rack set"}},"Toyota|Tacoma|2024\u20132026|5 ft":{cap:{price:2599.99,variant:"Toyota Tacoma 2024\u20132026 \xB7 5ft Bed / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=46198498099363",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:199.99,variant:"Toyota Tacoma 2024-2026 -5ft",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=47365878841507",note:"One crossbar set"},"glass-cap":{price:2999.99,variant:"Toyota Tacoma 2024\u20132026 -5ft",source:"https://openroad4wd.com/products/openroad-truck-cap-sliding-glass-side-series?variant=47548670214307",note:"Glass truck cap only"},"glass-roof-rack":{price:199.99,variant:"Toyota Tacoma 2024-2026 \u2013 5ft",source:"https://openroad4wd.com/products/openroad-sliding-glass-roof-rack-crossbars?variant=47799347839139",note:"One rack set"}},"Toyota|Tacoma|2016\u20132023|6 ft":{cap:{price:2599.99,variant:"Toyota Tacoma 2016-2023 -6ft Bed / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=46218110828707",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:199.99,variant:"Toyota Tacoma 2016-2023 -6ft",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=47365878808739",note:"One crossbar set"}},"Toyota|Tacoma|2024\u20132026|6 ft":{cap:{price:2599.99,variant:"Toyota Tacoma 2024\u20132026 \xB7 6ft Bed / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=46020937711779",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:199.99,variant:"Toyota Tacoma 2024-2026 -6ft",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=47365878874275",note:"One crossbar set"}},"Toyota|Tundra|2014\u20132021|5.5 ft":{cap:{price:2899.99,variant:"Toyota Tundra 2014-2021 -5.5ft Bed / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=47466704830627",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:299.99,variant:"Toyota Tundra 2014-2021 -5.5ft",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=47365879005347",note:"One crossbar set"}},"Toyota|Tundra|2022\u20132026|5.5 ft":{cap:{price:2899.99,variant:"Toyota Tundra 2022\u20132026 -5.5ft Bed / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=46243165995171",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:299.99,variant:"Toyota Tundra 2022-2026 -5.5ft",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=47365879038115",note:"One crossbar set"}},"Jeep|Gladiator|2019\u20132026|Standard Bed":{cap:{price:2599.99,variant:"Jeep Gladiator 2019-2026 / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=46020937580707",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:299.99,variant:"Jeep Gladiator 2019-2026",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=47365878907043",note:"One crossbar set"},"glass-cap":{price:2999.99,variant:"Jeep Gladiator 2019-2026",source:"https://openroad4wd.com/products/openroad-truck-cap-sliding-glass-side-series?variant=47548670247075",note:"Glass truck cap only"},"glass-roof-rack":{price:299.99,variant:"Jeep Gladiator 2019-2026",source:"https://openroad4wd.com/products/openroad-sliding-glass-roof-rack-crossbars?variant=47799347773603",note:"One rack set"}},"Chevrolet|Silverado 1500|2019\u20132026|5.8 ft":{cap:{price:2659.99,variant:"Chevrolet Silverado 1500 \uFF082019\u20132026\uFF09 5.8 ft Bed / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=47526932644003",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:299.99,variant:"Chevrolet Silverado 1500 (2019-2026)-5.8 ft",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=48039469777059",note:"One crossbar set"}},"GMC|Sierra 1500|2019\u20132026|5.8 ft":{cap:{price:2659.99,variant:"GMC Sierra 1500 (2019-2026)-5.8 ft Bed / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=50537546481827",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:299.99,note:"One crossbar set",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars",priceAuthority:"User confirmed"}},"Chevrolet|Colorado|2023\u20132026|5 ft":{cap:{price:2899.99,variant:"Chevy Colorado / GMC Canyon 2023\u20132026 \xB7 5ft Bed | Pre-Sale | ETA Nov.15 / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=46243166093475",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:199.99,variant:"Chevy Colorado/GMC Canyon 2023-2026 -5ft",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=47365879103651",note:"One crossbar set"}},"Chevrolet|Colorado|2015\u20132022|5 ft":{cap:{price:2599.99,variant:"Chevy Colorado/GMC Canyon 2015-2022 \xB7 5ft Bed / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=46243166060707",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:199.99,variant:"Chevy Colorado/GMC Canyon 2015-2022 -5ft",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=47365879070883",note:"One crossbar set"}},"GMC|Canyon|2023\u20132026|5 ft":{cap:{price:2899.99,variant:"Chevy Colorado / GMC Canyon 2023\u20132026 \xB7 5ft Bed | Pre-Sale | ETA Nov.15 / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=46243166093475",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:199.99,variant:"Chevy Colorado/GMC Canyon 2023-2026 -5ft",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=47365879103651",note:"One crossbar set"}},"GMC|Canyon|2015\u20132022|5 ft":{cap:{price:2599.99,variant:"Chevy Colorado/GMC Canyon 2015-2022 \xB7 5ft Bed / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=46243166060707",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:199.99,variant:"Chevy Colorado/GMC Canyon 2015-2022 -5ft",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=47365879070883",note:"One crossbar set"}},"Ford|F-150|2021\u20132026|5.7 ft":{cap:{price:2659.99,variant:"Ford F-150 2021\u20132026 \xB7 5.7ft Bed / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=46243165896867",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:299.99,variant:"Ford F-150 2021-2026 -5.5ft",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=47365878939811",note:"One crossbar set"}},"RAM|1500 DT|2019\u20132026|5.7 ft":{cap:{price:2899.99,variant:"Ram 1500 DT 2019\u20132026 \xB7 5.7ft Bed / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=46243165929635",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:299.99,variant:"Dodge RAM 1500 DT 2019-2026 -5.7ft",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=47365878972579",note:"One crossbar set"}},"RAM|2500 / 3500|2009\u20132026|6.4 ft":{cap:{price:3199.99,variant:"RAM 2500/3500 2009-2026 -6.4ft Bed / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=46243165962403",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:299.99,variant:"RAM 2500/3500 2020-2026 -6.4ft",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=47365879136419",note:"One crossbar set"}},"Nissan|Frontier|2022\u20132026|5 ft":{cap:{price:2599.99,variant:"Nissan Frontier \uFF082022-2026\uFF095.0 ft Bed / No Add-on",source:"https://openroad4wd.com/products/openroad-truck-cap-with-full-wing-doors-front-and-rear-windows-3rd-brake-light?variant=47526932709539",note:"Truck cap only \xB7 No add-ons"},"cap-crossbars":{price:199.99,variant:"Nissan Frontier \uFF082022-2026\uFF095.0 ft",source:"https://openroad4wd.com/products/openroad-truck-cap-cross-bars?variant=47798242738339",note:"One crossbar set"}}};function applyProductPrices(r){const t=r&&!r.custom?officialVehiclePrices[[r.make,r.model,r.year,r.bed].join("|")]:null;for(const o of products){if(o.id==="retractable")continue;const a=t?.[o.id]||officialPriceDefaults[o.id];o.price=a?.price??null,o.priceNote=a?.note||"Select a listed vehicle to confirm this price",o.priceSource=a?.source||o.sourceUrl,o.priceVariant=a?.variant||""}} </script><script>let selected=[],activeCat="ALL";const budget=5e3,$=e=>document.getElementById(e),money=e=>"$"+e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}),makeFitment=$("makeFitment"),modelFitment=$("modelFitment"),yearFitment=$("yearFitment"),bedFitment=$("bedFitment"),unique=e=>[...new Set(e)];let vehicleChosen=!1,vehicleRevision=0,wasOtherMode=!1;const filterMake=e=>VehicleOptions.make(e),filterModel=e=>VehicleOptions.model(e),filterFitments=VehicleOptions.fits,otherVehicle=$("otherVehicle"),isOtherVehicle=()=>[makeFitment,modelFitment,yearFitment,bedFitment].some(e=>e.value===VehicleOptions.other);function matchingFilterFitments(){return filterFitments.filter(e=>filterMake(e)===makeFitment.value&&(!modelFitment.value||filterModel(e)===modelFitment.value))}function currentFitment(){if(isOtherVehicle())return VehicleOptions.custom(makeFitment.value,otherVehicle.value)||{...VehicleOptions.custom(makeFitment.value,"Other vehicle"),customDetails:""};if(modelFitment.value)return matchingFilterFitments().find(e=>e.year===yearFitment.value&&e.bed===bedFitment.value)}function productAvailable(e,n=currentFitment()){if(!n)return!1;if(n.custom)return!["cap","glass-cap","retractable","folding","glass-roof-rack","storage-box","cap-crossbars"].includes(e.id);if(["a180","a270","a270-xl","a270-trail"].includes(e.id))return!0;if(e.id==="glass-cap")return!!getGlassCapFitment(n);if(e.id==="folding")return!!getFoldingFitment(n);if(e.id==="retractable"){const o=getRetractableFitment(n);return o&&(e.price=o.price,e.fitment=o.label,e.source=o.source,e.priceNote="Cover only \xB7 "+o.label,e.priceSource=o.source),!!o}return!["glass-cap","glass-roof-rack"].includes(e.id)||!!n.glassCap}function fillFilter(e,n,o){VehicleOptions.fill(e,n,o)}function updateVehicle(){const e=currentFitment();applyProductPrices(e),vehicleChosen=!!e,vehicleRevision++;const n=isOtherVehicle();n&&!wasOtherMode&&(activeCat="ALL"),wasOtherMode=n,$("setupSubhead").textContent=n?"Choose your products below \xB7 Total must not exceed $5,000":"Truck cap, RTT, covers and awnings in 3D \xB7 Extra selections as photos",$("builderLayout").classList.toggle("other-mode",isOtherVehicle()),isOtherVehicle()&&showConfigMode("products"),$("otherVehicleField").hidden=!isOtherVehicle(),otherVehicle.required=isOtherVehicle(),selected=selected.filter(o=>productAvailable(products.find(i=>i.id===o),e)),$("configPanel").classList.toggle("locked",!vehicleChosen),$("configLock").hidden=vehicleChosen,$("vehicleName").textContent=e?.label||"CHOOSE YOUR TRUCK",$("stageEmpty").hidden=vehicleChosen&&!e.custom,$("stageEmpty").querySelector("strong").textContent=e?.custom?"Your custom vehicle.":"Your build starts here.",$("stageEmpty").querySelector("p").textContent=e?.custom?"Select your gear on the right. Product photos appear beside this area; a matching 3D truck model is not available.":"Choose your truck using the filters above, then select your gear on the right.",$("vehiclePreviewNote").textContent=e?.previewNote||"",$("vehiclePreviewNote").hidden=!e?.previewNote,render(),window.dispatchEvent(new CustomEvent("dreamVehicleChange",{detail:e||null}))}const withOther=e=>[...unique(e),VehicleOptions.other];fillFilter(makeFitment,withOther(filterFitments.map(filterMake)),"Select make"),fillFilter(modelFitment,[],"Select model"),fillFilter(yearFitment,[],"Select year"),fillFilter(bedFitment,[],"Select bed length"),makeFitment.onchange=()=>{fillFilter(modelFitment,makeFitment.value&&makeFitment.value!==VehicleOptions.other?withOther(filterFitments.filter(e=>filterMake(e)===makeFitment.value).map(filterModel)):[],makeFitment.value==="CHEVROLET / GMC"?"ALL MODELS":"Select model"),fillFilter(yearFitment,[],"Select year"),fillFilter(bedFitment,[],"Select bed length"),updateVehicle()},modelFitment.onchange=()=>{fillFilter(yearFitment,modelFitment.value&&modelFitment.value!==VehicleOptions.other?withOther(matchingFilterFitments().map(e=>e.year)):[],"Select year"),fillFilter(bedFitment,[],"Select bed length"),updateVehicle()},yearFitment.onchange=()=>{fillFilter(bedFitment,yearFitment.value&&yearFitment.value!==VehicleOptions.other?withOther(matchingFilterFitments().filter(e=>e.year===yearFitment.value).map(e=>e.bed)):[],"Select bed length"),updateVehicle()},bedFitment.onchange=updateVehicle,otherVehicle.oninput=updateVehicle;function presentation(){const e=getSetupPresentation(selected,products);return currentFitment()?.custom?{ordered:e.ordered,models:[],cards:e.ordered}:e}window.getDreamFitments=()=>vehicleFitments,window.getDreamProducts=()=>products,window.getDreamSetup=()=>{const e=presentation();return{fit:currentFitment(),products:e.ordered,modelProducts:e.models,photoProducts:e.cards}};const localAssets=new Map;window.resolveDreamAsset=e=>localAssets.get(e)||localAssets.get(e.split("/").pop())||e,$("importAssets").onclick=()=>$("assetFolder").click(),$("assetFolder").onchange=e=>{for(const n of new Set(localAssets.values()))URL.revokeObjectURL(n);localAssets.clear();for(const n of e.target.files){const o=n.webkitRelativePath||n.name,i=URL.createObjectURL(n);localAssets.set(o,i),localAssets.set(n.name,i);const r=o.indexOf("dream-setup-assets/");r>=0&&localAssets.set(o.slice(r),i)}$("assetMessage").textContent=` ${e.target.files.length} files imported.`,vehicleChosen&&updateVehicle()};function total(){return products.filter(e=>selected.includes(e.id)&&Number.isFinite(e.price)).reduce((e,n)=>e+n.price,0)}function selectProduct(e){const n=products.find(o=>o.id===e);if(!(!n||!vehicleChosen)){if(selected.includes(e))selected=selected.filter(o=>o!==e);else{if(!productAvailable(n)||Number.isFinite(n.price)&&!selectionWithinBudget([...selected,n.id],products,5e3))return;selected.push(e)}render(),window.dispatchEvent(new CustomEvent("dreamSetupChange"))}}function validate(){let e=[];return currentFitment()?.custom&&!currentFitment().customDetails?.trim()&&e.push("Enter your vehicle details above before continuing."),total()>5e3&&e.push("Your selected products exceed $5,000. Remove an item to continue."),selected.some(n=>!Number.isFinite(products.find(o=>o.id===n)?.price))&&e.push("Confirm campaign prices for PRICE TBD products before verifying the $5,000 total."),$("warning").textContent=e.join(" "),$("warning").classList.toggle("show",e.length>0),e.length===0}function render(){applyProductPrices(currentFitment());const e=presentation(),n=new Set(e.models.map(t=>t.id)),o=["ALL","TRUCK CAP","CAP ACCESSORY","RTT","AWNING","TONNEAU COVER","BED RACK"].filter(t=>!currentFitment()?.custom||t==="ALL"||products.some(s=>s.cat===t&&productAvailable(s)));$("tabs").innerHTML=o.map(t=>`<button class="${t===activeCat?"active":""}" onclick="activeCat='${t}';render()">${t}</button>`).join(""),$("catalog").innerHTML=products.filter(t=>productAvailable(t)&&(activeCat==="ALL"||t.cat===activeCat)).map(t=>{const s=selected.includes(t.id),l=!currentFitment()?.custom&&t.modelMode&&(!e.models.some(u=>productMountGroup(u)===productMountGroup(t))||n.has(t.id)),d=!s&&Number.isFinite(t.price)&&!selectionWithinBudget([...selected,t.id],products,5e3);return`<article class="product ${s?"selected":""}" onclick="if(!event.target.closest('button'))selectProduct('${t.id}')"><img src="${t.image}" alt="${t.name}" loading="lazy"><div><p>${t.cat}</p><h3>${t.name}</h3>${t.id==="retractable"?`<div class="source">${t.fitment}</div>`:""}<span class="mode-label">${l?"3D \xB7 Install on truck":currentFitment()?.custom?"PRODUCT CARD":"PHOTO \xB7 Upper-right preview"}</span><div class="price">${Number.isFinite(t.price)?money(t.price):"PRICE TBD"}</div>${t.priceNote?`<div class="source price-detail">${Journey.text(t.priceNote)}</div>`:""}</div><button class="add ${s?"remove":""}" ${d?"disabled":""} onclick="selectProduct('${t.id}')" aria-label="${s?"Remove":"Add"} ${t.name}">${s?"\u2212":"+"}</button></article>`}).join("");const i=total(),r=currentFitment()?.custom?[]:e.cards;$("previewLayout").classList.toggle("has-cards",r.length>0),$("previewCards").hidden=!r.length,$("stageGear").innerHTML=r.map(t=>`<figure class="gear-card"><img src="${t.image}" alt="${t.name}" onerror="this.hidden=true;this.nextElementSibling.textContent+=' \xB7 Image unavailable'"><figcaption>${t.name}</figcaption><button onclick="selectProduct('${t.id}')" aria-label="Remove ${t.name}">\xD7</button></figure>`).join(""),$("remaining").textContent=e.ordered.some(t=>!Number.isFinite(t.price))?"PRICE PENDING":money(5e3-i),$("itemCount").textContent=`${selected.length} PRODUCTS`,$("fill").style.width=`${Math.min(100,i/5e3*100)}%`,$("picked").innerHTML=selected.length?e.ordered.map(t=>`<span class="chip">${t.name}</span>`).join(""):'<span class="source">No gear selected yet.</span>';const c=validate(),a=selected.length>0&&i<=5e3&&c;$("submit").disabled=!a,$("submit").textContent=selected.length?a?"NAME & SHARE MY SETUP \u2192":"REVIEW COMPATIBILITY":"CHOOSE YOUR GEAR",saveDraft()}function saveDraft(){Journey.save("openroad_dream_setup_draft",{fit:currentFitment()||null,ids:selected})}function restoreFit(e){if(e){if(e.custom){otherVehicle.value=e.customDetails??e.label,makeFitment.value=Array.from(makeFitment.options).some(n=>n.value===e.make)?e.make:VehicleOptions.other,makeFitment.onchange(),makeFitment.value!==VehicleOptions.other&&(modelFitment.value=VehicleOptions.other,modelFitment.onchange()),updateVehicle();return}makeFitment.value=filterMake(e),makeFitment.onchange(),modelFitment.value=filterModel(e),modelFitment.onchange(),yearFitment.value=e.year,yearFitment.onchange(),bedFitment.value=e.bed,bedFitment.onchange()}}$("submit").onclick=()=>{if(!currentFitment()||!selected.length||!validate()||total()>5e3)return;if(!$("modelProgress").hidden){$("warning").textContent="Your 3D models are still loading. Please wait before making your share card.",$("warning").classList.add("show");return}const e=getSetupPresentation(selected,products).ordered,n=window.captureDreamPreview?.()||"",o={vehicle:currentFitment().label,fit:currentFitment(),products:e,total:total(),screenshot:n};if(!Journey.save("openroad_dream_setup_selection",o)&&(o.screenshot="",!Journey.save("openroad_dream_setup_selection",o))){$("warning").textContent="Your browser could not save the setup. Allow session storage and try again.",$("warning").classList.add("show");return}window.OPENROAD_SHOPIFY.go("share")};const savedDraft=Journey.read("openroad_dream_setup_draft"),entry=Journey.read("openroad_dream_setup_entry");restoreFit(savedDraft?.fit||entry?.fit),savedDraft?.fit&&(selected=(savedDraft.ids||[]).filter(e=>products.some(n=>n.id===e&&productAvailable(n)))),render();function showConfigMode(e){$("showAwningTuneMode").classList.remove("active"),$("calibrationMode").removeAttribute("data-focus"),$("awningTuneHint").hidden=!0,$("configPanel").dataset.mode=e,$("calibrationMode").hidden=e!=="tune",$("showProductsMode").classList.toggle("active",e==="products"),$("showTuneMode").classList.toggle("active",e==="tune")}$("showProductsMode").onclick=()=>showConfigMode("products"),$("showTuneMode").onclick=()=>showConfigMode("tune"),$("showAwningTuneMode").onclick=()=>{const e=window.getDreamSetup();if(!e.fit){showConfigMode("products"),$("awningTuneHint").hidden=!1,$("awningTuneHint").textContent="\u5148\u5B8C\u6210\u8F66\u578B\u7B5B\u9009\uFF1B180\xB0\u3001270\xB0\u3001270\xB0 XL \u548C 270\xB0 Trail \u9002\u7528\u4E8E\u6240\u6709\u8F66\u578B\u3002";return}if(e.fit.custom){activeCat="AWNING",render(),showConfigMode("products"),$("awningTuneHint").hidden=!1,$("awningTuneHint").textContent="\u5176\u4ED6\u8F66\u578B\u53EF\u9009\u62E9\u906E\u9633\u68DA\uFF0C\u5E76\u4EE5\u56FE\u7247\u9884\u89C8\uFF1B\u63D0\u4F9B\u5BF9\u5E94\u5361\u8F66\u6A21\u578B\u540E\u53EF\u8FDB\u884C 3D \u5B89\u88C5\u8C03\u8282\u3002";return}if(!e.modelProducts.find(o=>o.modelMode==="awning")){activeCat="AWNING",render(),showConfigMode("products"),$("awningTuneHint").hidden=!1,$("awningTuneHint").textContent="\u6240\u6709\u8F66\u578B\u5747\u53EF\u5339\u914D\u906E\u9633\u68DA\u3002\u5148\u9009\u62E9 180\xB0\u3001270\xB0\u3001270\xB0 XL \u6216 270\xB0 Trail\uFF0C\u518D\u70B9\u51FB\u300CAwning \u8C03\u8282\u300D\u3002";return}showConfigMode("tune"),$("calibrationMode").dataset.focus="awning",$("calibrationMode").scrollTop=0,$("showAwningTuneMode").classList.add("active"),$("showTuneMode").classList.remove("active")}; </script> <script type="module">window.addEventListener('DOMContentLoaded',()=>{import("https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-viewer-fast-v3.js?v=1793064522").catch(error=>{console.error(error);document.getElementById('modelProgress').hidden=true;document.getElementById('modelStatus').textContent='3D VIEWER UNAVAILABLE · PLEASE RELOAD THE PAGE';});},{once:true});</script></body></html> <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="data:,"><title>OPENROAD Dream Setup</title><style>:root{--red:#f3261d;--paper:#f8f5ee;--muted:#b9aeac;--line:#482022;--surface:#111113}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 70% 48%,#220000 0,transparent 62%),#080707;color:var(--paper);font-family:Arial,Helvetica,sans-serif}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ff7d75;outline-offset:4px}[hidden]{display:none!important}.campaign-shell{max-width:1180px;margin:auto}.campaign-banner{position:relative;container-type:inline-size;margin:auto;max-width:1100px;background:#050505}.campaign-banner>img{display:block;width:100%;height:auto}.banner-revised-copy{position:absolute;left:4.25%;top:57.35%;width:33.2%;height:8.6%;background:#000;display:flex;flex-direction:column;justify-content:center;color:#eee;font-size:1.42cqw;line-height:1.12;letter-spacing:-.01em}.banner-revised-copy span{display:block;white-space:nowrap}.join-section{display:grid;grid-template-columns:1fr 1.12fr;gap:70px;padding:80px 0 94px}.eyebrow{font-size:12px;color:var(--red);font-weight:900;letter-spacing:2px}.join-copy h1{font-size:clamp(42px,4.9vw,70px);line-height:.98;letter-spacing:-2px;margin:16px 0 25px;font-weight:950}.join-copy>p{font-size:17px;line-height:1.65;color:#d2c9c5;margin:0 0 34px;max-width:490px}.rules-table{margin:0;border:1px solid var(--line);background:#0c0c0d}.rules-table div{display:grid;grid-template-columns:96px 1fr;gap:16px;padding:20px 17px;border-bottom:1px solid var(--line)}.rules-table div:last-child{border:0}.rules-table dt{font-size:10px;color:#ff4b42;letter-spacing:1px;font-weight:900}.rules-table dd{margin:0;color:#e0d9d6;font-size:13px;line-height:1.6}.join-form{background:var(--surface);border:1px solid #4b2425;padding:39px;align-self:start}.join-form h2{font-size:31px;letter-spacing:-1px;margin:0 0 12px}.join-form>p{color:var(--muted);font-size:14px;line-height:1.7;margin:0 0 30px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px 14px}.form-field label{display:block;font-size:10px;font-weight:900;letter-spacing:1px;margin-bottom:10px}.form-field input,.form-field select{display:block;width:100%;height:50px;border:1px solid #af8f8f;padding:0 13px;background:#fcfbf9;color:#222;border-radius:0;min-width:0}.consent{display:flex;align-items:flex-start;gap:10px;margin:30px 0 22px;font-size:11px;color:#c2b7b7;line-height:1.6}.consent input{margin:3px 0 0;accent-color:var(--red)}.primary-button{display:block;width:100%;padding:19px 16px;border:0;color:#fff;background:linear-gradient(115deg,#ff2d22,#c20000);font-size:12px;letter-spacing:1px;font-weight:900;text-align:center;text-decoration:none;cursor:pointer}.primary-button:hover{filter:brightness(1.12)}.join-form .prototype-note{font-size:10px;color:#958b8c;margin-top:40px;line-height:1.6}.campaign-footer{border-top:1px solid var(--line);padding:26px max(24px,calc((100% - 1180px)/2));font-size:10px;color:#8f8585;line-height:1.6}.form-message{color:#ffb7ad;font-size:12px;line-height:1.5}.back-link{float:right;font-size:11px;color:#bcaead;text-decoration:none;padding:6px 0}.build-page{padding-top:22px}.build-page .builder{align-items:start}.build-page .catalog{max-height:610px}.build-page .asset-note{border-top:1px solid #382325;margin-top:8px}.build-page .stage-note{font-size:10px}.build-page .stage-panel{position:relative}.build-page .step-title{padding-right:5px}.share-page{max-width:1180px;margin:auto;padding:32px 24px 70px}.journey-top{display:flex;justify-content:space-between;align-items:center;color:#b4a6a5;font-size:11px;margin-bottom:34px}.wordmark{font-weight:950;font-size:20px;letter-spacing:2px;color:#fff}.wordmark span{color:var(--red)}.share-layout{display:grid;grid-template-columns:1.3fr .8fr;gap:36px;align-items:start}.share-copy h1{font-size:44px;line-height:1.05;letter-spacing:-1px;margin:14px 0 20px}.share-copy p{color:var(--muted);font-size:14px;line-height:1.7}.share-form{margin-top:30px}.share-form input{background:#171113;border:1px solid #6a3434;color:#fff;padding:15px;width:100%;margin:10px 0 14px;min-width:0}.share-form label{font-size:11px;letter-spacing:1px;font-weight:800}.share-card{overflow:hidden;border:1px solid #713132;background:radial-gradient(ellipse at 90% 0,#690d0d,transparent 60%),#111;box-shadow:0 24px 60px #0006}.share-card-top{display:flex;justify-content:space-between;align-items:center;padding:22px 24px;border-bottom:1px solid #5b2424;font-weight:900;font-size:12px}.share-card-top span:last-child{color:#ff4a3e}.share-card h2{font-size:32px;line-height:1.05;margin:24px 24px 8px;overflow-wrap:anywhere}.share-vehicle{color:#c9bcb8;font-size:12px;padding:0 24px;line-height:1.6}.share-preview{display:block;width:100%;height:320px;object-fit:contain;background:radial-gradient(ellipse,#c8c2c1,#5b5354);margin-top:18px}.share-preview-placeholder{height:240px;background:var(--openroad-campaign-image) center 20%/cover}.share-products{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:20px 24px}.share-product{display:flex;align-items:center;gap:10px;min-width:0}.share-product img{width:48px;height:48px;object-fit:contain;background:#fff;border-radius:4px}.share-product strong{display:block;font-size:10px;line-height:1.4}.share-product small{display:block;color:#ff867b;font-size:10px;margin-top:4px}.share-total{display:flex;justify-content:space-between;padding:20px 24px;border-top:1px solid #5b2424;gap:10px;font-size:13px}.share-total b{color:#ff4a3e;font-size:23px}.share-tagline{padding:0 24px 22px;font-size:10px;color:#b1a3a1}.share-actions{display:grid;gap:12px;margin-top:20px}.secondary-button{display:block;width:100%;padding:15px;border:1px solid #633334;background:#1a1011;color:#fff;text-align:center;text-decoration:none;font-size:12px;font-weight:800;cursor:pointer}.empty-state{padding:60px 20px;border:1px solid #5b2424;text-align:center;max-width:650px;margin:60px auto}.empty-state p{color:var(--muted);line-height:1.7}.empty-state .primary-button{max-width:300px;margin:25px auto 0}.challenge{padding:20px;border:1px solid #5b2424;background:#160d0e;margin-top:28px}.challenge strong{font-size:15px}.challenge p{margin:9px 0 0;font-size:12px}.no-save{display:none}.join-copy h1{font-size:clamp(42px,4.35vw,63px);letter-spacing:-1.6px}.join-form>p{max-width:440px}.banner-revised-copy{height:8.6%;font-size:1.42cqw}.build-page .cap-tuner{display:block}.build-page .cap-tuner[hidden]{display:none}.calibration-toolbar{margin-top:14px;padding:14px;border:1px solid #654044;border-radius:10px;background:#160e10}.calibration-toolbar>strong{font-size:13px}.calibration-toolbar>p{font-size:11px;line-height:1.6;color:#c3b2b2;margin:8px 0}.calibration-toolbar .tuner-actions button{border:1px solid #753033;background:#241112;color:#fff;border-radius:7px;padding:8px 11px;font-size:11px;font-weight:800;cursor:pointer}.calibration-toolbar .tuner-actions .primary{background:#ef241c}.calibration-toolbar button:disabled{opacity:.4;cursor:default}.build-page .cap-tuner-head{display:grid;gap:7px}.build-page .cap-tuner-head span{font-size:11px;line-height:1.5;color:#c6adab}.build-page .tuner-control{grid-template-columns:minmax(60px,1fr) 65px;gap:5px 8px}.build-page .tuner-control output{grid-column:1/-1;text-align:left;font-size:10px;color:#bd9d98}.tune-number{width:100%;background:#1a1113;border:1px solid #733c40;color:#fff;padding:5px;border-radius:4px;font-size:11px}.build-page .tuner-message{line-height:1.6;overflow-wrap:anywhere}.build-page .tuner-actions button{cursor:pointer}.build-page .tuner-grid{gap:12px 16px}.config-mode-switch{display:flex;gap:6px;padding:12px;border-bottom:1px solid #5b2022}.config-mode-switch button{flex:1;padding:11px 8px;background:#281719;border:1px solid #674044;border-radius:7px;font-size:12px;font-weight:900;color:#fff;cursor:pointer}.config-mode-switch button.active{background:#ef241c;border-color:#ef241c}.config[data-mode=tune] #tabs,.config[data-mode=tune] #catalog,.config[data-mode=tune] .summary,.config[data-mode=tune] #configLock{display:none}.calibration-mode{padding:0 12px 12px;max-height:680px;overflow:auto;overscroll-behavior:contain}.calibration-mode .tuner-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.calibration-mode .cap-tuner,.calibration-mode .calibration-toolbar{padding:12px}.calibration-mode .tuner-actions{gap:7px}.calibration-mode .tuner-actions button{font-size:10px}.calibration-mode .cap-tuner-head strong{font-size:13px}@media(min-width:921px){.build-page .stage-panel{position:sticky;top:12px}}@media(max-width:500px){.calibration-mode{max-height:none;overflow:visible}}@media(min-width:1500px){.campaign-banner{max-width:1180px}}@media(max-width:1240px){.campaign-shell{padding:0 30px}.join-section{gap:45px}.join-form{padding:30px}.share-layout{gap:24px}}@media(max-width:800px){.join-section{grid-template-columns:1fr;gap:36px;padding:45px 0 55px}.join-copy h1{font-size:52px}.join-copy>p{max-width:none}.share-layout{grid-template-columns:1fr}.share-copy{grid-row:1}.share-form{margin-top:20px}.share-copy h1{font-size:35px}.share-preview{height:290px}.join-form .prototype-note{margin-top:25px}}@media(max-width:500px){.campaign-shell{padding:0 16px}.campaign-banner{margin:0 -16px}.join-copy h1{font-size:44px;letter-spacing:-1px}.join-copy>p{font-size:15px}.join-form{padding:24px 20px}.join-form h2{font-size:28px}.form-grid{grid-template-columns:1fr;gap:18px}.rules-table div{grid-template-columns:72px 1fr;gap:8px;padding:17px 13px}.rules-table dd{font-size:12px}.consent{margin-top:23px}.share-page{padding:24px 16px 45px}.share-products{padding:18px 16px;grid-template-columns:1fr 1fr}.share-card h2{font-size:27px}.share-card-top{padding:18px 16px}.share-preview{height:245px}.share-total{padding:20px 16px}.journey-top{margin-bottom:25px}.wordmark{font-size:17px}.build-page .back-link{font-size:9px}.build-page .stage-ui .badge{max-width:150px}}.preview-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;align-items:start}.preview-layout.has-cards{grid-template-columns:minmax(0,1fr) clamp(110px,23%,160px)}.preview-layout .stage{min-width:0}.preview-cards{min-width:0;max-height:520px;overflow:auto;overscroll-behavior:contain;border:1px solid #633033;border-radius:10px;padding:8px;background:#170e0f}.preview-cards h3{font-size:10px;letter-spacing:1px;margin:2px 0 8px;color:#e5c6c3}.preview-cards .stage-gear{max-width:none;gap:8px;pointer-events:auto}.preview-cards .gear-card img{height:96px;object-fit:contain}.preview-cards .gear-card figcaption{overflow-wrap:anywhere}.preview-cards .gear-card button{width:25px;height:25px;box-shadow:0 0 0 1px #fff8}.preview-layout.has-cards .stage-ui .badge{max-width:220px}.preview-layout .stage-actions{align-self:start}.preview-layout .stage-ui{flex-wrap:wrap}.preview-layout .stage{transition:none}@media(max-width:600px){.preview-layout.has-cards{grid-template-columns:minmax(0,1fr)}.preview-cards{order:-1;max-height:190px}.preview-cards .stage-gear{display:flex;overflow:auto;justify-content:flex-start;max-width:none}.preview-cards .gear-card{flex:0 0 120px}.preview-cards .gear-card img{height:76px}.preview-cards h3{text-align:right}.preview-layout .stage{min-height:390px}}.preview-cards .stage-gear{width:100%;grid-template-columns:minmax(0,1fr);max-height:none;overflow:visible}.preview-cards .gear-card{min-width:0}.config-mode-switch{flex-wrap:wrap}.config-mode-switch #showAwningTuneMode{border-color:#f15448;color:#ffe1dc;white-space:nowrap}.awning-tune-hint{padding:12px 16px;background:#321417;border-bottom:1px solid #6a3034;color:#ffded8;font-size:12px;line-height:1.6}.calibration-mode[data-focus=awning]{display:flex;flex-direction:column}.calibration-mode[data-focus=awning]>section{flex:0 0 auto}.calibration-mode[data-focus=awning] #calibrationToolbar{order:0}.calibration-mode[data-focus=awning] #awningTuner{order:1}.calibration-mode[data-focus=awning] #capTuner{order:2}.calibration-mode[data-focus=awning] #rttTuner{order:3}.calibration-mode[data-focus=awning] #coverTuner{order:4}.form-wide{grid-column:1/-1}.other-vehicle{margin:0 0 14px}.other-vehicle input{width:100%;padding:12px;background:#0c1217;border:1px solid #633334;border-radius:8px;color:#fff}.other-vehicle label{display:block;font-size:11px;margin-bottom:8px}.other-vehicle p{font-size:12px;color:#b9aeac;line-height:1.5}.builder.other-mode{grid-template-columns:minmax(0,1fr);gap:16px}.other-mode .stage-panel{padding:22px}.other-mode #previewLayout,.other-mode .asset-note,.other-mode .stage-note,.other-mode #vehiclePreviewNote,.other-mode .config-mode-switch,.other-mode #calibrationMode,.other-mode #awningTuneHint{display:none!important}.other-mode #catalog{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;max-height:none;padding:18px}.other-mode .product{display:flex;flex-direction:column;align-items:stretch;gap:12px;padding:14px;min-width:0;cursor:pointer}.other-mode .product img{width:100%;height:170px;object-fit:contain;background:#fff;border-radius:8px}.other-mode .product>div{flex:1}.other-mode .product h3{font-size:16px;line-height:1.35;margin:5px 0 8px}.other-mode .product .add{align-self:flex-end}.other-mode .product.selected{background:#32181b;border-color:#f3261d}.other-mode .other-vehicle{margin-bottom:0}.other-mode .config-head,.other-mode .summary{padding:20px}@media(max-width:1100px){.other-mode #catalog{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px){.other-mode #catalog{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px;gap:10px}.other-mode .product img{height:135px}.other-mode .product h3{font-size:14px}}@media(max-width:380px){.other-mode #catalog{grid-template-columns:1fr}}.other-mode .mode-label{display:none}.product img,.other-mode .product img,.gear-card img,.preview-cards .gear-card img{height:auto;aspect-ratio:1 / 1;object-fit:contain} :root{--openroad-campaign-image:url("https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-campaign-banner.jpg?v=1793017323")}</style><script>window.OPENROAD_SHOPIFY={urls:{"dream-setup-assets/product-models/folding-tonneau-cover.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-folding-tonneau-cover.bin?v=1793023790"],"bytes":44098416,"compressedBytes":11832893,"sha256":"945f58e523d2b43a39e90f369e36fc5c86d1dc9740bdce96676039eb35931395","fallback":"https://cdn.shopify.com/3d/models/44a793088d339123/folding-tonneau-cover.glb"},"dream-setup-assets/web-models/aluminum-truck-cap-universal.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-aluminum-truck-cap-universal.bin?v=1793023772"],"bytes":2249136,"compressedBytes":1022656,"sha256":"6bad6521d505df7c6ac2648377a567d5767f471e492945ca9150657b6fcab7f4","fallback":"https://cdn.shopify.com/3d/models/6e3759683fff0521/aluminum-truck-cap-universal.glb"},"dream-setup-assets/web-models/awning-180.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-awning-180.bin?v=1793023774"],"bytes":4409084,"compressedBytes":1452766,"sha256":"825d9b07f2b615dcdbdf08d7157bd1dfc90e2d68b4184f976f09ae47ac4d1e25","fallback":"https://cdn.shopify.com/3d/models/e75135c63e2a8cd9/awning-180.glb"},"dream-setup-assets/web-models/awning-270-plus.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-awning-270-plus.bin?v=1793023777"],"bytes":8858496,"compressedBytes":2727221,"sha256":"f4573831b1c8631718fcc00a4fc51880436ae251acf6d14cec5de7785db1ea50","fallback":"https://cdn.shopify.com/3d/models/2110f2331c073a5b/awning-270-plus.glb"},"dream-setup-assets/web-models/awning-270-trail-gray-v3.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-awning-270-trail-gray-v3.bin?v=1793023776"],"bytes":6035636,"compressedBytes":2311519,"sha256":"09e14618fa5b37ee93c5ed73da88a9681b6f0ba1f7532e5ccc551929fc9150c9","fallback":"https://cdn.shopify.com/3d/models/77af0bd3249ed80a/awning-270-trail-gray-v3.glb"},"dream-setup-assets/web-models/awning-270.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-awning-270.bin?v=1793023791"],"bytes":39001988,"compressedBytes":12515377,"sha256":"3715f648d659e9684634c2bb676ee01b0a1e062f5dd588b425dfcb90c371eae7","fallback":"https://cdn.shopify.com/3d/models/e5170c03ac8c84ac/awning-270.glb"},"dream-setup-assets/web-models/lt-rtt.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-lt-rtt.bin?v=1793023780"],"bytes":6632520,"compressedBytes":4184758,"sha256":"98d0075aa37c28dea867ec99f427902642be6c5f1abf2e7f1a4347e2830f1483","fallback":"https://cdn.shopify.com/3d/models/0bf3dfc786c2adb8/lt-rtt.glb"},"dream-setup-assets/web-models/retractable-tonneau-cover.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-retractable-tonneau-cover.bin?v=1793023787"],"bytes":25747456,"compressedBytes":8256896,"sha256":"a7718fe86a93daaa014744bd5d3f09e20c6c1f29eabef6c62a8763729fe43f4a","fallback":"https://cdn.shopify.com/3d/models/58a1bbb61a542341/retractable-tonneau-cover.glb"},"dream-setup-assets/web-models/sliding-glass-truck-cap.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-sliding-glass-truck-cap.part1.bin?v=1793023790","https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-sliding-glass-truck-cap.part2.bin?v=1793023788"],"bytes":60582156,"compressedBytes":21908158,"sha256":"abaff91ce0db053a465e02f05be4f1b61c5a6fca64896ca5878e6082398b1685","fallback":{"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-sliding-glass-truck-cap.glb.part1.bin?v=1793014452","https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-sliding-glass-truck-cap.glb.part2.bin?v=1793014452","https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-sliding-glass-truck-cap.glb.part3.bin?v=1793014452","https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-sliding-glass-truck-cap.glb.part4.bin?v=1793014451"],"bytes":60582156,"sha256":"abaff91ce0db053a465e02f05be4f1b61c5a6fca64896ca5878e6082398b1685"}},"dream-setup-assets/web-models/triangle-rtt.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-triangle-rtt.bin?v=1793023790"],"bytes":31775360,"compressedBytes":10988051,"sha256":"00255b34430409087205b89369fab0c1703ddf6355ffce73cefcb5655fcb944c","fallback":"https://cdn.shopify.com/3d/models/11b1c0ea954bf7bc/triangle-rtt.glb"},"dream-setup-assets/web-models/vehicle-colorado-2015-2022-5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-colorado-2015-2022-5ft.bin?v=1793023778"],"bytes":5462092,"compressedBytes":3570371,"sha256":"1d274f613a71f968577af122697d72076dfc7a29e9ff39ccd8750d5c222dceeb","fallback":"https://cdn.shopify.com/3d/models/8e3e60e73aae1384/vehicle-colorado-2015-2022-5ft.glb"},"dream-setup-assets/web-models/vehicle-colorado-2023-2026-5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-colorado-2023-2026-5ft.bin?v=1793023781"],"bytes":8668744,"compressedBytes":5071501,"sha256":"49e98e5a9ed45a5eebebfe6e3f585fe2dbe53c6202e34d7fca9eb34444604520","fallback":"https://cdn.shopify.com/3d/models/4c6e292d3d74cea5/vehicle-colorado-2023-2026-5ft.glb"},"dream-setup-assets/web-models/vehicle-f150-2021-2026-5.7ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-f150-2021-2026-5.7ft.bin?v=1793023788"],"bytes":22753508,"compressedBytes":9036776,"sha256":"18cf12bd66e3db47c6eab3bf4226975a7cc3df2e8f45ebbe2fe653a90f81b04a","fallback":{"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-vehicle-f150-2021-2026-5.7ft.glb.part1.bin?v=1793013714","https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-vehicle-f150-2021-2026-5.7ft.glb.part2.bin?v=1793013711"],"bytes":22753508,"sha256":"18cf12bd66e3db47c6eab3bf4226975a7cc3df2e8f45ebbe2fe653a90f81b04a"}},"dream-setup-assets/web-models/vehicle-frontier-2022-2026-5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-frontier-2022-2026-5ft.bin?v=1793023792"],"bytes":49613920,"compressedBytes":17116118,"sha256":"f609c50ccee8a74bdd0a7d325d7c0189d6515879a79c201e7b189ede54d7e53f","fallback":"https://cdn.shopify.com/3d/models/3395da7fd361428d/vehicle-frontier-2022-2026-5ft.glb"},"dream-setup-assets/web-models/vehicle-gmc-sierra1500-2019-2026-5.8ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-gmc-sierra1500-2019-2026-5.8ft.bin?v=1793023791"],"bytes":35495668,"compressedBytes":12177296,"sha256":"b2b02521fa4851cb90c80a28407379bb3f28d9593df40d16afc91f43545b0384","fallback":"https://cdn.shopify.com/3d/models/1190a56494dee9af/vehicle-gmc-sierra1500-2019-2026-5_8ft.glb"},"dream-setup-assets/web-models/vehicle-jeep-gladiator-2019-2026.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-jeep-gladiator-2019-2026.bin?v=1793023777"],"bytes":5318148,"compressedBytes":2859338,"sha256":"853d1bb2615e008739e62eb5ef478bae701963a4bd02e2ba87b1f70dcd2a6702","fallback":"https://cdn.shopify.com/3d/models/a08145e5b800be89/vehicle-jeep-gladiator-2019-2026.glb"},"dream-setup-assets/web-models/vehicle-ram1500-dt-2019-2026-5.7ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-ram1500-dt-2019-2026-5.7ft.bin?v=1793023776"],"bytes":13032192,"compressedBytes":2876787,"sha256":"592310fa4d014e61c6c3b061a59cae38bea828997e8909d46498acb876e77178","fallback":{"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-vehicle-ram1500-dt-2019-2026-5.7ft.glb.part1.bin?v=1793013714"],"bytes":13032192,"sha256":"592310fa4d014e61c6c3b061a59cae38bea828997e8909d46498acb876e77178"}},"dream-setup-assets/web-models/vehicle-ram2500-3500-2009-2026-6.4ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-ram2500-3500-2009-2026-6.4ft.bin?v=1793023792"],"bytes":51559588,"compressedBytes":16774805,"sha256":"24c07f98d6a53c3c6db8db4521eb571d62ef1d46fdab895bcae3285cfa189e45","fallback":"https://cdn.shopify.com/3d/models/fe8eab3af26919fe/vehicle-ram2500-3500-2009-2026-6_4ft.glb"},"dream-setup-assets/web-models/vehicle-silverado1500-2019-2026-5.8ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-silverado1500-2019-2026-5.8ft.bin?v=1793023779"],"bytes":6799016,"compressedBytes":3601556,"sha256":"956499ff5ecafe16c36bb0ff3bb919a6f4541b760547dadb32ca66d2b91e38e3","fallback":"https://cdn.shopify.com/3d/models/94cb107ea35056c5/vehicle-silverado1500-2019-2026-5_8ft.glb"},"dream-setup-assets/web-models/vehicle-tacoma-2016-2023-5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tacoma-2016-2023-5ft.bin?v=1793023792"],"bytes":40334160,"compressedBytes":15315558,"sha256":"bc7d627e07211d020448a2c2d26bcb242af9bacb0f4bef6f87c5d3b000e9fbf4","fallback":"https://cdn.shopify.com/3d/models/34ca33a0642c642f/vehicle-tacoma-2016-2023-5ft.glb"},"dream-setup-assets/web-models/vehicle-tacoma-2016-2023-6ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tacoma-2016-2023-6ft.bin?v=1793023792"],"bytes":40334160,"compressedBytes":15315558,"sha256":"bc7d627e07211d020448a2c2d26bcb242af9bacb0f4bef6f87c5d3b000e9fbf4","fallback":"https://cdn.shopify.com/3d/models/03e7f49ac1afc74d/vehicle-tacoma-2016-2023-6ft.glb"},"dream-setup-assets/web-models/vehicle-tacoma-2024-2026-5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tacoma-2024-2026-5ft.bin?v=1793023789"],"bytes":26697916,"compressedBytes":10540848,"sha256":"738eb02ad6b27195bc483e9a346fb2a1bdcdc02888add48cf3028521b6b1bfaf","fallback":"https://cdn.shopify.com/3d/models/9ca5b22f6554a9cc/vehicle-tacoma-2024-2026-5ft.glb"},"dream-setup-assets/web-models/vehicle-tacoma-2024-2026-6ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tacoma-2024-2026-6ft.bin?v=1793023790"],"bytes":26697916,"compressedBytes":10540848,"sha256":"738eb02ad6b27195bc483e9a346fb2a1bdcdc02888add48cf3028521b6b1bfaf","fallback":"https://cdn.shopify.com/3d/models/9cc93c46c6dc481c/vehicle-tacoma-2024-2026-6ft.glb"},"dream-setup-assets/web-models/vehicle-tundra-2014-2021-5.5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tundra-2014-2021-5.5ft.bin?v=1793023783"],"bytes":12906228,"compressedBytes":5715116,"sha256":"b56b07f9677e2f1aa3b7ff09d8fdf0b73d662dfa4db63d96850de29ddfb2d5e6","fallback":"https://cdn.shopify.com/3d/models/5427b674f487ff8c/vehicle-tundra-2014-2021-5_5ft.glb"},"dream-setup-assets/web-models/vehicle-tundra-2022-2026-5.5ft.glb":{"gzip":true,"chunks":["https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-fast-vehicle-tundra-2022-2026-5.5ft.bin?v=1793023784"],"bytes":14102608,"compressedBytes":6756793,"sha256":"3be85911fa5088fc6e06459045d0e9311923197498b13eab505ab040bf19483a","fallback":"https://cdn.shopify.com/3d/models/8a5e4b4d3c713f88/vehicle-tundra-2022-2026-5_5ft.glb"},"dream-setup-assets/images/campaign-banner.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-campaign-banner.jpg?v=1793017323","dream-setup-assets/images/product-0.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-0.png?v=1793017325","dream-setup-assets/images/product-1.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-1.jpg?v=1793017322","dream-setup-assets/images/product-2.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-2.jpg?v=1793017321","dream-setup-assets/images/product-3.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-3.jpg?v=1793017322","dream-setup-assets/images/product-4.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-4.jpg?v=1793017323","dream-setup-assets/images/product-5.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-5.jpg?v=1793017323","dream-setup-assets/images/product-6.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-6.jpg?v=1793017323","dream-setup-assets/images/product-7.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-7.jpg?v=1793017322","dream-setup-assets/images/product-8.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-8.jpg?v=1793017322","dream-setup-assets/images/product-9.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-product-9.jpg?v=1793017322","dream-setup-assets/product-photos/a180.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-a180.jpg?v=1793017322","dream-setup-assets/product-photos/a270-trail-pending.svg":"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22600%22%20height%3D%22500%22%20viewBox%3D%220%200%20600%20500%22%3E%3Crect%20width%3D%22600%22%20height%3D%22500%22%20fill%3D%22%23f4f1ef%22%2F%3E%3Crect%20x%3D%2280%22%20y%3D%22105%22%20width%3D%22440%22%20height%3D%22260%22%20rx%3D%2214%22%20fill%3D%22none%22%20stroke%3D%22%23c3b7b4%22%20stroke-width%3D%223%22%2F%3E%3Ctext%20x%3D%22300%22%20y%3D%22228%22%20fill%3D%22%233c3333%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%22%20font-size%3D%2229%22%3E270%C2%B0%20Trail%20Awning%3C%2Ftext%3E%3Ctext%20x%3D%22300%22%20y%3D%22275%22%20fill%3D%22%23867574%22%20text-anchor%3D%22middle%22%20font-family%3D%22Arial%22%20font-size%3D%2220%22%3EProduct%20photo%20pending%3C%2Ftext%3E%3C%2Fsvg%3E","dream-setup-assets/product-photos/a270-trail.jpg":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-a270-trail.jpg?v=1793017322","dream-setup-assets/product-photos/a270-xl.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-a270-xl.png?v=1793017323","dream-setup-assets/product-photos/a270.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-a270.png?v=1793017325","dream-setup-assets/product-photos/cap-crossbars.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-cap-crossbars.jpg?v=1793017321","dream-setup-assets/product-photos/cap.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-cap.png?v=1793017325","dream-setup-assets/product-photos/edge-rtt.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-edge-rtt.png?v=1793017325","dream-setup-assets/product-photos/folding.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-folding.png?v=1793017325","dream-setup-assets/product-photos/glass-cap.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-glass-cap.png?v=1793017325","dream-setup-assets/product-photos/glass-roof-rack.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-glass-roof-rack.png?v=1793017327","dream-setup-assets/product-photos/lt-rtt.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-lt-rtt.png?v=1793017325","dream-setup-assets/product-photos/rack.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-rack.png?v=1793017325","dream-setup-assets/product-photos/retractable.png":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-retractable.png?v=1793017326","dream-setup-assets/product-photos/storage-box.webp":"https://cdn.shopify.com/s/files/1/0472/1229/8403/files/openroad-dream-storage-box.jpg?v=1793017322"}};</script><style>.social-share-links{display:grid;grid-template-columns:1fr 1fr;gap:10px}.social-share-link{display:flex;align-items:center;justify-content:center;min-height:48px;padding:12px 10px;border:1px solid #753a36;border-radius:24px;color:#fff;text-decoration:none;font-size:12px;font-weight:700;text-align:center;background:#211313}.social-share-link:hover{border-color:#ff6256;background:#3b1a17}.social-share-help{font-size:11px!important;line-height:1.6!important;margin:0!important;color:#b9aeac!important}@media(max-width:380px){.social-share-links{grid-template-columns:1fr}}</style><style>.card-author{padding:0 24px;margin:0 0 10px;color:#ff897c;font-size:11px;font-weight:800;letter-spacing:1px;overflow-wrap:anywhere}.card-personal{margin:0 24px 24px;padding-top:20px;border-top:1px solid #61302b}.card-personal>p{font-size:19px;line-height:1.45;font-weight:800;margin:0}.card-personal [hidden]{display:none!important}#cardFriendNote{margin-top:20px}#cardFriendNote span{font-size:9px;font-weight:800;letter-spacing:1.2px;color:#ff897c}#cardFriendMessage{font-size:13px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere;color:#d6c7c1;margin:9px 0 0}.naming-panel{padding:24px;border:1px solid #54302d;background:#151011}.naming-panel h2{font-size:29px;letter-spacing:-.8px;margin:10px 0 12px}.naming-panel .builder-credit{font-size:10px;color:#b9aaa3;margin-bottom:24px;letter-spacing:1px}.builder-credit strong{color:#ff897c}.optional{font-size:9px;color:#aaa09c;font-weight:400;margin-left:7px}.naming-panel textarea{width:100%;resize:vertical;min-height:90px;padding:13px;margin-top:10px;border:1px solid #6a3434;background:#171113;color:#fff;font:14px Arial;line-height:1.6}.note-counter{text-align:right;font-size:10px;color:#a99a95;margin:6px 0 16px}.naming-panel input{font-size:16px}.card-personal+ .share-tagline{font-size:9px}@media(max-width:500px){.naming-panel{padding:20px}.naming-panel h2{font-size:26px}.card-author{padding:0 16px}.card-personal{margin:0 16px 22px}.card-personal>p{font-size:17px}.share-copy h1{font-size:32px}}</style><style> @font-face{font-family:"Archivo Narrow";font-style:normal;font-weight:400;font-display:swap;src:url("https://openroad4wd.com/cdn/fonts/archivo_narrow/archivonarrow_n4.5c3bab850a22055c235cf940f895d873a8689d70.woff2") format("woff2")} @font-face{font-family:"Archivo Narrow";font-style:normal;font-weight:600;font-display:swap;src:url("https://openroad4wd.com/cdn/fonts/archivo_narrow/archivonarrow_n6.39db873f9e4e9c8ab7083354b267ce7500b7ee9e.woff2") format("woff2")} .share-card{background:#fff;border:1px solid #333;border-top:5px solid #ed1c24;border-radius:0;box-shadow:none;font-family:"Archivo Narrow",Arial,sans-serif;color:#111} .share-card-top{background:#111;border-bottom:0;padding:22px 24px 12px;gap:20px}.card-brand-logo{display:block;width:165px;max-width:45%;height:36px;object-fit:contain;object-position:left center}.share-card-top span:last-child{color:#fff;font-size:11px;letter-spacing:1px} .brand-card-heading{background:#111;padding:10px 0 24px}.share-card h2{color:#fff;text-transform:uppercase;font-family:"Archivo Narrow",Arial,sans-serif;font-weight:600;line-height:1.05;font-size:40px;margin:8px 24px 14px;letter-spacing:-.6px}.card-author{color:#eee;letter-spacing:1.5px;font-weight:600;font-size:12px}.share-vehicle{color:#aaa;font-size:13px} .share-preview{margin-top:0;background:#f2f2f2;height:340px;padding:14px 20px}.share-preview-placeholder{margin-top:0} .share-products{padding:26px 24px;gap:22px 16px}.share-product img{width:58px;height:58px;background:#f4f4f4;border-radius:0}.share-product strong{color:#111;font-size:14px;font-weight:600;line-height:1.2}.share-product small{color:#e31b23;font-size:13px;font-weight:600} .share-total{background:#111;border:0;color:#fff;align-items:center;font-weight:600;letter-spacing:1px;font-size:13px}.share-total b{color:#ff3038;font-family:"Archivo Narrow",Arial,sans-serif;font-size:32px;letter-spacing:0} .card-personal{margin:0;padding:26px 24px;border:0}.card-personal>p{color:#111;font-family:"Archivo Narrow",Arial,sans-serif;font-size:25px;font-weight:600;line-height:1.15}.card-personal>p:after{content:"BUILD YOURS AT OPENROAD4WD.COM";display:block;color:#e31b23;font-size:12px;letter-spacing:.5px;margin-top:15px} #cardFriendNote{background:#f4f4f4;border-left:3px solid #ed1c24;padding:15px 16px;margin-top:22px}#cardFriendNote span{color:#e31b23;font-family:"Archivo Narrow",Arial,sans-serif;font-size:10px}#cardFriendMessage{color:#333;font-family:"Archivo Narrow",Arial,sans-serif;font-size:16px;margin-bottom:0} .card-personal+.share-tagline{color:#777;border-top:1px solid #ddd;padding:17px 24px;font-size:10px;letter-spacing:.5px} @media(max-width:500px){.share-card h2{font-size:32px;margin-left:18px;margin-right:18px}.share-card-top{padding:18px 18px 10px}.card-author,.share-vehicle{padding-left:18px;padding-right:18px}.share-preview{height:280px;padding:12px}.share-products{padding:22px 18px;gap:20px 12px}.share-product img{width:44px;height:44px}.share-product strong{font-size:12px}.share-product small{font-size:12px}.card-personal{padding:24px 18px}.card-personal>p{font-size:22px}.card-personal+.share-tagline{padding:16px 18px;font-size:9px}} </style><link rel="preconnect" href="https://cdn.shopify.com" crossorigin><script>(()=>{ let host=window;try{if(window.parent!==window&&window.parent.document)host=window.parent}catch{} if(host.OPENROAD_MODEL_BYTES){window.OPENROAD_MODEL_BYTES=host.OPENROAD_MODEL_BYTES;return} const inflight=new Map(),memory=new Map();let memoryBytes=0; const limit=96*1024*1024,stats={networkBytes:0,networkRequests:0,memoryHits:0,diskHits:0,loads:0}; const keyOf=url=>typeof url==='string'?url:JSON.stringify(url); async function part(url,progress){ let cache;try{cache=await caches.open('openroad-model-gzip-v1');const hit=await cache.match(url);if(hit){stats.diskHits++;return hit.arrayBuffer()}}catch{} const r=await fetch(url,{mode:'cors'});if(!r.ok)throw Error('Model download failed: '+r.status); const copy=r.clone(),total=Number(r.headers.get('content-length'))||0;let bytes; if(r.body&&progress){const reader=r.body.getReader(),chunks=[];let count=0;for(;;){const {done,value}=await reader.read();if(done)break;chunks.push(value);count+=value.length;progress(count,total)}const a=new Uint8Array(count);let offset=0;for(const c of chunks){a.set(c,offset);offset+=c.length}bytes=a.buffer}else bytes=await r.arrayBuffer(); stats.networkRequests++;stats.networkBytes+=bytes.byteLength; if(cache)cache.put(url,copy).then(async()=>{const keys=await cache.keys();if(keys.length>40)await Promise.all(keys.slice(0,keys.length-40).map(k=>cache.delete(k)))}).catch(()=>{}); return bytes; } function remember(key,bytes){if(bytes.byteLength>limit)return;while(memoryBytes+bytes.byteLength>limit&&memory.size){const first=memory.keys().next().value;memoryBytes-=memory.get(first).byteLength;memory.delete(first)}memory.set(key,bytes);memoryBytes+=bytes.byteLength} async function read(url,progress){ const key=keyOf(url);if(memory.has(key)){const b=memory.get(key);memory.delete(key);memory.set(key,b);stats.memoryHits++;return b}if(inflight.has(key))return inflight.get(key); const task=(async()=>{ stats.loads++;let bytes; if(url?.gzip&&typeof DecompressionStream==='undefined')return read(url.fallback,progress); if(url?.chunks){const sizes=new Map(),parts=await Promise.all(url.chunks.map((u,i)=>part(u,(n,t)=>{sizes.set(i,[n,t]);if(progress)progress([...sizes.values()].reduce((a,v)=>a+v[0],0),url.compressedBytes||[...sizes.values()].reduce((a,v)=>a+v[1],0))})));const length=parts.reduce((n,p)=>n+p.byteLength,0),a=new Uint8Array(length);let at=0;for(const p of parts){a.set(new Uint8Array(p),at);at+=p.byteLength}bytes=a.buffer; if(url.gzip)bytes=await new Response(new Blob([bytes]).stream().pipeThrough(new DecompressionStream('gzip'))).arrayBuffer(); if(url.bytes&&bytes.byteLength!==url.bytes)throw Error('Model length mismatch'); if(url.sha256){const hash=Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256',bytes)),b=>b.toString(16).padStart(2,'0')).join('');if(hash!==url.sha256)throw Error('Model integrity mismatch')} }else bytes=await part(url,progress); remember(key,bytes);return bytes; })();inflight.set(key,task);try{return await task}finally{inflight.delete(key)} } const api={read,stats,prime:url=>url?read(url).catch(()=>null):Promise.resolve(null)}; host.OPENROAD_MODEL_BYTES=api;window.OPENROAD_MODEL_BYTES=api; })(); </script><style> .share-card{border:0;border-top:5px solid #ed1c24;box-shadow:0 18px 55px #0003}.share-card-top{padding-top:20px}.brand-card-heading{padding-bottom:22px}.share-card h2{font-size:36px;letter-spacing:.2px;line-height:1.06}.share-preview{height:310px;padding:12px 20px}.share-products{padding:22px 24px;gap:20px 16px}.share-products:before{content:"THE GEAR BEHIND THE BUILD";grid-column:1/-1;color:#111;font-size:11px;font-weight:600;letter-spacing:1px}.share-total{background:#fff;color:#111;border-top:1px solid #ddd;margin:0 24px;padding:18px 0}.share-total b{font-size:32px;color:#ed1c24}.card-personal{background:#111;padding:27px 24px}.card-personal>p{color:#fff;font-size:25px;line-height:1.25}.card-personal>p:after{font-size:12px;color:#ff4249;letter-spacing:1px;margin-top:17px}#cardFriendNote{background:#202020;border-left:3px solid #ed1c24;padding:14px 16px;margin-top:24px}#cardFriendMessage{color:#ddd;font-size:15px}#cardFriendNote span{color:#ff575d}.card-personal+.share-tagline{background:#111;color:#aaa;border-color:#333;padding:16px 24px;line-height:1.5}.social-share-link{border-radius:3px}.naming-panel{border-top:3px solid #ed1c24} @media(max-width:500px){.share-card h2{font-size:30px}.share-preview{height:260px;padding:12px}.share-products{padding:20px 18px;gap:18px 12px}.share-total{margin:0 18px;padding:16px 0}.card-personal{padding:24px 18px}.card-personal>p{font-size:23px}.card-personal+.share-tagline{padding:15px 18px}} </style><style>.share-page .journey-top{justify-content:flex-end}</style></head><body><script>(()=>{"use strict";let n=null,o=null,d=null,r=0,a=!1;function s(e){n&&o&&window.parent.postMessage({...e,type:"openroad-flow:"+e.type,token:n},o)}function u(){if(a=!1,!document.body)return;const e=Math.ceil(document.body.getBoundingClientRect().height)+2;e!==r&&(r=e,s({type:"height",height:e}))}function t(){a||(a=!0,requestAnimationFrame(u))}window.OPENROAD_SHOPIFY.go=e=>{if(["join","build","share"].includes(e)){if(!n){d=e;return}s({type:"navigate",stage:e})}},window.OPENROAD_SHOPIFY.download=(e,i)=>{if(!n)throw Error("Please wait for the page to finish loading.");s({type:"download",blob:e,filename:i})},window.addEventListener("message",e=>{if(e.source===window.parent){if(e.data?.type==="openroad-flow:continue"&&e.origin===o&&e.data.token===n){document.getElementById("joinForm")?.requestSubmit();return}if(!(e.data?.type!=="openroad-flow:init"||typeof e.data.token!="string"||e.data.token.length<16)&&!(o&&e.origin!==o)&&(o=e.origin,n=e.data.token,r=0,t(),d)){const i=d;d=null,window.OPENROAD_SHOPIFY.go(i)}}}),document.addEventListener("click",e=>{const i=e.target.closest?.("a[data-openroad-step]");!i||e.defaultPrevented||(e.preventDefault(),window.OPENROAD_SHOPIFY.go(i.dataset.openroadStep))}),new ResizeObserver(t).observe(document.body),window.addEventListener("resize",t),window.addEventListener("load",t),document.addEventListener("load",t,!0),document.fonts?.ready.then(t),window.parent!==window&&window.parent.postMessage({type:"openroad-flow:ready"},"*"),t()})(); </script> <main class="share-page"><nav class="journey-top" aria-label="Campaign navigation"><a href="#openroad-step-build" data-openroad-step="build">← Edit my setup</a></nav> <div id="emptySetup" class="empty-state" hidden><div class="eyebrow">YOUR DREAM STARTS WITH A BUILD</div><h1>Let’s build your setup.</h1><p>Choose your truck and gear before creating your share card.</p><a class="primary-button" href="#openroad-step-build" data-openroad-step="build">CHOOSE YOUR TRUCK →</a></div> <div class="share-layout" id="shareLayout"><section class="share-card" aria-label="Your setup share card"><div class="share-card-top"><img class="card-brand-logo" src="https://openroad4wd.com/cdn/shop/files/20240808113540_e6b8aacb-52c4-4fac-aba0-fa8e9988a522.png?v=1725871813&width=420" alt="OPENROAD" width="220" height="48"><span>$5K CHALLENGE</span></div><div class="brand-card-heading"><h2 id="cardTitle">My Dream Setup</h2><div class="card-author" id="cardAuthor"></div><div class="share-vehicle" id="shareVehicle"></div></div><img class="share-preview" id="sharePreview" alt="Your configured truck with selected 3D accessories" width="1200" height="640"><div id="sharePreviewPlaceholder" class="share-preview-placeholder" hidden></div><div class="share-products" id="shareProducts"></div><div class="share-total"><span>MY BUILD TOTAL</span><b id="shareTotal"></b></div><div class="card-personal"><p id="cardInvitation"></p><div id="cardFriendNote" hidden><span>A NOTE FOR YOU</span><p id="cardFriendMessage"></p></div></div><div class="share-tagline">BUILD IT. SHARE IT. WIN IT. · #OPENROADDreamSetup</div></section> <section class="share-copy"><div class="eyebrow">03 / SHARE</div><h1>NAME YOUR SETUP.<br>MAKE IT YOURS.</h1><p id="personalGreeting">Your dream build is ready. Give it a name, download your share card and post it on social media.</p> <form class="share-form naming-panel" id="nameForm"><div class="eyebrow">MAKE IT PERSONAL</div><h2>Name your setup</h2><p class="builder-credit">BUILT BY <strong id="builderName"></strong></p><label for="setupName">YOUR SETUP NAME</label><input id="setupName" placeholder="Weekend Escape" maxlength="52" required><label for="friendMessage">A MESSAGE FOR A FRIEND <span class="optional">OPTIONAL</span></label><textarea id="friendMessage" maxlength="180" rows="3" placeholder="Where should we take this setup first?"></textarea><div class="note-counter" id="friendMessageCount">0/180</div><button class="primary-button" type="submit">UPDATE MY SHARE CARD</button></form> <div class="share-actions"><button class="primary-button" id="downloadCard">DOWNLOAD SHARE CARD ↓</button><button class="secondary-button" id="shareCard">SHARE MY SETUP</button><div class="social-share-links" aria-label="Share on social media"><a class="social-share-link" id="shareFacebook" href="https://www.facebook.com/" target="_blank" rel="noopener noreferrer">Share on Facebook</a><a class="social-share-link" id="shareInstagram" href="https://www.instagram.com/" target="_blank" rel="noopener noreferrer">Share on Instagram</a></div><p class="social-share-help">Download your card, then upload it to Facebook or Instagram with #OPENROADDreamSetup.</p><a class="secondary-button" href="#openroad-step-build" data-openroad-step="build">EDIT MY BUILD</a></div><p class="form-message" id="shareMessage" role="status"></p> <p style="font-size:10px;margin-top:25px">Local prototype only. Downloading or sharing a card does not submit a giveaway entry. Your details remain in this browser session.</p></section></div></main> <footer class="campaign-footer">© 2026 OPENROAD 4WD · $5K Dream Setup · OCT 25–NOV 27, 2026</footer><script>window.Journey={read(t){try{return JSON.parse(sessionStorage.getItem(t)||"null")}catch{return null}},save(t,e){try{return sessionStorage.setItem(t,JSON.stringify(e)),!0}catch{return!1}},money(t){return"$"+Number(t||0).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},text(t){return String(t??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e])}}; </script><script>const setup=Journey.read('openroad_dream_setup_selection'),entry=Journey.read('openroad_dream_setup_entry'); const validSetup=setup&&Array.isArray(setup.products)&&setup.products.length>0&&setup.total<=5000; const title=document.getElementById('cardTitle'),nameInput=document.getElementById('setupName'),noteInput=document.getElementById('friendMessage'),status=document.getElementById('shareMessage'); const author=entry?.firstName?.trim()||'OPENROAD Builder'; const invitation='I built a setup at OPENROAD. Come try it too!'; function syncPersonalization(){ const name=nameInput.value.trim()||'My Dream Setup',note=noteInput.value.trim(); title.textContent=name;document.getElementById('cardAuthor').textContent='BUILT BY '+author; document.getElementById('cardInvitation').textContent=invitation; document.getElementById('cardFriendMessage').textContent=note; document.getElementById('cardFriendNote').hidden=!note; document.getElementById('friendMessageCount').textContent=noteInput.value.length+'/180'; Journey.save('openroad_dream_setup_name',name);Journey.save('openroad_dream_setup_friend_message',note); } if(!validSetup){document.getElementById('shareLayout').hidden=true;document.getElementById('emptySetup').hidden=false}else{ nameInput.value=Journey.read('openroad_dream_setup_name')||'My Dream Setup'; noteInput.value=Journey.read('openroad_dream_setup_friend_message')||''; document.getElementById('builderName').textContent=author; document.getElementById('shareVehicle').textContent=setup.vehicle; document.getElementById('shareTotal').textContent=Journey.money(setup.total); document.getElementById('personalGreeting').textContent='Your build is ready. Add a name and a personal touch, then download your card and share it on social media.'; const preview=document.getElementById('sharePreview');if(setup.screenshot){preview.src=setup.screenshot}else{preview.hidden=true;document.getElementById('sharePreviewPlaceholder').hidden=false} document.getElementById('shareProducts').innerHTML=setup.products.map(p=>`<div class="share-product"><img src="${Journey.text(p.image)}" alt=""><div><strong>${Journey.text(p.name)}</strong><small>${Journey.money(p.price)}</small></div></div>`).join(''); syncPersonalization(); } nameInput.oninput=()=>{nameInput.setCustomValidity('');syncPersonalization()};noteInput.oninput=syncPersonalization; document.getElementById('nameForm').onsubmit=e=>{e.preventDefault();if(!nameInput.value.trim()){nameInput.setCustomValidity('Please name your setup.');nameInput.reportValidity();return}syncPersonalization();status.textContent='Your share card has been updated.'}; function loadImage(src){return new Promise(resolve=>{const im=new Image();im.crossOrigin='anonymous';im.onload=()=>resolve(im);im.onerror=()=>resolve(null);im.src=src})} function textLines(ctx,text,width){const lines=[];for(const paragraph of String(text).split('\n')){let line='';for(const word of paragraph.split(' ')){if(ctx.measureText(word).width>width){for(const c of word){if(ctx.measureText(line+c).width>width){lines.push(line);line=''}line+=c}continue}const next=line?line+' '+word:word;if(line&&ctx.measureText(next).width>width){lines.push(line);line=word}else line=next}lines.push(line)}return lines} function writeText(ctx,text,x,y,width,lineHeight,max=10){const lines=textLines(ctx,text,width);lines.slice(0,max).forEach((line,i)=>ctx.fillText(i===max-1&&lines.length>max?line+'…':line,x,y+i*lineHeight));return y+Math.min(lines.length,max)*lineHeight} function contain(ctx,im,x,y,w,h){if(!im)return;const scale=Math.min(w/im.width,h/im.height);ctx.drawImage(im,x+(w-im.width*scale)/2,y+(h-im.height*scale)/2,im.width*scale,im.height*scale)} const brandLogo='https://openroad4wd.com/cdn/shop/files/20240808113540_e6b8aacb-52c4-4fac-aba0-fa8e9988a522.png?v=1725871813&width=420'; const previewBounds=new WeakMap(); function setupBounds(im){ if(previewBounds.has(im))return previewBounds.get(im); const full={x:0,y:0,w:im.width,h:im.height}; try{const c=document.createElement('canvas');c.width=im.width;c.height=im.height;const cx=c.getContext('2d',{willReadFrequently:true});cx.drawImage(im,0,0);const data=cx.getImageData(0,0,c.width,c.height).data; if(data[3]>16||data[(c.width-1)*4+3]>16){previewBounds.set(im,full);return full} let x0=c.width,y0=c.height,x1=0,y1=0; for(let y=0;y<c.height;y+=2)for(let x=0;x<c.width;x+=2)if(data[(y*c.width+x)*4+3]>16){x0=Math.min(x0,x);x1=Math.max(x1,x);y0=Math.min(y0,y);y1=Math.max(y1,y)} if(x1>x0&&y1>y0){const pad=Math.max(x1-x0,y1-y0)*.065;x0=Math.max(0,x0-pad);y0=Math.max(0,y0-pad);const b={x:x0,y:y0,w:Math.min(c.width-x0,x1-x0+pad),h:Math.min(c.height-y0,y1-y0+pad)};previewBounds.set(im,b);return b} }catch{} return full; } function drawSetup(ctx,im,x,y,w,h){if(!im)return;const b=setupBounds(im),scale=Math.min(w/b.w,h/b.h);ctx.drawImage(im,b.x,b.y,b.w,b.h,x+(w-b.w*scale)/2,y+(h-b.h*scale)/2,b.w*scale,b.h*scale)} const stagePreview=document.getElementById('sharePreview'); if(setup?.screenshot){const framed=new Image();framed.onload=()=>{const b=setupBounds(framed);if(b.w<framed.width||b.h<framed.height){const c=document.createElement('canvas');c.width=Math.ceil(b.w);c.height=Math.ceil(b.h);c.getContext('2d').drawImage(framed,b.x,b.y,b.w,b.h,0,0,c.width,c.height);stagePreview.src=c.toDataURL('image/png')}};framed.src=setup.screenshot} async function makeCard(){ if(!validSetup)return null;syncPersonalization(); try{await document.fonts.load('600 60px "Archivo Narrow"');await document.fonts.load('400 26px "Archivo Narrow"')}catch{} const c=document.createElement('canvas');c.width=1200;const ctx=c.getContext('2d'); const f=(size,bold=false)=>`${bold?600:400} ${size}px "Archivo Narrow",Arial,sans-serif`; ctx.font=f(58,true);const titleRows=Math.min(textLines(ctx,title.textContent.toUpperCase(),1080).length,3); ctx.font=f(28);const note=noteInput.value.trim(),noteRows=note?Math.min(textLines(ctx,note,1000).length,8):0; const headerH=210+titleRows*62,heroH=485,productsY=headerH+heroH+46,rows=Math.ceil(setup.products.length/2),totalY=productsY+rows*104+20,inviteY=totalY+96; c.height=Math.max(1500,inviteY+194+(note?92+noteRows*36:0)+78); ctx.fillStyle='#fff';ctx.fillRect(0,0,c.width,c.height);ctx.fillStyle='#111';ctx.fillRect(0,0,1200,headerH);ctx.fillStyle='#ed1c24';ctx.fillRect(0,0,1200,9); const logo=await loadImage(brandLogo);if(logo)contain(ctx,logo,54,40,275,58);else{ctx.fillStyle='#ed1c24';ctx.font=f(42,true);ctx.fillText('OPENROAD',55,83)} ctx.textAlign='right';ctx.fillStyle='#fff';ctx.font=f(21,true);ctx.fillText('$5K DREAM SETUP',1145,72);ctx.textAlign='left'; ctx.fillStyle='#fff';ctx.font=f(58,true);const titleEnd=writeText(ctx,title.textContent.toUpperCase(),55,157,1080,62,3); ctx.fillStyle='#e7e7e7';ctx.font=f(24);ctx.fillText('BUILT BY '+author,55,titleEnd+7,1080);ctx.fillStyle='#aaa';ctx.font=f(24);ctx.fillText(setup.vehicle,55,titleEnd+45); ctx.fillStyle='#f2f2f2';ctx.fillRect(0,headerH,1200,heroH); const preview=await loadImage(setup.screenshot||window.OPENROAD_SHOPIFY.urls['dream-setup-assets/images/campaign-banner.jpg']);drawSetup(ctx,preview,35,headerH+20,1130,heroH-40); ctx.fillStyle='#111';ctx.font=f(20,true);ctx.fillText('THE GEAR BEHIND THE BUILD',55,productsY-15); const images=await Promise.all(setup.products.map(p=>loadImage(p.image))); setup.products.forEach((p,i)=>{const x=55+i%2*555,y=productsY+12+Math.floor(i/2)*104;ctx.fillStyle='#f4f4f4';ctx.fillRect(x,y,84,84);contain(ctx,images[i],x+4,y+4,76,76);ctx.fillStyle='#111';ctx.font=f(25,true);writeText(ctx,p.name,x+102,y+27,410,28,2);ctx.fillStyle='#e31b23';ctx.font=f(24,true);ctx.fillText(Journey.money(p.price),x+102,y+80)}); ctx.fillStyle='#ddd';ctx.fillRect(55,totalY,1090,1);ctx.fillStyle='#111';ctx.font=f(24,true);ctx.fillText('MY BUILD TOTAL',55,totalY+58);ctx.textAlign='right';ctx.fillStyle='#ff3038';ctx.font=f(52,true);ctx.fillText(Journey.money(setup.total),1145,totalY+63);ctx.textAlign='left'; ctx.fillStyle='#111';ctx.fillRect(0,inviteY,1200,c.height-inviteY);ctx.fillStyle='#fff';ctx.font=f(40,true);writeText(ctx,invitation,55,inviteY+60,1080,46,3); ctx.fillStyle='#e31b23';ctx.font=f(21,true);ctx.fillText('BUILD YOURS AT OPENROAD4WD.COM',55,inviteY+134); if(note){const ny=inviteY+165;ctx.fillStyle='#202020';ctx.fillRect(55,ny,1090,78+noteRows*36);ctx.fillStyle='#e31b23';ctx.fillRect(55,ny,5,78+noteRows*36);ctx.font=f(18,true);ctx.fillText('A NOTE FOR YOU',82,ny+32);ctx.fillStyle='#ddd';ctx.font=f(28);writeText(ctx,note,82,ny+72,1000,36,8)} ctx.fillStyle='#3a3a3a';ctx.fillRect(55,c.height-62,1090,1);ctx.fillStyle='#777';ctx.font=f(20);ctx.fillText('#OPENROADDreamSetup',55,c.height-28);ctx.textAlign='right';ctx.fillStyle='#eee';ctx.font=f(20,true);ctx.fillText('BUILD IT. SHARE IT. WIN IT.',1145,c.height-28); return new Promise(resolve=>c.toBlob(resolve,'image/png')); } async function downloadCard(){status.textContent='Preparing your share card…';try{const blob=await makeCard();if(!blob)return;const file='OPENROAD-'+(title.textContent.replace(/[^a-zA-Z0-9-]/g,'-').slice(0,55)||'Dream-Setup')+'.png';window.OPENROAD_SHOPIFY.download(blob,file);status.textContent='Card downloaded. Upload it to Facebook or Instagram.'}catch(e){console.error(e);status.textContent='Unable to create the card. Please try again.'}} document.getElementById('downloadCard').onclick=downloadCard; document.getElementById('shareCard').onclick=async()=>{try{const blob=await makeCard();if(!blob)return;const file=new File([blob],'OPENROAD-Dream-Setup.png',{type:'image/png'});if(navigator.canShare?.({files:[file]}))await navigator.share({title:title.textContent,text:invitation,files:[file]});else await downloadCard()}catch(e){if(e.name!=='AbortError')status.textContent='Use DOWNLOAD SHARE CARD, then upload it to your social account.'}}; </script></body></html>