PageSourceSearch

http://web-architect.org/contact.html

html web-architect.org collected 2026-10-07 01:48:26 UTC 60,713 bytes, 1,424 lines download raw bytes

1<!DOCTYPE html>
2<!--[if lt IE 8]>     <html lang="en" class="no-js lt-ie10 lt-ie9 lt-ie8"><![endif]--><!--[if IE 8]>        <html lang="en" class="no-js lt-ie10 lt-ie9">       <![endif]--><!--[if IE 9]>        <html lang="en" class="no-js lt-ie10">              <![endif]--><!--[if gt IE 9]><!--><html class="no-js" lang="en"><!--<![endif]--><head>
3        <meta charset="utf-8"/>
4        <meta content="width=device-width, initial-scale=1" name="viewport"/>
5        <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
6        <title>Contact Information | Chief Architect</title>
7        <meta content="Contact information for Chief Architect Software. Phone, e-mail, social media, and more." name="description"/>
8        <link href="contact.html" rel="canonical"/>
9        <link href="png/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180"/>
10<link href="png/favicon-32x32.png" rel="icon" sizes="32x32" type="image/png"/>
11<link href="png/android-chrome-192x192.png" rel="icon" sizes="192x192" type="image/png"/>
12<link href="png/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png"/>
13<link href="site.html" rel="manifest"/>
14<link color="#9fc43e" href="svg/safari-pinned-tab.svg" rel="mask-icon"/>
15<meta content="#ffffff" name="theme-color"/>
16<link href="css/root.css" rel="stylesheet"/>
17<style type="text/css">
18    html.js .lazy {
19        background-image: none;
20    }
21    .site-header {
22        border-bottom: 2px solid #9fc43e;
23    }
24    .site-header .site-search {
25        width: 425px!important;
26        display: flex!important;
27    }
28    .site-header .site-search-filter {
29        width: 140px;
30        border-radius: 3px 0 0 3px;
31        background-color: #f5f5f5;
32        margin-right: -1px;
33    }
34    .site-header .site-search-term {
35        flex: 1;
36        border-radius: 0 3px 3px 0!important;
37        min-width: 0;
38    }
39    @media screen and (max-width: 47.9375em) {
40        .site-header .site-search {
41            width: auto!important; /* IE doesn't understand width: initial */
42            width: initial!important;
43        }
44    }
45    .site-header .site-quick-links>li:first-of-type {
46        margin-left: 15px!important;
47    }
48    .site-header .site-quick-links a {
49        border-bottom: 2px solid transparent;
50    }
51    .site-header .site-quick-links a:hover {
52        border-bottom-color: #6e8a29;
53    }
54    #top-menu {
55        background-color: transparent;
56    }
57    .row-wide {
58        max-width: 1600px;
59    }
60    .wide {
61        max-width: 1270px;
62    }
63    .text-red {
64        color: #ff470f;
65        font-weight: bold;
66    }
67    .u-strike {
68        text-decoration: line-through;
69    }
70    .dark-link {
71        color: #000;
72        text-decoration: none;
73        border-bottom: 1px solid #000;
74    }
75    .dark-link:hover,
76    .dark-link:focus {
77        border-bottom: 1px solid #6e6e6e;
78        color: #6e6e6e;
79    }
80    .gray-link {
81        border-bottom: 1px solid #545454;
82        color: #545454;
83    }
84    .gray-link:hover,
85    .gray-link:focus {
86        border-bottom: 2px solid #000;
87        color: #000;
88        font-weight: 500;
89    }
90    .social-icon-container {
91        float: none;
92        margin: 0 auto;
93        max-width: 320px;
94    }
95    .social-icon-container .social-icon {
96        border-bottom: none;
97        font-size: 1.25rem;
98        padding: 0;
99        margin: 0;
100        color: inherit;
101    }
102    .social-icon:hover,
103    .social-icon:focus {
104        border-bottom: none;
105    }
106    .embed-container {
107        position: relative;
108        padding-bottom: 56.25%;
109        height: 0;
110        overflow: hidden;
111        max-width: 100%;
112    }
113    .embed-container iframe,
114    .embed-container object,
115    .embed-container embed {
116        position: absolute;
117        top: 0;
118        left: 0;
119        width: 100%;
120        height: 100%;
121    }
122    .no-bullet-list {
123        list-style: none;
124    }
125    .spacer-10 {
126        height: 10px;
127    }
128    .spacer-15 {
129        height: 15px;
130    }
131    .spacer-20 {
132        height: 20px;
133    }
134    .spacer-30 {
135        height: 30px;
136    }
137    .spacer-35 {
138        height: 35px;
139    }
140    .spacer-50 {
141        height: 50px;
142    }
143    .spacer-100 {
144        height: 100px;
145    }
146    .spacer-150 {
147        height: 150px;
148    }
149    .spacer-164 {
150        height: 164px;
151    }
152    .spacer-205 {
153        height: 205px;
154    }
155    div[class^="spacer"] {
156        line-height: 0;
157        margin: 0;
158        padding: 0;
159    }
160    @media only screen and (max-width: 64em) {
161        .wide {
162            padding: 0 80px;
163        }
164    }
165    @media only screen and (max-width: 40em) {
166        .wide {
167            padding: inherit;
168        }
169    }
170</style>
171        <style>
172            /*
173             * General
174             */
175            header {
176                border: none !important;
177            }
178            .no-margin {
179                margin: 0;
180            }
181            .extra-padding {
182                padding: 1.5em 0;
183            }
184            .extra-padding h1,
185            .extra-padding h3 {
186                margin-top: 0;
187            }
188            .indented {
189                margin-left: 1rem;
190            }
191            /*
192             * Contact information
193             */
194            .company-name {
195                color: #fff;
196                line-height: 1.4;
197                font-size: 1.6875rem;
198                font-weight: 300;
199            }
200            abbr {
201                text-decoration: none;
202                cursor: auto;
203            }
204            abbr[title] {
205                border-bottom: none !important;
206            }
207            #chief-clock {
208                display: none; /* will toggle to inline-block */
209                outline: 1px solid #939393;
210                padding: 0.5rem 1rem;
211                background-color: rgb(255 255 255 / .16);
212                text-align: center;
213            }
214            /*
215             * Social media links
216             */
217            .social-links {
218                font-size: 27px;
219                font-size: 1.6875rem;
220            }
221            .social-links a {
222                color: #6e6e6e;
223            }
224            .social-links a:hover,
225            .social-links a:focus {
226                border-bottom: none;
227            }
228            .icon-chief-architect + span,
229            .icon-chief-blog + span,
230            .icon-youtube + span,
231            .icon-houzz + span,
232            .icon-facebook + span,
233            .icon-instagram + span,
234            .icon-twitter + span,
235            .icon-linkedin + span,
236            .icon-pinterest + span {
237                transition: color 0.1s ease-out;
238            }
239            a:hover > .icon-chief-architect,
240            a:hover > .icon-chief-architect + span {
241                color: #9fc43e !important;
242            }
243            a:hover > .icon-chief-blog,
244            a:hover > .icon-chief-blog + span {
245                color: #9fc43e !important;
246            }
247            a:hover > .icon-youtube,
248            a:hover > .icon-youtube + span {
249                color: #cd201f !important;
250            }
251            a:hover > .icon-houzz,
252            a:hover > .icon-houzz + span {
253                color: #4dbc15 !important;
254            }
255            a:hover > .icon-facebook,
256            a:hover > .icon-facebook + span {
257                color: #3b5998 !important;
258            }
259            a:hover > .icon-instagram,
260            a:hover > .icon-instagram + span {
261                color: #e4405f !important;
262            }
263            a:hover > .icon-twitter,
264            a:hover > .icon-twitter + span {
265                color: #1da1f2 !important;
266            }
267            a:hover > .icon-linkedin,
268            a:hover > .icon-linkedin + span {
269                color: #0077b5 !important;
270            }
271            a:hover > .icon-pinterest,
272            a:hover > .icon-pinterest + span {
273                color: #bd081c !important;
274            }
275            @media only screen and (max-width: 40em) {
276                .indented {
277                    margin-left: 0;
278                }
279                .social-links {
280                    font-size: 1.25rem;
281                }
282            }
283        </style>
284        
285<style>
286    a[href^="tel:"] {
287        color: inherit;
288        text-decoration: none;
289        border-bottom: none;
290        cursor: default;
291        white-space: nowrap;
292    }
293</style>
294        
294<script src="js/modernizr.js"></script>
vendor: 1 bytes, line 294
294
295<script id="website-json-ld" type="application/ld+json">
296{
297    "@context":"http://schema.org",
298    "@type":"WebSite",
299    "name":"Chief Architect Software",
300    "alternateName":"Chief Architect Home Design Software",
301    "url":"https://www.chiefarchitect.com",
302    "potentialAction": {
303        "@type": "SearchAction",
304        "target": "https://www.chiefarchitect.com/search/?q={search}",
305        "query-input": "required name=search"
306    }
307}
308</script>
vendor: 1 bytes, line 308
308
309<script id="social-json-ld" type="application/ld+json">
310{
311    "@context":"http://schema.org",
312    "@type":"Organization",
313    "name":"Chief Architect Software",
314    "url":"https://www.chiefarchitect.com",
315    "sameAs":[
316        "https://chieftalk.chiefarchitect.com/",
317        "https://www.facebook.com/ChiefArchitect",
318        "https://www.youtube.com/user/ChiefArchitectInc",
319        "https://www.instagram.com/chiefarchitect/",
320        "https://twitter.com/chiefsoftware",
321        "https://www.linkedin.com/company/chief-architect-inc-",
322        "https://www.houzz.com/pro/chiefarchitect/chief-architect-software"
323    ],
324    "contactPoint": [
325        {
326            "name": "sales_us",
327            "@type": "ContactPoint",
328            "telephone": "+1-208-292-3400",
329            "faxNumber": "+1-208-292-3420",
330            "contactType": ["sales", "customer service"]
331        },
332        {
333            "name":"tech",
334            "@type": "ContactPoint",
335            "telephone": "+1-208-292-3399",
336            "contactType": "technical support"
337        },
338        {
339            "name":"tech_priority",
340            "@type": "ContactPoint",
341            "telephone": "+1-208-665-3674",
342            "contactType": "technical support"
343        },
344        {
345            "name":"tech_au",
346            "@type": "ContactPoint",
347            "telephone": "+61-02-8006-6851",
348            "contactType": "technical support",
349            "areaServed": "AU"
350        },
351        {
352            "name":"tech_uk",
353            "@type": "ContactPoint",
354            "telephone": "+44-020-3286-5716",
355            "contactType": "technical support",
356            "areaServed": "UK"
357        }
358    ]
359}
360</script>
360
361    </head>
362    <body>
363                <header class="site-header">
364            <div class="standard-container">
365<a class="site-logo" href="index.html" tabindex="1">
366    <img alt="Chief Architect" src="png/chief-architect-logo.png"/>
367    <h6>Architectural Home Design Software</h6>
368</a>
369<script>
370    // Submit the form if a search term exists
371    function submitIfSearchTerm() {
372        var searchTerm = document.getElementsByClassName('site-search-term') ? document.getElementsByClassName('site-search-term')[0] : null;
373
374        if (searchTerm && searchTerm.value) {
375            var searchSubmit = document.getElementsByClassName('site-search-submit') ? document.getElementsByClassName('site-search-submit')[0] : null;
376
377            if (searchSubmit) {
378                searchSubmit.click();
379            }
380        }
381    }
382</script>
382
383<form action="https://www.chiefarchitect.com/search/" class="site-search" method="get">
384    <select class="site-search-filter" name="default_tab" onchange="submitIfSearchTerm();">
385        <option selected="" value="all">All Content</option>
386        <option value="support">Knowledge Base</option>
387        <option value="video">Videos</option>
388        <option value="blog">Blog</option>
389        <option value="forum">ChiefTalk Forum</option>
390    </select>
391    <input class="site-search-term" name="q" placeholder="Search…" required="" type="search"/>
392    <input class="site-search-submit" type="submit" value=""/>
393</form>
394<ul class="site-quick-links u-imageCenter" style="display: block;">
395    <li><a href="https://accounts.chiefarchitect.com/">My Account</a></li>
396    <li><a href="contact.html">Contact Us</a></li>
397    <li><a href="https://shopping.chiefarchitect.com/checkout/cart/">Cart</a></li>
398</ul>
399
400        <nav class="simple-menu top-bar hide-for-print" data-topbar="" id="top-menu">
401            <ul class="title-area">
402                <li class="name"></li>
403                <li class="toggle-topbar menu-icon"><a href="#"><span>Menu</span></a></li>
404            </ul>
405            <section class="top-bar-section">
406                <ul>
407                    <li class="has-dropdown">
408                        <a>PRODUCTS</a>
409                        <ul class="dropdown">
410                            <li><a href="index-2.html">Chief Architect Premier</a></li>
411                            <li><a href="trial.html">Trial Download</a></li>
412                            <li><a href="upgrade.html">Upgrades</a></li>
413                            <li><a href="index-3.html">Add-On Products</a></li>
414                            <li><a href="index-4.html">3D Viewer App</a></li>
415                            <li><a href="sysreq.html">System Requirements</a></li>
416                        </ul>
417                    </li>
418                    <li class="has-dropdown">
419                        <a>PROFESSION</a>
420                        <ul class="dropdown">
421                            <li><a href="index-5.html">Architects &amp; Builders</a></li>
422                            <li><a href="index-6.html">Remodelers</a></li>
423                            <li><a href="index-7.html">Interior Designers</a></li>
424                            <li><a href="index-8.html">Kitchen &amp; Bath Designers</a></li>
425                            <li><a href="index-9.html">Academic</a></li>
426                            <li><a href="index-10.html">Home Enthusiast (DIY)</a></li>
427                        </ul>
428                    </li>
429                    <li class="has-dropdown">
430                        <a>USER CENTER</a>
431                        <ul class="dropdown">
432                            <li><a href="index-11.html">Getting Started Resources</a></li>
433                            <li><a href="index-12.html">Events &amp; Training</a></li>
434                            <li><a href="index-13.html">Training Services</a></li>
435                            <li><a href="index-14.html">Training Videos</a></li>
436                            <li><a href="index-15.html">Catalog Downloads</a></li>
437                            <li><a href="samples.html">Samples Gallery</a></li>
438                            <li><a href="index-16.html" target="_blank">ChiefBlog</a></li>
439                            <li><a href="https://chieftalk.chiefarchitect.com/" rel="me" target="_blank">ChiefTalk Professional Forum</a></li>
440                        </ul>
441                    </li>
442                    <li class="has-dropdown">
443                        <a>SUPPORT</a>
444                        <ul class="dropdown">
445                            <li><a href="index-17.html">Support Resources</a></li>
446                            <li><a href="documentation.html">Documentation</a></li>
447                            <li><a href="database.html">Knowledge Base</a></li>
448                            <li><a href="index-14.html">Training Videos</a></li>
449                            <li><a href="updates.html">Program Updates</a></li>
450                        </ul>
451                    </li>
452                </ul>
453            </section>
454        </nav>
455            </div>
456        </header>
457        <noscript>
458    <style>
459        /*
460        no-js elements
461        */
462        .msg-need-js a {
463            color: black;
464            border-bottom: 2px solid black;
465        }
466        .msg-need-js a:hover {
467            color: black;
468            border-bottom: 2px solid black;
469        }
470        .msg-need-js p {
471            margin-bottom: 0;
472        }
473        .no-js .panorama-slider,
474        .no-js #vrview,
475        .no-js .lazy,
476        .no-js .view-pano-file-container,
477        .no-js .lazy,
478        .no-js .news-section,
479        .no-js .viewer-body {
480            display: none;
481        }
482    </style>
483    <br/>
484    <div class="row">
485        <div class="small-12 columns text-center">
486            <div aria-hidden="false" class="alert-box secondary">
487                <p>
488                    This site requires JavaScript to be fully operational.
489                </p>
490                <p>
491                    <a href="index-18.html" target="_blank">More Information</a>
492                </p>
493            </div>
494        </div>
495    </div>
496</noscript>
497        <div class="u-primaryBG">
498            <div class="row">
499                <div class="small-12 columns">
500                    <h1 class="u-textWhite">Contact Chief Architect</h1>
501                </div>
502            </div>
503            <div class="row">
504                <div class="small-12 columns">
505                    <p translate="no" typeof="schema:PostalAddress">
506                        <span class="company-name" property="schema:name">Chief Architect Software</span>
507                        <br/>
508                        <span property="schema:streetAddress">6500 N Mineral Dr</span>
509                        <br/>
510                        <span property="schema:addressLocality">Coeur d'Alene</span>, <abbr property="schema:addressRegion" title="Idaho">ID</abbr> <span property="schema:postalCode">83815</span>
511                        <br/>
512                        Business Hours: <span content="Mo,Tu,We,Th,Fr 07:00-16:00" itemprop="openingHours" title="Monday through Friday, 07:00 to 16:00 US Pacific Time (PST/UTC-8 or PDT/UTC-7)">M–F <time class="nowrap" datetime="07:00">7:00 AM</time> to <time class="nowrap" datetime="16:00">4:00 PM</time> Pacific</span>
513                    </p>
514                    <p id="chief-clock"><span class="closed-notice"></span><span class="time-prefix">It is currently</span> <time class="hq-time"></time></p>
515                </div>
516            </div>
517        </div>
518        <div class="extra-padding">
519            <div class="row">
520                <div class="small-12 columns">
521                    <h3>Phone</h3>
522                </div>
523            </div>
524            <div class="row">
525                <div class="medium-6 columns">
526                    <p class="no-margin indented">
527                        Sales / Customer Service / Training:
528                    </p>
529                </div>
530                <div class="medium-6 columns">
531                    <p class="no-margin">
532                        <a href="tel:+1-208-292-3400">208-292-3400</a>                    </p>
533                </div>
534            </div>
535            <br class="show-for-small-only"/>
536            <div class="row">
537                <div class="medium-6 columns">
538                    <p class="no-margin indented">
539                        Technical Support:
540                    </p>
541                </div>
542                <div class="medium-6 columns">
543                    <p class="no-margin">
544                        <a href="index-17.html#contact">Contact Support</a>
545                    </p>
546                </div>
547            </div>
548            <br class="show-for-small-only"/>
549            <div class="row">
550                <div class="medium-6 columns">
551                    <p class="no-margin indented">
552                        Fax:
553                    </p>
554                </div>
555                <div class="medium-6 columns">
556                    <p class="no-margin">
557                        208-292-3420                    </p>
558                </div>
559            </div>
560        </div>
561        <div class="u-grayBG extra-padding">
562            <div class="row">
563                <div class="small-12 columns">
564                    <h3>E-mail</h3>
565                </div>
566            </div>
567            <div class="row">
568                <div class="medium-6 columns">
569                    <p class="no-margin indented">
570                        Sales:
571                    </p>
572                </div>
573                <div class="medium-6 columns">
574                    <p class="no-margin">
575                        <a href="mailto:[email protected]">[email protected]</a>                    </p>
576                </div>
577            </div>
578            <br class="show-for-small-only"/>
579            <div class="row">
580                <div class="medium-6 columns">
581                    <p class="no-margin indented">
582                        Customer Service:
583                    </p>
584                </div>
585                <div class="medium-6 columns">
586                    <p class="no-margin">
587                        <a href="mailto:[email protected]">[email protected]</a>                    </p>
588                </div>
589            </div>
590            <br class="show-for-small-only"/>
591            <div class="row">
592                <div class="medium-6 columns">
593                    <p class="no-margin indented">
594                        Training:
595                    </p>
596                </div>
597                <div class="medium-6 columns">
598                    <p class="no-margin">
599                        <a href="mailto:[email protected]">[email protected]</a>                    </p>
600                </div>
601            </div>
602            <br class="show-for-small-only"/>
603            <div class="row">
604                <div class="medium-6 columns">
605                    <p class="no-margin indented">
606                        Technical Support:
607                    </p>
608                </div>
609                <div class="medium-6 columns">
610                    <p class="no-margin">
611                        <a href="index-17.html#contact">Contact Support</a>
612                    </p>
613                </div>
614            </div>
615            <br class="show-for-small-only"/>
616            <div class="row">
617                <div class="medium-6 columns">
618                    <p class="no-margin indented">
619                        Suggestions &amp; Feature Requests:
620                    </p>
621                </div>
622                <div class="medium-6 columns">
623                    <p class="no-margin">
624                        <a href="mailto:[email protected]">[email protected]</a>                    </p>
625                </div>
626            </div>
627            <br class="show-for-small-only"/>
628            <div class="row">
629                <div class="medium-6 columns">
630                    <p class="no-margin indented">
631                        General Information:
632                    </p>
633                </div>
634                <div class="medium-6 columns">
635                    <p class="no-margin">
636                        <a href="mailto:[email protected]">[email protected]</a>                    </p>
637                </div>
638            </div>
639        </div>
640        <div class="row extra-padding">
641            <div class="small-12 columns">
642                <h3>E-mail Newsletter Subscriptions</h3>
643                <p class="indented">
644                    <a href="subscription706f.html">Subscribe</a>
645                </p>
646                <p class="indented">
647                    <a href="subscription44ac.html">Unsubscribe</a>
648                </p>
649                <p class="no-margin indented">
650                    <a href="subscription258f.html">Change E-mail Address</a>
651                </p>
652            </div>
653        </div>
654        <div class="extra-padding">
655            <div class="row" id="social">
656                <div class="small-12 columns">
657                    <h3>Social Media — Connect <span class="nowrap">With Us</span></h3>
658                </div>
659            </div>
660            <div class="row social-links">
661                <div class="medium-4 columns">
662                    <a class="indented" href="https://chieftalk.chiefarchitect.com/" rel="me" target="_blank" title="ChiefTalk Community Forum">
663                        <span class="icon-chief-architect"></span> <span>ChiefTalk</span>
664                    </a>
665                    <br/>
666                    <a class="indented" href="index-16.html" target="_blank" title="Chief Architect Blog">
667                        <span class="icon-chief-blog"></span> <span>ChiefBlog</span>
668                    </a>
669                    <br/>
670                    <a class="indented" href="https://www.facebook.com/ChiefArchitect" rel="me noopener" target="_blank" title="Facebook">
671                        <span class="icon-facebook"></span> <span>Facebook</span>
672                    </a>
673                </div>
674                <div class="medium-4 columns">
675                    <a class="indented" href="https://www.youtube.com/user/ChiefArchitectInc" rel="me noopener" target="_blank" title="YouTube">
676                        <span class="icon-youtube"></span> <span>YouTube</span>
677                    </a>
678                    <br/>
679                    <a class="indented" href="https://www.instagram.com/chiefarchitect/" rel="me noopener" target="_blank" title="Instagram">
680                        <span class="icon-instagram"></span> <span>Instagram</span>
681                    </a>
682                    <br/>
683                    <a class="indented" href="https://www.houzz.com/pro/chiefarchitect/chief-architect-software" rel="me noopener" target="_blank" title="Houzz">
684                        <span class="icon-houzz"></span> <span>Houzz</span>
685                    </a>
686                </div>
687                <div class="medium-4 columns">
688                    <a class="indented" href="https://www.pinterest.com/chiefarchitect/" rel="me noopener" target="_blank" title="Pinterest">
689                        <span class="icon-pinterest"></span> <span>Pinterest</span>
690                    </a>
691                    <br/>
692                    <a class="indented" href="https://twitter.com/chiefsoftware" rel="me noopener" target="_blank" title="Twitter">
693                        <span class="icon-twitter"></span> <span>Twitter</span>
694                    </a>
695                    <br/>
696                    <a class="indented" href="https://www.linkedin.com/company/chief-architect-inc-" rel="me noopener" target="_blank" title="LinkedIn">
697                        <span class="icon-linkedin"></span> <span>Linkedin</span>
698                    </a>
699                </div>
700            </div>
701        </div>
702        <div class="extra-padding">
703            <div class="row" id="ambassadors">
704                <div class="small-12 columns">
705                    <h3>Chief Architect Brand Ambassador</h3>
706                    <p>Chief Architect offers a Brand Ambassador program for users that are passionate about our brand and the design industry. Send an email to <a href="mailto:[email protected]">[email protected]</a> to request more information.</p>
707                </div>
708            </div>
709        </div>
710        
711        <footer>
712            <div class="standard-container">
713                    <ul class="accordion small-block-grid-1 medium-block-grid-3 large-block-grid-5 site-footer-nav hide-for-print" data-accordion="">
714        <li class="accordion-navigation">
715            <a href="#panel1"><h5 class="site-footer-nav-column-head">Products</h5></a>
716            <div class="content" id="panel1">
717                <ul>
718                    <li><a href="index-2.html">Chief Architect Premier</a></li>
719                    <li><a href="trial.html">Trial Download</a></li>
720                    <li><a href="index-4.html">3D Viewer App</a></li>
721                    <li><a href="index-20.html">Detailed Feature List</a></li>
722                    <li><a href="index-21.html">Support &amp; Software Assurance</a></li>
723                    <li><a href="upgrade.html">Upgrades</a></li>
724                    <li><a href="index-3.html">Add-On Products</a></li>
725                    <li><a href="index-22.html">Special Offers</a></li>
726                    <li><a href="sysreq.html">System Requirements</a></li>
727                    <li><a href="index-23.html">Subscription FAQ</a></li>
728                    <li><a href="guarantee.html">Satisfaction Guarantee</a></li>
729                </ul>
730            </div>
731        </li>
732        <li class="accordion-navigation">
733            <a href="#panel2"><h5 class="site-footer-nav-column-head">Education Center</h5></a>
734            <div class="content" id="panel2">
735                <ul>
736                    <li><a href="index-14.html">Training Videos</a></li>
737                    <li><a href="index-12.html">Webinars &amp; Training Seminars</a></li>
738                    <li><a href="database.html">Knowledge Base</a></li>
739                    <li><a href="index-13.html#personal">Personal Training</a></li>
740                    <li><a href="index-13.html#custom">Custom Training</a></li>
741                    <li><a href="chief-architect-certification.html">Certification</a></li>
742                </ul>
743            </div>
744        </li>
745        <li class="accordion-navigation">
746            <a href="#panel3"><h5 class="site-footer-nav-column-head">User Center</h5></a>
747            <div class="content" id="panel3">
748                <ul>
749                    <li><a href="index-11.html">Getting Started Resources</a></li>
750                    <li><a href="https://accounts.chiefarchitect.com/">My Account</a></li>
751                    <li><a href="index-15.html">Catalog Downloads</a></li>
752                    <li><a href="samples.html">Samples Gallery</a></li>
753                    <li><a href="https://chieftalk.chiefarchitect.com/" rel="me" target="_blank">ChiefTalk User Forum</a></li>
754                    <li><a href="index-24.html">Customer Testimonials</a></li>
755                    <li><a href="index-25.html">NKBA Software Programs</a></li>
756                </ul>
757            </div>
758        </li>
759        <li class="accordion-navigation">
760            <a href="#panel4"><h5 class="site-footer-nav-column-head">Support</h5></a>
761            <div class="content" id="panel4">
762                <ul>
763                    <li><a href="index-17.html">Support Resources</a></li>
764                    <li><a href="documentation.html">Documentation</a></li>
765                    <li><a href="database.html">Knowledge Base</a></li>
766                    <li><a href="updates.html">Program Updates</a></li>
767                    <li><a href="https://support.chiefarchitect.com/">Technical Support Center</a></li>
768                    <li><a href="glossary.html">Glossary</a></li>
769                </ul>
770            </div>
771        </li>
772        <li class="accordion-navigation">
773            <a href="#panel5"><h5 class="site-footer-nav-column-head">Company Info</h5></a>
774            <div class="content" id="panel5">
775                <ul>
776                    <li><a href="index-12.html">Events &amp; Training</a></li>
777                    <li><a href="contact.html">Contact Us</a></li>
778                    <li><a href="careers.html">Careers</a></li>
779                    <li><a href="aboutchief.html">About Chief Architect</a></li>
780                    <li><a href="catalog-partner-program.html">Catalog Partner Program</a></li>
781                    <li><a href="index-26.html">Marketing Graphics</a></li>
782                    <li><a href="index-27.html">Newsletter</a></li>
783                    <li><a href="index-16.html" target="_blank">ChiefBlog</a></li>
784                    <li><a href="contact.html#social">Social Media</a></li>
785                </ul>
786            </div>
787        </li>
788    </ul>
789            </div>
790            <div class="standard-container">
791                    <div class="row">
792        <div class="small-12 medium-6 large-4 columns text-center social-icon-container">
793            <ul class="small-block-grid-7">
794                <li class="social-icon"><a class="social-icon icon-chief-architect" href="https://chieftalk.chiefarchitect.com/" rel="me" target="_blank" title="ChiefTalk User Forum"></a></li>
795                <li class="social-icon"><a class="social-icon icon-chief-blog" href="index-16.html" target="_blank" title="Chief Architect Blog"></a></li>
796                <li class="social-icon"><a class="social-icon icon-facebook" href="https://www.facebook.com/ChiefArchitect" rel="me noopener" target="_blank" title="Facebook"></a></li>
797                <li class="social-icon"><a class="social-icon icon-youtube" href="https://www.youtube.com/user/ChiefArchitectInc" rel="me noopener" target="_blank" title="YouTube"></a></li>
798                <li class="social-icon"><a class="social-icon icon-instagram" href="https://www.instagram.com/chiefarchitect/" rel="me noopener" target="_blank" title="Instagram"></a></li>
799                <li class="social-icon"><a class="social-icon icon-houzz" href="https://www.houzz.com/pro/chiefarchitect/" rel="me noopener" target="_blank" title="Houzz"></a></li>
800                <li class="social-icon"><a class="social-icon icon-pinterest" href="https://www.pinterest.com/chiefarchitect/" rel="me noopener" target="_blank" title="Pinterest"></a></li>
801            </ul>
802        </div>
803    </div>
804    <div id="copyright">
805        <ul class="nowrap-parent">
806            <li><a href="tel:+1-208-292-3400" style="color: inherit;">208-292-3400</a></li>
807            <li>© 2000–2025 Chief Architect, Inc.</li>
808            <li><a href="terms.html" rel="terms-of-service">Terms of Use</a></li>
809            <li><a href="privacy.html" rel="privacy-policy">Privacy Policy</a></li>
810        </ul>
811    </div>
812            </div>
813        </footer>
814                <!--[if gte IE 9]><!-->
815        
815<script src="js/jquery.min.js"></script>
815
816        
816<script>window.jQuery || document.write('
816<script src="js/jquery.js"><\/script>')</script>
816
817        <!--<![endif]-->
818        <!--[if lt IE 9]>
819        
819<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
819
820        
820<script>window.jQuery || document.write('
820<script src="https://cdn.chiefarchitect.com/themes/chiefarchitect/1.2.4/js/jquery-ltie9.js"><\/script>')</script>
820
821        <![endif]-->
822
823        
823<script>
824            blockToggle = function(el) {
825                if (el.attr('style') == 'display: block;') {
826                    el.attr('style', '');
827                } else {
828                    el.attr('style', 'display: block;');
829                }
830            }
831            $(".site-search-toggle, .toggle-search").click(function(event) {
832                event.preventDefault();
833                // $("#site-search").toggle(); doesn't work because it leaves the
834                // element with inline style "display:none;" which overrides
835                // display rules for larger @media if the viewport width grows
836                blockToggle($("#site-search"));
837            });
838            $(".site-menu-toggle").click(function(event) {
839                event.preventDefault();
840                blockToggle($("#site-menu"));
841            });
842        </script>
842
843
844        <!--[if gte IE 9]><!-->
845        
845<script src="js/root.js"></script>
845
846        <!--<![endif]-->
847        <!--[if lt IE 9]>
848        
848<script src="https://cdn.chiefarchitect.com/themes/chiefarchitect/1.2.4/js/root-ltie9.js"></script>
848
849        <![endif]-->
850        <!--BEGIN GOOGLE ANALYTICS-->
851<!-- Google tag (gtag.js) -->
852
853
854<!--END GOOGLE ANALYTICS-->
855        
855<script>
856            $(function() {
857                FastClick.attach(document.body);
858            });
859            $(document).foundation();
860            $('a.openWindow').click(function(event) {
861                window.open($(this).attr('href'), '_blank', 'width=' + $(this).attr('width') + ', height=' + $(this).attr('height'));
862                return event.preventDefault();
863            });
864            $(window).load(function(e) {
865                $(".lazy:below-the-fold").lazyload({threshold:500});
866				$(".lazy").lazyload({
867					effect : "fadeIn"
868				});
869            });
870
871            // Disable form submit buttons for 3 seconds to prevent double submits.
872            // We let the event bubble to the document instead of attaching a
873            // listener to every form. This is more lightweight and plays nicely
874            // with form validators and other submit listeners.
875            document.addEventListener('submit', function (event) {
876                // Search for submit buttons in the form's elements property
877                // (instead of querying its subtree) in order to include elements
878                // that use the `form` attribute.
879                const submits = Array.from(event.target.elements).filter(function (el) {
880                    const selectors = [
881                        'input[type="submit"]',
882                        'button[type="submit"]',
883                        // 'input[type="image"]', // not included in elements property
884
885                        // If a button has no type attribute, its type is "submit"
886                        // per the "missing value default" in the spec. It is valid.
887                        'button:not([type])',
888
889                        // If a button's type attribute is present but its value is
890                        // missing, empty, or invalid, its type is "submit" per the
891                        // "invalid value default" in the spec. Even though such
892                        // buttons are technically submit buttons, their types are
893                        // invalid. To include them would require enumerating valid
894                        // values, which would require maintenance if new types are
895                        // added. The selectors would look something like this:
896                        // 'button[type=""]', // invalid
897                        // 'button:not([type="reset"]):not([type="button"])', // invalid or "submit"
898                    ];
899                    return el.matches(selectors.join(', '));
900                });
901
902                // Include the submitter if it is an input or button element.
903                // This will catch submit buttons that were not gathered above,
904                // such as input[type="image"] or buttons with invalid types.
905                // Elements might get included twice, but that is okay.
906                if (event.submitter instanceof HTMLInputElement || event.submitter instanceof HTMLButtonElement) {
907                    submits.push(event.submitter);
908                }
909
910                submits.forEach(function (submit) {
911                    if (!submit.disabled) {
912                        submit.disabled = true;
913                        setTimeout(function () {submit.disabled = false;}, 3000);
914                    }
915                });
916            });
917
918            // Prevent double clicks on elements with the "dbl-click-guard" class
919            document.addEventListener('DOMContentLoaded', function(event) {
920                Array.from(document.getElementsByClassName('dbl-click-guard')).forEach(function (el) {
921                    el.addEventListener('click', function (event) {
922                        if ('dblClickTimeout' in el.dataset) {
923                            event.preventDefault();
924                        } else {
925                            el.dataset.dblClickTimeout = '1';
926                            setTimeout(function () {
927                                delete el.dataset.dblClickTimeout;
928                            }, 1000); // block additional clicks for 1 second
929                        }
930                    });
931                });
932            });
933        </script>
933        
934<script>
935'use strict';
936const chiefClock = (function () {
937    try {
938        const chiefLocale = Intl.Locale ? new Intl.Locale('en-US') : 'en-US';
939        const chiefTimeZone = 'America/Los_Angeles';
940        const defaultTimeFormatOptions = {
941            timeZone: chiefTimeZone,
942            hour: 'numeric',
943            minute: '2-digit',
944            timeZoneName: 'short',
945        };
946        const defaultDateFormatOptions = {
947            timeZone: chiefTimeZone,
948            weekday: 'long',
949            month: 'long',
950            day: 'numeric',
951            year: 'numeric',
952        };
953        const defaultDateTimeFormatter = new Intl.DateTimeFormat(chiefLocale, Object.assign(
954            {second: '2-digit', fractionalSecondDigits: 3},
955            defaultDateFormatOptions, defaultTimeFormatOptions
956        ));
957        const serverTime = new Date('2025-08-25T23:33:07-07:00');
958        const deviceTime = new Date();
959
960        // Test whether our locale and formatting options produce the result we
961        // expect. This depends on the browser locale database and support for
962        // the formatting options we are using.
963        //
964        // The formatted string we are checking should resemble this:
965        // Wednesday, July 24, 2024 at 7:45:01.000 AM PDT
966        //
967        // Comparing the browser's format() result to a hardcoded constant
968        // usually is not advised. Among the potential output variations are
969        // white space differences. For example, an implementation could use
970        // non-breaking spaces. We do a regex replacement on the white space
971        // character class to minimize that risk.
972        {
973            const expected = 'Monday, August 25, 2025 at 11:33:07.000 PM PDT';
974            const jsResult = defaultDateTimeFormatter.format(serverTime).replace(/\s/g,' ');
975            if (jsResult !== expected) {
976                throw new Error(`Unexpected date-time format:\n${jsResult}\nExpected:\n${expected}`);
977            }
978        }
979
980        // Test the variance between the server time encoded in this document
981        // and the device time (comparing UTC timestamps). This can fail for
982        // several reasons:
983        //   - inaccurate device clock
984        //   - very slow page load
985        //   - document was cached
986        //   - inaccurate server clock
987        // If the variance is high, without doing something NTP-like we are
988        // unable to determine whether the device clock is reliable. But if the
989        // variance is reasonably low, we assume the device clock is reliable.
990        let referenceTime = serverTime;
991        let referenceOffset = serverTime - deviceTime;
992        const maxVarianceMs = 120000; // 2 minutes
993        const isReliable = Math.abs(referenceOffset) <= maxVarianceMs;
994
995        if (!isReliable) {
996            console.warn(
997                'server and device clock variance exceeds %f\xa0sec: %f\xa0sec',
998                maxVarianceMs/1000, referenceOffset/1000
999            );
1000        }
1001
1002        if (isReliable && referenceOffset < 0) {
1003            // Use device clock without offset if it satisfied our reliability
1004            // check and it is not behind the server time. The device clock is
1005            // preferred because of unknown latency with the server time.
1006            referenceTime = deviceTime;
1007            referenceOffset = 0;
1008        }
1009
1010
1011        // Get the current UTC timestamp integer, synced to our reference clock
1012        function now() {
1013            return Date.now() + referenceOffset;
1014        }
1015
1016        // Refresh the clock time and its indicators
1017        function tick() {
1018            referenceTime.setTime(now());
1019            indicators.refresh();
1020        }
1021
1022        // Wind the clock so it ticks again at the right time
1023        function wind() {
1024            // Instead of setInterval, we use setTimeout with an "oscillator" to
1025            // continually adjust for delays, preventing clock drift
1026            wind.id = setTimeout(function () {
1027                tick();
1028                wind();
1029            }, oscillator());
1030        }
1031
1032        // Calculate milliseconds until the start of the next oscillation
1033        function oscillator() {
1034            return oscillator.rate - (referenceTime.getTime() % oscillator.rate)
1035        }
1036        oscillator.rate = 60000; // 1 minute default
1037
1038        const indicators = [];
1039        indicators.refresh = () => indicators.forEach(indicator => indicator(referenceTime));
1040
1041        if (document.readyState === 'loading') {
1042            document.addEventListener('DOMContentLoaded', function () {
1043                tick();
1044                wind();
1045            });
1046        } else {
1047            indicators.refresh();
1048            wind();
1049        }
1050
1051        console.info(
1052            'Chief clock initialized with %f\xa0sec offset from device clock:\n%s',
1053            referenceOffset/1000, defaultDateTimeFormatter.format(referenceTime)
1054        );
1055
1056        return {
1057            now: now,
1058            isReliable: isReliable,
1059            locale: chiefLocale,
1060            timeZone: chiefTimeZone,
1061
1062            get refreshRate() {
1063                return oscillator.rate;
1064            },
1065
1066            set refreshRate(ms) {
1067                oscillator.rate = ms;
1068                if (wind.id) {
1069                    clearTimeout(wind.id);
1070                    tick();
1071                    wind();
1072                }
1073            },
1074
1075            // Register a clock indicator function. Indicators are callback
1076            // functions for each tick of the clock. The indicator functions are
1077            // called immediately upon being added (with the most recent tick or
1078            // init time) and on every tick.
1079            //
1080            // An indicator function receives one argument: a Date object
1081            // representing the current time. What the indicator does with the
1082            // Date object is unconstrained. In the typical case, you will use
1083            // indicators to format a time string and display it in the
1084            // document. But indicators can also be used for any specialized
1085            // task that you want to initiate from a reliably synchronized
1086            // clock; for example, removing a webinar event from a page the
1087            // instant it expires.
1088            //
1089            // See the getDisplayIndicator method, which is a convenient way to
1090            // create indicators for most typical use cases.
1091            addIndicator: function (indicator) {
1092                indicators.push(indicator);
1093                indicator(referenceTime);
1094            },
1095
1096            // Deregister a clock indicator function
1097            removeIndicator: function (indicator) {
1098                const index = indicators.indexOf(indicator);
1099                if (index >= 0) {
1100                    indicators.splice(index, 1);
1101                }
1102            },
1103
1104            // Create a closure to use with addIndicator().The closure combines
1105            // a formatter function with one or more renderer functions.
1106            //
1107            // Ultimately it gets applied like this:
1108            // renderer(formatter(date))
1109            //
1110            // The formatter function must accept a Date object and return a
1111            // value of the type expected by the renderers (text string, Node,
1112            // HTMLElement, HTML string, etc.). Typically it will be the format
1113            // function of an Intl.DateTimeFormat object. See the formatters
1114            // property for our conventional date and time formatter functions.
1115            //
1116            // The renderer functions are used to update a display (e.g., update
1117            // the DOM or log to the console) with the result of the formatter.
1118            // See the renderers property for common renderer functions.
1119            getDisplayIndicator: function (formatter, ...renderers) {
1120                return function (date) {
1121                    const value = formatter(date);
1122                    renderers.forEach(renderer => renderer(value));
1123                };
1124            },
1125
1126            // Formatter functions for our common date and time conventions.
1127            // See the getDisplayIndicator method.
1128            //
1129            // These are not the formatter functions themselves, but rather
1130            // methods that return formatter functions. The indirection prevents
1131            // instantiation of Intl.DateTimeFormat objects that are never used.
1132            formatters: {
1133                // Wednesday, July 24, 2024 at 7:45:01.234 AM PDT
1134                // This can be useful for debugging. We already initialized it
1135                // for our locale formatting test, so why not include it here.
1136                dateTimeMs: function () {
1137                    return defaultDateTimeFormatter.format;
1138                },
1139
1140                // Wednesday, July 24, 2024
1141                longDate: function () {
1142                    const longDateFormatter = new Intl.DateTimeFormat(chiefLocale, defaultDateFormatOptions);
1143                    return longDateFormatter.format;
1144                },
1145
1146                // 7:45 AM PDT
1147                shortTimeZone: function () {
1148                    const shortTimeZoneFormatter = new Intl.DateTimeFormat(chiefLocale, defaultTimeFormatOptions);
1149                    return shortTimeZoneFormatter.format;
1150                },
1151
1152                // 7:45 AM PDT (Pacific / UTC-7)
1153                // Expands the time zone details of another formatter. Expects
1154                // the given formatter to return a string that includes the
1155                // 'short' timeZoneName, e.g. 'PST'.
1156                //
1157                // We want to add the UTC offset, but there is no good way to
1158                // get it. There are unergonomic ways to do it. For example, we
1159                // could attempt to parse a non-standard string containing
1160                // 'short' names and compare it to the same time string but UTC.
1161                // Something like this:
1162                //    Date.parse(`${time}Z`) - Date.parse(`${time} PST`)
1163                // That is undocumented behavior at best. Another approach is to
1164                // extract the offset from a string formatted using the
1165                // 'longOffset' timeZoneName, but it is cumbersome and the
1166                // browser support for that is not ideal. At the end of the day,
1167                // we really only care about Pacific, so we just hardcode it.
1168                shortTimeZoneExpanded: function (formatter) {
1169                    const map = new Map();
1170                    map.set('PST', 'PST (Pacific / UTC-8)');
1171                    map.set('PDT', 'PDT (Pacific / UTC-7)');
1172                    return date => formatter(date).replace(/(PST|PDT)/, map.get.bind(map));
1173                },
1174
1175                // 7:45 AM Pacific (PDT / UTC-7)
1176                // Expands the time zone details of another formatter. Expects
1177                // the given formatter to return a string that includes the
1178                // 'short' timeZoneName, e.g. 'PST'. See shortTimeZoneExpanded.
1179                genericTimeZoneExpanded: function (formatter) {
1180                    const map = new Map();
1181                    map.set('PST', 'Pacific (PST / UTC-8)');
1182                    map.set('PDT', 'Pacific (PDT / UTC-7)');
1183                    return date => formatter(date).replace(/(PST|PDT)/, map.get.bind(map));
1184                },
1185
1186                // 2024-07-24T14:45:01.234Z
1187                // The following would be acceptable here, and even preferable,
1188                // but surprisingly there is no easy way to make this format:
1189                // 2024-07-24T07:45-07:00
1190                standardGlobalDateTime: function () {
1191                    return date => date.toISOString();
1192                },
1193
1194                // A message to display when we are closed
1195                closedNotice: function () {
1196                    return function (date) {
1197                        try {
1198                            const status = businessOpenStatus(date);
1199
1200                            if (status.holiday && !status.afterHours) {
1201                                return `We are currently closed for ${status.holiday}.`;
1202                            }
1203
1204                            return status.open ? '' : 'We are currently closed.';
1205                        } catch (e) {
1206                            console.error(e);
1207                            return '';
1208                        }
1209                    };
1210                },
1211            },
1212
1213            // Renderer functions. See the getDisplayIndicator method.
1214            renderers: {
1215                // Create a closure to update the text content of an HTMLElement
1216                // or Node object
1217                text: function (el) {
1218                    return str => el.textContent = str;
1219                },
1220
1221                // Create a closure to update an attribute of an HTML element
1222                attribute: function (el, attr) {
1223                    return str => el.setAttribute(attr, str);
1224                },
1225
1226                // Create a closure to write HTML content to an element and add
1227                // 'nowrap' styling to common date/time components
1228                htmlSelectiveNoWrap: function (el) {
1229                    return function (str) {
1230                        el.innerHTML = str.replace(
1231                            //   July 24, 2024   |  7:45 AM PDT / 7:45:01 AM / 07:45:01.234 PDT  | (PDT / UTC-7)
1232                            /(\w+\s\d\d?,\s\d{4})|(\d\d?:\d\d(:\d\d(\.\d{1,3})?)?(\s[AP]M)?\s\w+)|(\([^\(\)]+\))/g,
1233                            '<span style="white-space: nowrap">$&</span>'
1234                        );
1235                    };
1236                },
1237            },
1238        };
1239
1240        // Get an object describing the given Date object in terms of our
1241        // business hours and holiday policy
1242        function businessOpenStatus(date) {
1243            const f = new Intl.DateTimeFormat(chiefLocale, {
1244                timeZone: chiefTimeZone,
1245                hourCycle: 'h23',
1246                weekday: 'short',
1247                year: 'numeric',
1248                month: '2-digit',
1249                day: '2-digit',
1250                hour: '2-digit',
1251                minute: '2-digit',
1252                second: '2-digit',
1253                fractionalSecondDigits: 3,
1254            });
1255            const s = f.format(date); // Wed, 07/24/2024, 07:45:01.234
1256            const m = s.match(/^(\w{3}), (\d\d)\/(\d\d)\/(\d{4}), (\d\d):(\d\d):(\d\d)\.(\d{3})$/);
1257            if (!m || m.length < 9) {
1258                throw new Error(`Failed to parse string:\n${s}\nFormatted from:\n${date}`);
1259            }
1260
1261            // Create a time-zone adjusted Date object for day-of-week and
1262            // wall-clock operations
1263            const ld = new Date(m[4], m[2]-1, m[3], m[5], m[6], m[7], m[8]);
1264            const dayOfWeek = m[1];
1265
1266            const days = {Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6};
1267            if (ld.getDay() !== days[dayOfWeek]) {
1268                throw new Error(`Unexpected day of week: ${ld.getDay()}\nExpected: ${days[dayOfWeek]} (${dayOfWeek})`);
1269            }
1270
1271            const closed = {
1272                open:  {h: 0, m: 0},
1273                close: {h: 0, m: 0},
1274            };
1275            const regularHours = {
1276                open:  {h:  7, m: 0},
1277                close: {h: 16, m: 0},
1278            };
1279            const hours = {
1280                Sun: closed,
1281                Mon: regularHours,
1282                Tue: regularHours,
1283                Wed: regularHours,
1284                Thu: regularHours,
1285                Fri: regularHours,
1286                Sat: closed,
1287            };
1288            const openTime  = new Date(ld.getFullYear(), ld.getMonth(), ld.getDate(), hours[dayOfWeek].open.h,  hours[dayOfWeek].open.m);
1289            const closeTime = new Date(ld.getFullYear(), ld.getMonth(), ld.getDate(), hours[dayOfWeek].close.h, hours[dayOfWeek].close.m);
1290
1291            const status = {
1292                time: date,
1293                open: null,
1294                beforeHours: ld < openTime,
1295                inHours: openTime <= ld && ld < closeTime,
1296                afterHours: closeTime <= ld,
1297                holiday: null,
1298            };
1299
1300            // Official company holidays. If a holiday falls on a Saturday, it
1301            // is observed on the preceding Friday. If it falls on a Sunday, it
1302            // is observed on the following Monday.
1303
1304            // January 1
1305            if (ld.getMonth() == 0 && ld.getDate() == 1) {
1306                status.holiday = "New Year's Day";
1307            }
1308
1309            // January 1 on a weekend (e.g. 2028, 2033)
1310            if (   (ld.getMonth() == 11 && ld.getDate() == 31 && ld.getDay() == 5)
1311                || (ld.getMonth() ==  0 && ld.getDate() ==  2 && ld.getDay() == 1))
1312            {
1313                status.holiday = "New Year's Day weekend";
1314            }
1315
1316            // last Monday of May
1317            if (ld.getMonth() == 4 && ld.getDay() == 1 && ld.getDate() > 24) {
1318                status.holiday = 'Memorial Day';
1319            }
1320
1321            // July 4
1322            if (ld.getMonth() == 6 && ld.getDate() == 4) {
1323                status.holiday = 'Independence Day';
1324            }
1325
1326            // July 4 on a weekend (e.g. 2026, 2027)
1327            if (   (ld.getMonth() == 6 && ld.getDate() == 3 && ld.getDay() == 5)
1328                || (ld.getMonth() == 6 && ld.getDate() == 5 && ld.getDay() == 1))
1329            {
1330                status.holiday = 'Independence Day weekend';
1331            }
1332
1333            // first Monday of September
1334            if (ld.getMonth() == 8 && ld.getDay() == 1 && ld.getDate() < 8) {
1335                status.holiday = 'Labor Day';
1336            }
1337
1338            // fourth Thursday of November and the Friday after
1339            if (   (ld.getMonth() == 10 && ld.getDay() == 4 && 21 < ld.getDate() && ld.getDate() < 29)
1340                || (ld.getMonth() == 10 && ld.getDay() == 5 && 22 < ld.getDate() && ld.getDate() < 30))
1341            {
1342                status.holiday = 'Thanksgiving';
1343            }
1344
1345            // December 25
1346            if (ld.getMonth() == 11 && ld.getDate() == 25) {
1347                status.holiday = 'Christmas';
1348            }
1349
1350            // December 25 on a weekend (e.g. 2027, 2032)
1351            if (   (ld.getMonth() == 11 && ld.getDate() == 24 && ld.getDay() == 5)
1352                || (ld.getMonth() == 11 && ld.getDate() == 26 && ld.getDay() == 1))
1353            {
1354                status.holiday = 'Christmas';
1355            }
1356
1357            status.open = status.inHours && !status.holiday;
1358            return status;
1359        }
1360
1361    } catch (e) {
1362        console.error(e);
1363        return null;
1364    }
1365})();
1366</script>
1366
1367        
1367<script>
1368            if (chiefClock && chiefClock.isReliable) {
1369                document.addEventListener('DOMContentLoaded', function() {
1370                    const clockElement = document.getElementById('chief-clock');
1371
1372                    const hqTime = clockElement.querySelector('.hq-time');
1373                    const weekdayTime = new Intl.DateTimeFormat(chiefClock.locale, {
1374                        timeZone: chiefClock.timeZone,
1375                        weekday: 'long',
1376                        hour: 'numeric',
1377                        minute: '2-digit',
1378                        timeZoneName: 'short',
1379                    });
1380                    chiefClock.addIndicator(chiefClock.getDisplayIndicator(
1381                        chiefClock.formatters.genericTimeZoneExpanded(weekdayTime.format),
1382                        chiefClock.renderers.htmlSelectiveNoWrap(hqTime),
1383                    ));
1384                    chiefClock.addIndicator(chiefClock.getDisplayIndicator(
1385                        chiefClock.formatters.standardGlobalDateTime(),
1386                        chiefClock.renderers.attribute(hqTime, 'datetime'),
1387                    ));
1388
1389                    const closedNotice = clockElement.querySelector('.closed-notice');
1390                    const timePrefix = clockElement.querySelector('.time-prefix');
1391                    chiefClock.addIndicator(chiefClock.getDisplayIndicator(
1392                        chiefClock.formatters.closedNotice(),
1393                        function (str) {
1394                            if (str) {
1395                                closedNotice.innerHTML = `${str}<br>`;
1396                                timePrefix.textContent = 'It is';
1397                            } else {
1398                                closedNotice.textContent = '';
1399                                timePrefix.textContent = 'It is currently';
1400                            }
1401                        },
1402                    ));
1403
1404                    clockElement.style.display = 'inline-block';
1405                });
1406            }
1407        </script>
1407
1408        <!-- Start of LiveChat (www.livechatinc.com) code -->
1409<script>
1410    window.__lc = window.__lc || {};
1411    window.__lc.license = 1274271;
1412    window.__lc.skill = 3;
1413    window.addEventListener('load', function() {
1414        var lc = document.createElement('script'); lc.type = 'text/javascript'; lc.async = true;
1415        lc.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'cdn.livechatinc.com/tracking.js';
1416        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(lc, s);
1417    });
1418</script>
1418
1419<!-- End of LiveChat code -->
1420    
1421
1422 
1423
1424</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.