1<!DOCTYPE html><html lang="en"><head>
1<script>window.__hfAuthOrigin="https://auth.higgsfield.app";// Notifications only: browser permissions and iframe policies enforce access. 2(function () { 3 try { 4 if (window.__hfAccessPatched || window.parent === window) return; 5 window.__hfAccessPatched = true; 6 var viewerOrigin = null; 7 var pending = []; 8 var reported = {}; 9 function flush() { 10 if (!viewerOrigin || !pending.length) return; 11 window.parent.postMessage({ 12 source: "hf-app-permissions", 13 type: "permission-request", 14 capabilities: pending.slice() 15 }, viewerOrigin); 16 pending = []; 17 } 18 function report(capabilities) { 19 capabilities.forEach(function (capability) { 20 if (!reported[capability]) { 21 reported[capability] = true; 22 pending.push(capability); 23 } 24 }); 25 flush(); 26 } 27 window.addEventListener("message", function (event) { 28 if (event.source !== window.parent || !/^https?:\/\//.test(event.origin)) return; 29 if (!event.data || event.data.source !== "hf-app-permissions" || event.data.type !== "init") return; 30 viewerOrigin = event.origin;
31 try { flush(); } catch (error) { /* Delivery is best-effort. */ } 32 }); 33 function wrap(owner, method, capabilities) { 34 // One unavailable or read-only API must not prevent other wrappers installing. 35 try { 36 if (!owner || typeof owner[method] !== "function") return; 37 var original = owner[method]; 38 owner[method] = function () { 39 try { 40 report(typeof capabilities === "function" ? capabilities(arguments) : capabilities); 41 } catch (error) { /* Preserve native results even if reporting fails. */ } 42 return original.apply(this, arguments); 43 }; 44 } catch (error) { /* Some browsers expose non-writable methods. */ } 45 } 46 function mediaCapabilities(args) { 47 var constraints = args[0]; 48 var capabilities = []; 49 if (constraints && constraints.video) capabilities.push("camera"); 50 if (constraints && constraints.audio) capabilities.push("microphone"); 51 return capabilities; 52 } 53 wrap(navigator.mediaDevices, "getUserMedia", mediaCapabilities); 54 ["getUserMedia", "webkitGetUserMedia", "mozGetUserMedia"].forEach(function (method) { 55 wrap(navigator, method, mediaCapabilities); 56 }); 57 wrap(navigator.mediaDevices, "getDisplayMedia", ["screen"]); 58 wrap(navigator.mediaDevices, "enumerateDevices", ["media-devices"]); 59 wrap(navigator.mediaDevices, "selectAudioOutput", ["speakers"]); 60 ["getCurrentPosition", "watchPosition"].forEach(function (method) { 61 wrap(navigator.geolocation, method, ["location"]); 62 }); 63 ["read", "readText"].forEach(function (method) { 64 wrap(navigator.clipboard, method, ["clipboard-read"]); 65 }); 66 ["write", "writeText"].forEach(function (method) { 67 wrap(navigator.clipboard, method, ["clipboard-write"]); 68 }); 69 wrap(window.Notification, "requestPermission", ["notifications"]); 70 wrap(window.PushManager && window.PushManager.prototype, "subscribe", ["notifications"]); 71 wrap(navigator.bluetooth, "requestDevice", ["bluetooth"]); 72 wrap(navigator.usb, "requestDevice", ["usb"]); 73 wrap(navigator.serial, "requestPort", ["serial"]); 74 wrap(navigator.hid, "requestDevice", ["hid"]); 75 wrap(navigator, "requestMIDIAccess", ["midi"]); 76 ["showOpenFilePicker", "showSaveFilePicker", "showDirectoryPicker"].forEach(function (method) { 77 wrap(window, method, ["files"]); 78 }); 79 wrap(window.FileSystemHandle && window.FileSystemHandle.prototype, "requestPermission", ["files"]); 80 wrap(window.Element && window.Element.prototype, "requestFullscreen", ["fullscreen"]); 81 wrap(window.Element && window.Element.prototype, "requestPointerLock", ["pointer-lock"]); 82 wrap(navigator.wakeLock, "request", ["wake-lock"]); 83 wrap(navigator.storage, "persist", ["persistent-storage"]); 84 wrap(navigator.xr, "requestSession", ["xr"]); 85 wrap(window.DeviceMotionEvent, "requestPermission", ["motion"]); 86 wrap(window.DeviceOrientationEvent, "requestPermission", ["motion"]); 87 wrap(window.Sensor && window.Sensor.prototype, "start", ["sensors"]); 88 wrap(window.Document && window.Document.prototype, "requestStorageAccess", ["storage-access"]); 89 wrap(window.Document && window.Document.prototype, "requestStorageAccessFor", ["storage-access"]); 90 } catch (error) { 91 // Instrumentation must not prevent the rest of the SDK loading. 92 } 93})(); 94 95/** 96 * Approval client SDK â the browser half of the approval flow (paired with 97 * approve.html), injected into every app page. A real file, imported as text and 98 * bundled at deploy (see injected-sdk.ts + the router wrangler). Runs in the 99 * untrusted app page: plain ES5, idempotent (window.__hfPatched), fully 100 * try/catch-wrapped, installed inline+synchronous at <head> so it's present 101 * before any app code runs. 102 * 103 * There is exactly ONE approval trigger: window.hf.requestGeneration(model, 104 * params, opts). The app calls it on the user's Generate action; the modal is 105 * visible exactly while the returned promise is pending. Approve resolves the 106 * minted single-use intent id, which the app threads to its server function and 107 * the fnf SDK adapter sends as the submit body's confirmation_token; cancel 108 * rejects with a DOMException named AbortError (a user choice, not a failure). 109 * Enforcement is entirely server-side: the outbound spend gate 403s any 110 * POST /jobs/submit that doesn't carry a matching minted approval (see 111 * outbound-worker/src/spend-gate.ts), so an app that skips the call gets a 112 * self-describing failed submit, never a silent spend. This SDK never inspects 113 * request bodies and never opens a modal on its own. 114 */ 115(function () { 116 try { 117 if (window.__hfPatched) return; 118 window.__hfPatched = true; 119 var of = window.fetch; 120 if (typeof of !== "function") return; 121 // Approval surface origin (auth.<zone>, serving the consent page at 122 // /approve). Preferred source: the origin the router stamps ahead of this 123 // script (injected-sdk.ts) â apps can be served on CUSTOM DOMAINS, where 124 // deriving from the page host would fabricate a non-existent 125 // auth.<customdomain>. Host derivation stays as the fallback for stale 126 // cached HTML that predates the stamp. 127 var APPROVE = 128 typeof window.__hfAuthOrigin === "string" && window.__hfAuthOrigin.indexOf("https://") === 0 129 ? window.__hfAuthOrigin 130 : "https://auth." + location.host.split(".").slice(1).join("."); 131 window.__hfFetches = window.__hfFetches || []; 132 133 // Single-flight: at most ONE approval modal at a time. A fast double-click (or 134 // an app firing two requests) would otherwise open a second scrim+iframe stacked 135 // on the first â so a second approve() while one is open returns the in-flight 136 // promise instead of opening another modal. 137 var openModal = null; 138 139 // The modal is a cross-origin iframe of auth.<zone>/approve: the app cannot 140 // read or script it, and WHO may frame the page is pinned server-side by its 141 // frame-ancestors. The page itself obtains the authoritative price from fnf 142 // before enabling Generate; app-supplied display prices are intentionally 143 // ignored. The app DOM can still restyle, shrink or overlay this iframe, and 144 // job binding does NOT cover that (a hidden but genuine click on the app's 145 // own job is still a click): the page defends itself â Generate arms only 146 // after a delay and only while the browser vouches that the card is visible 147 // and unoccluded (IntersectionObserver v2); otherwise the commit moves to a 148 // top-level popup the app cannot overlay. See approve-ui/src/redress.ts. 149 function approve(job) { 150 if (openModal) return openModal; 151 openModal = new Promise(function (resolve, reject) { 152 var grant = null; 153 var ready = false;
154 var done = false; 155 var openedAt = Date.now(); 156 157 // Three parent layers so the iframe body can stay fully TRANSPARENT and 158 // still show no white edge: 159 // - scrim: full-screen div carrying the blur (backdrop-filter samples the 160 // real app behind it) + a dark tint. 161 // - wrap: a rounded, overflow:hidden div that CLIPS the iframe. The iframe 162 // overlaps the backdrop-filter scrim, so Chromium backs its layer 163 // opaquely; the iframe's OWN border-radius doesn't reliably clip that 164 // layer (leaving white corners), but a parent clip does. So the corners 165 // outside the radius are clipped away â the blurred scrim shows through, 166 // no white ring. 167 // - frame: the iframe, fully transparent, filling wrap. Its page paints 168 // only the card (edge-to-edge, no radius â wrap provides the rounding). 169 var scrim = document.createElement("div"); 170 scrim.style.cssText = 171 "position:fixed;inset:0;z-index:2147483646;background:rgba(0,0,0,0.28);" + 172 "-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)"; 173 var wrap = document.createElement("div"); 174 // opacity:0 until the page reports its height so the modal fades in at its 175 // final size (no empty-frame flash, no height re-center / layout shift). 176 // Round with clip-path (not just border-radius + overflow): clip-path is 177 // applied in the COMPOSITOR, so it clips the cross-origin iframe's own 178 // layer edge cleanly. border-radius/overflow only clip the shape and leave 179 // the iframe's opaque WHITE base fringing at the rounded corners (the white 180 // peek). background = card color as a second line of defense. Both the wrap 181 // and the iframe carry the clip; keep 24px in sync with the card radius. 182 wrap.style.cssText = 183 "position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);" + 184 "width:min(400px,calc(100vw - 32px));height:188px;border-radius:24px;overflow:hidden;" + 185 "-webkit-clip-path:inset(0 round 24px);clip-path:inset(0 round 24px);" + 186 "background:#23262a;opacity:0;transition:opacity 0.12s ease;z-index:2147483647"; 187 var frame = document.createElement("iframe"); 188 // referrerPolicy="origin": the page's frame-ancestors admits a registered 189 // CUSTOM DOMAIN only when this origin arrives as the Referer (approve.ts). 190 frame.referrerPolicy = "origin"; 191 frame.src = APPROVE + "/approve"; 192 frame.allowTransparency = "true"; 193 frame.style.cssText = 194 "display:block;width:100%;height:100%;border:0;border-radius:24px;" + 195 "-webkit-clip-path:inset(0 round 24px);clip-path:inset(0 round 24px);background:#23262a"; 196 wrap.appendChild(frame); 197 var revealTimer = null; 198 199 function cleanup() { 200 if (done) return; 201 done = true; 202 clearTimeout(revealTimer); 203 window.removeEventListener("message", onMessage); 204 document.removeEventListener("keydown", onKey, true); 205 wrap.remove(); 206 scrim.remove(); 207 } 208 209 function beacon(outcome) { 210 if (!grant) return; 211 try { 212 var payload = JSON.stringify({ 213 grant: grant, 214 outcome: outcome, 215 ms_open: Date.now() - openedAt, 216 }); 217 var url = APPROVE + "/approve/outcome"; 218 if (navigator.sendBeacon) { 219 navigator.sendBeacon(url, new Blob([payload], { type: "text/plain" })); 220 } else { 221 of(url, { method: "POST", body: payload, mode: "no-cors", keepalive: true }).catch( 222 function () {}, 223 ); 224 } 225 } catch (e) {} 226 } 227 228 // Dismiss = the same "denied" path as the modal's Cancel button, so the 229 // caller turns it into an AbortError (a cancel, not a failure). 230 function dismiss() { 231 if (done) return; 232 cleanup(); 233 beacon("denied"); 234 var error = new Error("hf: denied");
235 error.hfReason = "denied"; 236 reject(error); 237 } 238 239 function onKey(event) { 240 if (event.key === "Escape" || event.keyCode === 27) dismiss(); 241 } 242 243 function sendRequest() { 244 if (!ready || !grant || done) return; 245 frame.contentWindow.postMessage( 246 { source: "hf-approve", type: "request", grant: grant, job: job }, 247 APPROVE, 248 ); 249 } 250 251 function onMessage(event) { 252 if (event.origin !== APPROVE || event.source !== frame.contentWindow) return; 253 var data = event.data || {}; 254 if (data.source !== "hf-approve") return; 255 // Size the clip wrapper to the page's reported card height, and reveal 256 // ONLY once sized â modal fades in at its final height (no shift/flash). 257 if (typeof data.h === "number" && data.h > 0) { 258 wrap.style.height = data.h + "px"; 259 clearTimeout(revealTimer); 260 wrap.style.opacity = "1"; 261 } 262 if (data.type === "ready") { 263 ready = true; 264 sendRequest(); 265 return; 266 } 267 if (data.type === "pending") { 268 // The decision moved to a top-level consent window (the iframe 269 // relays its verdict and reports a closed popup as "denied"). Keep 270 // the iframe alive for it: tearing it down on the 120 s deadline 271 // orphans the popup â Cancel/Generate there could reach nobody. 272 clearTimeout(deadline); 273 deadline = setTimeout(onDeadline, 600000); 274 return; 275 } 276 if (data.type !== "result") return; 277 cleanup(); 278 if (data.ok && typeof data.intentId === "string") { 279 resolve(data.intentId); 280 return; 281 } 282 beacon("denied"); 283 var error = new Error("hf: " + (data.reason || "denied")); 284 error.hfReason = data.reason || "denied"; 285 reject(error); 286 } 287 288 window.addEventListener("message", onMessage); 289 // Close on background (scrim) click and on Escape. The scrim sits behind 290 // the card (wrap), so a click on it is a click OUTSIDE the modal. Escape 291 // is captured on the parent; the page also handles Escape when focus is 292 // inside the iframe (see approve-ui). 293 scrim.addEventListener("click", dismiss); 294 document.addEventListener("keydown", onKey, true); 295 document.documentElement.appendChild(scrim); 296 document.documentElement.appendChild(wrap); 297 // Fallback: reveal at the default height if the page never reports its 298 // size, so the modal is never stuck hidden. 299 revealTimer = setTimeout(function () { 300 wrap.style.opacity = "1"; 301 }, 500); 302 303 of("/__auth/approval-grant", { method: "POST" }) 304 .then(function (r) { 305 return r 306 .json() 307 .catch(function () { 308 return {}; 309 }) 310 .then(function (b) { 311 return { s: r.status, b: b }; 312 }); 313 }) 314 .then(function (x) { 315 if (!x.b || !x.b.grant) { 316 cleanup(); 317 reject( 318 new Error( 319 x.s === 401 ? "hf: not signed in" : "hf: approval unavailable (" + x.s + ")", 320 ), 321 ); 322 return; 323 } 324 grant = x.b.grant; 325 sendRequest(); 326 }) 327 .catch(function (error) { 328 cleanup(); 329 reject(error); 330 }); 331 332 function onDeadline() { 333 if (done) return; 334 cleanup(); 335 beacon("timeout"); 336 reject(new Error("hf: approval timeout")); 337 } 338 var deadline = setTimeout(onDeadline, 120000); 339 }); 340 // Release the single-flight lock once this approval settles, so the next 341 // genuine generation can open a fresh modal. 342 var release = function () { 343 openModal = null; 344 }; 345 openModal.then(release, release); 346 return openModal; 347 } 348 349 // Observability-only fetch patch: request log for debugging (__hfFetches + 350 // console). No interception, no body inspection, no classification â the 351 // approval flow is driven solely by window.hf.requestGeneration. 352 window.fetch = function (input, init) {
353 try { 354 var url = typeof input === "string" ? input : (input && input.url) || String(input); 355 var method = (init && init.method) || (input && input.method) || "GET"; 356 window.__hfFetches.push({ url: url, method: method, ts: Date.now() }); 357 console.log("[hf-fetch]", method, url); 358 } catch (e) {} 359 return of.apply(this, arguments); 360 }; 361 362 // Public SDK. The app contract (see the builder instructions and 363 // docs/generation-approval): call this on the Generate action with the SDK 364 // WIRE shape of the exact submission (wire.jobSetType + wire.params â the 365 // approval is bound server-side to the hash of {job_set_type, params} of the 366 // actual submit body), thread the resolved intent id to the server as the 367 // confirmation token, and render a cancel quietly. opts.credits is an 368 // optional display-only estimate shown in the modal. The id is a token: 369 // never logged here, and apps must not log it either. 370 window.hf = { 371 requestGeneration: function (model, params, opts) { 372 // Fail fast on a bad job identity, BEFORE any UI. The approve page 373 // (protocol.ts) silently ignores a request whose job_set_type isn't a 374 // non-empty string or whose params don't survive structured clone â 375 // which would leave the modal stuck on "Waiting for the appâ¦" with no 376 // way to reply. A typed rejection shows the app its own bug instead. 377 if (typeof model !== "string" || !model) { 378 return Promise.reject( 379 new TypeError("hf: requestGeneration(model, params) â model must be a non-empty string"), 380 ); 381 } 382 if (typeof structuredClone === "function") { 383 try { 384 structuredClone(params); 385 } catch (e) { 386 return Promise.reject( 387 new TypeError("hf: requestGeneration params must be structured-cloneable (plain JSON)"), 388 ); 389 } 390 } 391 return approve({ job_set_type: model, params: params }).then( 392 function (id) { 393 console.log("[hf] approved"); 394 return id; 395 }, 396 // Cancel â AbortError, per the app contract ("render a quiet cancelled 397 // state"). Other failures (not signed in, unavailable, timeout) bubble 398 // as-is â those ARE failures. 399 function (e) { 400 if (e && e.hfReason === "denied") { 401 console.log("[hf] cancelled"); 402 throw new DOMException("Generation cancelled", "AbortError"); 403 } 404 throw e; 405 }, 406 ); 407 }, 408 }; 409 } catch (e) {} 410})(); 411</script>
411<meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/assets/styles-C_L-J-t8.css" data-precedence="default"/><title>About Blue Tide Exteriors | 24 Years of Construction in Shreveport</title><meta name="author" content="Blue Tide Exteriors"/><meta name="robots" content="index, follow"/><meta property="og:type" content="website"/><meta property="og:site_name" content="Blue Tide Exteriors"/><meta name="twitter:card" content="summary_large_image"/><meta property="og:image" content="https://bluetideexteriors.com/images/og-share.jpg"/><meta name="twitter:image" content="https://bluetideexteriors.com/images/og-share.jpg"/><meta name="description" content="Meet Jordan Strader, founder of Blue Tide Exteriors. 24 years in construction, 6 Louisiana licenses, 500+ home flips, 1,000+ real estate transactions, and hundreds of backyard projects across North Louisiana since 2018."/><meta property="og:title" content="About Blue Tide Exteriors | 24 Years of Construction in Shreveport"/><meta property="og:description" content="Meet Jordan Strader, founder of Blue Tide Exteriors. 24 years in construction, 6 Louisiana licenses, 500+ home flips, 1,000+ real estate transactions, and hundreds of backyard projects across North Louisiana since 2018."/><meta property="og:url" content="https://bluetideexteriors.com/about"/><link rel="modulepreload" href="/assets/index-Bl3BsNxA.js"/><link rel="modulepreload" href="/assets/about-BZwSTrEC.js"/><link rel="icon" href="https://bluetideexteriors.com/images/favicon.png"/><link rel="apple-touch-icon" href="/images/apple-touch-icon-new.png"/><link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32-new.png"/><link rel="canonical" href="https://www.bluetideexteriors.com/about"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/>
411<script>(function () { 412 var currentScript = document.currentScript; 413 var styleNonce = currentScript && currentScript.nonce ? currentScript.nonce : ""; 414 415 // 1. Re-inject persisted runtime themes (defineTheme'd in a prior session). 416 var themes = {}; 417 try { themes = JSON.parse(localStorage.getItem("hf:quanta:runtime-themes") || "{}"); } catch (e) {} 418 for (var name in themes) { 419 if (!Object.prototype.hasOwnProperty.call(themes, name)) continue; 420 var decls = ""; 421 for (var key in themes[name]) { 422 if (!Object.prototype.hasOwnProperty.call(themes[name], key)) continue; 423 decls += " --hf-color-" + key + ": " + themes[name][key] + ";\n"; 424 } 425 var style = document.createElement("style"); 426 style.id = "hf-runtime-theme-" + name; 427 // :where(...) keeps specificity at (0,0,0) so consumer .my-class 428 // overrides win. Runtime themes win the cascade tie not by specificity 429 // but by being UNLAYERED while theme/color.css is wrapped in 430 // @layer quanta-theme â unlayered always beats layered per CSS spec. 431 // See define-theme.ts â injectStyleTag for the rationale. 432 if (styleNonce) style.nonce = styleNonce; 433 style.textContent = ":where([data-theme=\"" + name + "\"]) {\n" + decls + "}"; 434 document.head.appendChild(style); 435 } 436 437 // 2. Apply override if pinned, otherwise resolve managed theme. 438 var override = null; 439 try { override = localStorage.getItem("hf:quanta:theme-override"); } catch (e) {} 440 var html = document.documentElement; 441 if (override) { 442 html.setAttribute("data-theme", override); 443 444 // 3a. Anti-FOUC fallback for runtime themes. The Tailwind stylesheet 445 // may load after first paint (esp. in dev where Vite injects CSS via 446 // JS) â without this, body would flash with browser defaults before 447 // the cascade resolves. Inline html bg+color from the override's 448 // tokens covers that window; once the proper class on <body> arrives, 449 // it paints over and the inline html style becomes invisible. 450 var ot = themes[override]; 451 if (ot) { 452 if (ot["background-primary"]) html.style.backgroundColor = ot["background-primary"]; 453 if (ot["text-primary"]) html.style.color = ot["text-primary"]; 454 } 455 } else { 456 var pref = "auto"; 457 try { pref = localStorage.getItem("hf:quanta:theme-pref") || "auto"; } catch (e) {} 458 // Package default is DARK. Render light ONLY when: 459 // - user explicitly chose pref="light", OR 460 // - pref="auto" and OS explicitly signals prefers-color-scheme: light 461 // Any other signal (dark, none, matchMedia missing) resolves to dark. 462 var light = pref === "light" || (pref === "auto" && matchMedia("(prefers-color-scheme: light)").matches); 463 var dark = !light; 464 html.setAttribute("data-theme", "default" + "-" + (dark ? "dark" : "light")); 465 466 // 3b. Anti-FOUC for managed themes. Setting color-scheme tells the 467 // browser to use dark/light system defaults for the canvas (page 468 // background, native form controls) â no white flash before the 469 // proper theme/color.css block sets the same property inside its 470 // :where(...) block. 471 html.style.colorScheme = dark ? "dark" : "light"; 472 } 473})();</script>
473<link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400;1,500&family=Inter:wght@200;300;400;500;600;700&display=swap" rel="stylesheet"/>
473<script type="application/ld+json">{ 474 "@context": "https://schema.org", 475 "@type": ["GeneralContractor", "LocalBusiness"], 476 "@id": "https://www.bluetideexteriors.com/#business", 477 "name": "Blue Tide Exteriors, LLC", 478 "url": "https://www.bluetideexteriors.com", 479 "logo": "https://www.bluetideexteriors.com/images/logo-new-square.png", 480 "image": ["https://www.bluetideexteriors.com/images/og-share.jpg"], 481 "description": "Design-build outdoor living contractor serving Shreveport, Bossier City & North Louisiana. Patios, pergolas, screen enclosures, sunrooms, outdoor kitchens, fire features, shotcrete & vinyl liner pools. 6 Louisiana licenses. Lifetime Workmanship Warranty.", 482 "priceRange": "$$$", 483 "foundingDate": "2018", 484 "founder": { 485 "@type": "Person", 486 "name": "Jordan Strader" 487 }, 488 "address": { 489 "@type": "PostalAddress", 490 "streetAddress": "1780 E Bert Kouns Industrial Loop Ste 907", 491 "addressLocality": "Shreveport", 492 "addressRegion": "LA", 493 "postalCode": "71105", 494 "addressCountry": "US" 495 }, 496 "geo": { "@type": "GeoCoordinates", "latitude": "32.4344315", "longitude": "-93.7106004" }, 497 "hasMap": "https://www.google.com/maps?cid=13248166682269152656", 498 "telephone": "+13182428225", 499 "openingHoursSpecification": [ 500 { 501 "@type": "OpeningHoursSpecification", 502 "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"], 503 "opens": "08:00", 504 "closes": "17:00" 505 }, 506 { 507 "@type": "OpeningHoursSpecification", 508 "dayOfWeek": "Saturday", 509 "opens": "08:00", 510 "closes": "17:00" 511 } 512 ], 513 "areaServed": [ 514 { "@type": "City", "name": "Shreveport", "address": { "@type": "PostalAddress", "addressRegion": "LA", "addressCountry": "US" } }, 515 { "@type": "City", "name": "Bossier City", "address": { "@type": "PostalAddress", "addressRegion": "LA", "addressCountry": "US" } }, 516 { "@type": "City", "name": "Benton", "address": { "@type": "PostalAddress", "addressRegion": "LA", "addressCountry": "US" } }, 517 { "@type": "City", "name": "Haughton", "address": { "@type": "PostalAddress", "addressRegion": "LA", "addressCountry": "US" } }, 518 { "@type": "City", "name": "Blanchard", "address": { "@type": "PostalAddress", "addressRegion": "LA", "addressCountry": "US" } }, 519 { "@type": "City", "name": "Stonewall", "address": { "@type": "PostalAddress", "addressRegion": "LA", "addressCountry": "US" } }, 520 { "@type": "City", "name": "Keithville", "address": { "@type": "PostalAddress", "addressRegion": "LA", "addressCountry": "US" } }, 521 { "@type": "City", "name": "Greenwood", "address": { "@type": "PostalAddress", "addressRegion": "LA", "addressCountry": "US" } }, 522 { "@type": "City", "name": "Minden", "address": { "@type": "PostalAddress", "addressRegion": "LA", "addressCountry": "US" } }, 523 { "@type": "City", "name": "Mansfield", "address": { "@type": "PostalAddress", "addressRegion": "LA", "addressCountry": "US" } } 524 ], 525 "hasOfferCatalog": { 526 "@type": "OfferCatalog", 527 "name": "Outdoor Living Services", 528 "itemListElement": [ 529 { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Patio and Decking Construction" } }, 530 { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Pergola and Pavilion Construction" } }, 531 { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Screen Enclosure and Patio Enclosure Construction" } }, 532 { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Sunroom Construction" } }, 533 { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Outdoor Kitchen Construction" } }, 534 { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Fire Feature Construction" } }, 535 { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Shotcrete / Gunite Swimming Pool Construction" } }, 536 { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Vinyl Liner Swimming Pool Installation" } }, 537 { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Roofing" } }, 538 { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Siding Installation" } } 539 ] 540 }, 541 "memberOf": [ 542 { "@type": "Organization", "name": "Better Business Bureau" }, 543 { "@type": "Organization", "name": "National Association of Home Builders" }, 544 { "@type": "Organization", "name": "Home Builders Association of Northwest Louisiana" } 545 ], 546 "hasCredential": [
547 { "@type": "EducationalOccupationalCredential", "name": "Louisiana Residential Swimming Pool License", "credentialID": "00138" }, 548 { "@type": "EducationalOccupationalCredential", "name": "Louisiana Commercial Swimming Pool License", "credentialID": "74493" }, 549 { "@type": "EducationalOccupationalCredential", "name": "Louisiana Home Improvement License", "credentialID": "HI.561286" }, 550 { "@type": "EducationalOccupationalCredential", "name": "Louisiana Qualifying Party", "credentialID": "QP.8977026" } 551 ], 552 "sameAs": [ 553 "https://www.youtube.com/@Bluetideexteriors", 554 "https://www.instagram.com/bluetideexteriors/", 555 "https://www.facebook.com/bluetideexteriors", 556 "https://www.bbb.org/us/la/shreveport/profile/home-improvement/blue-tide-exteriors-llc-1015-90074118" 557 ], 558 "makesOffer": { 559 "@type": "Offer", 560 "name": "Free 25-Minute Virtual Design Consultation", 561 "description": "Includes 3D rendering, phased design plan PDF, and free estimate. No pressure, no obligation.", 562 "price": "0", 563 "priceCurrency": "USD" 564 } 565 }</script>
565<script type="application/ld+json">{ 566 "@context": "https://schema.org", 567 "@type": "BreadcrumbList", 568 "itemListElement": [ 569 { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.bluetideexteriors.com/" } 570 ] 571 }</script>
571</head><body><!--$--><div class="min-h-screen bg-champagne font-body"><nav class="fixed top-0 left-0 right-0 z-50 bg-charcoal border-b border-gold/20"><div class="max-w-7xl mx-auto px-3 sm:px-4 lg:px-6 xl:px-10 h-16 sm:h-20 lg:h-24 flex items-center justify-between gap-2"><a href="/" class="flex items-center gap-2 sm:gap-3 flex-shrink-0 min-w-0"><span class="font-display text-sm sm:text-lg lg:text-2xl font-medium tracking-wide text-white whitespace-nowrap">Blue Tide <span class="text-gold italic">Exteriors</span></span></a><div class="hidden lg:flex items-center gap-5 xl:gap-7 text-sm font-heading text-white flex-1 justify-center"><a href="/" class="hover:text-gold transition-colors whitespace-nowrap">Home</a><a href="/design-services" class="hover:text-gold transition-colors whitespace-nowrap">Design</a><div class="relative"><button class="hover:text-gold transition-colors whitespace-nowrap flex items-center gap-1 text-white">Services <span class="text-xs">â¾</span></button></div><a href="/about" class="hover:text-gold transition-colors whitespace-nowrap">About</a><a href="/gallery" class="hover:text-gold transition-colors whitespace-nowrap">Gallery</a><a href="/financing" class="hover:text-gold transition-colors whitespace-nowrap">Financing</a><a href="/custom-spaces" class="hover:text-gold transition-colors whitespace-nowrap">ADU's</a></div><div class="flex items-center gap-2 sm:gap-3 lg:gap-4 flex-shrink-0"><a href="https://app.builddesignai.com" target="_blank" rel="noopener noreferrer" class="inline-block bg-gold text-charcoal text-xs xl:text-sm font-heading px-4 xl:px-5 py-2 xl:py-3 hover:bg-gold-light transition-colors whitespace-nowrap">Design/Estimator</a><a href="tel:+13182428225" class="hidden lg:flex items-center gap-2 text-sm font-heading text-white hover:text-gold transition-colors whitespace-nowrap">(318) 242-8225</a><button class="lg:hidden flex flex-col gap-1.5 p-2" aria-label="Menu"><span class="block w-6 h-px bg-white"></span><span class="block w-6 h-px bg-white"></span><span class="block w-6 h-px bg-white"></span></button></div></div></nav><div class="bg-charcoal py-6"><div class="max-w-7xl mx-auto px-6 sm:px-10"><div class="flex flex-wrap items-center justify-center gap-x-8 gap-y-3 text-xs font-heading tracking-wider text-white/50"><span>BBB A+ ACCREDITED</span><span class="text-white/20">·</span><span>GOOGLE 4.9â
</span><span class="text-white/20">·</span><span>BEST OF HOUZZ 2023</span><span class="text-white/20">·</span><span>NAHB MEMBER</span><span class="text-white/20">·</span><span>$2M INSURED</span><span class="text-white/20">·</span><span>LIFETIME WARRANTY</span></div></div></div><section class="relative pt-24 pb-20 sm:pt-32 sm:pb-28 overflow-hidden"><div class="absolute inset-0 bg-cover bg-center" style="background-image:url('/images/about-hero-v2.jpg')"></div><div class="absolute inset-0 bg-gradient-to-r from-charcoal/90 via-charcoal/70 to-charcoal/20"></div><div class="relative z-10 max-w-7xl mx-auto px-6 sm:px-10"><div class="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center"><div class="max-w-2xl"><p class="font-heading text-xs text-white mb-6 tracking-[0.25em] drop-shadow-lg">The Blue Tide Story</p><h1 class="font-display text-white font-light leading-[1.05] drop-shadow-xl" style="font-size:clamp(2.5rem, 7vw, 5.5rem)">24 Years of Building.<br/><span class="italic text-gold-light">One Mission.</span></h1><p class="mt-8 text-lg font-light text-white leading-relaxed max-w-lg drop-shadow-lg">From a 16-year-old with a lawn mower to one of North Louisiana's most trusted outdoor living contractors. This is the story of Blue Tide.</p></div><div class="flex justify-center lg:justify-end"><div class="relative"><img src="/images/jordan-portrait.jpg" alt="Jordan Strader, Founder of Blue Tide Exteriors" class="w-64 h-64 sm:w-80 sm:h-80 object-cover border-2 border-gold/40 shadow-2xl" loading="lazy"/><div class="absolute -bottom-4 left-1/2 -translate-x-1/2 bg-charcoal px-6 py-2 border border-gold/30"><p class="font-heading text-xs text-gold tracking-[0.2em] whitespace-nowrap">JORDAN STRADER · FOUNDER</p></div></div></div></div></div></section><section class="py-24 sm:py-32"><div class="max-w-7xl mx-auto px-6 sm:px-10"><div class="grid grid-cols-1 lg:grid-cols-2 gap-16 items-start"><div><p class="font-heading text-xs text-gold mb-4 tracking-[0.25em]">Meet the Owner</p><h2 class="font-display text-4xl sm:text-5xl font-light text-charcoal leading-tight mb-8">Jordan Strader</h2><div class="space-y-6 text-slate-grey font-light text-lg leading-relaxed"><p>Jordan Strader's entrepreneurial journey began at 16, when he launched his own lawn mowing and landscaping business. For the next 12 years, he built it into a thriving operation while simultaneously breaking into construction at age 19 in 2002 â learning the trades, managing crews, and developing the hands-on expertise that would become the foundation of everything he does today.</p><p>At 26, after 12 years of landscaping, Jordan made the decision to move out of landscaping and into full-time construction. He also dove into real estate investing, flipping over 500 homes and completing more than 1,000 real estate transactions. That depth of experience â seeing thousands of properties, understanding how homes are built, and knowing what adds real value â shaped his approach to every project that followed.</p><p>In 2018, Jordan moved from Florida to Louisiana and founded Blue Tide Exteriors with a focused mission: design and build extraordinary outdoor living space
571s. Since then, he has performed hundreds of backyard projects â pools, patios, outdoor kitchens, pergolas, fire features, and screen enclosures â across the Shreveport-Bossier area and surrounding communities.</p><p>Today, Jordan holds <span class="text-charcoal font-medium">six Louisiana state licenses</span> â Home Builder, General Contractor, Residential Swimming Pools, Commercial Swimming Pools, Home Improvement, and Qualifying Party. He carries $2 million in general liability insurance and backs every project with a Lifetime Workmanship Warranty.</p><p>A family man at heart, Jordan has been married for over 20 years and is a proud father of two. He lives on a small hobby farm with 20 chickens and a cat. When he's not building, you'll find him outdoors â fishing, hunting, or on the water. For Jordan, outdoor living isn't just something he builds for others. It's a way of life.</p></div></div><div class="space-y-8"><div class="bg-white border border-border-light p-10"><h3 class="font-heading text-xs text-gold mb-6 tracking-wider">BY THE NUMBERS</h3><div class="grid grid-cols-2 gap-8"><div class="border-l border-gold/40 pl-5"><div class="font-display text-4xl font-light text-charcoal">24</div><div class="font-heading text-xs text-slate-light mt-1 tracking-wider">YEARS IN CONSTRUCTION</div></div><div class="border-l border-gold/40 pl-5"><div class="font-display text-4xl font-light text-charcoal">6</div><div class="font-heading text-xs text-slate-light mt-1 tracking-wider">LA STATE LICENSES</div></div><div class="border-l border-gold/40 pl-5"><div class="font-display text-4xl font-light text-charcoal">500+</div><div class="font-heading text-xs text-slate-light mt-1 tracking-wider">HOME REHABS</div></div><div class="border-l border-gold/40 pl-5"><div class="font-display text-4xl font-light text-charcoal">1,000+</div><div class="font-heading text-xs text-slate-light mt-1 tracking-wider">REAL ESTATE TRANSACTIONS</div></div><div class="border-l border-gold/40 pl-5"><div class="font-display text-4xl font-light text-charcoal">$2M</div><div class="font-heading text-xs text-slate-light mt-1 tracking-wider">LIABILITY INSURANCE</div></div><div class="border-l border-gold/40 pl-5"><div class="font-display text-4xl font-light text-charcoal">2018</div><div class="font-heading text-xs text-slate-light mt-1 tracking-wider">FOUNDED IN LOUISIANA</div></div></div></div><div class="bg-charcoal text-white p-10"><h3 class="font-heading text-xs text-gold mb-6 tracking-wider">WHY BLUE TIDE?</h3><p class="text-white/70 font-light leading-relaxed italic">"We have an affinity for the water, and the color blue resonates with us deeply. Tides, with their rhythmic rise and fall, symbolize the steadiness and resilience characteristic of a dedicated small business."</p><p class="mt-4 text-white/50 font-light text-sm">â Jordan Strader, Founder</p></div></div></div></div></section><section class="py-24 sm:py-32 bg-champagne-dark"><div class="max-w-7xl mx-auto px-6 sm:px-10"><div class="text-center max-w-3xl mx-auto mb-20"><p class="font-heading text-xs text-gold mb-4 tracking-[0.25em]">Licensed & Insured</p><h2 class="font-display text-4xl sm:text-6xl font-light text-charcoal leading-tight">Six Louisiana Licenses.<br/><span class="italic">Zero Shortcuts.</span></h2><p class="mt-6 text-lg font-light text-slate-grey leading-relaxed">Blue Tide Exteriors is licensed, bonded, and insured in Louisiana. We carry $2 million in general liability insurance on every project.</p></div><div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-px bg-border-light"><div class="bg-champagne p-8"><div class="font-display text-2xl font-light text-gold mb-2">#00138</div><div class="font-heading text-xs text-charcoal tracking-wider">RESIDENTIAL SWIMMING POOLS</div></div><div class="bg-champagne p-8"><div class="font-display text-2xl font-light text-gold mb-2">#74493</div><div class="font-heading text-xs text-charcoal tracking-wider">COMMERCIAL SWIMMING POOLS</div></div><div class="bg-champagne p-8"><div class="font-display text-2xl font-light text-gold mb-2">HI.561286</div><div class="font-heading text-xs text-charcoal tracking-wider">HOME IMPROVEMENT</div></div><div class="bg-champagne p-8"><div class="font-display text-2xl font-light text-gold mb-2">QP.8977026</div><div class="font-heading text-xs text-charcoal tracking-wider">QUALIFYING PARTY</div></div></div></div></section><section class="py-24 sm:py-32"><div class="max-w-7xl mx-auto px-6 sm:px-10"><div class="text-center max-w-3xl mx-auto mb-20"><p class="font-heading text-xs text-gold mb-4 tracking-[0.25em]">Recognition</p><h2 class="font-display text-4xl sm:text-6xl font-light text-charcoal leading-tight">Awards &<br/><span class="italic">Accreditations</span></h2></div><div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-px bg-border-light"><div class="bg-champagne p-8 flex items-center gap-4"><span class="text-gold text-lg">
571â
</span><span class="text-sm font-light text-slate-grey">BBB A+ Accredited Business</span></div><div class="bg-champagne p-8 flex items-center gap-4"><span class="text-gold text-lg">â
</span><span class="text-sm font-light text-slate-grey">Best of Houzz 2023 â Service</span></div><div class="bg-champagne p-8 flex items-center gap-4"><span class="text-gold text-lg">â
</span><span class="text-sm font-light text-slate-grey">ABC Supply Pro Account</span></div><div class="bg-champagne p-8 flex items-center gap-4"><span class="text-gold text-lg">â
</span><span class="text-sm font-light text-slate-grey">NAHB Member</span></div><div class="bg-champagne p-8 flex items-center gap-4"><span class="text-gold text-lg">â
</span><span class="text-sm font-light text-slate-grey">HBA of Northwest Louisiana Member</span></div></div></div></section><section class="py-20 bg-charcoal text-white"><div class="max-w-7xl mx-auto px-6 sm:px-10"><div class="text-center mb-12"><p class="font-heading text-xs text-gold mb-4 tracking-[0.25em]">Trusted Partners</p><h2 class="font-display text-3xl sm:text-4xl font-light leading-tight">Materials & Vendor <span class="italic text-gold-light">Relationships</span></h2></div><div class="grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-6"><div class="text-center py-4 border border-white/10"><span class="text-sm font-light text-white/60">Renaissance Patio Products (Official Dealer)</span></div><div class="text-center py-4 border border-white/10"><span class="text-sm font-light text-white/60">Hydro Dynamic Pools (Vinyl Liner Panels)</span></div><div class="text-center py-4 border border-white/10"><span class="text-sm font-light text-white/60">Eze-Breeze (3-Season Systems)</span></div><div class="text-center py-4 border border-white/10"><span class="text-sm font-light text-white/60">ABC Supply (Roofing, Siding, Gutters, Decking)</span></div><div class="text-center py-4 border border-white/10"><span class="text-sm font-light text-white/60">Universal Screens / US Motions (Retractable Screens)</span></div><div class="text-center py-4 border border-white/10"><span class="text-sm font-light text-white/60">Sherwin-Williams</span></div><div class="text-center py-4 border border-white/10"><span class="text-sm font-light text-white/60">Spectrum Paint</span></div><div class="text-center py-4 border border-white/10"><span class="text-sm font-light text-white/60">Spell Brothers</span></div><div class="text-center py-4 border border-white/10"><span class="text-sm font-light text-white/60">Custom Building Products</span></div></div></div></section><section class="py-24 sm:py-32"><div class="max-w-7xl mx-auto px-6 sm:px-10"><div class="text-center max-w-3xl mx-auto mb-20"><p class="font-heading text-xs text-gold mb-4 tracking-[0.25em]">Our Commitment</p><h2 class="font-display text-4xl sm:text-6xl font-light text-charcoal leading-tight">Built on <span class="italic">Trust</span></h2><p class="mt-6 text-lg font-light text-slate-grey leading-relaxed">We've seen firsthand what frustrates homeowners â missed follow-ups, poor communication, and customer service that falls short. That's why we've built our business around doing better.</p></div><div class="grid grid-cols-1 md:grid-cols-3 gap-px bg-border-light"><div class="bg-champagne p-10"><h3 class="font-heading text-sm text-charcoal mb-4 tracking-wider">EXPERIENCE</h3><p class="text-sm font-light text-slate-grey leading-relaxed">24 years of hands-on construction experience. 500+ home rehabs. 1,000+ real estate transactions. Hundreds of backyard projects and counting. We've seen every problem and solved most of them.</p></div><div class="bg-champagne p-10"><h3 class="font-heading text-sm text-charcoal mb-4 tracking-wider">EXPERTISE</h3><p class="text-sm font-light text-slate-grey leading-relaxed">Six Louisiana state licenses covering pools, home building, general contracting, home improvement, and public works. Official dealer for Renaissance Patio, Hydro Dynamic Pools, and Eze-Breeze.</p></div><div class="bg-champagne p-10"><h3 class="font-heading text-sm text-charcoal mb-4 tracking-wider">TRUST</h3><p class="text-sm font-light text-slate-grey leading-relaxed">BBB A+ accredited. $2M liability insurance. Lifetime Workmanship Warranty. Best of Houzz 2023. We stand behind every project.</p></div></div></div></section><section class="py-24 sm:py-32 bg-champagne"><div class="max-w-7xl mx-auto px-6 sm:px-10"><div class="text-center mb-16"><p class="font-heading text-xs text-gold mb-4 tracking-[0.25em]">Insights & Resources</p><h2 class="font-display text-4xl sm:text-5xl font-light text-charcoal leading-tight">From the <span class="italic">Blue Tide Blog</span></h2></div><div class="grid grid-cols-1 md:grid-cols-3 gap-8"><a href="/blog/shotcrete-vs-vinyl-pools" class="group"><div class="relative h-56 overflow-hidden"><img src="/images/hero-pool.jpg" alt="Shotcrete vs. Vinyl Liner Pools" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-700" loading="lazy"/><div class="absolute inset-0 bg-gradient-to-t from-charcoal/60 to-transparent"></div></div><div class="bg-white border border-border-light p-6"><p class="font-heading text-xs text-gold mb-3 tracking-wider">POOL CONSTRUCTION</p><h3 class="font-display text-lg font-light text-charcoal group-hover:text-gold transition-colors">Shotcrete vs. Vinyl Liner Pools</h3></div></a><a href="/blog/outdoor-living-design-process" class="group"><div class="relative h-56 overflow-hidden"><img src="/images/outdoor-kitchen.jpg" alt="The Outdoor Living Design Process" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-700" loading="lazy"/><div class="absolute inset-0 bg-gradient-to-t from-charcoal/60 to-transparent"></div></div><div class="bg-white border border-border-light p-6"><p class="font-heading text-xs text-gold mb-3 tracking-wider">DESIGN</p><h3 class="font-display text-lg font-light text-charcoal group-hover:text-gold transition-colors">The Outdoor Living Design Process</h3></div></a><a href="/blog/pool-budgeting-and-financing" class="group"><div class="relative h-56 overflow-hidden"><img src="/images/vinyl-pool-hero.jpg" alt="How to Plan Your Pool Investment in 2026" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-700" loading="lazy"/><div class="absolute inset-0 bg-gradient-to-t from-charcoal/60 to-transparent"></div></div><div class="bg-white border border-border-light p-6"><p class="font-heading text-xs text-gold mb-3 tracking-wider">INVESTMENT</p><h3 class="font-display text-lg font-light text-charcoal group-hover:text-gold transition-colors">How to Plan Your Pool Investment in 2026</h3></div></a></div><div class="mt-12 text-center"><a href="/blog" class="inline-flex items-center border border-charcoal/30 hover:border-charcoal hover:bg-charcoal hover:text-champagne text-charcoal font-heading text-xs px-10 py-4 transition-all">View All Articles â</a></div></div></section><section class="py-24 sm:py-32 bg-ocean-deep text-white"><div class="max-w-5xl mx-auto px-6 sm:px-10"><div class="text-center mb-12"><p class="font-heading text-xs text-gold mb-4 tracking-[0.25em]">Get Started</p><h2 class="font-display text-4xl sm:text-6xl font-light leading-tight">Let's Explore What Your<br/><span class="italic text-gold-light">Backyard Could Become</span></h2></div><form class="p-10 sm:p-12 bg-white"><div class="grid grid-cols-1 sm:grid-cols-2 gap-5"><div><label class="block text-xs font-heading text-slate-grey mb-2 tracking-wider">FULL NAME *</label><input type="text" required="" placeholder="John Smith" class="w-full px-4 py-3 border border-border-light focus:border-gold focus:outline-none text-charcoal font-light bg-champagne/50" name="name"/></div><div><label class="block text-xs font-heading text-slate-grey mb-2 tracking-wider">PHONE *</label><input type="tel" required="" placeholder="(318) 555-0000" class="w-full px-4 py-3 border border-border-light focus:border-gold focus:outline-none text-charcoal font-light bg-champagne/50" name="phone"/></div></div><div class="mt-5"><label class="block text-xs font-heading text-slate-grey mb-2 tracking-wider">EMAIL *</label><input type="email" required="" placeholder="[email protected]" class="w-full px-4 py-3 border border-border-light focus:border-gold focus:outline-none text-charcoal font-light bg-champagne/50" name="email"/></div><button type="submit" class="w-full mt-8 bg-charcoal hover:bg-charcoal-light text-champagne font-heading text-xs py-5 tracking-wider transition-colors disabled:opacity-50">BOOK FREE 25-MINUTE GOOGLE MEET â</button><p class="mt-4 text-center text-xs text-slate-light font-light">By submitting, you agree to be contacted by Blue Tide Exteriors about your project. We never share your information. No spam, no pressure.</p></form></div></section><section class="py-20 bg-champagne"><div class="max-w-5xl mx-auto px-6 sm:px-10"><div class="text-center mb-12"><p class="font-heading text-xs text-gold mb-4 tracking-[0.25em]">WITH EVERY JOB</p><h2 class="font-display text-3xl sm:text-4xl font-light text-charcoal">Thoughtful planning,<br/><span class="italic text-gold">part of every build</span></h2><p class="mt-4 text-slate-grey font-light max-w-2xl mx-auto">With every Blue Tide job: free renderings, free site plans, free architectural drawings, and free permit submissions.</p></div><div class="grid grid-cols-2 lg:grid-cols-4 gap-4"><a href="/estimator" class="bg-white border border-border-light p-6 text-center hover:border-gold transition-colors"><p class="font-heading text-xs text-gold mb-2 tracking-wider">COST ESTIMATOR</p><p class="text-xs text-slate-grey font-light">Real cost ranges in 2 minutes</p></a><a href="/site-plan" class="bg-white border border-border-light p-6 text-center hover:border-gold transition-colors"><p class="font-heading text-xs text-gold mb-2 tracking-wider">SITE PLANS WITH EVERY JOB</p><p class="text-xs text-slate-grey font-light">With every Blue Tide job: free renderings, free site plans, free architectural drawings, and free permit submissions.</p></a><a href="/financing" class="bg-white border border-border-light p-6 text-center hover:border-gold transition-colors"><p class="font-heading text-xs text-gold mb-2 tracking-wider">FINANCING CALCULATOR</p><p class="text-xs text-slate-grey font-light">Up to $250K, monthly payment options</p></a><a href="/free-estimate" class="bg-white border border-border-light p-6 text-center hover:border-gold transition-colors"><p class="font-heading text-xs text-gold mb-2 tracking-wider">DESIGN CONSULTATION</p><p class="text-xs text-slate-grey font-light">Free 25-minute Google Meet</p></a></div></div></section><section class="py-20 bg-charcoal text-white relative overflow-hidden"><div class="max-w-4xl mx-auto px-6 sm:px-10 text-center"><p class="font-heading text-xs text-gold mb-4 tracking-[0.25em]">Our Promise</p><h2 class="font-display text-4xl sm:text-6xl font-light leading-tight">Lifetime Workmanship<br/><span class="italic text-gold-light">Warranty</span></h2><p class="mt-8 text-lg font-light text-white/60 max-w-2xl mx-auto leading-relaxed">We stand behind every pool, patio, kitchen, and pergola we build â for life. Not a prorated 10-year warranty. Not a "good luck" handshake. A real, written Lifetime Workmanship Warranty from a company founded in 2018 with 24 years of combined construction experience.</p><div class="mt-10 flex flex-wrap justify-center gap-x-8 gap-y-3 text-xs font-heading tracking-wider text-white/50"><span>Licensed</span><span>·</span><span>
571Bonded</span><span>·</span><span>Insured</span></div></div></section><section class="py-24 sm:py-32 bg-champagne"><div class="max-w-7xl mx-auto px-6 sm:px-10"><div class="text-center max-w-3xl mx-auto mb-20"><p class="font-heading text-xs text-gold mb-4 tracking-[0.25em]">Real Reviews from Google</p><h2 class="font-display text-4xl sm:text-6xl font-light text-charcoal leading-tight">What Our<br/><span class="italic">Clients Say</span></h2><p class="mt-4 text-sm text-slate-light"><a href="https://www.google.com/maps?cid=13248166682269152656" target="_blank" rel="noopener noreferrer" class="text-gold hover:underline">Read all reviews on Google â</a></p></div><div class="grid grid-cols-1 md:grid-cols-3 gap-px bg-border-light"><div class="bg-champagne p-12 flex flex-col"><div class="text-gold text-lg mb-6">â
â
â
â
â
</div><p class="text-slate-grey font-light leading-relaxed italic flex-grow">â<!-- -->They replaced our patio cover which we lost in the big ice storm. It took us a year and a half to find someone to fix it. It was Blue Tide Exteriors. It took them 2 days and it is so pretty. They worked with our budget. They did a great job.<!-- -->â</p><div class="mt-8 pt-6 border-t border-border-light"><div class="font-display text-lg text-charcoal">Mickey W.</div><div class="font-heading text-xs text-slate-light mt-1 tracking-wider">Keithville, LA</div></div></div><div class="bg-champagne p-12 flex flex-col"><div class="text-gold text-lg mb-6">â
â
â
â
â
</div><p class="text-slate-grey font-light leading-relaxed italic flex-grow">â<!-- -->Blue tide did an amazing job on my front deck! Great customer service â they went the extra mile to make sure my deck was perfect.<!-- -->â</p><div class="mt-8 pt-6 border-t border-border-light"><div class="font-display text-lg text-charcoal">John D.</div><div class="font-heading text-xs text-slate-light mt-1 tracking-wider">Shreveport, LA</div></div></div><div class="bg-champagne p-12 flex flex-col"><div class="text-gold text-lg mb-6">â
â
â
â
â
</div><p class="text-slate-grey font-light leading-relaxed italic flex-grow">â<!-- -->So appreciative of Jordan and his team. Super efficient and very reasonable for the work required.<!-- -->â</p><div class="mt-8 pt-6 border-t border-border-light"><div class="font-display text-lg text-charcoal">Michelle V.</div><div class="font-heading text-xs text-slate-light mt-1 tracking-wider">Benton, LA</div></div></div></div><div class="mt-12 text-center"><a href="/reviews" class="inline-flex items-center text-sm font-heading text-gold hover:text-charcoal transition-colors tracking-wider">Read More Reviews â</a></div></div></section><footer class="bg-charcoal text-white/60 py-12 sm:py-16"><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-10"><div class="mb-10 pb-8 border-b border-white/10"><div class="flex items-center gap-3 mb-4"><span class="font-display text-lg sm:text-xl lg:text-2xl font-medium text-white whitespace-nowrap">Blue Tide <span class="text-gold italic">Exteriors</span></span></div><p class="text-sm font-light leading-relaxed text-white/40 max-w-md">Design-build exterior construction serving Shreveport, Bossier City, and 22 surrounding towns in North Louisiana & East Texas since 2018.</p><div class="flex gap-4 mt-5"><a href="https://instagram.com/bluetideexteriors" target="_blank" rel="noopener noreferrer" class="font-heading text-xs text-white/40 hover:text-gold transition-colors tracking-wider">INSTAGRAM</a><span class="text-white/20">·</span><a href="https://youtube.com/@Bluetideexteriors" target="_blank" rel="noopener noreferrer" class="font-heading text-xs text-white/40 hover:text-gold transition-colors tracking-wider">YOUTUBE</a><span class="text-white/20">·</span><a href="https://facebook.com/bluetideexteriors" target="_blank" rel="noopener noreferrer" class="font-heading text-xs text-white/40 hover:text-gold transition-colors tracking-wider">FACEBOOK</a></div></div><div class="mb-10 pb-8 border-b border-white/10 grid grid-cols-1 sm:grid-cols-2 gap-4"><a href="https://app.builddesignai.com" target="_blank" rel="noopener noreferrer" class="block border border-gold/30 bg-gold/5 p-6 rounded-lg hover:border-gold/60 transition-colors group"><div class="text-2xl mb-2"><span class="text-gold">â</span></div><h4 class="font-heading text-xs text-gold tracking-wider mb-1">DESIGNBUILDAI</h4><p class="text-sm font-light text-white/60">Design your backyard and get real cost estimates in one tool. Style, features, build levels, mandatory costs â all in one place.</p><span class="mt-3 inline-block font-heading text-xs text-gold group-hover:text-gold-light transition-colors">Start Designing â</span></a><a href="/site-plan" class="block border border-gold/30 bg-gold/5 p-6 rounded-lg hover:border-gold/60 transition-colors group"><div class="text-2xl mb-2"><span class="text-gold">â</span></div><h4 class="font-heading text-xs text-gold tracking-wider mb-1">Site plans with every job</h4><p class="text-sm font-light text-white/60">With every Blue Tide job: free renderings, free site plans, free architectural drawings, and free permit submissions.</p><span class="mt-3 inline-block font-heading text-xs text-gold group-hover:text-gold-light transition-colors">See whatâs included â</span></a></div><div class="grid grid-cols-2 md:grid-cols-4 gap-8"><div><h4 class="font-heading text-xs text-white mb-4 tracking-wider">CONTACT</h4><ul class="space-y-2 text-xs sm:text-sm font-light text-white/40"><li><a href="https://www.google.com/maps/search/?api=1&query=Blue+Tide+Exteriors+1780+E+Bert+Kouns+Industrial+Loop+Ste+907+Shreveport+LA+71105" target="_blank" rel="noopener noreferrer" class="hover:text-gold transition-colors">1780 E Bert Kouns Industrial Loop Ste 907</a></li><li><a href="https://www.google.com/maps/search/?api=1&query=Blue+Tide+Exteriors+1780+E+Bert+Kouns+Industrial+Loop+Ste+907+Shreveport+LA+71105" target="_blank" rel="noopener noreferrer" class="hover:text-gold transition-colors">Shreveport, LA 71105</a></li><li><a href="tel:+13182428225" class="hover:text-gold transition-colors">(318) 242-8225</a></li><li><a href="/free-estimate" class="text-gold hover:text-gold-light transition-colors">
571Book free 25-minute Google Meet</a></li><li class="pt-2 text-[11px]">MonâFri 8AMâ5PM · Sat 8AMâ5PM</li></ul></div><div><h4 class="font-heading text-xs text-white mb-4 tracking-wider">OUR SERVICES</h4><ul class="space-y-1.5 text-xs sm:text-sm font-light text-white/40"><li><a href="/patios" class="hover:text-gold transition-colors">Patios & Decking</a></li><li><a href="/pergolas-pavilions" class="hover:text-gold transition-colors">Pergolas & Pavilions</a></li><li><a href="/screen-enclosures" class="hover:text-gold transition-colors">Screen Enclosures</a></li><li><a href="/sunrooms" class="hover:text-gold transition-colors">Sunrooms</a></li><li><a href="/outdoor-kitchens" class="hover:text-gold transition-colors">Outdoor Kitchens</a></li><li><a href="/fire-features" class="hover:text-gold transition-colors">Fire Features</a></li><li><a href="/eze-breeze" class="hover:text-gold transition-colors">Eze-Breeze 3-Season</a></li><li><a href="/retractable-screens" class="hover:text-gold transition-colors">Retractable Screens</a></li><li><a href="/water-features" class="hover:text-gold transition-colors">Water Features</a></li><li><a href="/shotcrete-pools" class="hover:text-gold transition-colors">Shotcrete/Gunite Pools</a></li><li><a href="/vinyl-liner-pools" class="hover:text-gold transition-colors">Vinyl Liner Pools</a></li><li><a href="/concrete" class="hover:text-gold transition-colors">Concrete</a></li><li><a href="/roofing" class="hover:text-gold transition-colors">Roofing</a></li><li><a href="/siding" class="hover:text-gold transition-colors">Siding</a></li><li><a href="/commercial" class="hover:text-gold transition-colors">Commercial</a></li><li><a href="/financing" class="hover:text-gold transition-colors">Financing</a></li><li><a href="/warranty" class="hover:text-gold transition-colors">Warranty</a></li><li><a href="/reviews" class="hover:text-gold transition-colors">Reviews</a></li><li><a href="/contact" class="hover:text-gold transition-colors">Contact</a></li><li><a href="/blog" class="hover:text-gold transition-colors">Blog</a></li></ul></div><div><h4 class="font-heading text-xs text-white mb-4 tracking-wider">SERVICE AREAS</h4><ul class="grid grid-cols-2 gap-x-2 gap-y-1.5 text-xs sm:text-sm font-light text-white/40"><li><a href="/cities/shreveport" class="hover:text-gold transition-colors">Shreveport</a></li><li><a href="/cities/bossier-city" class="hover:text-gold transition-colors">Bossier City</a></li><li><a href="/cities/mansfield" class="hover:text-gold transition-colors">Mansfield</a></li><li><a href="/cities/minden" class="hover:text-gold transition-colors">Minden</a></li><li><a href="/cities/haughton" class="hover:text-gold transition-colors">Haughton</a></li><li><a href="/cities/benton" class="hover:text-gold transition-colors">Benton</a></li><li><a href="/cities/stonewall" class="hover:text-gold transition-colors">Stonewall</a></li><li><a href="/cities/keithville" class="hover:text-gold transition-colors">Keithville</a></li><li><a href="/cities/blanchard" class="hover:text-gold transition-colors">Blanchard</a></li><li><a href="/cities/greenwood" class="hover:text-gold transition-colors">Greenwood</a></li><li><a href="/cities/marshall" class="hover:text-gold transition-colors">Marshall, TX</a></li><li><a href="/cities/carthage" class="hover:text-gold transition-colors">Carthage, TX</a></li><li><a href="/cities/keachi" class="hover:text-gold transition-colors">Keachi</a></li><li><a href="/cities/mooringsport" class="hover:text-gold transition-colors">Mooringsport</a></li><li><a href="/cities/oil-city" class="hover:text-gold transition-colors">Oil City</a></li><li><a href="/cities/grand-cane" class="hover:text-gold transition-colors">Grand Cane</a></li><li><a href="/cities/spring-ridge" class="hover:text-gold transition-colors">Spring Ridge</a></li><li><a href="/cities/bethany" class="hover:text-gold transition-colors">Bethany</a></li><li><a href="/cities/princeton" class="hover:text-gold transition-colors">Princeton</a></li><li><a href="/cities/elm-grove" class="hover:text-gold transition-colors">Elm Grove</a></li><li><a href="/cities/waskom" class="hover:text-gold transition-colors">Waskom, TX</a></li><li><a href="/cities/frierson" class="hover:text-gold transition-colors">Frierson</a></li></ul></div><div><h4 class="font-heading text-xs text-white mb-4 tracking-wider">LICENSES</h4><ul class="space-y-1.5 text-xs sm:text-sm font-light text-white/40"><li>LA License #00138 · #74493</li><li>HI.561286 · QP.8977026</li><li>$2M General Liability Insurance</li><li>BBB A+ Accredited</li><li>NAHB & HBA NW Louisiana Member</li><li>Houzz Best of 2023</li></ul></div></div><div class="mt-10 pt-6 border-t border-white/10 flex flex-col sm:flex-row items-center justify-between gap-3 text-[11px] text-white/30 font-light"><p>© <!-- -->2026<!-- --> Blue Tide Exteriors, LLC. All rights reserved.</p><a href="/privacy" class="hover:text-gold transition-colors">Privacy Policy</a><p>Licensed · Bonded · Insured · Serving North Louisiana & East Texas Since 2018</p></div></div></footer></div>
571<script>(function(a,f){let l;try{l=JSON.parse(sessionStorage.getItem(a)||"{}")}catch{return}const n=l?.[f||history.state?.__TSR_key];let c=!1;for(const t in n){const e=n[t],o=e?.scrollX,s=e?.scrollY;if(Number.isFinite(o)&&Number.isFinite(s)){if(t==="window")scrollTo(o,s),c=!0;else if(t)try{const r=document.querySelector(t);r&&(r.scrollLeft=o,r.scrollTop=s)}catch{}}}if(c)return;const i=location.hash.slice(1);if(i){const t=history.state?.__hashScrollIntoViewOptions??!0;if(t){const e=document.getElementById(i);e&&e.scrollIntoView(t)}return}scrollTo(0,0)})("tsr-scroll-restoration-v1_3");document.currentScript.remove()</script>
571<!--/$-->
571<script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-Bl3BsNxA.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-Bl3BsNxA.js"}}]},"/about":$R[8]={preloads:$R[9]=["/assets/about-BZwSTrEC.js"]}}},matches:$R[10]=[$R[11]={i:"__root__�",u:1791488151903,s:"success",ssr:!0},$R[12]={i:"�about�about",u:1791488151903,s:"success",ssr:!0}],lastMatchId:"�about�about"})($R["tsr"]);$_TSR.e();document.currentScript.remove()</script>
571<script type="module" async="" src="/assets/index-Bl3BsNxA.js"></script>
571<a href="tel:+13182428225" class="fixed bottom-6 right-6 z-50 flex items-center gap-2 bg-[#c5a572] px-5 py-3 rounded-full text-[#0f1623] font-heading text-sm font-medium shadow-2xl hover:bg-[#d4b882] transition-all hover:scale-105" aria-label="Call Blue Tide Exteriors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72c.127.96.36 1.9.7 2.81a2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.91.34 1.85.573 2.81.7A2 2 0 0122 16.92z"></path></svg><span class="hidden sm:inline">Call (318) 242-8225</span><span class="sm:hidden">Call</span></a>
571<script src="https://link.msgsndr.com/js/external-tracking.js" data-tracking-id="tk_debca0aa016e4c7d8104c8a55df82b52"></script>
571<video id="callie-video" autoPlay="" playsInline="" style="position:fixed;bottom:16px;right:16px;width:280px;max-width:42vw;border-radius:16px;z-index:9999;background:#000"></video>
571<script type="module" src="/callie.js"></script>
571<script>(function(){var t=setInterval(function(){var w=document.getElementById('hf-watermark');if(w){w.remove();clearInterval(t)}},50);setTimeout(function(){clearInterval(t)},3000)})()</script>
571<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"3bb1edbabb394d9288fd0e662ba9ca7e","r":1,"spa":2}' crossorigin="anonymous"></script>
571 572</body></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.