PageSourceSearch

https://coastalreign.com/

html coastalreign.com collected 2026-09-26 01:03:51 UTC 17,444 bytes, 393 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en" ng-app="app"  >
3<head>
3<script>(function(w,i,g){w[g]=w[g]||[];if(typeof w[g].push=='function')w[g].push(i)})
4(window,'GTM-T5V4N5V','google_tags_first_party');</script>
4<script>(function(w,d,s,l){w[l]=w[l]||[];(function(){w[l].push(arguments);})('set', 'developer_id.dY2E1Nz', true);
5		var f=d.getElementsByTagName(s)[0],
6		j=d.createElement(s);j.async=true;j.src='/a10r/';
7		f.parentNode.insertBefore(j,f);
8		})(window,document,'script','dataLayer');</script>
8
9
10    <!-- build:preloadCss -->
11    <link rel="preload" href="/assets/public/dist/loadCss.css?v=95b517da013402281d2ddeddf29af9fa143b8f96" as="style">
12    <!-- endbuild -->
13
14    
14<script>var $wc_load=function(a){return JSON.parse(JSON.stringify(a))},$wc_leads=$wc_leads||{doc:{url:$wc_load(document.URL),ref:$wc_load(document.referrer),search:$wc_load(location.search),hash:$wc_load(location.hash)}};</script>
14
15    
15<script src="//s.ksrndkehqnwntyxlhgto.com/129144.js"></script>
15
16
17    <meta name="facebook-domain-verification" content="bfjeczdiawmyktwuj27rc2wsgz9gv9" />
18
19    <!-- Meta Pixel Code -->
20    
20<script>
21        !function(f,b,e,v,n,t,s)
22        {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
23            n.callMethod.apply(n,arguments):n.queue.push(arguments)};
24            if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
25            n.queue=[];t=b.createElement(e);t.async=!0;
26            t.src=v;s=b.getElementsByTagName(e)[0];
27            s.parentNode.insertBefore(t,s)}(window, document,'script',
28            'https://connect.facebook.net/en_US/fbevents.js');
29            fbq('consent','revoke');
30            fbq('init', '682837592909593');
31            fbq('track', 'PageView');
32
33            function handleConsent(hasConsent) {
34                fbq("consent", hasConsent ? "grant" : "revoke");
35            }
36            
37            document.addEventListener("cookieyes_consent_update", (eventData) => {
38                const data = eventData.detail;
39                handleConsent(data.accepted && data.accepted.includes("advertisement"));
40            });
41
42            document.addEventListener("cookieyes_banner_load", (eventData) => {
43                const data = eventData.detail;
44                handleConsent(data.categories && data.categories.advertisement);
45            });
46    </script>
46
47    <noscript><img height="1" width="1" aria-hidden="true" style="display:none"
48                   alt="." src="https://www.facebook.com/tr?id=682837592909593&ev=PageView&noscript=1"
49    /></noscript>
50    <!-- End Meta Pixel Code -->
51
52    <!-- OpenAI Measurement Pixel -->
53    
53<script>
54        !function(w,d,s,u){if(w.oaiq)return;var q=function(){q.q.push(arguments)};q.q=[];w.oaiq=q;var j=d.createElement(s);j.async=1;j.src=u;var f=d.getElementsByTagName(s)[0];f.parentNode.insertBefore(j,f)}(window,document,"script","https://bzrcdn.openai.com/sdk/oaiq.min.js");
55        // Mirrors the Meta Pixel consent pattern above: revoke by default, then grant/revoke
56        // via the same CookieYes events + "advertisement" category. oaiq("consent", boolean)
57        // is first-class in the SDK's command dispatcher (undocumented in the pixel PDF).
58        oaiq("consent", false);
59        var oaiPixelId = "Akxm2hXYXaty69wSRY6mNH";
60        // Placeholder is substituted from env at server boot; skip init when unset (dev/staging)
61        if (oaiPixelId && oaiPixelId.charAt(0) !== "@" && oaiPixelId !== "undefined") {
62            oaiq("init", {pixelId: oaiPixelId, debug: false});
63        }
64
65        function handleOaiqConsent(hasConsent) {
66            oaiq("consent", !!hasConsent);
67        }
68
69        document.addEventListener("cookieyes_consent_update", function(eventData) {
70            var data = eventData.detail;
71            handleOaiqConsent(data && data.accepted && data.accepted.includes("advertisement"));
72        });
73        document.addEventListener("cookieyes_banner_load", function(eventData) {
74            var data = eventData.detail;
75            handleOaiqConsent(data && data.categories && data.categories.advertisement);
76        });
77    </script>
77
78    <!-- End OpenAI Measurement Pixel -->
79
80    <!-- Google tag (gtag.js) -->
81    
81<script async src="https://coastalreign.com/a10r/gtag/js?id=G-053NTM3RCD"></script>
81
82    
82<script>
83            window.dataLayer = window.dataLayer || [];
84
85            function gtag() {
86                dataLayer.push(arguments);
87            }
88
89            gtag('js', new Date());
90
91            gtag('set', {currency: 'CAD'});
92            gtag('config', 'G-053NTM3RCD');
93    </script>
93
94<!-- Google Places Autocomplete -->
95    
95<script>
96      window._gmapsAuthFailed = false;
97      window.gm_authFailure = function() {
98        window._gmapsAuthFailed = true;
99        // Google has already disabled the inputs — clean up the damage
100        var inputs = document.querySelectorAll('.gm-err-autocomplete');
101        var hadFocus = document.activeElement;
102        for (var i = 0; i < inputs.length; i++) {
103          inputs[i].removeAttribute('disabled');
104          inputs[i].removeAttribute('style');
105          inputs[i].placeholder = '';
106          inputs[i].classList.remove('gm-err-autocomplete');
107        }
108        // Restore focus — disabling the input caused it to blur
109        if (inputs.length && (!hadFocus || hadFocus === document.body)) {
110          inputs[0].focus();
111        }
112        // Also remove any .pac-container dropdowns that were created
113        var pacs = document.querySelectorAll('.pac-container');
114        for (var j = 0; j < pacs.length; j++) {
115          pacs[j].parentNode.removeChild(pacs[j]);
116        }
117      };
118    </script>
118
119    
119<script async src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAFuLfFJN3jsyA1K4LtAyNwmnTnyz8sS5s&libraries=places&loading=async"></script>
119
120
121<!--    Prerender script -->
122    
122<script>
123        window.prerenderReady = false;
124    </script>
124
125
126
127    <link rel="preconnect" href="https://www.google.ca">
128<!--    <link rel="preconnect" href="https://googleads.g.doubleclick.net">-->
129    <link rel="preconnect" href="https://connect.facebook.net">
130    <link rel="preconnect" crossorigin href="https://fonts.googleapis.com">
131    <link rel="preconnect" crossorigin href="https://fonts.gstatic.com">
132    <link rel="preconnect" crossorigin href="https://ka-p.fontawesome.com">
133    <link rel="preconnect" href="https://www.google-analytics.com">
134    <!---->
135<!--    <link rel="preconnect" href="https://code.jquery.com">-->
136<!--    <link rel="preconnect" href="http://www.googleadservices.com">-->
137
138    <!-- Google Tag Manager -->
139    
139<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
140        new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
141        j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
142        'https://coastalreign.com/a10r/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
143    })(window,document,'script','dataLayer','GTM-T5V4N5V');</script>
143
144    <!-- End Google Tag Manager -->
145
146    <!--Meta View Port for Mobile Devices-->
147    <meta name=viewport content="width=device-width, initial-scale=1, minimum-scale=1">
148<!--    
148<script>-->
149<!--        WebFont.load({-->
150<!--            google: {-->
151<!--                families: ['Lato:300,400,700']-->
152<!--            }-->
153<!--        });-->
154<!--    </script>
154-->
155
156    
156<script>
157        //todo: remove
158        /**
159         * Created by eddisonng on 2016-04-29.
160         */
161
162        function setMetaTitle (title) {
163            document.title = title
164        }
165
166        function setMetaDescription (description){
167            var meta=document.getElementsByTagName("meta");
168            for (var i=0; i<meta.length; i++) {
169                if (meta[i].name.toLowerCase()=="description") {
170                    meta[i].content= description
171                }
172            }
173        }
174
175        function setMetaImage (image){
176            var meta=document.getElementsByTagName("meta");
177            for (var i=0; i<meta.length; i++) {
178                if (meta[i].name.toLowerCase()=="og:image") {
179                    meta[i].content= image
180                }
181            }
182        }
183
184        function changeMetaTags(metaInfo){
185            //TODO: if there is no property, put a default.
186            $("meta[name=description]").attr("content", metaInfo.description);
187            $("meta[property='og:description']").attr("content", metaInfo.description);
188            $("meta[property='og:image']").attr("content", metaInfo.image);
189            $("meta[property='og:title']").attr("content", metaInfo.title);
190            document.title = metaInfo.title
191        }
192    </script>
192
193    <!--    sentry loader script -->
194   
194<script>
195    window.sentryOnLoad = function () {
196      // Simple, no filters, make sure errors aren't sampled away
197      Sentry.init({
198        sampleRate: 1.0,
199        tracesSampleRate: 0, // turn off tracing to reduce noise while testing
200        // browser-masked cross-origin errors carry no stack/message and are unactionable
201        ignoreErrors: ['Script error.'],
202          // Set to false so it doesn't record a replay from the start of the session
203          replaysOnStart: false,
204          // Set to 0 so it doesn't record an endless replay
205          replaysSessionSampleRate: 0,
206          // Set to 0 so no random replay happens
207          sessionSampleRate: 0,
208          replaysOnErrorSampleRate: 0.2, // capture full session when error occurs
209          // silence logs
210          debug: false
211      });
212    };
213  </script>
213
214    
214<script src="https://js.sentry-cdn.com/b19ee2f0bb64be1fff9a8e7a7dbee361.min.js" crossorigin="anonymous"></script>
214
215
216    <style type="text/css">
217        @font-face {
218            font-family:"Athletic";
219            src:url("/assets/fonts/Athletic.TTF")
220        }
221    </style>
222
223    <title>Coastal Reign | Custom Printed Clothing and Swag</title>
224    <meta name="description" lang=  "en" content="A Vancouver based provider of custom products and swag. We are proud to offer free shipping, responsive live chat, and expert design help.">
225    <meta property="og:title" content="Coastal Reign | Custom Printed Clothing and Swag" />
226    <meta property="og:description" content="A Vancouver based provider of custom products and swag. We are proud to offer free shipping, responsive live chat, and expert design help.">
227    <meta property="og:type" content="website" />
228    <meta property="og:image" itemprop="image" content="https://image.coastalreign.com/sharedImage.png"/>
229    <meta property="og:image:type" content="image/png" />
230
231    <meta charset="UTF-8"/>
232    <meta name="fragment" content="!">
233<!--    favicon -->
234    <link rel="icon" type="image/png" href="/assets/public/favicon/favicon-96x96.png" sizes="96x96" />
235    <link rel="icon" type="image/svg+xml" href="/assets/public/favicon/favicon.svg" />
236    <link rel="shortcut icon" href="/assets/public/favicon/favicon.ico" />
237    <link rel="apple-touch-icon" sizes="180x180" href="/assets/public/favicon/apple-touch-icon.png" />
238    <link rel="manifest" href="/assets/public/favicon/site.webmanifest" />
239<!--    preload critical assets -->
240    <link rel="preload" as="image" href="https://image.coastalreign.com/navbar/nav-magnifying.svg">
241    <link rel="preload" as="image" href="https://image.coastalreign.com/navbar/nav-bars.svg">
242    <link rel="preload" as="image" href="https://image.coastalreign.com/navbar/nav-question.svg">
243    <link rel="preload" as="image" href="https://image.coastalreign.com/navbar/Cart.svg">
244    <link rel="preload" as="image" href="https://image.coastalreign.com/navbar/Login.svg">
245    
245<script src="https://cdn.jsdelivr.net/npm/isbot@5"></script>
245
246<!--    Cloudflare Web Analytics (RUM) -->
vendor: 112 bytes, lines 246-247
246
247    <script type="module" src="https://static.cloudflareinsights.com/beacon.min.js" data-cf-beacon='{"token": "
247094eeb02dfed4b47ae02f5e85ca74740
vendor: 19 bytes, lines 247-249
247"}'></script>
248
249    
249<meta charset="UTF-8">
250    <base href="/">
251    <!-- build:fixLoadScriptsPath -->
252    
252<script src="/assets/public/dist/loadScripts.js?v=95b517da013402281d2ddeddf29af9fa143b8f96"></script>
252
253    <!-- endbuild -->
254
255    <!-- build:useAngularTemplates -->
256    
256<script src="/assets/public/dist/publicTemplates.js?v=95b517da013402281d2ddeddf29af9fa143b8f96"></script>
256
257    <!-- endbuild -->
258    <!-- build:useSharedAngularTemplates -->    
258<script src="/assets/public/dist/sharedTemplates.js?v=95b517da013402281d2ddeddf29af9fa143b8f96"></script>
258    <!-- endbuild -->
259<!--    Google Analytics-->
260    
260<script>
261        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
262                    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
263                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
264        })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
265
266    </script>
266
267
268    
268<script type="text/javascript">
269        /* <![CDATA[ */
270        var google_conversion_id = 861990088;
271        var google_custom_params = window.google_tag_params;
272        var google_remarketing_only = true;
273        /* ]]> */
274    </script>
274
275
276
277    <!-- build:fixLoadCssPath -->
278    <link rel="stylesheet" href="/assets/public/dist/loadCss.css?v=95b517da013402281d2ddeddf29af9fa143b8f96">
279    <!-- endbuild -->
280</head>
281<body>
282<!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 282-283
282
283<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
283GTM-T5V4N5V
vendor: 101 bytes, lines 283-284
283"
284                  height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
285<!-- End Google Tag Manager (noscript) -->
286
287<!-- HEADER -->
288<div class="navbar-directive fixedTopBar" style="border-bottom: 1px solid #f5f5f5;">
289    <div class="navbar-container" style="min-height: 70px">
290        <navbar></navbar>
291    </div>
292</div>
293<!--<div class="nav-padding" ng-style="{'padding-top': ($root.showStoryPage ? '230px': ($root.breadcrumb.isFetching || $root.breadcrumb.list.length > 0) ? '146px':'111px') }"></div>-->
294<div>
295    <!-- Angular Dynamic Content -->
296    <style>
297        .loader {
298            height: 400px;
299            position: relative;
300        }
301        .ajax-loader {
302            position: absolute;
303            left: 50%;
304            top: 50%;
305            margin-left: -60px; /* -1 * image width / 2 */
306            margin-top: -60px; /* -1 * image height / 2 */
307        }
308    </style>
309
310    <div ng-hide="true" class="loader">
311        <!--<img class="ajax-loader" src="../images/loadingScreen.gif">-->
312    </div>
313
314    <div ng-view class="coastal-reign-website">
315    </div>
316</div>
317
318<div class="change-locale" ng-cloak ng-if="$root.showRecommendLocaleModal">
319    <div class="change-locale-top">
320        <div style="margin-right: 20%">
321            <div>You are currently on the {{$root.visitingCountry(true)}} website.</div>
322            <div>We recommend updating your location for a better browsing experience.</div>
323        </div>
324        <button class="modal-close-button" aria-label="Click to confirm your current locale" ng-click="$root.userConfirmLocale()">
325            <i class="fas fa-times"></i>
326        </button>
327    </div>
328    <div style="display: flex; justify-content: space-evenly">
329        <div class="flag-dropdown no-print">
330            <button class="btn btn-default" type="button"
331                    style="display: flex; align-items:center"
332                    ng-click="$root.changeToCountry(null, $root.recommendLocale)">
333                Continue to {{$root.visitingCountry(false, $root.recommendLocale)}} (en)
334                        <img ng-show="$root.recommendLocale == ''" style="width: 35px; height:15px;  padding-left:5px"
335                             lazy-loaded-image alt="Canadian customers for t-shirt printing click here."
336                             data-src="/assets/public/images/ca-flag.png">
337                    <img ng-show="$root.recommendLocale == 'en-us'" style="width: 35px; height:15px;" lazy-loaded-image
338                         alt="US customers for t-shirt printing click here." data-src="/assets/public/images/us-flag.png">
339            </span></button>
340        </div>
341    </div>
342</div>
343
344<div  id="errorMessageModal" class="modal fade" role="dialog">
345    <div  class="modal-dialog ">
346        <!-- Modal content-->
347        <div style="background-color: #F6665F" class="modal-content">
348            <div class="modal-body">
349                <h4 style="color: white">Error, please try again.</h4>
350                <p style="color: white; white-space: pre-line" id="errorMessage"></p>
351            </div>
352        </div>
353    </div>
354</div>
355
356
357<!-- Modal -->
358<div  id="noteMessageModal" class="modal fade " role="dialog">
359    <div  class="modal-dialog ">
360        <!-- Modal content-->
361        <div style="background-color: white" class="modal-content">
362            <div class="modal-body">
363                <p style="color: black; white-space: pre-line" id="noteMessage"></p>
364            </div>
365        </div>
366    </div>
367</div>
368
369
370<div id="successMessageModal" class="modal fade " role="dialog">
371    <div class="modal-dialog ">
372        <!-- Modal content-->
373        <div style="background-color: #EFFEFD" class="modal-content">
374            <div class="modal-body">
375                <h4 style="color: #39bdae">Success</h4>
376                <p style="color: #333; white-space: pre-line"
377                   id="successMessage"></p>
378            </div>
379        </div>
380    </div>
381</div>
382
383<footer></footer>
384
385</body>
386
387<!--     Asynchronously load non-critical below the fold-->
388<script async src="https://kit.fontawesome.com/5fe430ccd5.js" crossorigin="anonymous"></script>
388
389</html>
390
391
392
393

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.