PageSourceSearch

https://solidbuildwood.com/search.php

html solidbuildwood.com collected 2026-09-29 02:45:20 UTC 101,144 bytes, 1,712 lines download raw bytes

1
2
3
4
5<!DOCTYPE html>
6<html class="no-js" lang="en">
7    <head>
8        <title>SolidBuild®</title>
9        <link rel="dns-prefetch preconnect" href="https://cdn11.bigcommerce.com/s-9vcrg0" crossorigin><link rel="dns-prefetch preconnect" href="https://fonts.googleapis.com/" crossorigin><link rel="dns-prefetch preconnect" href="https://fonts.gstatic.com/" crossorigin>
10        <meta name="keywords" content="garden shed kits, storage shed kits, she shed, she shed kits, garden shed, storage shed, prefab sheds, finished interior sheds, solidbuildwood, solid build wood, solidbuild shed, shed builders near me, wood sheds near me, pre built sheds near me, tiny house builders near me, custom sheds illinois, backyard sheds near me, suncast corporation, shed installers near me, shed companies near me, outdoor sheds near me	, quality sheds, sheds builders near me, wood storage sheds near me, storage shed near me, tiny home builders near me, shed manufacturers near me, rent to own sheds near me, shed sale near me, tool sheds near me, log home kits near me, storage shed builders, wood shed near me, cabin sheds near me, shed builders chicago	, finish shed interior, shed builder near me, tuff shed, amish sheds near me, amish built sheds illinois, solidbuild sheds	, solid build inc, finished shed interior, finished shed, log home builders, custom sheds, finished interior sheds, solid build shed, log cabin builders, solid build wood sheds	, storage buildings, solid build sheds, solidbuild, cabin builder, solid built sheds, green structures, finished sheds, shed building company	, tiny house near me, how to finish a shed interior, finished inside, shed contractors, brighton sheds for sale, solid build, solid builder, shed construction, wood shed builders, custom shed, soild build	, amish sheds, natural sheds, bristhol, sheds, 20x28 cabin, shed builder, double garden shed, cabin builders, finished sheds for sale, amish built sheds, the shed, finished storage sheds, build solid, solid built, bristol shed, sheds near me, easy to assemble shed, amish storage sheds, storage building, built sheds, 20 x 16 cabin, easy assemble sheds	, easy to assemble sheds, shed, natural wood sheds, sheds in brighton sheds first, best sheds, a shed, brighton garden shed, 10x10shed, easy assembly shed, brighton shed company, backyard home, solid garden, shed., finished storage building homes, solid wood shed, amish sheds built on site, brighton shed, natural wood shed, finished storage buildings, easy to assemble storage sheds	, utility shed, backyard green, easy assemble shed, green home building, log builder, backyard sheds, easy to assemble garden sheds, out door sheds, buildwood, shed brighton, log home, wood cabin, osb garden storage made in china, green shed, wood shed, log house, prefab sheds, brighton sheds,  solid wood storage project, backyard garden, natural shed, 13 x 10 shed	, backyard structures, shed bristol, shed in backyard, 250 sq ft shed, how to build a really solid shed, back yard shed, 150 sq ft shed, shed backyard, all wood sheds, back yard sheds, outdoor sheds, optima 8, havenloft, backyard shed house	, modern wood shed, shed builders, solid shed, storage shed, finishing a shed interior, sheds for the backyard, easy to assemble storage shed, she shed, wooden garden building, solid building, modern wooden shed, shed house, wood shed natural, the shed bristol, wood shed cabin, solid, tiny home	, brighton storage sheds	, loft haven, 12x12 cabin interior, well made sheds, buy shed, small cabin sheds, modern pool shed, tiny house, modern wood sheds, all wood cabins, kit garden sheds, log cabin kits, yard sheds	, shed home, glass sheds for sale, sheds bristol, sheds modern, customized wooden garden house, 100 sq ft shed, 20 x 16 cabin plans, sheds for backyard, modern garden cabins, tuff shed, finished interiors, shed cabin interior, shed office"><meta name="description" content="Handcrafted solid wood shed kits from FSC-certified Norway Spruce. Finished interior included. Free shipping to 48 states. From $3,995."><link rel='canonical' href='https://solidbuildwood.com/search.php' /><meta name='platform' content='bigcommerce.stencil' />
11        
12        
13        
14        
15        <!-- BEGIN Preloading first images -->
16        
17        
18        
19        
20        
21        
22        
23        
24        
25        <!-- END Preloading first images -->
26
27        <link href="https://cdn11.bigcommerce.com/s-9vcrg0/product_images/favicon.png" rel="shortcut icon">
28        <meta name="viewport" content="width=device-width, initial-scale=1 , maximum-scale=1">
29
30        
30<script>
31            document.documentElement.className = document.documentElement.className.replace('no-js', 'js');
32        </script>
32
33
34        
34<script>
35    function browserSupportsAllFeatures() {
36        return window.Promise
37            && window.fetch
38            && window.URL
39            && window.URLSearchParams
40            && window.WeakMap
41            // object-fit support
42            && ('objectFit' in document.documentElement.style);
43    }
44
45    function loadScript(src) {
46        var js = document.createElement('script');
47        js.src = src;
48        js.onerror = function () {
49            console.error('Failed to load polyfill script ' + src);
50        };
51        document.head.appendChild(js);
52    }
53
54    if (!browserSupportsAllFeatures()) {
55        loadScript('https://cdn11.bigcommerce.com/s-9vcrg0/stencil/6da2bff0-9dd6-013f-fe0f-4201d46ef01e/e/644ce700-943f-013f-ccec-561d5e2793e8/dist/theme-bundle.polyfills.js');
56    }
57</script>
57
58        
58<script>window.consentManagerTranslations = `{"locale":"en","locales":{"consent_manager.data_collection_warning":"en","consent_manager.accept_all_cookies":"en","consent_manager.gdpr_settings":"en","consent_manager.data_collection_preferences":"en","consent_manager.manage_data_collection_preferences":"en","consent_manager.use_data_by_cookies":"en","consent_manager.data_categories_table":"en","consent_manager.allow":"en","consent_manager.accept":"en","consent_manager.deny":"en","consent_manager.dismiss":"en","consent_manager.reject_all":"en","consent_manager.category":"en","consent_manager.purpose":"en","consent_manager.functional_category":"en","consent_manager.functional_purpose":"en","consent_manager.analytics_category":"en","consent_manager.analytics_purpose":"en","consent_manager.targeting_category":"en","consent_manager.advertising_category":"en","consent_manager.advertising_purpose":"en","consent_manager.essential_category":"en","consent_manager.esential_purpose":"en","consent_manager.yes":"en","consent_manager.no":"en","consent_manager.not_available":"en","consent_manager.cancel":"en","consent_manager.save":"en","consent_manager.back_to_preferences":"en","consent_manager.close_without_changes":"en","consent_manager.unsaved_changes":"en","consent_manager.by_using":"en","consent_manager.agree_on_data_collection":"en","consent_manager.change_preferences":"en","consent_manager.cancel_dialog_title":"en","consent_manager.privacy_policy":"en","consent_manager.allow_category_tracking":"en","consent_manager.disallow_category_tracking":"en"},"translations":{"consent_manager.data_collection_warning":"We use cookies (and other similar technologies) to collect data to improve your shopping experience.","consent_manager.accept_all_cookies":"Accept All Cookies","consent_manager.gdpr_settings":"Settings","consent_manager.data_collection_preferences":"Website Data Collection Preferences","consent_manager.manage_data_collection_preferences":"Manage Website Data Collection Preferences","consent_manager.use_data_by_cookies":" uses data collected by cookies and JavaScript libraries to improve your shopping experience.","consent_manager.data_categories_table":"The table below outlines how we use this data by category. To opt out of a category of data collection, select 'No' and save your preferences.","consent_manager.allow":"Allow","consent_manager.accept":"Accept","consent_manager.deny":"Deny","consent_manager.dismiss":"Dismiss","consent_manager.reject_all":"Reject all","consent_manager.category":"Category","consent_manager.purpose":"Purpose","consent_manager.functional_category":"Functional","consent_manager.functional_purpose":"Enables enhanced functionality, such as videos and live chat. If you do not allow these, then some or all of these functions may not work properly.","consent_manager.analytics_category":"Analytics","consent_manager.analytics_purpose":"Provide statistical information on site usage, e.g., web analytics so we can improve this website over time.","consent_manager.targeting_category":"Targeting","consent_manager.advertising_category":"Advertising","consent_manager.advertising_purpose":"Used to create profiles or personalize content to enhance your shopping experience.","consent_manager.essential_category":"Essential","consent_manager.esential_purpose":"Essential for the site and any requested services to work, but do not perform any additional or secondary function.","consent_manager.yes":"Yes","consent_manager.no":"No","consent_manager.not_available":"N/A","consent_manager.cancel":"Cancel","consent_manager.save":"Save","consent_manager.back_to_preferences":"Back to Preferences","consent_manager.close_without_changes":"You have unsaved changes to your data collection preferences. Are you sure you want to close without saving?","consent_manager.unsaved_changes":"You have unsaved changes","consent_manager.by_using":"By using our website, you're agreeing to our","consent_manager.agree_on_data_collection":"By using our website, you're agreeing to the collection of data as described in our ","consent_manager.change_preferences":"You can change your preferences at any time","consent_manager.cancel_dialog_title":"Are you sure you want to cancel?","consent_manager.privacy_policy":"Privacy Policy","consent_manager.allow_category_tracking":"Allow [CATEGORY_NAME] tracking","consent_manager.disallow_category_tracking":"Disallow [CATEGORY_NAME] tracking"}}`;</script>
58
59
60        
60<script>
61            window.lazySizesConfig = window.lazySizesConfig || {};
62            window.lazySizesConfig.loadMode = 1;
63        </script>
63
64        
64<script async src="https://cdn11.bigcommerce.com/s-9vcrg0/stencil/6da2bff0-9dd6-013f-fe0f-4201d46ef01e/e/644ce700-943f-013f-ccec-561d5e2793e8/dist/theme-bundle.head_async.js"></script>
64
65        
66        <link href="https://fonts.googleapis.com/css?family=Roboto+Slab:700%7CRoboto:700,500,400%7CPoppins:400,700&display=swap" rel="stylesheet">
67        
68        
68<script async src="https://cdn11.bigcommerce.com/s-9vcrg0/stencil/6da2bff0-9dd6-013f-fe0f-4201d46ef01e/e/644ce700-943f-013f-ccec-561d5e2793e8/dist/theme-bundle.font.js"></script>
68
69        
70
71        <link data-stencil-stylesheet href="https://cdn11.bigcommerce.com/s-9vcrg0/stencil/6da2bff0-9dd6-013f-fe0f-4201d46ef01e/e/644ce700-943f-013f-ccec-561d5e2793e8/css/theme-6bbbcde0-9dd7-013f-8457-063022e2374f.css" rel="stylesheet">
72
73        <!-- Start Tracking Code for analytics_facebook -->
74
75<script>
76!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,document,'script','https://connect.facebook.net/en_US/fbevents.js');
77
78fbq('set', 'autoConfig', 'false', '173894989827938');
79fbq('dataProcessingOptions', ['LDU'], 0, 0);
80fbq('init', '173894989827938', {"external_id":"360e81ac-dd51-44a0-ae6e-6d0863bfdfa9"});
81fbq('set', 'agent', 'bigcommerce', '173894989827938');
82
83function trackEvents() {
84    var pathName = window.location.pathname;
85
86    
87
88    // Search events start -- only fire if the shopper lands on the /search.php page
89    if (pathName.indexOf('/search.php') === 0 && getUrlParameter('search_query')) {
90        fbq('trackSingle', '173894989827938', 'Search', {
91            content_type: 'product_group',
92            content_ids: [],
93            search_string: getUrlParameter('search_query')
94        });
95    }
96    // Search events end
97
98    // Wishlist events start -- only fire if the shopper attempts to add an item to their wishlist
99    if (pathName.indexOf('/wishlist.php') === 0 && getUrlParameter('added_product_id')) {
100        fbq('trackSingle', '173894989827938', 'AddToWishlist', {
101            content_type: 'product_group',
102            content_ids: []
103        });
104    }
105    // Wishlist events end
106
107    // Lead events start -- only fire if the shopper subscribes to newsletter
108    if (pathName.indexOf('/subscribe.php') === 0 && getUrlParameter('result') === 'success') {
109        fbq('trackSingle', '173894989827938', 'Lead', {});
110    }
111    // Lead events end
112
113    // Registration events start -- only fire if the shopper registers an account
114    if (pathName.indexOf('/login.php') === 0 && getUrlParameter('action') === 'account_created') {
115        fbq('trackSingle', '173894989827938', 'CompleteRegistration', {}, "");
116    }
117    // Registration events end
118
119    
120
121    function getUrlParameter(name) {
122        var cleanName = name.replace(/[\[]/, '\[').replace(/[\]]/, '\]');
123        var regex = new RegExp('[\?&]' + cleanName + '=([^&#]*)');
124        var results = regex.exec(window.location.search);
125        return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
126    }
127}
128
129if (window.addEventListener) {
130    window.addEventListener("load", trackEvents, false)
131}
132</script>
132
133<noscript><img height="1" width="1" style="display:none" alt="null" src="https://www.facebook.com/tr?id=173894989827938&ev=PageView&noscript=1&a=plbigcommerce1.2&eid="/></noscript>
134
135<!-- End Tracking Code for analytics_facebook -->
136
137<!-- Start Tracking Code for analytics_googleanalytics4 -->
138
139<script data-cfasync="false" src="https://cdn11.bigcommerce.com/shared/js/google_analytics4_bodl_subscribers-358423becf5d870b8b603a81de597c10f6bc7699.js" integrity="sha256-gtOfJ3Avc1pEE/hx6SKj/96cca7JvfqllWA9FTQJyfI=" crossorigin="anonymous"></script>
vendor: 1 bytes, line 139
139
140<script data-cfasync="false">
141  (function () {
142    window.dataLayer = window.dataLayer || [];
143
144    function gtag(){
145        dataLayer.push(arguments);
146    }
147
148    function initGA4(event) {
149         function setupGtag() {
150            function configureGtag() {
151                gtag('js', new Date());
152                gtag('set', 'developer_id.dMjk3Nj', true);
153                gtag('config', 'G-1G0EB5XWP6');
154            }
155
156            var script = document.createElement('script');
157
158            script.src = 'https://www.googletagmanager.com/gtag/js?id=G-1G0EB5XWP6';
159            script.async = true;
160            script.onload = configureGtag;
161
162            document.head.appendChild(script);
163        }
164
165        setupGtag();
166
167        if (typeof subscribeOnBodlEvents === 'function') {
168            subscribeOnBodlEvents('G-1G0EB5XWP6', false);
169        }
170
171        window.removeEventListener(event.type, initGA4);
172    }
173
174    
175
176    var eventName = document.readyState === 'complete' ? 'consentScriptsLoaded' : 'DOMContentLoaded';
177    window.addEventListener(eventName, initGA4, false);
178  })()
179</script>
179
180
181<!-- End Tracking Code for analytics_googleanalytics4 -->
182
183<!-- Start Tracking Code for analytics_siteverification -->
184
185<meta name="google-site-verification" content="xfBNCuw-V_tuIRDDGSZ4wCoy7QQPkeAwQyQ5L0ztSeM" />
186
187<!-- End Tracking Code for analytics_siteverification -->
188
189
190<script type="text/javascript" src="https://checkout-sdk.bigcommerce.com/v1/loader.js" defer ></script>
190
191<!-- Start of HubSpot Embed Code -->
192  
192<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/5664453.js"></script>
192
193<!-- End of HubSpot Embed Code -->
194<script type="text/javascript">
195var BCData = {};
196</script>
vendor: 1 bytes, line 196
196
197<script src='https://ecommplugins-trustboxsettings.trustpilot.com/stores/9vcrg0.js?settings=1730757270798' async ></script>
197<script src='https://widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js' async ></script>
197
198                
198<script type="text/javascript">
199                    const trustpilot_settings = {
200                        page: "search" === "default" ? "landing" : "search",
201                        sku: "",
202                        name: "",
203                        key: "Qifu2O9hexlnPWDT",
204                        product_id: "", // Needed for TrustBoxPreview
205                    };
206                    const createTrustBoxScript = function() {
207                        const trustBoxScript = document.createElement('script');
208                        trustBoxScript.async = true;
209                        trustBoxScript.src = "https://ecommplugins-scripts.trustpilot.com/v2.1/js/header_bigcommerce.min.js";
210                        document.head.appendChild(trustBoxScript);
211                    };
212                    if (BCData.product_attributes && !BCData.product_attributes.base && "sku" !== 'id') {
213                        addEventListener('DOMContentLoaded', () => {
214                            const endpoint = "/remote/v1/product-attributes/";
215                            try {
216                                stencilUtils.api.productAttributes.makeRequest(endpoint, "GET", {}, {}, function(err, res) {
217                                    trustpilot_settings.sku = res.data["sku"];
218                                    createTrustBoxScript();
219                                })
220                            } catch {
221                                fetch(endpoint).then(function(res) {
222                                    res.json().then(function(jsonRes) {
223                                        trustpilot_settings.sku = jsonRes.data["sku"];
224                                        createTrustBoxScript();
225                                    });
226                                });
227                            }
228                        });
229                    } else {
230                        createTrustBoxScript();
231                    }
232                </script>
232
233            
233<script
234 async 
235 src="https://na-library.klarnaservices.com/lib.js"
236 data-client-id="b7705a76-3193-5e24-9dbe-8cbf14bb0234"
237></script>
237<script>
238  gtag('event', 'page_view', {
239    'send_to': 'AW-1030350139',
240    'value': 'price',
241    'items': [{
242      'id': 'sku',
243      'google_business_vertical': 'retail'
244    }]
245  });
246</script>
246<script type="text/javascript">
247    
248</script>
248<!-- TrustBox script -->
249<script type="text/javascript" src="//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js" async></script>
249
250<!-- End TrustBox script -->
250<script type="text/javascript">
251    (function(c,l,a,r,i,t,y){
252        c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
253        t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
254        y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
255    })(window, document, "clarity", "script", "g9nggce6x7");
256</script>
256<!-- TrustBox script -->
257<script type="text/javascript" src="//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js" async></script>
257
258<!-- End TrustBox script -->
258<script src="https://analytics.ahrefs.com/analytics.js" data-key="RotXCkjllzGtOhi+c9XfDA" async></script>
vendor: 63 bytes, line 258
258<script async src="https://www.googletagmanager.com/gtag/js?id=
258AW-1030350139
vendor: 12 bytes, line 258
258"></script>
259<script>
260    window.addEventListener("load", (event) => {
261        
vendor: 151 bytes, lines 261-264
261window.dataLayer = window.dataLayer || [];
262        function gtag(){dataLayer.push(arguments);}
263        gtag('js', new Date());
264        gtag('config', '
264AW-1030350139
vendor: 8 bytes, lines 264-265
264');
265    
265});
266</script>
266<script nonce="">
267if(typeof fbq === 'function') {
268  fbq('trackSingle', '173894989827938', 'PageView', {}, {"eventID":"bccf17fd-4e83-4c69-9763-1367eaf10926"});
269} else if (typeof window.addEventListener === 'function') {
270  window.addEventListener("load", function() { fbq('trackSingle', '173894989827938', 'PageView', {}, {"eventID":"bccf17fd-4e83-4c69-9763-1367eaf10926"}); }, false)
271}
272</script>
272
273 
273<script data-cfasync="false" src="https://microapps.bigcommerce.com/bodl-events/1.9.4/index.js" integrity="sha256-Y0tDj1qsyiKBRibKllwV0ZJ1aFlGYaHHGl/oUFoXJ7Y=" nonce="" crossorigin="anonymous"></script>
273
274 
274<script data-cfasync="false" nonce="">
275
276 (function() {
277    function decodeBase64(base64) {
278       const text = atob(base64);
279       const length = text.length;
280       const bytes = new Uint8Array(length);
281       for (let i = 0; i < length; i++) {
282          bytes[i] = text.charCodeAt(i);
283       }
284       const decoder = new TextDecoder();
285       return decoder.decode(bytes);
286    }
287    window.bodl = JSON.parse(decodeBase64("eyJzZXNzaW9uIjp7ImlkIjoiZDE5Njk0MGQtNjIyYi00MjVmLTg4ZGItZDE0MjQ1NTcwMDQ5IiwiZmlyc3RfdG91Y2hfdGltZXN0YW1wIjoiMjAyNi0wOS0yOVQwMjo0NToyMCIsImZpcnN0X3RvdWNoX3JlZmVycmFsX3VybCI6IiIsImZpcnN0X3RvdWNoX3JlcXVlc3RfdXJsIjoiaHR0cHM6Ly9zb2xpZGJ1aWxkd29vZC5jb20vc2VhcmNoLnBocCJ9LCJzaG9wcGVyIjp7InZpc2l0b3JfaWQiOiIiLCJjdXN0b21lcl9pZCI6bnVsbCwiZW1haWwiOm51bGwsImZpcnN0X25hbWUiOm51bGwsImxhc3RfbmFtZSI6bnVsbH0sImRhdGFfY29uc2VudCI6eyJmdW5jdGlvbmFsIjp0cnVlLCJhbmFseXRpY3MiOnRydWUsImFkdmVydGlzaW5nIjp0cnVlfSwiZXZlbnRzIjpbeyJib2RsX3YxX2tleXdvcmRfc2VhcmNoIjp7ImV2ZW50X2lkIjoiNjc1Mzk0Y2YtMjQwYi00ZGYzLTk0YmUtYjBjOWM4Mzc1NTU4IiwiY2hhbm5lbF9pZCI6MSwic2VhcmNoX2tleXdvcmQiOiIifX1dfQ=="));
288 })()
289
290 </script>
290
291
292<script nonce="">
293(function () {
294    var xmlHttp = new XMLHttpRequest();
295    
296    xmlHttp.open('POST', 'https://bes.gcp.data.bigcommerce.com/nobot');
297    xmlHttp.setRequestHeader('Content-Type', 'application/json');
298    xmlHttp.send('{"store_id":"632533","timezone_offset":"-5.0","timestamp":"2026-09-29T02:45:20.36618400Z","visit_id":"70bf3ac2-31bd-4728-92ed-dcfd89ec027d","channel_id":1}');
299})();
300</script>
300
301  
302    </head>
303    <body class="search-page cosmetics gridview">
304        <svg data-src="https://cdn11.bigcommerce.com/s-9vcrg0/stencil/6da2bff0-9dd6-013f-fe0f-4201d46ef01e/e/644ce700-943f-013f-ccec-561d5e2793e8/img/icon-sprite.svg" class="icons-svg-sprite"></svg>
305
306        
307
308
309<div class="announce">Free shipping to the lower 48 states &mdash; no promo code needed</div>
310
311<header class="site-header">
312  <div class="site-header__inner">
313    <div class="brand">
314      <a href="https://solidbuildwood.com/" class="header-logo__link" data-header-logo-link>
315        <div class="header-logo-image-container">
316            <img class="header-logo-image"
317                 src="https://cdn11.bigcommerce.com/s-9vcrg0/images/stencil/145x100/solid-build-logo-web_1610481696__70483.original.png"
318                 srcset="https://cdn11.bigcommerce.com/s-9vcrg0/images/stencil/250x100/solid-build-logo-web_1610481696__70483.original.png"
319                 alt="SolidBuild®"
320                 title="SolidBuild®">
321        </div>
322</a>
323    </div>
324
325    <nav class="header-nav" aria-label="Primary">
326      <div class="nav-item">
327        <a href="/all-shed-kits/" aria-haspopup="true">Shop Sheds <span class="main-nav__chev">&#9660;</span></a>
328        <div class="nav-panel nav-panel--mega" role="menu" aria-label="Shop Sheds">
329          <div class="mega__col">
330            <span class="mega__head">By Use</span>
331            <a href="/wood-she-shed-kit/">She Shed</a>
332            <a href="/home-office-shed/">Home Office Shed</a>
333            <a href="/art-studio-shed/">Art Studio Shed</a>
334            <a href="/wooden-playhouse-shed/">Playhouse Shed</a>
335            <a href="/guest-bedroom-shed">Guest Bedroom Shed</a>
336            <a href="/pool-house-shed/">Pool House</a>
337            <a href="/storage-shed-kits/">Storage Shed</a>
338            <a href="/man-cave-workshop-studio-shed/">Man Cave &amp; Workshop Shed</a>
339          </div>
340          <div class="mega__col">
341            <a class="mega__head" href="/choose-your-shed-design/">By Style</a>
342            <a href="/cottage-sheds/">Cottage Sheds</a>
343            <a href="/classic-sheds/">Classic Sheds</a>
344            <a href="/modern-sheds/">Modern Sheds</a>
345            <a href="/all-shed-kits/">Browse All Sheds</a>
346            <a href="/shed-accessories/">Accessories</a>
347          </div>
348          <div class="mega__col">
349            <a class="mega__head" href="/all-shed-sizes/">By Size</a>
350            <a href="/shed-area-50-sq-ft-100-sq-ft/">50&ndash;100 sq ft</a>
351            <a href="/shed-area-101-sq-ft-120-sq-ft/">101&ndash;120 sq ft</a>
352            <a href="/shed-area-121-sq-ft-220-sq-ft/">121&ndash;220 sq ft</a>
353            <a href="/all-shed-sizes/">All Sizes</a>
354          </div>
355        </div>
356      </div>
357
358      <a href="/sheds-on-sale/" class="header-nav__sale">On Sale</a>
359
360      <div class="nav-item">
361        <a href="/shed-kit-tips-videos/" aria-haspopup="true">Resources <span class="main-nav__chev">&#9660;</span></a>
362        <div class="nav-panel" role="menu" aria-label="Resources">
363          <a href="/content/shed-studio/index.html?src=header">Shed Studio</a>
364          <a href="/shed-kit-faq/">Detailed FAQ</a>
365          <a href="/how-to-build-a-shed-foundation/">Foundation Guide</a>
366          <a href="/content/tools/foundation-calculator.html">Foundation Calculator <span class="nav-beta">Beta</span></a>
367          <a href="/garden-shed-kit-assembly-video-library/">Assembly Video Library</a>
368          <a href="/can-you-insulate-your-garden-shed-kit/">Shed Insulation Guide</a>
369          <a href="/how-to-run-electrical-installation-in-your-wooden-shed/">Electrical Installation</a>
370          <a href="/roofing-options-for-gabled-flat-low-slope-sheds/">Roofing Options</a>
371          <a href="/how-to-protect-your-shed-from-termites/">Termite Protection</a>
372          <a href="/paint-and-stain-guide/">
372Paint and Stain Guide</a>
373          <a href="/shed-look-catalog-stain-paint-roofing-ideas/">Shed Look Ideas</a>
374          <a href="/free-shed-shipping/">Shipping &amp; Delivery</a>
375          <a href="/solidbuild-shed-project-cost-calculator/">Ballpark Whole-Project Estimate</a>
376          <a href="/schedule-an-in-depth-phone-consultation/">Book an Expert Consult</a>
377        </div>
378      </div>
379
380      <div class="nav-item">
381        <a href="/shed-kit-gallery/" aria-haspopup="true">Gallery &amp; Reviews <span class="main-nav__chev">&#9660;</span></a>
382        <div class="nav-panel" role="menu" aria-label="Gallery and Reviews">
383          <a href="/shed-kit-gallery/">Photo Gallery</a>
384          <a href="/customer-testimonials/">Customer Video Stories</a>
385          <a href="/customer-testimonials/">Written Reviews</a>
386        </div>
387      </div>
388
389      <a href="/contact-us/">Contact</a>
390    </nav>
391
392    <div class="header-icons">
393      <a href="https://solidbuildwood.com/search.php" class="sb-search-toggle" id="sbSearchToggle" aria-label="Search">
394        <svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="11" cy="11" r="7"/><line x1="21" y1="21" x2="16.5" y2="16.5"/></svg>
395      </a>
396      <a href="https://solidbuildwood.com/account.php" aria-label="Account">
397        <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
398      </a>
399      <span id="compare-link" class="header-icons__compare" style="display:none">
400        <a id="compareurl" href="https://solidbuildwood.com/compare" title="Compare">Compare <span class="countPill countPill--positive" id="compare-item"></span></a>
401      </span>
402      <span hidden><span id="compare-link-nav" style="display:none"><a id="compareurl-nav" href="https://solidbuildwood.com/compare">Compare <span id="compare-item-nav"></span></a></span></span>
403      <a href="https://solidbuildwood.com/cart.php" class="header-icons__cart" aria-label="Cart">
404        <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4zM3 6h18M16 10a4 4 0 0 1-8 0"/></svg>
405        <span class="countPill cart-quantity"></span>
406      </a>
407      <button type="button" class="nav-burger" id="sbBurger" aria-controls="sbDrawer" aria-expanded="false" aria-label="Open menu">
408        <svg viewBox="0 0 24 24" aria-hidden="true"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>
409        <span>Menu</span>
410      </button>
411    </div>
412  </div>
413  <div class="sb-search-panel" id="sbSearchPanel" hidden>
414    <div class="sb-search-panel__inner">
415      <form class="sb-search" role="search" action="https://solidbuildwood.com/search.php" method="get">
416        <label class="sb-search__label" for="sbSearchInput">Search the store</label>
417        <input id="sbSearchInput" type="search" name="search_query" placeholder="Search sheds and guides" autocomplete="off">
418        <button type="submit" class="btn btn--primary sb-search__submit">Search</button>
419      </form>
420    </div>
421  </div>
422</header>
423
424<div class="sb-drawer" id="sbDrawer" hidden>
425  <div class="sb-drawer__backdrop"></div>
426  <div class="sb-drawer__panel" role="dialog" aria-modal="true" aria-label="Menu">
427    <div class="sb-drawer__head">
428      <span class="sb-drawer__title">Menu</span>
429      <button type="button" class="sb-drawer__close" aria-label="Close menu">
430        <svg viewBox="0 0 24 24" aria-hidden="true"><line x1="5" y1="5" x2="19" y2="19"/><line x1="19" y1="5" x2="5" y2="19"/></svg>
431      </button>
432    </div>
433    <form class="sb-search sb-drawer__search" role="search" action="https://solidbuildwood.com/search.php" method="get">
434      <label class="sb-search__label" for="sbDrawerSearchInput">Search the store</label>
435      <input id="sbDrawerSearchInput" type="search" name="search_query" placeholder="Search sheds and guides" autocomplete="off">
436      <button type="submit" class="btn btn--primary sb-search__submit">Search</button>
437    </form>
438    <nav class="sb-drawer__nav" aria-label="Mobile"></nav>
439  </div>
440</div>
441
442<div class="util-strip">
443  <div class="util-strip__inner">
444    <div class="util-strip__tp util-strip__tp--wide trustpilot-widget" data-locale="en-US" data-template-id="5419b6ffb0d04a076446a9af" data-businessunit-id="5e54b98565fc2a000124808d" data-style-height="24px" data-style-width="440px" data-theme="light" data-style-alignment="left">
445      <a href="https://www.trustpilot.com/review/solidbuildwood.com" target="_blank" rel="noopener">Trustpilot</a>
446    </div>
447    <div class="util-strip__tp util-strip__tp--narrow trustpilot-widget" data-locale="en-US" data-template-id="5419b6ffb0d04a076446a9af" data-businessunit-id="5e54b98565fc2a000124808d" data-style-height="52px" data-style-width="100%" data-theme="light" data-style-alignment="center">
448      <a href="https://www.trustpilot.com/review/solidbuildwood.com" target="_blank" rel="noopener">Trustpilot</a>
449    </div>
450    <div class="util-strip__right">
451      <a href="tel:+18005902508" aria-label="Call or text us at 1-800-590-2508">
452        <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/></svg>
453        1-800-590-2508
454      </a>
455      <a href="/contact-us/" class="util-chat" aria-label="Open live chat"
456         onclick="var h = window.HubSpotConversations, ok = false; try { ok = !!(h &amp;&amp; h.widget &amp;&amp; h.widget.status().loaded); } catch (e) {} if (ok) { h.widget.open(); return false; }">
457        <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>
458        <span>Live chat</span>
459      </a>
460    </div>
461  </div>
462</div>
463<div data-content-region="header_bottom--global"></div>
464<div data-content-region="header_bottom"></div>
465        <main class="body search-page" id="main-content" role="main" data-currency-code="USD">
466     
467        <section class="header-section">         
468        <div class="header-content-box">
469            <div class="container">                
470                <nav aria-label="Breadcrumb">
471    <ol class="breadcrumbs">
472                <li class="breadcrumb ">
473                    <a class="breadcrumb-label"
474                       href="https://solidbuildwood.com/"
475                       
476                    >
477                        <span>Home</span>
478                    </a>
479                </li>
480                <li class="breadcrumb is-active">
481                    <a class="breadcrumb-label"
482                       href="/search.php"
483                       aria-current="page"
484                    >
485                        <span>Search</span>
486                    </a>
487                </li>
488    </ol>
489</nav>
490
491<script type="application/ld+json">
492{
493    "@context": "https://schema.org",
494    "@type": "BreadcrumbList",
495    "itemListElement":
496    [
497        {
498            "@type": "ListItem",
499            "position": 1,
500            "item": {
501                "@id": "https:\u002f\u002fsolidbuildwood.com\u002f",
502                "name": "Home"
503            }
504        },
505        {
506            "@type": "ListItem",
507            "position": 2,
508            "item": {
509                "@id": "\u002fsearch.php",
510                "name": "Search"
511            }
512        }
513    ]
514}
515</script>
515
516                <section class="nav">
517                    <nav class="navBar navBar--sub search-nav">
518                        <span id="search-tabs-widget-description" class="aria-description--hidden">
519                            Use left and right arrows to navigate between tabs.
520                        </span>
521                        <ul role="tablist" class="navBar-section account-navigation" data-search-page-tabs>
522                            <li role="presentation" class="navBar-item">
523                                <a aria-describedby="search-tabs-widget-description" role="tab" aria-controls="product-listing-container" id="search-results-product-count" class="navBar-action" href="/search.php?section&#x3D;product" data-product-results-toggle>
524                                    <span data-url="/search.php?section&#x3D;product" data-count="0">
525    Products (0)
526</span>
527                                </a>
528                            </li>
529                            <li role="presentation" class="navBar-item">
530                                <a aria-describedby="search-tabs-widget-description" role="tab" aria-controls="search-results-content" id="search-results-content-count" class="navBar-action" href="/search.php?section&#x3D;content" data-content-results-toggle>
531                                    <span data-url="/search.php?section&#x3D;content" data-count="0">
532    News &amp; Information (0)
533</span>
534                                </a>
535                            </li>
536                                <li class="navBar-item navBar-item--separate">
537                                    <a class="navBar-action toggleLink" data-collapsible="advanced-search-content" href="#" aria-controls="advanced-search-content" aria-expanded="false">
538                                        <span class="toggleLink-text toggleLink-text--on">
539                                            Hide Search Form
540                                        </span>
541                                        <span class="toggleLink-text toggleLink-text--off">
542                                            Show Search Form
543                                        </span>
544                                    </a>
545                                </li>
546                        </ul>
547                    </nav>                   
548                </section>    
549            </div>        
550        </div>    
551    </section>
552  
553    
554    <div class="container">
555        <link data-stencil-stylesheet href="https://cdn11.bigcommerce.com/s-9vcrg0/stencil/6da2bff0-9dd6-013f-fe0f-4201d46ef01e/e/644ce700-943f-013f-ccec-561d5e2793e8/scss/vendor/jstree/style.css" rel="stylesheet">
556
557<section class="page">
558        <div class="page">
559    <div class="page-content page-content--centered">
560        <form class="advancedSearch-form toggle-content" action="" data-advanced-search-form id="advanced-search-content" aria-hidden="true">
561            <input type="hidden" name="mode" value="1">
562            <h5 class="advancedSearch-title">Advanced Search</h5>
563            <div class="form-row">
564                <fieldset class="form-fieldset form-column">
565                    <div class="form-field">
566                        <label class="form-label" for="search_query_adv">
567                            Search Keyword
568                            <small>*</small>
569                        </label>
570                        <input type="text" class="form-input" name="search_query_adv" data-error-message="Search field cannot be empty." id="search_query_adv" value="">
571                    </div>
572
573                    <div class="form-field">
574                        <label class="form-label" for="search-form-brand">
575                            Brands
576                        </label>
577                        <select class="form-select" name="brand" id="search-form-brand">
578                            <option value="">No Preference</option>
579                                <option value="36" >MRCOOL®️</option>
580                                <option value="35" >SolidBuild®</option>
581                        </select>
582                    </div>
583                </fieldset>
584                <fieldset class="form-fieldset form-column">
585                    <div class="form-field">
586                        <label class="form-label">
587                            Categories
588                        </label>
589                        <div class="form-field-group" data-search-category-tree></div>
590                    </div>
591                    <div class="form-field">
592                        <input type="checkbox" class="form-checkbox" name="searchsubs" value="ON" id="search-form-searchsubs" checked>
593                        <label class="form-label" for="search-form-searchsubs">Automatically search sub categories</label>
594                    </div>
595                </fieldset>
596            </div>
597            <hr>
598            <div class="form-row">
599                <div class="form-field search-price-range">
600                    <h5 class="advancedSearch-title">Search By Price</h5>
601                    <p class="form-label" for="search-form-price_from">
602                        Price Range
603                    </p>
604                    <label>
605                        <span class="is-srOnly">Price Range</span>
606                        <span>From</span><input type="number" step="any" class="form-input" name="price_from" id="search-form-price_from" value="">
607                    </label>
608                    <label>
609                        <span class="is-srOnly">Price Range</span>
610                        <span>to</span><input type="number" step="any" class="form-input" name="price_to" id="search-form-price_to" value="">
611                    </label>
612                </div>
613            </div>
614            <hr>
615            <h5 class="advancedSearch-title">Search By Setting</h5>
616            <div class="form-row form-row--half">
617                <div class="form-field">
618                    <label class="form-label" for="search-form-featured">
619                        Featured Products
620                    </label>
621                    <select class="form-select" name="featured" id="search-form-featured">
622                        <option value="">No Preference</option>
623                        <option value="1" >Only Featured Products</option>
624                        <option value="2" >Only Non-Featured Products</option>
625                    </select>
626                </div>
627                <div class="form-field">
628                    <label class="form-label" for="search-form-shipping">
629                        Free Shipping
630                    </label>
631                    <select class="form-select" name="shipping" id="search-form-shipping">
632                        <option value="">No Preference</option>
633                        <option value="1" >Only Free Shipping</option>
634                        <option value="2" >Only Paid Shipping</option>
635                    </select>
636                </div>
637            </div>
638            <div class="form-actions">
639                <input
640                        id="advanced-search-submit"
641                        class="button button--primary"
642                        type="submit"
643                        value="Search">
644            </div>
645        </form>
646    </div>
647</div>
648   
649    <div class="page-content">
650        <div class="product-listing-filter-section mb-show">  
651            <div class="product-listing-filter-box">
652    <div class="product-view-button">
653        <a href="javascript:void(0)" title="Grid View" class="product-view-btn grid-view grid-icon show " data-tab="grid">
654           <i class="icon" aria-hidden="true">
655               
656                <svg><use xlink:href="#icon-grid"></use></svg>
657            </i>  
658        </a>
659        <a href="javascript:void(0)" title="List View" class="product-view-btn list-view list-icon show " data-tab="list">
660            <i class="icon" aria-hidden="true">                
661                <svg><use xlink:href="#icon-list"></use></svg>
662            </i>                       
663        </a>
664    </div>
665    <div class="product-listing-show-products">
666        <form class="actionBar" method="get" data-sort-by="product">
667            <fieldset class="form-fieldset actionBar-section">
668                <div class="form-field">
669                    <label class="form-label" for="sort">Show</label>
670                    <select class="form-select form-select--small " name="limit" id="product-sort" role="listbox">
671	                    <option value="12">12 Products per page</opttion>
672                        <option value="12">12 Products per page</option>
673                        <option value="24">24 Products per page</option>
674                        <option value="56">56 Products per page</option>
675                        <option value="100">100 Products per page</option>
676                    </select>
677                </div>
678            </fieldset>
679        </form>
680    </div>
681    <div class="product-listing-sort-by">
682        <form class="actionBar" method="get" data-sort-by="product">
683    <fieldset class="form-fieldset actionBar-section">
684    <div class="form-field">
685        <label class="form-label">Sort By</label>
686        <select class="form-select form-select--small " name="sort" role="listbox">
687            <option value="featured" >Featured Items</option>
688            <option value="newest" >Newest Items</option>
689            <option value="bestselling" >Best Selling</option>
690            <option value="alphaasc" >A to Z</option>
691            <option value="alphadesc" >Z to A</option>
692            <option value="avgcustomerreview" >By Review</option>
693            <option value="priceasc" >Price: Ascending</option>
694            <option value="pricedesc" >Price: Descending</option>
695        </select>
696    </div>
697</fieldset>
698</form>
699    </div>
700</div>
701        </div>
702
703        <div role="tabpanel" id="search-results-content" aria-labelledby="search-results-content-count" class="u-hidden">
704                    </div>
705
706        <div role="tabpanel" id="product-listing-container" aria-labelledby="search-results-product-count" >
707            
708
709<div class="product-view-mode">
710
711    <form action="https://solidbuildwood.com/compare" method='POST'  data-product-compare>
712                
713        <ul class="productGrid productGridCategory">
714</ul>
715    
716        
717        <ul class="productList">
718</ul>
719    </form>
720</div>
721<nav class="pagination" aria-label="pagination">
722    <ul class="pagination-list">
723
724    </ul>
725</nav>
726        </div>
727
728        <div data-content-region="search_below_content"></div>
729        <!-- Bottom Banner Start-->
730    <!-- Bottom Banner End-->
731    </div>
732</section>
733
734
735    </div>
736    
737    <div id="modal" class="modal" data-reveal data-options='{"animation_speed": 0}' data-prevent-quick-search-close>
738    <button class="modal-close"
739        type="button"
740        title="Close"
741        
742>
743    <span class="aria-description--hidden">Close</span>
744    <span aria-hidden="true">&#215;</span>
745</button>
746    <div class="modal-content"></div>
747    <div class="loadingOverlay"></div>
748</div>
749    <div id="alert-modal" class="modal modal--alert modal--small" data-reveal data-options='{"animation_speed": 0}' data-prevent-quick-search-close>
750    <div class="alert-icon error-icon">
751        <span class="icon-content">
752            <span class="line line-left"></span>
753            <span class="line line-right"></span>
754        </span>
755    </div>
756
757    <div class="alert-icon warning-icon">
758        <div class="icon-content">!</div>
759    </div>
760
761    <div class="modal-content"></div>
762
763    <div class="button-container">
764        <button type="button" class="confirm button" data-reveal-close data-options='{"animation_speed": 0}'>OK</button>
765        <button type="button" class="cancel button" data-reveal-close data-options='{"animation_speed": 0}'>Cancel</button>
766    </div>
767</div>
768</main>
769        <div data-content-region="footer_above_footer--global"></div>
770<footer class="site-footer" data-build="v7-2026-09-28c">
771  <div class="container">
772    <div class="foot__top">
773      <div class="foot__brand">
774        <a href="https://solidbuildwood.com/" class="brand-text">SolidBuild <sup>&reg;</sup></a>
775        <p>Solid wood sheds, cabins, and backyard buildings. Designed in Lithuania, built for the long haul. Serving the US since 2009.</p>
776        <div class="foot__tp trustpilot-widget" data-locale="en-US" data-template-id="5419b637fa0340045cd0c936" data-businessunit-id="5e54b98565fc2a000124808d" data-style-height="24px" data-style-width="100%" data-theme="dark" data-style-alignment="left">
777          <a href="https://www.trustpilot.com/review/solidbuildwood.com" target="_blank" rel="noopener">Trustpilot</a>
778        </div>
779      </div>
780      <div class="foot__col">
781        <h4>Shop</h4>
782        <ul>
783          <li><a href="/cottage-sheds/">Cottage sheds</a></li>
784          <li><a href="/classic-sheds/">Classic sheds</a></li>
785          <li><a href="/modern-sheds/">Modern sheds</a></li>
786          <li><a href="/sheds-on-sale/">On sale</a></li>
787          <li><a href="/shed-accessories/">Accessories</a></li>
788        </ul>
789      </div>
790      <div class="foot__col">
791        <h4>Why us</h4>
792        <ul>
793          <li><a href="/wooden-finished-interior-shed-kits/">Finished interior</a></li>
794          <li><a href="/easy-to-assemble-shed-kits/">Easy to assemble</a></li>
795          <li><a href="/free-shed-shipping/">Free shipping</a></li>
796          <li><a href="/what-are-the-benefits-of-wood/">Solid wood, no MDF</a></li>
797        </ul>
798      </div>
799      <div class="foot__col">
800        <h4>Help</h4>
801        <ul>
802          <li><a href="/contact-us/">Contact us</a></li>
803          <li><a href="/roofing-options-for-gabled-flat-low-slope-sheds/">Roofing options</a></li>
804          <li><a href="/paint-and-stain-guide/">
804Paint and Stain Guide</a></li>
805          <li><a href="/free-shed-shipping/">Shipping &amp; delivery</a></li>
806          <li><a href="/solid-build-refund-policy/">Returns &amp; refunds</a></li>
807          <li><a href="/shed-kit-faq/">FAQ</a></li>
808        </ul>
809      </div>
810      <div class="foot__col">
811        <h4>Stories</h4>
812        <ul>
813          <li><a href="/customer-testimonials/">Customer reviews</a></li>
814          <li><a href="/shed-kit-gallery/">Gallery</a></li>
815          <li><a href="/#trees">Trees-for-a-cause</a></li>
816          <li><a href="/shed-building-advice/">Journal</a></li>
817        </ul>
818      </div>
819    </div>
820    <div class="foot__bottom">
821      <div>&copy; 2026 SolidBuild &middot; solidbuildwood.com</div>
822      <div class="foot__legal">
823        <a href="/solid-build-privacy-policy">Privacy</a>
824        <a href="/terms-of-service/">Terms</a>
825        <a href="/accessibility/">Accessibility</a>
826      </div>
827    </div>
828  </div>
829</footer>
830<button class="to-top" id="toTop" type="button" aria-label="Back to top" hidden>
831  <svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
832    <polyline points="6 14 12 8 18 14"/>
833  </svg>
834  <span>Top</span>
835</button>
836<script>
837(function () {
838  var btn = document.getElementById('toTop');
839  if (!btn) return;
840  var shown = null;
841  function sync() {
842    var y = window.pageYOffset || document.documentElement.scrollTop || 0;
843    var want = y > 300;
844    if (want === shown) return;
845    shown = want;
846    if (want) {
847      btn.hidden = false;
848      requestAnimationFrame(function () { btn.classList.add('is-in'); });
849    } else {
850      btn.classList.remove('is-in');
851      setTimeout(function () { if (!shown) btn.hidden = true; }, 240);
852    }
853  }
854  window.addEventListener('scroll', sync, { passive: true });
855  btn.addEventListener('click', function () {
856    var rm = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
857    window.scrollTo({ top: 0, behavior: rm ? 'auto' : 'smooth' });
858  });
859  sync();
860})();
861</script>
vendor: 1 bytes, line 861
861
862<script>
863/* Phone/tablet menu (<=1100px), 2026-09-10. Builds #sbDrawer from the header's
864   own .header-nav on first open (one IA, no duplicate markup), then hides the
865   horizontal strip by flagging .site-header.has-drawer. Groups are accordions;
866   the phone + live-chat links come from the utility strip. Escape, the X and
867   the backdrop close it; body scroll is locked while open. */
868(function () {
869  var hdr = document.querySelector('.site-header');
870  var nav = hdr && hdr.querySelector('.header-nav');
871  var burger = document.getElementById('sbBurger');
872  var drawer = document.getElementById('sbDrawer');
873  if (!hdr || !nav || !burger || !drawer) return;
874  var host = drawer.querySelector('.sb-drawer__nav');
875  var closeBtn = drawer.querySelector('.sb-drawer__close');
876  var built = false;
877  hdr.classList.add('has-drawer');
878
879  function label(a) { return a.textContent.replace('\u25BC', '').replace(/\s+/g, ' ').trim(); }
880
881  function build() {
882    if (built) return; built = true;
883    Array.prototype.forEach.call(nav.children, function (ch) {
884      if (ch.classList.contains('nav-item')) {
885        var a = ch.firstElementChild, p = ch.querySelector('.nav-panel');
886        if (!a || !p) return;
887        var g = document.createElement('div'); g.className = 'sb-drawer__group';
888        var t = document.createElement('button'); t.type = 'button'; t.className = 'sb-drawer__toggle';
889        t.setAttribute('aria-expanded', 'false'); t.textContent = label(a);
890        var list = document.createElement('div'); list.className = 'sb-drawer__list';
891        var clone = p.cloneNode(true);
892        while (clone.firstChild) list.appendChild(clone.firstChild);
893        // the top-level link's own target, unless the panel already lists it
894        var href = a.getAttribute('href');
895        if (href && !list.querySelector('a[href="' + href + '"]')) {
896          var all = document.createElement('a'); all.href = href; all.textContent = 'All ' + label(a);
897          list.insertBefore(all, list.firstChild);
898        }
899        t.addEventListener('click', function () {
900          var open = g.classList.toggle('is-open');
901          t.setAttribute('aria-expanded', open ? 'true' : 'false');
902        });
903        g.appendChild(t); g.appendChild(list); host.appendChild(g);
904      } else if (ch.tagName === 'A') {
905        var l = ch.cloneNode(true);
906        l.className = 'sb-drawer__link' + (ch.classList.contains('header-nav__sale') ? ' sb-drawer__link--sale' : '');
907        host.appendChild(l);
908      }
909    });
910    var util = document.querySelector('.util-strip__right');
911    if (util) {
912      var u = document.createElement('div'); u.className = 'sb-drawer__util';
913      Array.prototype.forEach.call(util.querySelectorAll('a'), function (a) {
914        var c = a.cloneNode(true); c.removeAttribute('class');
915        var span = c.querySelector('span'); if (span) span.removeAttribute('style');
916        u.appendChild(c);
917      });
918      host.appendChild(u);
919    }
920  }
921  function isOpen() { return drawer.classList.contains('is-open'); }
922  function open() {
923    build();
924    drawer.hidden = false;
925    requestAnimationFrame(function () { drawer.classList.add('is-open'); });
926    document.body.classList.add('sb-drawer-open');
927    burger.setAttribute('aria-expanded', 'true');
928    if (closeBtn) closeBtn.focus();
929  }
930  function close(refocus) {
931    if (!isOpen()) return;
932    drawer.classList.remove('is-open');
933    document.body.classList.remove('sb-drawer-open');
934    burger.setAttribute('aria-expanded', 'false');
935    setTimeout(function () { if (!isOpen()) drawer.hidden = true; }, 260);
936    if (refocus !== false) burger.focus();
937  }
938  burger.addEventListener('click', function () { isOpen() ? close() : open(); });
939  drawer.addEventListener('click', function (e) {
940    var t = e.target;
941    while (t && t !== drawer) {
942      if (t.classList && (t.classList.contains('sb-drawer__close') || t.classList.contains('sb-drawer__backdrop'))) { close(); return; }
943      t = t.parentNode;
944    }
945  });
946  document.addEventListener('keydown', function (e) { if (e.key === 'Escape') close(); });
947  var wide = window.matchMedia('(min-width: 1101px)');
948  (wide.addEventListener ? wide.addEventListener('change', function (m) { if (m.matches) close(false); })
949                         : wide.addListener(function (m) { if (m.matches) close(false); }));
950})();
951</script>
951
952
953<script>
954/* Project cost calculator hooks. The calculator's engine is inline page
955   content (top-level `sheds` / `accessories` + selectShed()) that paints at
956   parse time, before this script runs; nothing to do on any other page.
957   (1) Deep link (2026-09-11): the product pages link
958       /solidbuild-shed-project-cost-calculator/#shed=<model>; pre-select it.
959   (2) Live prices (SB-01B, 2026-09-13): the page body's price table is
960       static and goes stale. Fetch the catalog prices through the Storefront
961       GraphQL API (same origin, bearer = window.SB_SF_TOKEN above), patch the
962       engine's own objects and re-render. Any failure — no token, no fetch,
963       network, non-200, 4 s timeout — keeps the static figures silently. The
964       static numbers are never hidden while the request runs.
965   (3) Keyboard shim (SB-26, 2026-09-13): the cards and progress steps are
966       bare DIVs with onclick. Decorate them as buttons (role, tabindex,
967       aria-pressed / aria-current), route Enter and Space to click(), and
968       restore focus after the engine replaces a grid's innerHTML. Niche's
969       [tabindex]:focus-visible ring paints on them by itself. */
970(function () {
971  if (typeof sheds === 'undefined' || typeof selectShed !== 'function' || !sheds.length) return;
972
973  /* (1) deep link */
974  function pick() {
975    var m = /[#&]shed=([a-z]+)/.exec(window.location.hash || '');
976    if (!m) return;
977    for (var i = 0; i < sheds.length; i++) {
978      if (sheds[i].id === m[1]) { selectShed(sheds[i]); return; }
979    }
980  }
981  pick();
982  window.addEventListener('hashchange', pick);   // back/forward between deep links re-runs it
983
984  /* (2) live prices */
985  var SHED_IDS = { 81: 'shiba', 83: 'gardener', 84: 'optima', 77: 'myrtle', 76: 'whales', 78: 'aspen', 80: 'bristhol',
986                   93: 'dakota', 85: 'moderna', 86: 'solana', 123: 'california', 127: 'astoria', 132: 'washington' };
987  var ACC_IDS = { 90: 'dbl_window', 126: 'tall_window', 89: 'veranda', 92: 'flower_box', 91: 'shutters', 130: 'mini_split', 131: 'line_cover' };
988  var PRODUCT_IDS = [81, 83, 84, 77, 76, 78, 80, 93, 85, 86, 123, 127, 132, 90, 126, 89, 92, 91, 130, 131];
989  function activeCat() {
990    var b = document.querySelector('.cat-tab.active');
991    return (b && b.getAttribute('data-cat')) || 'all';
992  }
993  function rerender() {
994    try {
995      if (typeof renderSheds === 'function') renderSheds(activeCat());
996      if (typeof renderAccessories === 'function') renderAccessories();
997      if (typeof selectedShed !== 'undefined' && selectedShed) {
998        if (typeof renderFloorOptions === 'function') renderFloorOptions();
999        if (typeof updateAll === 'function') updateAll();
1000      }
1001    } catch (e) {}
1002  }
1003  function patchPrices() {
1004    var token = window.SB_SF_TOKEN;
1005    if (!token || typeof fetch !== 'function' || typeof AbortController !== 'function') return;
1006    var ac = new AbortController();
1007    var timer = setTimeout(function () { ac.abort(); }, 4000);
1008    fetch('/graphql', {
1009      method: 'POST',
1010      headers: { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' },
1011      body: JSON.stringify({
1012        query: 'query($ids:[Int!]){site{products(entityIds:$ids,first:25){edges{node{entityId prices{price{value} basePrice{value} salePrice{value}}}}}}}',
1013        variables: { ids: PRODUCT_IDS }
1014      }),
1015      signal: ac.signal
1016    }).then(function (r) {
1017      if (!r.ok) throw new Error('status ' + r.status);
1018      return r.json();
1019    }).then(function (j) {
1020      var edges = j && j.data && j.data.site && j.data.site.products && j.data.site.products.edges;
1021      if (!edges || !edges.length) return;
1022      var hits = 0;
1023      edges.forEach(function (e) {
1024        var n = e && e.node;
1025        if (!n || !n.prices || !n.prices.price) return;
1026        var v = Number(n.prices.price.value);
1027        if (!(v > 0)) return;
1028        var id = SHED_IDS[n.entityId], list = sheds;
1029        if (!id && typeof accessories !== 'undefined') { id = ACC_IDS[n.entityId]; list = accessories; }
1030        if (!id || !list) return;
1031        for (var i = 0; i < list.length; i++) {
1032          if (list[i].id === id) { list[i].price = Math.round(v); hits++; break; }
1033        }
1034      });
1035      if (hits) rerender();
1036    }).catch(function () {}).then(function () { clearTimeout(timer); });
1037  }
1038  patchPrices();
1039
1040  /* (3) keyboard shim */
1041  var CARD = '.shed-card, .option-card, .toggle-card';
1042  var GRIDS = ['shedGrid', 'foundationGrid', 'floorContent', 'roofingGrid', 'roofingExtras', 'stainContent', 'accGrid', 'insulContent'];
1043  var pending = null, pendingTimer = 0;
1044  function decorate() {
1045    Array.prototype.forEach.call(document.querySelectorAll(CARD), function (el) {
1046      var off = el.style.pointerEvents === 'none';
1047      if (!el.hasAttribute('role')) el.setAttribute('role', 'button');
1048      el.setAttribute('tabindex', off ? '-1' : '0');
1049      if (off) el.setAttribute('aria-disabled', 'true'); else el.removeAttribute('aria-disabled');
1050      el.setAttribute('aria-pressed', el.classList.contains('selected') ? 'true' : 'false');
1051    });
1052    Array.prototype.forEach.call(document.querySelectorAll('.progress-step'), function (el) {
1053      if (!el.hasAttribute('role')) el.setAttribute('role', 'button');
1054      if (!el.hasAttribute('tabindex')) el.setAttribute('tabindex', '0');
1055      if (el.classList.contains('active')) el.setAttribute('aria-current', 'step'); else el.removeAttribute('aria-current');
1056    });
1057  }
1058  function restoreFocus(records) {
1059    if (!pending) return;
1060    var grid = document.getElementById(pending.grid);
1061    if (!grid) { pending = null; return; }
1062    var touched = false;
1063    for (var i = 0; i < records.length; i++) {
1064      if (records[i].target === grid || grid.contains(records[i].target)) { touched = true; break; }
1065    }
1066    if (!touched) return;                       // another grid re-rendered first; keep waiting
1067    var cards = grid.querySelectorAll(CARD);
1068    var t = cards[pending.index] || cards[cards.length - 1];
1069    pending = null; clearTimeout(pendingTimer);
1070    if (t) { try { t.focus({ preventScroll: true }); } catch (e) { t.focus(); } }
1071  }
1072  var mo = new MutationObserver(function (records) { decorate(); restoreFocus(records); });
1073  GRIDS.forEach(function (id) {
1074    var g = document.getElementById(id);
1075    if (g) mo.observe(g, { childList: true, subtree: true });
1076  });
1077  var pw = document.getElementById('progressWrap');
1078  if (pw) mo.observe(pw, { attributes: true, attributeFilter: ['class'], subtree: true });   // .active moves by class, no re-render
1079  document.addEventListener('keydown', function (e) {
1080    if (e.key !== 'Enter' && e.key !== ' ' && e.key !== 'Spacebar') return;
1081    if (e.altKey || e.ctrlKey || e.metaKey) return;
1082    var t = e.target;
1083    if (!t || !t.closest) return;
1084    var el = t.closest(CARD + ', .progress-step');
1085    if (!el || el.getAttribute('aria-disabled') === 'true') return;
1086    e.preventDefault();
1087    var grid = el.closest('#' + GRIDS.join(', #'));
1088    if (grid) {
1089      pending = { grid: grid.id, index: Array.prototype.indexOf.call(grid.querySelectorAll(CARD), el) };
1090      clearTimeout(pendingTimer);
1091      pendingTimer = setTimeout(function () { pending = null; }, 600);   // the click re-rendered nothing
1092    }
1093    el.click();
1094  });
1095  decorate();
1096  var total = document.getElementById('stickyTotal');
1097  if (total && !total.hasAttribute('aria-live')) total.setAttribute('aria-live', 'polite');
1098})();
1099</script>
vendor: 1 bytes, line 1099
1099
1100<script>
1101/* The search page (SB-30 shim 2026-09-13; D17 rework 2026-09-17). Niche's
1102   pages/search.html is a vendor template, so everything here is runtime:
1103   (1) a plain search form under the heading on EVERY search page — prefilled
1104       with the current query, focused only when there is no query (that page
1105       otherwise shows two empty tabs and a collapsed "advanced search" and
1106       no field at all). Same .sb-search look as the header panel.
1107   (2) tabs that count 0 are hidden; the collapsible toggle's aria-label is
1108       kept in step with its visible text (Niche's collapsible.js copies the
1109       hidden "Hide Search Form" span).
1110   (3) Niche's products-per-page <select> renders its first option twice (a
1111       malformed closing tag in the vendor partial): duplicates removed, and
1112       the select shows the ?limit= the page was loaded with (Niche syncs it
1113       on category pages only).
1114   (4) content results: excerpts that are raw JSON-LD (pages whose body opens
1115       with a schema block) are dropped, the "(Page)" type gets a span to
1116       style; a "Did you mean" line is hidden while the search HAS results. */
1117(function () {
1118  if (!document.body || !document.body.classList.contains('search-page')) return;
1119  var each = function (list, fn) { Array.prototype.forEach.call(list, fn); };
1120  var query = '';
1121  try { query = (new URLSearchParams(window.location.search).get('search_query') || '').replace(/\s+/g, ' ').trim(); } catch (e) {}
1122
1123  /* (2) toggle label */
1124  var toggle = document.querySelector('[data-collapsible="advanced-search-content"]');
1125  function syncLabel() {
1126    if (!toggle) return;
1127    var spans = toggle.querySelectorAll('.toggleLink-text'), text = '';
1128    for (var i = 0; i < spans.length; i++) {
1129      if (window.getComputedStyle(spans[i]).display !== 'none') { text = spans[i].textContent.replace(/\s+/g, ' ').trim(); break; }
1130    }
1131    if (text && toggle.getAttribute('aria-label') !== text) toggle.setAttribute('aria-label', text);
1132  }
1133  if (toggle) {
1134    syncLabel();
1135    toggle.addEventListener('click', function () { setTimeout(syncLabel, 0); });
1136    window.addEventListener('load', function () { setTimeout(syncLabel, 100); });
1137    new MutationObserver(syncLabel).observe(toggle, { attributes: true, attributeFilter: ['aria-label', 'aria-expanded', 'class'] });
1138  }
1139
1140  /* (3) + (4): repairs to vendor markup. Niche swaps tabs, sorts and pages by
1141     AJAX (history.pushState + re-rendered listing / content results), so the
1142     repairs are one idempotent pass, re-run whenever <main> changes. */
1143  function tidy() {
1144    /* (3) the per-page select */
1145    var limit = '';
1146    try { limit = new URLSearchParams(window.location.search).get('limit') || ''; } catch (e) {}
1147    each(document.querySelectorAll('select[name="limit"]'), function (sel) {
1148      var seen = {};
1149      each(Array.prototype.slice.call(sel.options), function (o) {
1150        if (seen[o.value]) { sel.removeChild(o); return; }
1151        seen[o.value] = true;
1152      });
1153      if (limit && seen[limit] && sel.value !== limit) sel.value = limit;
1154    });
1155    /* (3b) a card whose "Was" equals its "MSRP" prints the figure once */
1156    each(document.querySelectorAll('.card, .listItem'), function (card) {
1157      var rrp = card.querySelector('.price--rrp'), was = card.querySelector('.price--non-sale');
1158      if (!rrp || !was) return;
1159      var a = rrp.textContent.replace(/\s+/g, ''), b = was.textContent.replace(/\s+/g, '');
1160      var box = was.closest ? was.closest('.price-section') : null;
1161      if (a && a === b && box && box.style.display !== 'none') box.style.display = 'none';
1162    });
1163    /* (4) content results + the suggestion line */
1164    each(document.querySelectorAll('#search-results-content > ul > p'), function (p) {
1165      if (/^\s*\{\s*"@context"/.test(p.textContent)) p.parentNode.removeChild(p);
1166    });
1167    each(document.querySelectorAll('#search-results-content > ul'), function (ul) {
1168      each(Array.prototype.slice.call(ul.childNodes), function (n) {
1169        var m = n.nodeType === 3 && /^\s*\(([^)]+)\)\s*$/.exec(n.nodeValue);
1170        if (!m) return;
1171        var s = document.createElement('span'); s.className = 'sb-result-type'; s.textContent = m[1];
1172        ul.replaceChild(s, n);
1173      });
1174    });
1175    var total = 0;
1176    each(document.querySelectorAll('[data-search-page-tabs] [data-count]'), function (el) { total += parseInt(el.getAttribute('data-count'), 10) || 0; });
1177    each(document.querySelectorAll('[data-search-page-tabs] > li'), function (li) {
1178      if (li.querySelector('[data-count="0"]') && li.style.display !== 'none') li.style.display = 'none';
1179    });
1180    if (total > 0) {
1181      each(document.querySelectorAll('.search-suggestion'), function (el) {
1182        if (el.querySelector('.search-refine') && el.style.display !== 'none') el.style.display = 'none';
1183      });
1184    }
1185  }
1186  tidy();
1187  var main = document.querySelector('main') || document.body, pendingTidy = 0;
1188  if (typeof MutationObserver === 'function') {
1189    new MutationObserver(function () {
1190      if (pendingTidy) return;
1191      pendingTidy = setTimeout(function () { pendingTidy = 0; tidy(); }, 60);
1192    }).observe(main, { childList: true, subtree: true });
1193  }
1194
1195  /* (1) the form */
1196  var nav = document.querySelector('nav.search-nav');
1197  var anchor = nav || document.getElementById('product-listing-container');
1198  if (!anchor || !anchor.parentNode || document.querySelector('.sb-search-fallback')) return;
1199  var form = document.createElement('form');
1200  form.className = 'sb-search sb-search-fallback' + (query ? '' : ' sb-search-fallback--empty');
1201  form.setAttribute('role', 'search');
1202  form.setAttribute('action', '/search.php');
1203  form.setAttribute('method', 'get');
1204  form.innerHTML = '<label class="sb-search__label" for="sb-q">Search the store</label>' +
1205    '<input id="sb-q" type="search" name="search_query" placeholder="Search sheds and guides" autocomplete="off">' +
1206    '<button type="submit" class="btn btn--primary sb-search__submit">Search</button>';
1207  anchor.parentNode.insertBefore(form, anchor);
1208  var input = form.querySelector('input');
1209  if (query) { input.value = query; return; }
1210  try { input.focus(); } catch (e) {}
1211  // Niche's search.js prepends a hidden <p role="status"> results-count
1212  // announcement and focuses it 100 ms after its own init, which takes the
1213  // focus back off the field; hand it back once, then stop listening.
1214  function stolen(e) {
1215    var t = e.target;
1216    if (!t || t === input || t.tagName !== 'P' || t.getAttribute('role') !== 'status') return;
1217    document.removeEventListener('focusin', stolen, true);
1218    setTimeout(function () { try { input.focus(); } catch (err) {} }, 0);
1219  }
1220  document.addEventListener('focusin', stolen, true);
1221  setTimeout(function () { document.removeEventListener('focusin', stolen, true); }, 5000);
1222  function reclaim() {
1223    var a = document.activeElement;
1224    if (!a || a === document.body || (a.tagName === 'P' && a.getAttribute('role') === 'status')) { try { input.focus(); } catch (err) {} }
1225  }
1226  window.addEventListener('load', function () { setTimeout(reclaim, 400); });
1227  setTimeout(reclaim, 1500);
1228})();
1229</script>
vendor: 1 bytes, line 1229
1229
1230<script>
1231/* Header search panel + the shared .sb-search behaviour (D17 / SB-30,
1232   2026-09-17). The magnifier in chrome/header.html is a real link to the
1233   search page; here it becomes a toggle button for #sbSearchPanel: open ->
1234   focus the field; Escape, an outside click, focus leaving the panel or the
1235   burger close it (Escape / outside click hand focus back to the toggle).
1236   Modified clicks (new tab) keep the link behaviour. Every .sb-search form -
1237   header panel, phone drawer, the search page's own - refuses an empty query
1238   (focuses the field instead) and is prefilled on the search page. */
1239(function () {
1240  var each = function (list, fn) { Array.prototype.forEach.call(list, fn); };
1241  document.addEventListener('submit', function (e) {
1242    var f = e.target;
1243    if (!f || !f.classList || !f.classList.contains('sb-search')) return;
1244    var i = f.querySelector('input[name="search_query"]');
1245    if (!i) return;
1246    var v = i.value.replace(/\s+/g, ' ').trim();
1247    if (!v) { e.preventDefault(); i.value = ''; try { i.focus(); } catch (err) {} return; }
1248    i.value = v;
1249  });
1250  if (document.body && document.body.classList.contains('search-page')) {
1251    var q = '';
1252    try { q = (new URLSearchParams(window.location.search).get('search_query') || '').replace(/\s+/g, ' ').trim(); } catch (e) {}
1253    if (q) each(document.querySelectorAll('.sb-search input[name="search_query"]'), function (i) { if (!i.value) i.value = q; });
1254  }
1255
1256  var toggle = document.getElementById('sbSearchToggle');
1257  var panel = document.getElementById('sbSearchPanel');
1258  var input = panel && panel.querySelector('input[name="search_query"]');
1259  if (!toggle || !panel || !input) return;
1260  toggle.setAttribute('role', 'button');
1261  toggle.setAttribute('aria-expanded', 'false');
1262  toggle.setAttribute('aria-controls', 'sbSearchPanel');
1263  function isOpen() { return !panel.hidden; }
1264  function open() {
1265    panel.hidden = false;
1266    toggle.setAttribute('aria-expanded', 'true');
1267    try { input.focus(); input.select(); } catch (e) {}
1268  }
1269  function close(refocus) {
1270    if (!isOpen()) return;
1271    panel.hidden = true;
1272    toggle.setAttribute('aria-expanded', 'false');
1273    if (refocus) { try { toggle.focus(); } catch (e) {} }
1274  }
1275  toggle.addEventListener('click', function (e) {
1276    if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || e.button) return;
1277    e.preventDefault();
1278    isOpen() ? close(true) : open();
1279  });
1280  toggle.addEventListener('keydown', function (e) {   // a button also answers Space
1281    if (e.key === ' ' || e.key === 'Spacebar') { e.preventDefault(); isOpen() ? close(true) : open(); }
1282  });
1283  document.addEventListener('keydown', function (e) { if (e.key === 'Escape' && isOpen()) close(true); });
1284  document.addEventListener('click', function (e) {
1285    if (!isOpen()) return;
1286    var t = e.target;
1287    if (panel.contains(t) || toggle.contains(t)) return;
1288    var a = document.activeElement;
1289    close(!a || a === document.body || panel.contains(a));   // a click on another control keeps its own focus
1290  });
1291  document.addEventListener('focusin', function (e) {   // Tab carried the focus out of the panel
1292    if (isOpen() && !panel.contains(e.target) && !toggle.contains(e.target)) close(false);
1293  });
1294  window.addEventListener('blur', function () {   // ...or into an iframe (the Trustpilot badge is next in the tab order)
1295    setTimeout(function () { var a = document.activeElement; if (isOpen() && a && a.tagName === 'IFRAME') close(false); }, 0);
1296  });
1297  var burger = document.getElementById('sbBurger');
1298  if (burger) burger.addEventListener('click', function () { close(false); });
1299  // A primary-nav dropdown (z-index 70) opened OVER the open search form
1300  // (z 65) on hover; one panel at a time - the typed query stays in the field.
1301  each(document.querySelectorAll('.header-nav .nav-item'), function (n) {
1302    n.addEventListener('mouseenter', function () { close(false); });
1303  });
1304})();
1305</script>
vendor: 1 bytes, line 1305
1305
1306<script>
1307/* --chrome-h (D12 / SB-35, 2026-09-17): the height of everything the chrome
1308   puts above the page content at scroll 0 - store banner + announcement +
1309   header + utility strip (+ a widget dropped in a header_bottom region) - in
1310   document coordinates, so the landing hero can fill exactly the rest of the
1311   first screen: min-height: calc(100vh - var(--chrome-h, 190px)) in
1312   solidbuild-landing.scss (190px = the no-JS fallback). The utility strip is
1313   not sticky, so its bottom edge + the scroll offset is stable at any scroll
1314   position; the sticky header is only the fallback when the strip is
1315   missing. Re-measured on load, resize, fonts ready and when a chrome row
1316   changes size (the Trustpilot iframe landing).
1317   NOTE: the --panel-top publisher that once lived in this file went with the
1318   drawer rebuild (ee057fc); the scss rules that read it use their fallback. */
1319(function () {
1320  var root = document.documentElement, last = -1;
1321  function bottom(el) {
1322    if (!el) return 0;
1323    var r = el.getBoundingClientRect();
1324    return r.height ? r.bottom + (window.pageYOffset || root.scrollTop || 0) : 0;
1325  }
1326  function measure() {
1327    var h = bottom(document.querySelector('.util-strip'));
1328    if (!h) {
1329      var hdr = document.querySelector('.site-header');
1330      h = (hdr ? hdr.offsetHeight : 0) + bottom(document.querySelector('.announce'));
1331    }
1332    Array.prototype.forEach.call(document.querySelectorAll('[data-content-region^="header_bottom"]'), function (el) {
1333      h = Math.max(h, bottom(el));
1334    });
1335    h = Math.round(h);
1336    if (h > 0 && h !== last) { last = h; root.style.setProperty('--chrome-h', h + 'px'); }
1337  }
1338  measure();
1339  window.addEventListener('load', measure);
1340  window.addEventListener('resize', measure);
1341  if (document.fonts && document.fonts.ready && document.fonts.ready.then) document.fonts.ready.then(measure);
1342  if (typeof ResizeObserver === 'function') {
1343    var ro = new ResizeObserver(measure);
1344    Array.prototype.forEach.call(document.querySelectorAll('.sb-banner, .announce, .site-header, .util-strip'), function (el) { ro.observe(el); });
1345  }
1346})();
1347</script>
vendor: 1 bytes, line 1347
1347
1348<script>
1349/* Trustpilot loader safeguard (2026-09-11). The Trustpilot BigCommerce app
1350   injects tp.widget.bootstrap store-side, which is why the TrustBoxes never
1351   rendered on the dev server (only the plain "Trustpilot" fallback links).
1352   If no bootstrap tag is on the page — the dev server, or the app ever
1353   disabled — load Trustpilot's own script once; on the live store this is a
1354   no-op. */
1355(function () {
1356  if (document.querySelector('script[src*="tp.widget.bootstrap"]')) return;
1357  if (!document.querySelector('.trustpilot-widget')) return;
1358  var s = document.createElement('script');
1359  s.src = 'https://widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js';
1360  s.async = true;
1361  document.head.appendChild(s);
1362})();
1363</script>
vendor: 1 bytes, line 1363
1363
1364<script src="https://cdn11.bigcommerce.com/s-9vcrg0/stencil/6da2bff0-9dd6-013f-fe0f-4201d46ef01e/e/644ce700-943f-013f-ccec-561d5e2793e8/js/solidbuild-cart.js" defer></script>
1364
1365        
1366        <!-- Product added to comparison -->
1367<div id="product-add-popup" class="product-add-popup compare-popup" style="display:none;">
1368    <div class="popup-section">
1369        <a href="javascript:void(0)" class="close-btn" role="button">x</a>
1370        <h5>Compare</h5>
1371        <p>Item successfully added to comparison list.</p>
1372    </div>
1373</div>
1374
1375<!-- Product removed to comparison -->
1376<div id="product-remove-popup" class="product-remove-popup compare-popup" style="display:none;">
1377    <div class="popup-section">
1378        <a href="javascript:void(0)" class="close-btn" role="button">x</a>
1379        <h5>Compare</h5>
1380        <p>Item successfully removed from comparison list.</p>
1381    </div>
1382</div>
1383
1384<!-- Add more products to comparison -->
1385<div id="add-more-product-popup" class="add-more-product-popup compare-popup" style="display:none;">
1386    <div class="popup-section">
1387        <a href="javascript:void(0)" class="close-btn" role="button">x</a>
1388        <h5>Compare</h5>
1389        <p>Minimum 2 products are needed to make a valid comparison.</p>
1390    </div>
1391</div>
1392<!-- No products added to comparison -->
1393<div id="no-product-popup" class="no-product-popup compare-popup" style="display:none;">
1394    <div class="popup-section">
1395        <a href="javascript:void(0)" class="close-btn" role="button">x</a>
1396        <h5>Compare</h5>
1397        <p>There is no item to compare. Please select at least 2 products.</p>
1398    </div>
1399</div>
1400
1401        
1401<script>window.__webpack_public_path__ = "https://cdn11.bigcommerce.com/s-9vcrg0/stencil/6da2bff0-9dd6-013f-fe0f-4201d46ef01e/e/644ce700-943f-013f-ccec-561d5e2793e8/dist/";</script>
1401
1402        
1402<script>
1403            function onThemeBundleMain() {
1404                window.stencilBootstrap("search", "{\"categoryTree\":[{\"data\":\"Garden Cabin Shed Kits\",\"attr\":{\"id\":\"category-50\",\"title\":\"Garden Cabin Shed Kits\"},\"metadata\":{\"id\":50}},{\"data\":\"Garden Sheds For Sale | SolidBuild®\",\"attr\":{\"id\":\"category-49\",\"title\":\"Garden Sheds For Sale | SolidBuild®\"},\"metadata\":{\"id\":49}},{\"data\":\"Home Office Sheds\",\"attr\":{\"id\":\"category-47\",\"title\":\"Home Office Sheds\"},\"metadata\":{\"id\":47}},{\"data\":\"Solid Wood She Shed Kits\",\"attr\":{\"id\":\"category-42\",\"title\":\"Solid Wood She Shed Kits\"},\"metadata\":{\"id\":42}},{\"data\":\"Wooden Sheds Featuring Finished Interior\",\"attr\":{\"id\":\"category-45\",\"title\":\"Wooden Sheds Featuring Finished Interior\"},\"metadata\":{\"id\":45}},{\"data\":\"Choose your shed design\",\"attr\":{\"id\":\"category-24\",\"title\":\"Choose your shed design\"},\"metadata\":{\"id\":24},\"state\":\"closed\"},{\"data\":\"Select a price range\",\"attr\":{\"id\":\"category-25\",\"title\":\"Select a price range\"},\"metadata\":{\"id\":25},\"state\":\"closed\"},{\"data\":\"Select your shed size\",\"attr\":{\"id\":\"category-35\",\"title\":\"Select your shed size\"},\"metadata\":{\"id\":35},\"state\":\"closed\"}],\"searchProductsPerPage\":12,\"searchResultsCount\":\"0 results for ''\",\"zoomSize\":\"1280x1280\",\"productSize\":\"500x659\",\"genericError\":\"Oops! Something went wrong.\",\"urls\":{\"home\":\"https://solidbuildwood.com/\",\"brands\":\"https://solidbuildwood.com/brands/\",\"search\":\"https://solidbuildwood.com/search.php\",\"compare\":\"https://solidbuildwood.com/compare\",\"sitemap\":\"https://solidbuildwood.com/sitemap.php\",\"contact_us_submit\":\"https://solidbuildwood.com/pages.php?action=sendContactForm\",\"subscribe\":{\"action\":\"https://solidbuildwood.com/subscribe.php\"},\"checkout\":{\"single_address\":\"https://solidbuildwood.com/checkout\",\"multiple_address\":\"https://solidbuildwood.com/checkout.php?action=multiple\"},\"account\":{\"orders\":{\"all\":\"https://solidbuildwood.com/account.php?action=order_status\",\"completed\":\"https://solidbuildwood.com/account.php?action=view_orders\",\"save_new_return\":\"https://solidbuildwood.com/account.php?action=save_new_return\"},\"returns\":\"https://solidbuildwood.com/account.php?action=view_returns\",\"addresses\":\"https://solidbuildwood.com/account.php?action=address_book\",\"inbox\":\"https://solidbuildwood.com/account.php?action=inbox\",\"send_message\":\"https://solidbuildwood.com/account.php?action=send_message\",\"add_address\":\"https://solidbuildwood.com/account.php?action=add_shipping_address\",\"update_action\":\"https://solidbuildwood.com/account.php?action=update_account\",\"details\":\"https://solidbuildwood.com/account.php?action=account_details\",\"recent_items\":\"https://solidbuildwood.com/account.php?action=recent_items\",\"index\":\"https://solidbuildwood.com/account.php\",\"wishlists\":{\"all\":\"https://solidbuildwood.com/wishlist.php\",\"add\":\"https://solidbuildwood.com/wishlist.php?action=addwishlist\",\"edit\":\"https://solidbuildwood.com/wishlist.php?action=editwishlist\",\"delete\":\"https://solidbuildwood.com/wishlist.php?action=deletewishlist\"}},\"auth\":{\"login\":\"https://solidbuildwood.com/login.php\",\"check_login\":\"https://solidbuildwood.com/login.php?action=check_login\",\"create_account\":\"https://solidbuildwood.com/login.php?action=create_account\",\"save_new_account\":\"https://solidbuildwood.com/login.php?action=save_new_account\",\"forgot_password\":\"https://solidbuildwood.com/login.php?action=reset_password\",\"send_password_email\":\"https://solidbuildwood.com/login.php?action=send_password_email\",\"save_new_password\":\"https://solidbuildwood.com/login.php?action=save_new_password\",\"logout\":\"https://solidbuildwood.com/login.php?action=logout\"},\"cart\":\"https://solidbuildwood.com/cart.php\",\"product\":{\"post_review\":\"https://solidbuildwood.com/postreview.php\"},\"gift_certificate\":{\"purchase\":\"https://solidbuildwood.com/giftcertificates.php\",\"redeem\":\"https://solidbuildwood.com/giftcertificates.php?action=redeem\",\"balance\":\"https://solidbuildwood.com/giftcertificates.php?action=balance\"},\"rss\":{\"products\":{\"new\":\"https://solidbuildwood.com/rss.php?type=rss\",\"new_atom\":\"https://solidbuildwood.com/rss.php?type=atom\",\"popular\":\"https://solidbuildwood.com/rss.php?action=popularproducts&type=rss\",\"popular_atom\":\"https://solidbuildwood.com/rss.php?action=popularproducts&type=atom\",\"featured\":\"https://solidbuildwood.com/rss.php?action=featuredproducts&type=rss\",\"featured_atom\":\"https://solidbuildwood.com/rss.php?action=featuredproducts&type=atom\",\"search\":\"https://solidbuildwood.com/rss.php?action=searchproducts&type=rss\",\"search_atom\":\"https://solidbuildwood.com/rss.php?action=searchproducts&type=atom\"},\"blog\":\"https://solidbuildwood.com/rss.php?action=newblogs&type=rss\",\"blog_atom\":\"https://solidbuildwood.com/rss.php?action=newblogs&type=atom\"}},\"secureBaseUrl\":\"https://solidbuildwood.com\",\"cartId\":null,\"template\":\"pages/search\",\"validationDictionaryJSON\":\"{\\\"locale\\\":\\\"en\\\",\\\"locales\\\":{\\\"validation_messages.val
1404id_email\\\":\\\"en\\\",\\\"validation_messages.password\\\":\\\"en\\\",\\\"validation_messages.password_match\\\":\\\"en\\\",\\\"validation_messages.invalid_password\\\":\\\"en\\\",\\\"validation_messages.field_not_blank\\\":\\\"en\\\",\\\"validation_messages.certificate_amount\\\":\\\"en\\\",\\\"validation_messages.certificate_amount_range\\\":\\\"en\\\",\\\"validation_messages.price_min_evaluation\\\":\\\"en\\\",\\\"validation_messages.price_max_evaluation\\\":\\\"en\\\",\\\"validation_messages.price_min_not_entered\\\":\\\"en\\\",\\\"validation_messages.price_max_not_entered\\\":\\\"en\\\",\\\"validation_messages.price_invalid_value\\\":\\\"en\\\",\\\"validation_messages.invalid_gift_certificate\\\":\\\"en\\\"},\\\"translations\\\":{\\\"validation_messages.valid_email\\\":\\\"You must enter a valid email.\\\",\\\"validation_messages.password\\\":\\\"You must enter a password.\\\",\\\"validation_messages.password_match\\\":\\\"Your passwords do not match.\\\",\\\"validation_messages.invalid_password\\\":\\\"Passwords must be at least 7 characters and contain both alphabetic and numeric characters.\\\",\\\"validation_messages.field_not_blank\\\":\\\" field cannot be blank.\\\",\\\"validation_messages.certificate_amount\\\":\\\"You must enter a gift certificate amount.\\\",\\\"validation_messages.certificate_amount_range\\\":\\\"You must enter a certificate amount between [MIN] and [MAX]\\\",\\\"validation_messages.price_min_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_messages.price_max_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_messages.price_min_not_entered\\\":\\\"Min. price is required.\\\",\\\"validation_messages.price_max_not_entered\\\":\\\"Max. price is required.\\\",\\\"validation_messages.price_invalid_value\\\":\\\"Input must be greater than 0.\\\",\\\"validation_messages.invalid_gift_certificate\\\":\\\"Please enter your valid certificate code.\\\"}}\",\"validationFallbackDictionaryJSON\":\"{\\\"locale\\\":\\\"en\\\",\\\"locales\\\":{\\\"validation_fallback_messages.valid_email\\\":\\\"en\\\",\\\"validation_fallback_messages.password\\\":\\\"en\\\",\\\"validation_fallback_messages.password_match\\\":\\\"en\\\",\\\"validation_fallback_messages.invalid_password\\\":\\\"en\\\",\\\"validation_fallback_messages.field_not_blank\\\":\\\"en\\\",\\\"validation_fallback_messages.certificate_amount\\\":\\\"en\\\",\\\"validation_fallback_messages.certificate_amount_range\\\":\\\"en\\\",\\\"validation_fallback_messages.price_min_evaluation\\\":\\\"en\\\",\\\"validation_fallback_messages.price_max_evaluation\\\":\\\"en\\\",\\\"validation_fallback_messages.price_min_not_entered\\\":\\\"en\\\",\\\"validation_fallback_messages.price_max_not_entered\\\":\\\"en\\\",\\\"validation_fallback_messages.price_invalid_value\\\":\\\"en\\\",\\\"validation_fallback_messages.invalid_gift_certificate\\\":\\\"en\\\"},\\\"translations\\\":{\\\"validation_fallback_messages.valid_email\\\":\\\"You must enter a valid email.\\\",\\\"validation_fallback_messages.password\\\":\\\"You must enter a password.\\\",\\\"validation_fallback_messages.password_match\\\":\\\"Your passwords do not match.\\\",\\\"validation_fallback_messages.invalid_password\\\":\\\"Passwords must be at least 7 characters and contain both alphabetic and numeric characters.\\\",\\\"validation_fallback_messages.field_not_blank\\\":\\\" field cannot be blank.\\\",\\\"validation_fallback_messages.certificate_amount\\\":\\\"You must enter a gift certificate amount.\\\",\\\"validation_fallback_messages.certificate_amount_range\\\":\\\"You must enter a certificate amount between [MIN] and [MAX]\\\",\\\"validation_fallback_messages.price_min_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_fallback_messages.price_max_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_fallback_messages.price_min_not_entered\\\":\\\"Min. price is required.\\\",\\\"validation_fallback_messages.price_max_not_entered\\\":\\\"Max. price is required.\\\",\\\"validation_fallback_messages.price_invalid_value\\\":\\\"Input must be greater than 0.\\\",\\\"validation_fallback_messages.invalid_gift_certificate\\\":\\\"Please enter your valid certificate code.\\\"}}\",\"validationDefaultDictionaryJSON\":\"{\\\"locale\\\":\\\"en\\\",\\\"locales\\\":{\\\"validation_default_messages.val
1404id_email\\\":\\\"en\\\",\\\"validation_default_messages.password\\\":\\\"en\\\",\\\"validation_default_messages.password_match\\\":\\\"en\\\",\\\"validation_default_messages.invalid_password\\\":\\\"en\\\",\\\"validation_default_messages.field_not_blank\\\":\\\"en\\\",\\\"validation_default_messages.certificate_amount\\\":\\\"en\\\",\\\"validation_default_messages.certificate_amount_range\\\":\\\"en\\\",\\\"validation_default_messages.price_min_evaluation\\\":\\\"en\\\",\\\"validation_default_messages.price_max_evaluation\\\":\\\"en\\\",\\\"validation_default_messages.price_min_not_entered\\\":\\\"en\\\",\\\"validation_default_messages.price_max_not_entered\\\":\\\"en\\\",\\\"validation_default_messages.price_invalid_value\\\":\\\"en\\\",\\\"validation_default_messages.invalid_gift_certificate\\\":\\\"en\\\"},\\\"translations\\\":{\\\"validation_default_messages.valid_email\\\":\\\"You must enter a valid email.\\\",\\\"validation_default_messages.password\\\":\\\"You must enter a password.\\\",\\\"validation_default_messages.password_match\\\":\\\"Your passwords do not match.\\\",\\\"validation_default_messages.invalid_password\\\":\\\"Passwords must be at least 7 characters and contain both alphabetic and numeric characters.\\\",\\\"validation_default_messages.field_not_blank\\\":\\\"The field cannot be blank.\\\",\\\"validation_default_messages.certificate_amount\\\":\\\"You must enter a gift certificate amount.\\\",\\\"validation_default_messages.certificate_amount_range\\\":\\\"You must enter a certificate amount between [MIN] and [MAX]\\\",\\\"validation_default_messages.price_min_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_default_messages.price_max_evaluation\\\":\\\"Min. price must be less than max. price.\\\",\\\"validation_default_messages.price_min_not_entered\\\":\\\"Min. price is required.\\\",\\\"validation_default_messages.price_max_not_entered\\\":\\\"Max. price is required.\\\",\\\"validation_default_messages.price_invalid_value\\\":\\\"Input must be greater than 0.\\\",\\\"validation_default_messages.invalid_gift_certificate\\\":\\\"Please enter your valid certificate code.\\\"}}\",\"carouselArrowAndDotAriaLabel\":\"Go to slide [SLIDE_NUMBER] of [SLIDES_QUANTITY]\",\"carouselActiveDotAriaLabel\":\"active\",\"carouselContentAnnounceMessage\":\"You are currently on slide [SLIDE_NUMBER] of [SLIDES_QUANTITY]\",\"noCompareMessage\":\"You must select at least two products to compare\"}").load();
1405            }
1406        </script>
1406
1407        
1407<script async defer src="https://cdn11.bigcommerce.com/s-9vcrg0/stencil/6da2bff0-9dd6-013f-fe0f-4201d46ef01e/e/644ce700-943f-013f-ccec-561d5e2793e8/dist/theme-bundle.main.js" onload="onThemeBundleMain()"></script>
1407     
1408        
1408<script defer src="https://cdn11.bigcommerce.com/s-9vcrg0/stencil/6da2bff0-9dd6-013f-fe0f-4201d46ef01e/e/644ce700-943f-013f-ccec-561d5e2793e8/js/theme/common/axios.min.js"></script>
1408   
1409        
1409<script type="text/javascript" src="https://cdn11.bigcommerce.com/shared/js/csrf-protection-header-5eeddd5de78d98d146ef4fd71b2aedce4161903e.js"></script>
vendor: 1 bytes, line 1409
1409
1410<script src="https://apis.google.com/js/platform.js?onload=renderBadge" async defer ></script>
1410
1411
1412
1413<script src='https://chimpstatic.com/mcjs-connected/js/users/f0cc35f21f5e5dbd3c801df6e/ad6486fb5e62cbd9cc705ab9d.js' defer  ></script>
1413<script src="https://conduit.mailchimpapp.com/js/stores/store_edp63d8687mmqsaag7ba/conduit.js" defer></script>
1413<script>(function(w,d,t,r,u){var f,n,i;w[u]=w[u]||[],f=function(){var o={ti:"32593428", enableAutoSpaTracking: true};o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad")},n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function(){var s=this.readyState;s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null)},i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i)})(window,document,"script","//bat.bing.com/bat.js","uetq");</script>
1413
1414
1415<script>
1416     window.uetq = window.uetq || [];
1417     window.uetq.push('event', '', {"revenue_value":%%ORDER_AMOUNT%%,"currency":"USD"});
1418</script>
1418    
1418<script src="https://solidbuildwood.services.answerbase.com/javascript/widget/cta-widget.js" 
1419            data-insert-after=".productView-rating">
1420    </script>
1420<script src="https://solidbuildwood.services.answerbase.com/javascript/widget/full-featured-widget.min.js" type="text/javascript" 
1421data-platform="bigcommerce"
1422data-page-type="search"
1423data-product-external-id=""
1424data-product-sku=""
1425data-product-title=""
1426data-product-price=""
1427data-product-url=""
1428data-product-description=""
1429data-product-image-url="[object Object]"
1430data-text-list-popular="Most Popular Questions"
1431data-open-links="popup"
1432data-display-count="3"
1433data-show-answers="false"
1434data-show-comments="true"
1435data-max-answer-height="50"
1436data-insert-after=".measurement-reviews"
1437 defer></script>
1437<script>
1438</script>
vendor: 1 bytes, line 1438
1438
1439<script>
1440document.querySelectorAll('[data-cart-item-add]').forEach(form => form.addEventListener('submit', (event) => {
1441  event.preventDefault();
1442  const formData = new FormData(event.target);
1443  let productId, productQty;
1444  for (const pair of formData.entries()) {
1445    if (pair[0] === 'product_id') {
1446      productId = pair[1];
1447    } else if (pair[0] === 'qty[]') {
1448      productQty = parseInt(pair[1]);
1449    }
1450  }
1451  const product = {
1452      id: '',
1453      name: '',
1454      quantity: productQty,
1455      google_business_vertical: 'retail',
1456  }
1457
1458  gtag('event', 'add_to_cart', {
1459    send_to: 'AW-1030350139',
1460    ecomm_pagetype: 'cart',
1461    currency: product.currency,
1462    items: [product],
1463    value: product.price
1464  });
1465}));
1466</script>
vendor: 1 bytes, line 1466
1466
1467<script>
1468(function () {
1469    var box = document.getElementById('consultTooltipBox');
1470    if (!box) return;
1471    var container = box.querySelector('.tooltip-container');
1472    var trigger = box.querySelector('a.cta');
1473    var closeBtn = box.querySelector('.close-tooltip');
1474
1475    // Tap to open on touch devices (desktop already gets hover from CSS)
1476    trigger.addEventListener('click', function (e) {
1477        if (window.matchMedia('(hover: none)').matches) {
1478            e.preventDefault();
1479            container.classList.toggle('active');
1480        }
1481    });
1482    closeBtn.addEventListener('click', function (e) {
1483        e.stopPropagation();
1484        container.classList.remove('active');
1485    });
1486    document.addEventListener('click', function (e) {
1487        if (!box.contains(e.target)) container.classList.remove('active');
1488    });
1489})();
1490</script>
1490<script>
1491
1492
1493function redirectLink(badgeval,el) {
1494if(badgeval != ''){
1495
1496            // console.log('clicke');
1497                var badgelink = badgeval;
1498
1499                window.location.href = badgelink;
1500
1501            }
1502
1503}
1504var existingScript = document.getElementById('primebPopper');
1505
1506if (!existingScript) {
1507    var country = 'suprbadgecountry';
1508const scriptpopperb = document.createElement('script');
1509scriptpopperb.src = 'https://unpkg.com/@popperjs/core@2/dist/umd/popper.min.js';
1510scriptpopperb.id = 'primebPopper';
1511document.getElementsByTagName('head')[0].appendChild(scriptpopperb);
1512
1513const scripttippyb = document.createElement('script');
1514scripttippyb.src = 'https://unpkg.com/tippy.js@6/dist/tippy-bundle.umd.js';
1515scripttippyb.id = 'primebTippy';
1516document.getElementsByTagName('head')[0].appendChild(scripttippyb);
1517  // $.getScript("https://unpkg.com/tippy.js@6/dist/tippy-bundle.umd.js", function(){
1518       
1519  // });
1520}
1521
1522document.addEventListener('DOMContentLoaded', (event) => {
1523
1524    
1525
1526				// const primeinstances2 = tippy('[data-tippy-content]');
1527				// instances2.destroy();
1528				
1529        $(document).on("click",".suprbadge-single",function() {
1530           if($(this).attr('productlink') == 1  && $(this).attr('data-productlink') != "productlinkholder"){
1531                console.log($(this).attr('data-productlink'));
1532                window.location.href = $(this).attr('data-productlink');
1533                return 1;
1534            }
1535            
1536
1537        });
1538			
1539				setTimeout(function(){
1540                    if (typeof tippy !== "undefined") {
1541                        var primeinstances2 = tippy('[data-tippy-content]');
1542                    }
1543					
1544				}, 2000);
1545
1546                //code logic for thaliacustomercountry 
1547 
1548        function thaliaSetCookie(cname, cvalue, exdays) {
1549          console.log('in set cookie')
1550          const d = new Date();
1551          d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
1552          let expires = "expires="+d.toUTCString();
1553          document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
1554        }
1555 
1556        function thaliaGetCookie(cname) {
1557          let name = cname + "=";
1558          let ca = document.cookie.split(';');
1559          for(let i = 0; i < ca.length; i++) {
1560            let c = ca[i];
1561            while (c.charAt(0) == ' ') {
1562              c = c.substring(1);
1563            }
1564            if (c.indexOf(name) == 0) {
1565              return c.substring(name.length, c.length);
1566            }
1567          }
1568          return "";
1569        }
1570 
1571 
1572 
1573 
1574   document.addEventListener("DOMContentLoaded", function(event) {
1575        thaliaCustomerCookie();
1576  });
1577 
1578    var thaliacustomercountry = '';
1579    function thaliaCustomerCookie() {
1580        thaliacustomercountry = thaliaGetCookie("thaliacustomercountry");
1581
1582        if (thaliacustomercountry != "") {
1583
1584        } else {
1585
1586            var xhttp = new XMLHttpRequest();
1587            xhttp.onreadystatechange = function () {
1588                if (xhttp.readyState == 4 && xhttp.status == 200) {
1589                    var countryData = JSON.parse(xhttp.responseText);
1590                    thaliacustomercountry = countryData.country
1591                    thaliaSetCookie("thaliacustomercountry", countryData.country, 2);
1592
1593
1594                }
1595            };
1596            xhttp.open("GET", "https://geoloc2.thalia-apps.com/", true);
1597            xhttp.send();
1598        }
1599    }
1600
1601    //end code logic for thaliacustomercountry 
1602
1603
1604                if(country == 'suprbadgecountry'){
1605                    country = 'newsuprbadgecountry';
1606                    if (thaliacustomercountry == '') {
1607                    thaliaCustomerCookie();
1608                    thaliacustomercountry = thaliaGetCookie("thaliacustomercountry");
1609                    var mycountry = thaliacustomercountry;
1610                    } else {
1611                    var mycountry = thaliacustomercountry;
1612                    }
1613                    // var xhttp = new XMLHttpRequest();
1614                    // xhttp.onreadystatechange = function() {
1615                    
1616                        // if (this.readyState == 4 && this.status == 200) {
1617                        //     countryjson =JSON.parse(this.responseText)
1618                        //     var mycountry = countryjson.country;
1619                           
1620                            var countryclass = document.getElementsByClassName('starbCountry');
1621                            for (var i = 0; i < countryclass.length; i++) {
1622                                var counrtylist = countryclass[i].getAttribute('data-countryselected');
1623                                var position = counrtylist.search(mycountry);
1624                                
1625                                if(position < 0){ 
1626                                    countryclass[i].style.cssText = 'display:none !important';
1627                        
1628                                }
1629                            }
1630            //             }
1631            //         };
1632            //         xhttp.open("GET", "https://geoloc2.thapi.workers.dev/", true);
1633            //         xhttp.send();
1634        
1635                }
1636				
1637			 })
1638    var supruser = '';
1639function customerJWT() {  
1640    supruser = 'notlogged';
1641}
1642
1643function parseJwt (token) {
1644    console.log(token)
1645    if(token == null){
1646        return false;
1647    }
1648    var base64Url = token.split('.')[1];
1649    var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
1650    var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
1651        return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
1652    }).join(''));
1653
1654    return JSON.parse(jsonPayload);
1655};
1656
1657customerJWT();
1658//console.log('supruser',supruser);
1659
1660//console.log('hjkhjk');
1661</script>
vendor: 1 bytes, line 1661
1661
1662<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
1662
1663
1664<script src="https://suprbadges.thalia-apps.com/401.js?v=1790285584"></script>
vendor: 1 bytes, line 1664
1664
1665<script>
1666        $( "<style>.badgetitle{cursor:pointer}.suprBigClose{color:#000;position:absolute;right:-15px;bottom:0}.starb-inline{display:block}.starb-center{text-align:center}.starb-sm{margin:5px}.starb-md{margin:10px}.starb-lg{margin:20px}.starb-tb-sm{margin-top:5px;margin-bottom:5px}.starb-tb-md{margin-top:10px;margin-bottom:10px}.starb-tb-lg{margin-top:20px;margin-bottom:20px}.starb-lr-sm{margin-left:10px;margin-right:10px}.starb-lr-md{margin-left:10px;margin-right:10px}.starb-lr-lg{margin-left:20px;margin-right:20px}.starb-t-sm{margin-top:5px}.starb-t-md{margin-top:10px}.starb-t-lg{margin-top:20px}.starb-b-sm{margin-bottom:5px}.starb-b-md{margin-bottom:10px}.starb-b-lg{margin-bottom:20px}.starb-l-sm{margin-left:5px}.starb-l-md{margin-left:10px}.starb-l-lg{margin-left:20px}.starb-r-sm{margin-right:5px}.starb-r-md{margin-right:10px}.starb-r-lg{margin-right:20px}@media only screen and (min-width:480px){.starb-full{visibility:visible;height:auto;width:auto}.starb-mobile{visibility:hidden!important;height:0;width:0}}
1666@media only screen and (max-width:480px){.starb-full{visibility:visible;height:auto;width:auto}.starb-mobile{visibility:hidden!important;height:0;width:0}}</style>" ).appendTo( "head" );
1667        $( "<style></style>" ).appendTo( "head" );
1668        $( "<style></style>" ).appendTo( "head" );
1669        $( "<style></style>" ).appendTo( "head" );
1670        $( "<style></style>" ).appendTo( "head" );
1671        $( "<style></style>" ).appendTo( "head" );
1672        $( "<style></style>" ).appendTo( "head" );
1673        
1674
1675        $( document ).ready(function() {
1676    
1677    $('.pagination-link').removeAttr('data-faceted-search-facet'); 
1678});
1679
1680var mypagetype = 'search';
1681
1682var customid = '';
1683
1684var customname = '';
1685
1686
1687
1688
1689
1690
1691
1692    
1693
1694    // start of top_sellers
1695
1696
1697  // End of top_sellers
1698   
1699    // start of similar_by_views
1700    // end of similar_by_views
1701
1702
1703
1704
1705
1706// End of suprscript
1707</script>
1707
1708
1709
1710        
1711    
1711<script>window.__CF$cv$params={r:'a427a6b20a6c0aad',t:'MTc5MDY0OTkyMA==',u:'01a0eb0d6c927375b45fb0dd89a946a0',ut:'44mLA3fuugpx3z6p3OnN.1UM6MiMvulscCQOmFbYbdA-1790649920-1.2.1.1-ZongN4S_Ld08xIC1rKC0YCRdEktm1E5Yjtsxw2HXWacjL2IfqI3wk_fnt9F7NaAmtd4xab48XPDV8ScsR3LJimj4n3_UTRO7YWCKWSI9kpQ',i:60};(function(){if(!document.body)return;var s=document.createElement('script');s.src='/cdn-cgi/challenge-platform/scripts/precursor/main.js';document.head.appendChild(s);})();</script>
1711</body>
1712</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.