Help
RSS
API
Feed
Maltego
Contact
Domain > printing.hammondlumber.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2026-03-03
104.20.45.196
(
ClassC
)
Port 443
HTTP/1.1 200 OKDate: Tue, 03 Mar 2026 21:10:48 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveCF-RAY: 9d6ba146983f1571-PDXVary: Accept-EncodingVary: Accept-EncodingVary: Accept-EncodingVary: Accept-Encoding,CookieLink: https://printing.hammondlumber.com/wp-json/>; relhttps://api.w.org/Link: https://printing.hammondlumber.com/wp-json/wp/v2/pages/7>; relalternate; titleJSON; typeapplication/jsonLink: https://printing.hammondlumber.com/>; relshortlinkX-Powered-By: WP EngineX-Cacheable: SHORTCache-Control: max-age600, must-revalidateX-Cache: HIT: 1X-Cache-Group: normalcf-cache-status: DYNAMICSet-Cookie: __cf_bmUUp7PFkEWFGq.j3vXIbvyVD4Xl6tTSwYPyfwpIz.550-1772572248-1.0.1.1-n.GwHY0qk3skQIumOqpeGxlYdECYax0QSzJ4KOlPCnzgxkjvvCHtM.X5O9.cpD0qhGuZL_6lwqgGr7kGWYTx38w.N5MjQ50yn2kD6bPOdj4; path/; expiresTue, 03-Mar-26 21:40:48 GMT; domain.printing.hammondlumber.com; HttpOnly; SecureServer: cloudflarealt-svc: h3:443; ma86400 !DOCTYPE html>html langen-US data-bt-themeMaven 1.0.1>head> meta charsetUTF-8> title>Hammond Lumber – Print Shop/title>meta namerobots contentnoindex, nofollow />link reldns-prefetch href//fonts.googleapis.com />link relalternate typeapplication/rss+xml titleHammond Lumber » Feed hrefhttps://printing.hammondlumber.com/feed/ />link relalternate typeapplication/rss+xml titleHammond Lumber » Comments Feed hrefhttps://printing.hammondlumber.com/comments/feed/ />link relalternate titleoEmbed (JSON) typeapplication/json+oembed hrefhttps://printing.hammondlumber.com/wp-json/oembed/1.0/embed?urlhttps%3A%2F%2Fprinting.hammondlumber.com%2F />link relalternate titleoEmbed (XML) typetext/xml+oembed hrefhttps://printing.hammondlumber.com/wp-json/oembed/1.0/embed?urlhttps%3A%2F%2Fprinting.hammondlumber.com%2F&formatxml />style idwp-img-auto-sizes-contain-inline-css>img:is(sizesauto i,sizes^auto, i){contain-intrinsic-size:3000px 1500px}/*# sourceURLwp-img-auto-sizes-contain-inline-css *//style>style idwp-emoji-styles-inline-css> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; }/*# sourceURLwp-emoji-styles-inline-css *//style>style idwp-block-library-inline-css>:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}.has-text-align-center{text-align:center}.has-text-align-left{text-align:left}.has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where(style*border-top-color){border-top-style:solid}html :where(style*border-right-color){border-right-style:solid}html :where(style*border-bottom-color){border-bottom-style:solid}html :where(style*border-left-color){border-left-style:solid}html :where(style*border-width){border-style:solid}html :where(style*border-top-width){border-top-style:solid}html :where(style*border-right-width){border-right-style:solid}html :where(style*border-bottom-width){border-bottom-style:solid}html :where(style*border-left-width){border-left-style:solid}html :where(imgclass*wp-image-){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}/*# sourceURLwp-block-library-inline-css *//style>style idclassic-theme-styles-inline-css>/*! This file is auto-generated */.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}/*# sourceURL/wp-includes/css/classic-themes.min.css *//style>link relstylesheet idwc-blocks-style-css hrefhttps://printing.hammondlumber.com/wp-content/plugins/woocommerce/assets/client/blocks/wc-blocks.css?verwc-10.5.2 mediaall />link relstylesheet idboldthemes-fonts-css hrefhttps://fonts.googleapis.com/css2?familyManrope:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&familyInter:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&subsetlatin,latin-ext&displayswap mediaall />style idglobal-styles-inline-css>:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}/*# sourceURLglobal-styles-inline-css *//style>link relstylesheet idbt_bb_content_elements-css hrefhttps://printing.hammondlumber.com/wp-content/plugins/bold-page-builder/css/front_end/content_elements.crush.css?ver5.6.7 mediaall />style idbt_bb_content_elements-inline-css>.bt_bb_section.bt_bb_special_background .bt_bb_background_image_holder_wrapper .bt_bb_background_image_holder { border-bottom-right-radius: var(--section-soft-rounded); border-bottom-left-radius: var(--section-soft-rounded); overflow: hidden; max-width: 1824px; margin: 0 auto; background-size: auto;}@media (max-width: 780px) { .bt_bb_special_background.bt_bb_section.bt_bb_full_screen > .bt_bb_port { min-height: auto; }}/*# sourceURLbt_bb_content_elements-inline-css *//style>link relstylesheet idbt_bb_slick-css hrefhttps://printing.hammondlumber.com/wp-content/plugins/bold-page-builder/slick/slick.css?ver5.6.7 mediaall />link relstylesheet idhammond-bcard-order-css hrefhttps://printing.hammondlumber.com/wp-content/plugins/hammond-bcard-order/assets/style.css?ver1.0.0 mediaall />link relstylesheet idwoocommerce-layout-css hrefhttps://printing.hammondlumber.com/wp-content/plugins/woocommerce/assets/css/woocommerce-layout.css?ver10.5.2 mediaall />link relstylesheet idwoocommerce-smallscreen-css hrefhttps://printing.hammondlumber.com/wp-content/plugins/woocommerce/assets/css/woocommerce-smallscreen.css?ver10.5.2 mediaonly screen and (max-width: 768px) />link relstylesheet idwoocommerce-general-css hrefhttps://printing.hammondlumber.com/wp-content/plugins/woocommerce/assets/css/woocommerce.css?ver10.5.2 mediaall />style idwoocommerce-inline-inline-css>.woocommerce form .form-row .required { visibility: visible; }/*# sourceURLwoocommerce-inline-inline-css *//style>link relstylesheet idmaven-style-css hrefhttps://printing.hammondlumber.com/wp-content/themes/maven/style.css?ver1.0.0 mediaall />style idmaven-style-inline-css>@font-face{ font-family:Essential;src:url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/Essential/Essential.woff)format(woff),url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/Essential/Essential.ttf)format(truetype); } *data-ico-essential:before{ font-family:Essential;content:attr(data-ico-essential); } @font-face{ font-family:FontAwesome5Brands;src:url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/FontAwesome5Brands/FontAwesome5Brands.woff2)format(woff2),url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/FontAwesome5Brands/FontAwesome5Brands.woff)format(woff); } *data-ico-fontawesome5brands:before{ font-family:FontAwesome5Brands;content:attr(data-ico-fontawesome5brands); } @font-face{ font-family:FontAwesome5Regular;src:url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/FontAwesome5Regular/FontAwesome5Regular.woff2)format(woff2),url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/FontAwesome5Regular/FontAwesome5Regular.woff)format(woff); } *data-ico-fontawesome5regular:before{ font-family:FontAwesome5Regular;content:attr(data-ico-fontawesome5regular); } @font-face{ font-family:FontAwesome5Solid;src:url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/FontAwesome5Solid/FontAwesome5Solid.woff2)format(woff2),url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/FontAwesome5Solid/FontAwesome5Solid.woff)format(woff); } *data-ico-fontawesome5solid:before{ font-family:FontAwesome5Solid;content:attr(data-ico-fontawesome5solid); } @font-face{ font-family:FontAwesome6Brands;src:url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/FontAwesome6Brands/FontAwesome6Brands.woff2)format(woff2),url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/FontAwesome6Brands/FontAwesome6Brands.woff)format(woff),url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/FontAwesome6Brands/FontAwesome6Brands.ttf)format(truetype); } *data-ico-fontawesome6brands:before{ font-family:FontAwesome6Brands;content:attr(data-ico-fontawesome6brands); } @font-face{ font-family:FontAwesome6Regular;src:url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/FontAwesome6Regular/FontAwesome6Regular.woff2)format(woff2),url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/FontAwesome6Regular/FontAwesome6Regular.woff)format(woff),url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/FontAwesome6Regular/FontAwesome6Regular.ttf)format(truetype); } *data-ico-fontawesome6regular:before{ font-family:FontAwesome6Regular;content:attr(data-ico-fontawesome6regular); } @font-face{ font-family:FontAwesome6Solid;src:url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/FontAwesome6Solid/FontAwesome6Solid.woff2)format(woff2),url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/FontAwesome6Solid/FontAwesome6Solid.woff)format(woff),url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/FontAwesome6Solid/FontAwesome6Solid.ttf)format(truetype); } *data-ico-fontawesome6solid:before{ font-family:FontAwesome6Solid;content:attr(data-ico-fontawesome6solid); } @font-face{ font-family:Icon7Stroke;src:url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/Icon7Stroke/Icon7Stroke.woff2)format(woff2),url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/Icon7Stroke/Icon7Stroke.woff)format(woff),url(https://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/icon-sets/Icon7Stroke/Icon7Stroke.ttf)format(truetype); } *data-ico-icon7stroke:before{ font-family:Icon7Stroke;content:attr(data-ico-icon7stroke); } @font-face{ font-family:Design;src:url(https://printing.hammondlumber.com/wp-content/themes/maven/assets/icon-sets/Design/Design.woff)format(woff),url(https://printing.hammondlumber.com/wp-content/themes/maven/assets/icon-sets/Design/Design.ttf)format(truetype); } *data-ico-design:before{ font-family:Design;content:attr(data-ico-design); } @font-face{ font-family:Maven;src:url(https://printing.hammondlumber.com/wp-content/themes/maven/assets/icon-sets/Maven/Maven.woff)format(woff),url(https://printing.hammondlumber.com/wp-content/themes/maven/assets/icon-sets/Maven/Maven.ttf)format(truetype); } *data-ico-maven:before{ font-family:Maven;content:attr(data-ico-maven); } @font-face{ font-family:Remixicon;src:url(https://printing.hammondlumber.com/wp-content/themes/maven/assets/icon-sets/Remixicon/Remixicon.woff)format(woff),url(https://printing.hammondlumber.com/wp-content/themes/maven/assets/icon-sets/Remixicon/Remixicon.ttf)format(truetype); } *data-ico-remixicon:before{ font-family:Remixicon;content:attr(data-ico-remixicon); }/*# sourceURLmaven-style-inline-css *//style>script srchttps://printing.hammondlumber.com/wp-includes/js/jquery/jquery.min.js?ver3.7.1 idjquery-core-js>/script>script srchttps://printing.hammondlumber.com/wp-includes/js/jquery/jquery-migrate.min.js?ver3.4.1 idjquery-migrate-js>/script>script srchttps://printing.hammondlumber.com/wp-content/plugins/bold-page-builder/slick/slick.min.js?ver5.6.7 idbt_bb_slick-js>/script>script srchttps://printing.hammondlumber.com/wp-content/plugins/bold-page-builder/content_elements_misc/js/jquery.magnific-popup.min.js?ver5.6.7 idbt_bb_magnific-js>/script>script srchttps://printing.hammondlumber.com/wp-content/plugins/bold-page-builder/content_elements_misc/js/content_elements.js?ver5.6.7 idbt_bb-js>/script>script srchttps://printing.hammondlumber.com/wp-content/plugins/woocommerce/assets/js/jquery-blockui/jquery.blockUI.min.js?ver2.7.0-wc.10.5.2 idwc-jquery-blockui-js defer data-wp-strategydefer>/script>script idwc-add-to-cart-js-extra>var wc_add_to_cart_params {ajax_url:/wp-admin/admin-ajax.php,wc_ajax_url:/?wc-ajax%%endpoint%%,i18n_view_cart:View cart,cart_url:https://printing.hammondlumber.com/checkout/,is_cart:,cart_redirect_after_add:no};//# sourceURLwc-add-to-cart-js-extra/script>script srchttps://printing.hammondlumber.com/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart.min.js?ver10.5.2 idwc-add-to-cart-js defer data-wp-strategydefer>/script>script srchttps://printing.hammondlumber.com/wp-content/plugins/woocommerce/assets/js/js-cookie/js.cookie.min.js?ver2.1.4-wc.10.5.2 idwc-js-cookie-js defer data-wp-strategydefer>/script>script idwoocommerce-js-extra>var woocommerce_params {ajax_url:/wp-admin/admin-ajax.php,wc_ajax_url:/?wc-ajax%%endpoint%%,i18n_password_show:Show password,i18n_password_hide:Hide password};//# sourceURLwoocommerce-js-extra/script>script srchttps://printing.hammondlumber.com/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?ver10.5.2 idwoocommerce-js defer data-wp-strategydefer>/script>script idboldthemes-text-strings-js-extra>var boldthemes_text_strings {override_alert:This page/post is using Override Global Settings. Some options might not work as expected.};//# sourceURLboldthemes-text-strings-js-extra/script>link relhttps://api.w.org/ hrefhttps://printing.hammondlumber.com/wp-json/ />link relalternate titleJSON typeapplication/json hrefhttps://printing.hammondlumber.com/wp-json/wp/v2/pages/7 />link relEditURI typeapplication/rsd+xml titleRSD hrefhttps://printing.hammondlumber.com/xmlrpc.php?rsd />link relcanonical hrefhttps://printing.hammondlumber.com/ />link relshortlink hrefhttps://printing.hammondlumber.com/ />style>@font-face{font-family:Fraunces144;font-style:normal;font-weight:400;src:url(https://printing.hammondlumber.com/wp-content/themes/maven/assets/custom-fonts/Fraunces144/Fraunces144.ttf)format(truetype);}/style>style>@font-face{font-family:Fraunces144Italic;font-style:normal;font-weight:400;src:url(https://printing.hammondlumber.com/wp-content/themes/maven/assets/custom-fonts/Fraunces144Italic/Fraunces144Italic.ttf)format(truetype);}/style>style>@font-face{font-family:Fraunces144Light;font-style:normal;font-weight:400;src:url(https://printing.hammondlumber.com/wp-content/themes/maven/assets/custom-fonts/Fraunces144Light/Fraunces144Light.ttf)format(truetype);}/style>style>@font-face{font-family:Fraunces144SemiBold;font-style:normal;font-weight:400;src:url(https://printing.hammondlumber.com/wp-content/themes/maven/assets/custom-fonts/Fraunces144SemiBold/Fraunces144SemiBold.ttf)format(truetype);}/style> noscript>style>.woocommerce-product-gallery{ opacity: 1 !important; }/style>/noscript> style idwp-custom-css> .woocommerce-form-coupon-toggle { display: none;}.product-total { display: none;}.cart-subtotal { display: none;}.methods { display: none;}.woocommerce-terms-and-conditions-wrapper { display: none;}.woocommerce .checkout .woocommerce-checkout-review-order-table thead tr th, .woocommerce-page .checkout .woocommerce-checkout-review-order-table thead tr th { display: none;}.woocommerce-notices-wrapper { display: none;}.woocommerce .cart-collaterals .cart_totals table.shop_table tbody tr.order-total th, .woocommerce .cart-collaterals .cart_totals table.shop_table tbody tr.order-total td, .woocommerce .checkout .woocommerce-checkout-review-order-table tfoot tr.order-total th, .woocommerce .checkout .woocommerce-checkout-review-order-table tfoot tr.order-total td, .woocommerce-page .cart-collaterals .cart_totals table.shop_table tbody tr.order-total th, .woocommerce-page .cart-collaterals .cart_totals table.shop_table tbody tr.order-total td, .woocommerce-page .checkout .woocommerce-checkout-review-order-table tfoot tr.order-total th, .woocommerce-page .checkout .woocommerce-checkout-review-order-table tfoot tr.order-total td { display: none;}.woocommerce #respond input#submit, .woocommerce a.button, .woocommerce a.button.alt, .woocommerce button.button, .woocommerce button.button.alt, .woocommerce input.button, .woocommerce input.button.alt, .woocommerce-page #respond input#submit, .woocommerce-page a.button, .woocommerce-page a.button.alt, .woocommerce-page button.button, .woocommerce-page button.button.alt, .woocommerce-page input.button, .woocommerce-page input.button.alt { color: white;}.woocommerce #payment #place_order, .woocommerce-page #payment #place_order { padding: 1em 8em; font-size: 20px !important;}#add_payment_method #payment .place-order, .woocommerce-cart #payment .place-order, .woocommerce-checkout #payment .place-order { padding: 0em !important;}.site-header .widget_shopping_cart .widgettitle .widgetcounter, .site-header-responsive .widget_shopping_cart .widgettitle .widgetcounter { color: white;}/* Add a crisp border around the FRONT canvas only */#bc-canvas-front { border: 1px solid #000;} /style> script> var bt_bb_update_res function() { var width Math.max( document.documentElement.clientWidth, window.innerWidth || 0 ); window.bt_bb_res xxl; if ( width 1400 ) window.bt_bb_res xl; if ( width 1200 ) window.bt_bb_res lg; if ( width 992) window.bt_bb_res md; if ( width 768 ) window.bt_bb_res sm; if ( width 480 ) window.bt_bb_res xs; document.documentElement.setAttribute( data-bt_bb_screen_resolution, window.bt_bb_res ); // used in CSS } bt_bb_update_res(); var bt_bb_observer new MutationObserver(function( mutations ) { for ( var i 0; i mutations.length; i++ ) { var nodes mutations i .addedNodes; for ( var j 0; j nodes.length; j++ ) { var node nodes j ; // Only process element nodes if ( 1 node.nodeType ) { // Check if element or its children have override classes if ( ( node.hasAttribute && node.hasAttribute( data-bt-override-class ) ) || ( node.querySelector && node.querySelector( data-bt-override-class ) ) ) { ...node.querySelectorAll( data-bt-override-class ), ...( node.matches( data-bt-override-class ) ? node : ) .forEach(function( element ) { // Get the attribute value let override_classes JSON.parse( element.getAttribute( data-bt-override-class ) ); for ( let prefix in override_classes ) { let new_class; if ( override_classes prefix window.bt_bb_res ! undefined ) { new_class prefix + override_classes prefix window.bt_bb_res ; } else { new_class prefix + override_classes prefix def; } // Remove the current class element.classList.remove( ...override_classes prefix current_class.split( ) ); // Add the new class element.classList.add( ...new_class.split( ) ); // Update the current_class override_classes prefix current_class new_class; } // Store the updated data back to the attribute element.setAttribute( data-bt-override-class, JSON.stringify( override_classes ) ); } ); } } } } } ); // Start observing bt_bb_observer.observe( document.documentElement, { childList: true, subtree: true } ); // Cancel observer when ready var bt_bb_cancel_observer function() { if ( interactive document.readyState || complete document.readyState ) { bt_bb_observer.disconnect(); document.removeEventListener( readystatechange, bt_bb_cancel_observer ); } }; document.addEventListener( readystatechange, bt_bb_cancel_observer ); /script> script>window.bt_bb_preview false/script>script>window.bt_bb_fe_preview false/script>script>window.bt_bb_custom_elements false;/script> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1> !--meta nameviewport contentwidthdevice-width, initial-scale1, maximum-scale1, user-scalableno--> meta namemobile-web-app-capable contentyes> meta nameapple-mobile-web-app-capable contentyes> link relprofile hrefhttps://gmpg.org/xfn/11>style idbt-widget-additional-front-inline-css>#boldthemes_icon_widget-7 { --widget-sticky-primary-color: var(--accent-color); --widget-sticky-secondary-color: var(--alternate-color); }#boldthemes_icon_widget-8 { --widget-sticky-primary-color: var(--accent-color); --widget-sticky-secondary-color: var(--alternate-color); }#boldthemes_button_widget-5 { --widget-sticky-primary-color: var(--alternate-color); --widget-sticky-secondary-color: var(--accent-color); }/*# sourceURLbt-widget-additional-front-inline-css *//style>/head>body classhome wp-singular page-template-default page page-id-7 wp-embed-responsive wp-theme-maven theme-maven bt_bb_plugin_active bt_bb_fe_preview_toggle woocommerce-no-js bt-header-responsive-active bt-sidebar-responsive-active bt-sticky-header-inactive boldthemes-has-override menu-line- sticky-blur-show responsive-blur-show display-branding-text- branding-text-html-tag-p template-color-scheme-10 sidebar-position-none sidebar-sticky- content-width-wide header-width-wide-boxed-1400 footer-width-wide-boxed-1200 enable-sticky-1 sticky-style-show-on-scroll-up sticky-header-width-wide-boxed-1400 primary-menu-position-logo-center-solo primary-menu-reverse-menu-levels-1 responsive-logo-position-left responsive-trigger-position-left enable-preloader- preloader-color-scheme-accent-light preloader-transition-fade preloader-animation-square header-position-above default-headline-height-none default-headline-color-scheme-3 default-headline-size-large default-headline-h-tag-h2 default-headline-width-wide-boxed-1400 default-headline-parallax-slow default-headline-overlay-dark-40 default-headline-alignment-inherit button-shape-rounded button-style-filled button-color-scheme-15 top-bar-color-scheme-9 site-branding-bar-color-scheme-12 sticky-site-branding-bar-color-scheme-24 menu-bar-color-scheme-12 sticky-menu-bar-color-scheme-11 menu-hover-color-scheme-5 menu-dropdown-color-scheme-10 menu-dropdown-hover-color-scheme-5 responsive-sticky-header-color-scheme-24 responsive-header-color-scheme-12 responsive-menu-color-scheme-24 responsive-menu-position-full-screen blog-list-view-standard blog-list-headline-size-normal blog-list-show-excerpt-2-lines blog-single-view-standard blog-single-about-author-style-none blog-single-headline-size-normal pf-list-view-columns pf-list-headline-size-medium pf-list-show-excerpt-full pf-list-load-animation-fade-in-move-up pf-single-view-standard pf-single-about-author-style-none pf-single-headline-size-large search-list-headline-size-normal search-list-show-excerpt-full error-404-color-scheme-10 footer-widgets-color-scheme-3 blog-list-load-animation-fade-in-move-up shop-button-style-filled shop-button-color-scheme-15 shop-list-button-color-scheme-15 shop-list-headline-size-extrasmall shop-single-headline-size-normal sidebar-headline-size-small data-header-responsive-breakpoint1120 data-sidebar-responsive-breakpoint1024 data-sticky-header-scroll-breakpoint0 data-copy-to-clipboard-okCopied current url to clipboard data-copy-to-clipboard-notokError. Could not copy current url style--page-primary-color:var(--dark-color);--page-secondary-color:var(--light-color);--button-primary-color:var(--alternate-color);--button-secondary-color:var(--accent-color);--shop-button-primary-color:var(--alternate-color);--shop-button-secondary-color:var(--accent-color);--shop-list-button-primary-color:var(--alternate-color);--shop-list-button-secondary-color:var(--accent-color); --accent-color:#d1232a; --alternate-color:#d1232a; --logo-height:90px; --sticky-logo-height:80px; --responsive-logo-height:80px; --responsive-sticky-logo-height:60px; --responsive-menu-logo-height:80px; --sidebar-width:25%; --sidebar-sticky-top-position:20px; --page-background-color:#ffffff; --site-branding-bar-background-color:#d12429; --site-branding-bar-color:#ffffff; --sticky-site-branding-bar-background-color:#d12429; --sticky-site-branding-bar-color:#ffffff; --menu-bar-color:#ffffff; --sticky-menu-bar-background-color:#d12429; --sticky-menu-bar-color:#ffffff; --responsive-header-background-color:#d12429; --responsive-sticky-header-background-color:#d12429; --responsive-header-color:#ffffff; --responsive-sticky-header-color:#ffffff; --responsive-menu-background-color:#d12429; --responsive-menu-color:#ffffff; --top-bar-color:#ffffff; --responsive-menu-max-width:320px; --body-font:Manrope; --body-font-weight:normal; --body-text-transform:none; --body-font-style:none; --heading-font:Manrope; --heading-font-weight:500; --heading-text-transform:none; --heading-font-style:none; --heading-letter-spacing:0px; --supertitle-font:Manrope; --supertitle-font-weight:600; --supertitle-text-transform:none; --supertitle-font-style:none; --supertitle-letter-spacing:0px; --subtitle-font:Manrope; --subtitle-font-weight:600; --subtitle-text-transform:none; --subtitle-font-style:none; --subtitle-letter-spacing:0px; --menu-font:Inter; --menu-first-level-font-weight:normal; --menu-first-level-text-transform:none; --menu-other-levels-font-weight:normal; --menu-other-levels-text-transform:none; --button-font:Manrope; --button-font-weight:500; --button-text-transform:none; --button-font-style:none; --button-letter-spacing:0px;> script> var header_responsive_breakpoint parseInt(document.body.getAttribute(data-header-responsive-breakpoint)); var sidebar_responsive_breakpoint parseInt(document.body.getAttribute(data-sidebar-responsive-breakpoint)); var windowWidth window.innerWidth; /* Show/hide responsive header */ if (header_responsive_breakpoint > 0) { if (windowWidth header_responsive_breakpoint) { if (!document.body.classList.contains(bt-header-responsive-active)) { document.body.classList.add(bt-header-responsive-active); document.body.classList.remove(bt-header-responsive-inactive); boldthemes_requestTimeout(boldthemes_responsive_header_add_active_class, 200); } } else { if (!document.body.classList.contains(bt-header-responsive-inactive)) { document.body.classList.remove(bt-header-responsive-active, bt-header-responsive-ready); document.body.classList.add(bt-header-responsive-inactive); } } } /* Move sidebar */ if (sidebar_responsive_breakpoint > 0) { if (windowWidth sidebar_responsive_breakpoint && sidebar_responsive_breakpoint > 0) { if (!document.body.classList.contains(bt-sidebar-responsive-active)) { document.body.classList.add(bt-sidebar-responsive-active); document.body.classList.remove(bt-sidebar-responsive-inactive); } } else { if (!document.body.classList.contains(bt-sidebar-responsive-inactive)) { document.body.classList.remove(bt-sidebar-responsive-active); document.body.classList.add(bt-sidebar-responsive-inactive); } } } /script>div idpage classsite> a classskip-link screen-reader-text href#primary>Skip to content/a> header idmasthead classsite-header style--responsive-menu-primary-color:var(--dark-color);--responsive-menu-secondary-color:var(--beige-60-color);> div classsite-branding style--primary-color:var(--dark-color);--secondary-color:var(--transparent-color);--sticky-primary-color:var(--dark-color);--sticky-secondary-color:var(--beige-60-color);> div classsite-branding-inner> div classsite-branding-logo-text> div classsite-branding-logo> a hrefhttps://printing.hammondlumber.com/ classlogo>img width724 height240 srchttps://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM.png classlogo-img alt decodingasync fetchpriorityhigh srcsethttps://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM.png 724w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-640x212.png 640w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-320x106.png 320w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-720x240.png 720w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-600x199.png 600w sizes(max-width: 724px) 100vw, 724px />/a>a hrefhttps://printing.hammondlumber.com/ classsticky-logo>img width724 height240 srchttps://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM.png classsticky-logo-img alt decodingasync srcsethttps://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM.png 724w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-640x212.png 640w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-320x106.png 320w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-720x240.png 720w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-600x199.png 600w sizes(max-width: 724px) 100vw, 724px />/a>a hrefhttps://printing.hammondlumber.com/ classresponsive-menu-logo>img width724 height240 srchttps://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM.png classresponsive-menu-logo-img alt decodingasync srcsethttps://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM.png 724w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-640x212.png 640w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-320x106.png 320w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-720x240.png 720w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-600x199.png 600w sizes(max-width: 724px) 100vw, 724px />/a> /div>!-- .site-branding-logo --> /div>!-- .site-branding-logo-text --> div idsite-navigation classmain-navigation main-navigation-logo-area style--primary-color:var(--dark-color);--secondary-color:var(--transparent-color);--sticky-primary-color:var(--light-color);--sticky-secondary-color:var(--transparent-color);--hover-primary-color:var(--alternate-color);--hover-secondary-color:var(--light-color);--dropdown-primary-color:var(--dark-color);--dropdown-secondary-color:var(--light-color);--dropdown-hover-primary-color:var(--alternate-color);--dropdown-hover-secondary-color:var(--light-color);> !--button classmenu-toggle aria-controlsprimary-menu aria-expandedfalse>Primary Menu/button--> nav classmenu-main-menu-container aria-labelnavigation>ul idprimary-menu classmain-navigation-menu>li idmenu-item-4628 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-7 current_page_item menu-item-4628>a hrefhttps://printing.hammondlumber.com/ aria-currentpage>Custom Business Cards/a>/li>li idmenu-item-5043 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-5043>a hrefhttps://printing.hammondlumber.com/generic-company-cards/>Generic Company Cards/a>/li>/ul>/nav> div classsite-navigation-widgets> div classwoocommerce widget_shopping_cart idwoocommerce_widget_cart-4>h2 classwidgettitle>Cart/h2>div classhide_cart_widget_if_empty>div classwidget_shopping_cart_content>/div>/div>/div> /div>!-- .site-navigation-widgets --> /div>!-- .main-navigation --> /div>!-- .site-branding-inner --> /div>!-- .site-branding --> div classsite-menu-responsive-widgets> div classsite-menu-responsive-widgets-inner> div classwidget_boldthemes_icon_widget idboldthemes_icon_widget-7>div classbt_bb_icon bt_bb_has_widget_sticky_color_scheme bt_bb_color_scheme_14 bt_bb_style_borderless bt_bb_size_small bt_bb_shape_circle bt_bb_target_blank bt_bb_text_empty bt_bb_align_inherit style; --primary-color:var(--accent-color); --secondary-color:var(--alternate-color); data-bt-override-class{}>a hrefhttps://rs.linkedin.com/ target_blank data-ico-remixicon classbt_bb_icon_holder>/a>/div>/div>div classwidget_boldthemes_icon_widget idboldthemes_icon_widget-8>div classbt_bb_icon bt_bb_has_widget_sticky_color_scheme bt_bb_color_scheme_14 bt_bb_style_borderless bt_bb_size_small bt_bb_shape_circle bt_bb_target_blank bt_bb_text_empty bt_bb_align_inherit style; --primary-color:var(--accent-color); --secondary-color:var(--alternate-color); data-bt-override-class{}>a hrefhttps://bold-themes.com/ target_blank data-ico-remixicon classbt_bb_icon_holder>/a>/div>/div>div classwidget_boldthemes_button_widget idboldthemes_button_widget-5>div classbt_bb_button bt_bb_has_widget_sticky_color_scheme bt_bb_color_scheme_15 bt_bb_icon_position_right bt_bb_style_filled bt_bb_size_medium bt_bb_shape_rounded bt_bb_target_self bt_bb_align_inherit bt_bb_arrow_icon style; --primary-color:var(--alternate-color); --secondary-color:var(--accent-color); data-bt-override-class{}>a hrefcontact target_self classbt_bb_link titleSchedule Free Consultation>span classbt_bb_button_text >Schedule Free Consultation/span>span data-ico-remixicon classbt_bb_icon_holder>/span>/a>/div>/div> /div>!-- .site-menu-responsive-widgets-inner --> /div>!-- .site-menu-responsive-widgets --> /header>!-- .site-header --> div idmasthead-responsive classsite-header-responsive style--primary-color:var(--dark-color);--secondary-color:var(--transparent-color);;--primary-sticky-color:var(--dark-color);--secondary-sticky-color:var(--beige-60-color);> div classsite-header-responsive-inner> div classsite-header-responsive-trigger> div classsite-header-responsive-trigger-icon> div classtrigger-line-1>/div> div classtrigger-line-2>/div> div classtrigger-line-3>/div> div classtrigger-line-4>/div> /div> /div> div classsite-header-responsive-logo-text> div classsite-header-responsive-logo> a hrefhttps://printing.hammondlumber.com/ classresponsive-logo>img width724 height240 srchttps://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM.png classresponsive-logo-img alt decodingasync srcsethttps://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM.png 724w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-640x212.png 640w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-320x106.png 320w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-720x240.png 720w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-600x199.png 600w sizes(max-width: 724px) 100vw, 724px />/a> a hrefhttps://printing.hammondlumber.com/ classresponsive-sticky-logo>img width724 height240 srchttps://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM.png classresponsive-sticky-logo-img alt decodingasync srcsethttps://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM.png 724w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-640x212.png 640w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-320x106.png 320w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-720x240.png 720w, https://printing.hammondlumber.com/wp-content/uploads/2025/08/Screenshot-2025-08-26-at-3.43.25-PM-600x199.png 600w sizes(max-width: 724px) 100vw, 724px />/a> /div>!-- .site-header-responsive-logo --> /div>!-- .site-header-responsive-logo --> /div>!-- .site-header-responsive-inner --> /div>!-- .site-header-responsive --> script> /* Fix content padding */ var hasResponsiveClass document.body.classList.contains( bt-header-responsive-active ); var masthead hasResponsiveClass ? document.getElementById(masthead-responsive) : document.getElementById( masthead ); var mastheadHeight masthead.clientHeight + px; var headerInnerElement document.querySelector(.page-header .page-header-inner); if (headerInnerElement ! null) { headerInnerElement.style.paddingTop mastheadHeight; } /script> div idcontent classsite-content> main idprimary classsite-main> article idpost-7 classpost-7 page type-page status-publish hentry> div classentry-content> div classentry-content-inner> div classbt_bb_wrapper data-templates-time>section data-bb-version5.4.4 idbt_bb_section69a74a592f0fd classbt_bb_section bt_bb_layout_boxed_1200 bt_bb_vertical_align_top bt_bb_top_spacing_large bt_bb_bottom_spacing_medium bt_bb_negative_margin_none data-bt-override-class{"bt_bb_top_spacing_":{"current_class":"bt_bb_top_spacing_large","def":"large"},"bt_bb_bottom_spacing_":{"current_class":"bt_bb_bottom_spacing_medium","def":"medium"},"bt_bb_negative_margin_":{"current_class":"bt_bb_negative_margin_none","def":"none"},"bt_bb_animation_":{"current_class":"bt_bb_animation_no_animation","def":"no_animation"}}>div classbt_bb_port>div classbt_bb_cell>div classbt_bb_cell_inner>div classbt_bb_row data-bt-override-class{}>div classbt_bb_row_holder >div data-bb-version5.1.3 classbt_bb_column col-xxl-12 col-xl-12 col-xs-12 col-sm-12 col-md-12 col-lg-12 bt_bb_vertical_align_top bt_bb_align_left bt_bb_padding_normal style; --column-width:12; data-width12 data-bt-override-class{}>div classbt_bb_column_content>div classbt_bb_column_content_inner>div classbt_bb_shortcode> style> .bc-wrap { max-width: 940px; margin: 0 auto; font-family: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif; } .bc-grid { display:grid!important; grid-template-columns:1fr; gap:16px; } @media (min-width:900px){ .bc-grid{ grid-template-columns:1.2fr 0.8fr!important; align-items:start; } .bc-preview{ grid-column:1/2!important; } .bc-controls{ grid-column:2/3!important; } } .bc-card{ background:#fff; border-radius:12px; box-shadow:0 2px 12px rgba(0,0,0,.08); padding:16px; } .bc-h{ font-size:18px; font-weight:700; margin:4px 0 12px; } .bc-controls label{ display:block; font-size:12px; color:#555; margin-top:10px; } .bc-controls inputtypetext, .bc-controls inputtypeemail, .bc-controls inputtypetel, .bc-controls select{ width:100%; padding:10px; border:1px solid #ddd; border-radius:8px; font-size:14px; } .bc-row{ display:flex; align-items:center; gap:8px; margin-bottom:8px; } .bc-btn{ background:#111; color:#fff!important; padding:10px 14px; border-radius:10px; border:none; cursor:pointer; font-weight:600; line-height:1.2; display:inline-flex; align-items:center; justify-content:center; } canvas.bc-canvas{ width:100%; height:auto; border-radius:10px; background:#f7f7f7; } #bc-canvas-front{ border:1px solid #111; } #bc-status{ font-size:13px; color:#555; margin-top:8px;} /* NEW: show asterisk on required labels */ .bc-req::after{ content: *; color:#c00; font-weight:700; margin-left:2px; } /* NEW: lightweight modal to prevent duplicate clicks */ .cp-modal{ position:fixed; inset:0; background:rgba(17,17,17,.5); display:none; align-items:center; justify-content:center; z-index:99999; } .cp-modal__card{ background:#fff; border-radius:12px; padding:20px 22px; max-width:360px; width:92%; text-align:center; box-shadow:0 10px 30px rgba(0,0,0,.2); } .cp-modal__spinner{ width:24px; height:24px; border:3px solid #ddd; border-top-color:#111; border-radius:50%; display:inline-block; animation:cp-spin 0.8s linear infinite; vertical-align:middle; margin-right:8px; } @keyframes cp-spin{ to{ transform: rotate(360deg); } } .cp-modal__check{ font-size:28px; display:inline-block; margin-right:6px; } .cp-modal__ok{ margin-top:12px; background:#111; color:#fff; border:none; border-radius:8px; padding:8px 12px; cursor:pointer; font-weight:600; display:none; } .cp-green{ color:#2e7d32; } /style> div classbc-wrap> div classbc-grid> !-- PREVIEW LEFT --> div classbc-card bc-preview> div classbc-h>Live Preview/div> canvas idbc-canvas-front classbc-canvas width1125 height675>/canvas> canvas idbc-canvas-back classbc-canvas width1125 height675 styledisplay:none;margin-top:8px;>/canvas> /div> !-- FORM RIGHT --> div classbc-card bc-controls> div classbc-h>Details/div> div classbc-row> label classbc-req stylemargin:0>Template/label> select idbc-template formbc-form required aria-requiredtrue> option value4562 selectedselected> General /option> option value4656 > Home Planning /option> option value4660 > Kitchen, Bath & Flooring Center /option> option value4679 > ShoreMaster /option> option value4677 > Maine Pine Log Homes /option> /select> /div> div idbc-fields>/div> form idbc-form methodpost action#> input typehidden namebc_template_id idbc_template_id value4562> input typehidden namebc_payload_json idbc_payload_json value> input typehidden namebc_proof_png idbc_proof_png value> input typehidden namebc_pdf_file idbc_pdf_file value> input typehidden idcp_ajax_nonce value0f5a805e15> input typehidden idcp_ajax_url valuehttps://printing.hammondlumber.com/wp-admin/admin-ajax.php> div classbc-row stylemargin-top:10px;align-items:center;gap:8px;> label classbc-req>Quantity/label> select namequantity idbc-qty stylewidth:140px;padding:8px;border:1px solid #ddd;border-radius:8px; required aria-requiredtrue> option value100>100/option> option value250 selected>250/option> /select> /div> button typebutton idbc-send-approval classbc-btn aria-labelSend for Approval titleSend for Approval>Send for Approval/button> div idbc-status>/div> /form> /div> /div> /div> !-- NEW: Modal markup --> div classcp-modal idcp-modal> div classcp-modal__card idcp-modal-card> div idcp-modal-sending> span classcp-modal__spinner>/span> strong>Sending Order for Approval…/strong> /div> div idcp-modal-done styledisplay:none;> span classcp-modal__check cp-green>✔/span> strong classcp-green>Sent for approval./strong> div stylemargin-top:6px; font-size:13px; color:#555;>You’ll get an email when it’s approved./div> button classcp-modal__ok idcp-modal-ok typebutton>OK/button> /div> /div> /div>script srchttps://cdn.jsdelivr.net/npm/jspdf@2.5.1/dist/jspdf.umd.min.js>/script>script>(function(){ const TEMPLATES {id:4562,title:General,frontPreview:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/10\/Hammond-Lumber-BC-Template-Generic.png,backPreview:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/12\/Hammond-Lumber-BC-Template-back-new.png,frontPrint:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/10\/Hammond-Lumber-BC-Template-Generic.png,backPrint:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/12\/Hammond-Lumber-BC-Template-back-new.png,sizeIn:3.5x2.0,bleedIn:0.0625,fontUrl:https:\/\/fonts.googleapis.com\/css2?familyPoppins:wght@400;600&displayswap,fontFamily:Poppins, Helvetica, Arial, sans-serif,schema:{stock_map:{Account Manager:Standard - 14pt Matte,Accounts Payable:Standard - 14pt Matte,Accounts Payable Manager:Standard - 14pt Matte,Accounts Receivable:Standard - 14pt Matte,Accounts Receivable Manager:Standard - 14pt Matte,Administration:Standard - 14pt Matte,Administrative Assistant:Standard - 14pt Matte,Assistant Branch Manager:Standard - 14pt Matte,Assistant Yard Manager:Standard - 14pt Matte,Branch Manager:Standard - 14pt Matte,Buyer:Standard - 14pt Matte,Chief Financial Officer:Premium - 16pt Suede Touch,Controller:Standard - 14pt Matte,Credit Department:Standard - 14pt Matte,Credit Department Manager:Standard - 14pt Matte,Data Analyst:Standard - 14pt Matte,Director of Finance:Standard - 14pt Matte,Director of Organizational Development:Premium - 16pt Suede Touch,Executive Assistant:Standard - 14pt Matte,Executive Secretary:Standard - 14pt Matte,Financial Analyst:Standard - 14pt Matte,Fleet Administrator:Standard - 14pt Matte,Garage Supervisor:Standard - 14pt Matte,Human Resources:Standard - 14pt Matte,Human Resources Manager:Standard - 14pt Matte,Inside Receiver:Standard - 14pt Matte,Inside Sales:Standard - 14pt Matte,Inventory Control Manager:Standard - 14pt Matte,Inventory Control Specialist:Standard - 14pt Matte,IT Manager:Standard - 14pt Matte,IT Specialist:Standard - 14pt Matte,IT Support:Standard - 14pt Matte,Management Trainee:Standard - 14pt Matte,Marketing:Standard - 14pt Matte,Merchandiser:Standard - 14pt Matte,Millwork Admin Support:Standard - 14pt Matte,Millwork Field Service:Standard - 14pt Matte,Millwork Field Service Assistant:Standard - 14pt Matte,Millwork Purchasing:Standard - 14pt Matte,Millwork Sales:Standard - 14pt Matte,Millwork Sales Support:Standard - 14pt Matte,Network Engineer:Standard - 14pt Matte,Outside Receiver:Standard - 14pt Matte,Payroll & Benefits Manager:Standard - 14pt Matte,Payroll & Benefits Specialist:Standard - 14pt Matte,Planer Mill Manager:Standard - 14pt Matte,President & Chief Executive Officer:Premium - 16pt Suede Touch,Regional Vice President of Purchasing:Standard - 14pt Matte,Retail Store Manager:Standard - 14pt Matte,Retail\/Hardlines Manager:Standard - 14pt Matte,Safety & Risk Management Manager:Standard - 14pt Matte,Sales Support:Standard - 14pt Matte,Sawmill Manager:Standard - 14pt Matte,Senior Systems Engineer:Standard - 14pt Matte,Senior Vice President of Sales:Standard - 14pt Matte,Shipper:Standard - 14pt Matte,Shipper & Yard Manager:Standard - 14pt Matte,Special Projects & Sales:Standard - 14pt Matte,Trainer:Standard - 14pt Matte,Training Manager:Standard - 14pt Matte,Vice President of Business Processes:Standard - 14pt Matte,Vice President of Human Resources:Standard - 14pt Matte,Vice President of Operations, Central Region:Standard - 14pt Matte,Vice President of Operations, Downeast Region:Standard - 14pt Matte,Vice President of Operations, Midcoast Region:Standard - 14pt Matte,Vice President of Operations, Northern Region:Standard - 14pt Matte,Vice President of Operations, Southern Region:Standard - 14pt Matte,Vice President of Purchasing:Standard - 14pt Matte,Vice President of Safety & Risk Management:Standard - 14pt Matte,Vice President of Technology:Standard - 14pt Matte,Yard Manager:Standard - 14pt Matte},fields:{key:full_name,label:Full Name,x_px:530,y_px:120,font_size_px:45,font_weight:600,letter_spacing:0,color:#000000,align:left,max_chars:30},{key:title,label:Job Title,type:select,x_px:530,y_px:165,font_size_px:35,font_weight:400,letter_spacing:0,color:#000000,align:left,options:{label:Account Manager,value:Account Manager,allow_cell:true},{label:Accounts Payable,value:Accounts Payable,allow_cell:true},{label:Accounts Payable Manager,value:Accounts Payable Manager,allow_cell:true},{label:Accounts Receivable,value:Accounts Receivable,allow_cell:true},{label:Accounts Receivable Manager,value:Accounts Receivable Manager,allow_cell:true},{label:Administration,value:Administration,allow_cell:true},{label:Administrative Assistant,value:Administrative Assistant,allow_cell:true},{label:Assistant Branch Manager,value:Assistant Branch Manager,allow_cell:true},{label:Assistant Yard Manager,value:Assistant Yard Manager,allow_cell:true},{label:Branch Manager,value:Branch Manager,allow_cell:true},{label:Buyer,value:Buyer,allow_cell:true},{label:Chief Financial Officer,value:Chief Financial Officer,allow_cell:true},{label:Controller,value:Controller,allow_cell:true},{label:Credit Department,value:Credit Department,allow_cell:true},{label:Credit Department Manager,value:Credit Department Manager,allow_cell:true},{label:Data Analyst,value:Data Analyst,allow_cell:true},{label:Director of Finance,value:Director of Finance,allow_cell:true},{label:Director of Organizational Development,value:Director of Organizational Development,allow_cell:true},{label:Executive Assistant,value:Executive Assistant,allow_cell:true},{label:Executive Secretary,value:Executive Secretary,allow_cell:true},{label:Financial Analyst,value:Financial Analyst,allow_cell:true},{label:Fleet Administrator,value:Fleet Administrator,allow_cell:true},{label:Garage Supervisor,value:Garage Supervisor,allow_cell:true},{label:Human Resources,value:Human Resources,allow_cell:true},{label:Human Resources Manager,value:Human Resources Manager,allow_cell:true},{label:Inside Receiver,value:Inside Receiver,allow_cell:true},{label:Inside Sales,value:Inside Sales,allow_cell:true},{label:Inventory Control Manager,value:Inventory Control Manager,allow_cell:true},{label:Inventory Control Specialist,value:Inventory Control Specialist,allow_cell:true},{label:IT Manager,value:IT Manager,allow_cell:true},{label:IT Specialist,value:IT Specialist,allow_cell:true},{label:IT Support,value:IT Support,allow_cell:true},{label:Management Trainee,value:Management Trainee,allow_cell:true},{label:Marketing,value:Marketing,allow_cell:true},{label:Merchandiser,value:Merchandiser,allow_cell:true},{label:Millwork Admin Support,value:Millwork Admin Support,allow_cell:true},{label:Millwork Field Service,value:Millwork Field Service,allow_cell:true},{label:Millwork Field Service Assistant,value:Millwork Field Service Assistant,allow_cell:true},{label:Millwork Purchasing,value:Millwork Purchasing,allow_cell:true},{label:Millwork Sales,value:Millwork Sales,allow_cell:true},{label:Millwork Sales Support,value:Millwork Sales Support,allow_cell:true},{label:Network Engineer,value:Network Engineer,allow_cell:true},{label:Outside Receiver,value:Outside Receiver,allow_cell:true},{label:Payroll & Benefits Manager,value:Payroll & Benefits Manager,allow_cell:true},{label:Payroll & Benefits Specialist,value:Payroll & Benefits Specialist,allow_cell:true},{label:Planer Mill Manager,value:Planer Mill Manager,allow_cell:true},{label:President & Chief Executive Officer,value:President & Chief Executive Officer,allow_cell:true},{label:Regional Vice President of Purchasing,value:Regional Vice President of Purchasing,allow_cell:true},{label:Retail Store Manager,value:Retail Store Manager,allow_cell:true},{label:Retail\/Hardlines Manager,value:Retail\/Hardlines Manager,allow_cell:true},{label:Safety & Risk Management Manager,value:Safety & Risk Management Manager,allow_cell:true},{label:Sales Support,value:Sales Support,allow_cell:true},{label:Sawmill Manager,value:Sawmill Manager,allow_cell:true},{label:Senior Systems Engineer,value:Senior Systems Engineer,allow_cell:true},{label:Senior Vice President of Sales,value:Senior Vice President of Sales,allow_cell:true},{label:Shipper,value:Shipper,allow_cell:true},{label:Shipper & Yard Manager,value:Shipper & Yard Foreman,allow_cell:true},{label:Special Projects & Sales,value:Special Projects & Sales,allow_cell:true},{label:Trainer,value:Trainer,allow_cell:true},{label:Training Manager,value:Training Manager,allow_cell:true},{label:Vice President of Business Processes,value:Vice President of Business Processes,allow_cell:true},{label:Vice President of Human Resources,value:Vice President of Human Resources,allow_cell:true},{label:Vice President of Operations, Central Region,value:Vice President of Operations, Central Region,allow_cell:true},{label:Vice President of Operations, Downeast Region,value:Vice President of Operations, Downeast Region,allow_cell:true},{label:Vice President of Operations, Midcoast Region,value:Vice President of Operations, Midcoast Region,allow_cell:true},{label:Vice President of Operations, Northern Region,value:Vice President of Operations, Northern Region,allow_cell:true},{label:Vice President of Operations, Southern Region,value:Vice President of Operations, Southern Region,allow_cell:true},{label:Vice President of Purchasing,value:Vice President of Purchasing,allow_cell:true},{label:Vice President of Safety & Risk Management,value:Vice President of Safety & Risk Management,allow_cell:true},{label:Vice President of Technology,value:Vice President of Technology,allow_cell:true},{label:Yard Manager,value:Yard Manager,allow_cell:true}},{key:email,label:Email,x_px:530,y_px:237,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:60},{key:office,label:Office Phone,x_px:530,y_px:285,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:24},{key:cell,label:Cell Phone,x_px:530,y_px:330,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:24},{key:fax,label:Fax Number,x_px:530,y_px:375,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:24},{key:address,label:Store Location,type:select,x_px:530,y_px:435,line_height_px:40,font_size_px:32,font_weight:300,color:#000000,align:left,options:{label:Auburn, ME,value:282 Poland Road\nAuburn, ME 04210},{label:Bangor, ME,value:1087 Hammond Street\nBangor, ME 04401},{label:Bar Harbor, ME,value:1513 State Hwy 102\nBar Harbor, ME 04609},{label:Belfast, ME,value:30 Belmont Avenue\nBelfast, ME 04915},{label:Belgrade, ME,value:2 Hammond Drive\nBelgrade, ME 04917},{label:Blue Hill, ME,value:112 Main Street\nBlue Hill, ME 04614},{label:Boothbay Harbor, ME,value:276 Townsend Ave\nBoothbay Harbor, ME 04538},{label:Brunswick, ME,value:20 Spring Street\nBrunswick, ME 04011},{label:Bucksport (Orland), ME,value:4 Gross Point Road\nOrland, ME 04472},{label:Calais, ME,value:372 South Street\nCalais, ME 04619},{label:Camden, ME,value:50 Union Street\nCamden, ME 04843},{label:Cherryfield, ME,value:82 Milbridge Road\nCherryfield, ME 04622},{label:Corinth, ME,value:534 Main St\nCorinth, ME 04427},{label:Damariscotta, ME,value:511 Main Street\nDamariscotta, ME 04543},{label:Dover-Foxcroft, ME,value:404 Essex Street\nDover-Foxcroft, ME 04426},{label:Ellsworth, ME,value:261 State Street\nEllsworth, ME 04605},{label:Fairfield, ME,value:5 Summit Street\nFairfield, ME 04937},{label:Farmington, ME,value:389 Farmington Falls Rd\nFarmington, ME 04938},{label:Gorham, ME,value:519 Fort Hill Road\nGorham, ME 04038},{label:Greenville, ME,value:16 Moosehead Lake Rd\nGreenville, ME 04441},{label:Greenville (Lily Bay Rd), ME,value:38 Lily Bay Rd\nGreenville, ME 04441},{label:Kingfield, ME,value:354 Main Street\nKingfield, ME 04947},{label:Livermore Falls, ME,value:33 Depot Street\nLivermore Falls, ME 04254},{label:Machias, ME,value:9 Quoddy Lane\nMachias, ME 04654},{label:Madison (Rt 201), ME,value:145 Lakewood Road\nMadison, ME 04950},{label:Mexico, ME,value:369 River Road\nMexico, ME 04257},{label:Old Town, ME,value:1360 Bennoch Road\nOld Town, ME 04489},{label:Palmyra, ME,value:1524 Main Street\nPalmyra, ME 04965},{label:Portland, ME,value:300 Riverside Street\nPortland, ME 04103},{label:Rochester, NH,value:298 North Main Street\nRochester, NH 03867},{label:Rockland, ME,value:103 Maverick Street\nRockland, ME 04841},{label:Skowhegan, ME,value:34 Pennell Street\nSkowhegan, ME 04976},{label:Waterville, ME,value:14 North Street\nWaterville, ME 04901},{label:West Enfield, ME,value:35 Bridge Street\nWest Enfield, ME 04493}},back_fields:}},{id:4656,title:Home Planning,frontPreview:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/10\/Hammond-Lumber-Home-Planning-Front.png,backPreview:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/12\/Hammond-Lumber-BC-Template-back-new.png,frontPrint:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/12\/Hammond-Lumber-BC-Template-back-new.png,backPrint:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/10\/Hammond-Lumber-BC-Template-new.png,sizeIn:3.5x2.0,bleedIn:0.0625,fontUrl:https:\/\/fonts.googleapis.com\/css2?familyPoppins:wght@400;600&displayswap,fontFamily:Poppins, Helvetica, Arial, sans-serif,schema:{stock_map:{Drafter & CAD Designer:Standard - 14pt Matte,Drafter & Estimator:Standard - 14pt Matte,Drafting Manager:Standard - 14pt Matte,Estimator:Standard - 14pt Matte,Engineered Wood Product Specialist:Standard - 14pt Matte},fields:{key:full_name,label:Full Name,x_px:530,y_px:120,font_size_px:45,font_weight:600,letter_spacing:0,color:#000000,align:left,max_chars:30},{key:title,label:Job Title,type:select,x_px:530,y_px:165,font_size_px:35,font_weight:400,letter_spacing:0,color:#000000,align:left,options:{label:Drafter & CAD Designer,value:Drafter & CAD Designer,allow_cell:true},{label:Drafter & Estimator,value:Drafter & Estimator,allow_cell:true},{label:Drafting Manager,value:Drafting Manager,allow_cell:true},{label:Estimator,value:Estimator,allow_cell:true},{label:Engineered Wood Product Specialist,value:Engineered Wood Product Specialist,allow_cell:true}},{key:email,label:Email,x_px:530,y_px:237,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:60},{key:office,label:Office Phone,x_px:530,y_px:285,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:24},{key:cell,label:Cell Phone,x_px:530,y_px:330,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:24},{key:fax,label:Fax Number,x_px:530,y_px:375,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:24},{key:address,label:Store Location,type:select,x_px:530,y_px:435,line_height_px:40,font_size_px:32,font_weight:300,color:#000000,align:left,options:{label:Auburn, ME,value:282 Poland Road\nAuburn, ME 04210},{label:Bangor, ME,value:1087 Hammond Street\nBangor, ME 04401},{label:Bar Harbor, ME,value:1513 State Hwy 102\nBar Harbor, ME 04609},{label:Belfast, ME,value:30 Belmont Avenue\nBelfast, ME 04915},{label:Belgrade, ME,value:2 Hammond Drive\nBelgrade, ME 04917},{label:Blue Hill, ME,value:112 Main Street\nBlue Hill, ME 04614},{label:Boothbay Harbor, ME,value:276 Townsend Ave\nBoothbay Harbor, ME 04538},{label:Brunswick, ME,value:20 Spring Street\nBrunswick, ME 04011},{label:Bucksport (Orland), ME,value:4 Gross Point Road\nOrland, ME 04472},{label:Calais, ME,value:372 South Street\nCalais, ME 04619},{label:Camden, ME,value:50 Union Street\nCamden, ME 04843},{label:Cherryfield, ME,value:82 Milbridge Road\nCherryfield, ME 04622},{label:Corinth, ME,value:534 Main St\nCorinth, ME 04427},{label:Damariscotta, ME,value:511 Main Street\nDamariscotta, ME 04543},{label:Dover-Foxcroft, ME,value:404 Essex Street\nDover-Foxcroft, ME 04426},{label:Ellsworth, ME,value:261 State Street\nEllsworth, ME 04605},{label:Fairfield, ME,value:5 Summit Street\nFairfield, ME 04937},{label:Farmington, ME,value:389 Farmington Falls Rd\nFarmington, ME 04938},{label:Gorham, ME,value:519 Fort Hill Road\nGorham, ME 04038},{label:Greenville, ME,value:16 Moosehead Lake Rd\nGreenville, ME 04441},{label:Greenville (Lily Bay Rd), ME,value:38 Lily Bay Rd\nGreenville, ME 04441},{label:Kingfield, ME,value:354 Main Street\nKingfield, ME 04947},{label:Livermore Falls, ME,value:33 Depot Street\nLivermore Falls, ME 04254},{label:Machias, ME,value:9 Quoddy Lane\nMachias, ME 04654},{label:Madison (Rt 201), ME,value:145 Lakewood Road\nMadison, ME 04950},{label:Mexico, ME,value:369 River Road\nMexico, ME 04257},{label:Old Town, ME,value:1360 Bennoch Road\nOld Town, ME 04489},{label:Palmyra, ME,value:1524 Main Street\nPalmyra, ME 04965},{label:Portland, ME,value:300 Riverside Street\nPortland, ME 04103},{label:Rochester, NH,value:298 North Main Street\nRochester, NH 03867},{label:Rockland, ME,value:103 Maverick Street\nRockland, ME 04841},{label:Skowhegan, ME,value:34 Pennell Street\nSkowhegan, ME 04976},{label:Waterville, ME,value:14 North Street\nWaterville, ME 04901},{label:West Enfield, ME,value:35 Bridge Street\nWest Enfield, ME 04493}},back_fields:}},{id:4660,title:Kitchen, Bath & Flooring Center,frontPreview:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/10\/Hammond-Lumber-BC-Template-Kitchen-Front-1.png,backPreview:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/12\/Hammond-Lumber-BC-Template-back-new.png,frontPrint:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/10\/Hammond-Lumber-BC-Template-Kitchen-Front-1.png,backPrint:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/12\/Hammond-Lumber-BC-Template-back-new.png,sizeIn:3.5x2.0,bleedIn:0.0625,fontUrl:https:\/\/fonts.googleapis.com\/css2?familyPoppins:wght@400;600&displayswap,fontFamily:Poppins, Helvetica, Arial, sans-serif,schema:{stock_map:{Kitchen & Bath Designer:Standard - 14pt Matte,Kitchen & Bath Manager:Standard - 14pt Matte,Kitchen & Bath Support:Standard - 14pt Matte,Flooring Manager:Standard - 14pt Matte,Vice President of Kitchen, Bath & Flooring:Standard - 14pt Matte},fields:{key:full_name,label:Full Name,x_px:530,y_px:120,font_size_px:45,font_weight:600,letter_spacing:0,color:#000000,align:left,max_chars:30},{key:title,label:Job Title,type:select,x_px:530,y_px:165,font_size_px:35,font_weight:400,letter_spacing:0,color:#000000,align:left,options:{label:Flooring Manager,value:Flooring Manager,allow_cell:true},{label:Kitchen & Bath Designer,value:Kitchen & Bath Designer,allow_cell:true},{label:Kitchen & Bath Manager,value:Kitchen & Bath Manager,allow_cell:true},{label:Kitchen & Bath Support,value:Kitchen & Bath Support,allow_cell:true},{label:Vice President of Kitchen, Bath & Flooring,value:Vice President of Kitchen, Bath & Flooring,allow_cell:true}},{key:email,label:Email,x_px:530,y_px:237,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:60},{key:office,label:Office Phone,x_px:530,y_px:285,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:24},{key:cell,label:Cell Phone,x_px:530,y_px:330,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:24},{key:fax,label:Fax Number,x_px:530,y_px:375,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:24},{key:address,label:Store Location,type:select,x_px:530,y_px:435,line_height_px:40,font_size_px:32,font_weight:300,color:#000000,align:left,options:{label:Auburn, ME,value:282 Poland Road\nAuburn, ME 04210},{label:Bangor, ME,value:1087 Hammond Street\nBangor, ME 04401},{label:Bar Harbor, ME,value:1513 State Hwy 102\nBar Harbor, ME 04609},{label:Belfast, ME,value:30 Belmont Avenue\nBelfast, ME 04915},{label:Belgrade, ME,value:2 Hammond Drive\nBelgrade, ME 04917},{label:Blue Hill, ME,value:112 Main Street\nBlue Hill, ME 04614},{label:Boothbay Harbor, ME,value:276 Townsend Ave\nBoothbay Harbor, ME 04538},{label:Brunswick, ME,value:20 Spring Street\nBrunswick, ME 04011},{label:Bucksport (Orland), ME,value:4 Gross Point Road\nOrland, ME 04472},{label:Calais, ME,value:372 South Street\nCalais, ME 04619},{label:Camden, ME,value:50 Union Street\nCamden, ME 04843},{label:Cherryfield, ME,value:82 Milbridge Road\nCherryfield, ME 04622},{label:Corinth, ME,value:534 Main St\nCorinth, ME 04427},{label:Damariscotta, ME,value:511 Main Street\nDamariscotta, ME 04543},{label:Dover-Foxcroft, ME,value:404 Essex Street\nDover-Foxcroft, ME 04426},{label:Ellsworth, ME,value:261 State Street\nEllsworth, ME 04605},{label:Fairfield, ME,value:5 Summit Street\nFairfield, ME 04937},{label:Farmington, ME,value:389 Farmington Falls Rd\nFarmington, ME 04938},{label:Gorham, ME,value:519 Fort Hill Road\nGorham, ME 04038},{label:Greenville, ME,value:16 Moosehead Lake Rd\nGreenville, ME 04441},{label:Greenville (Lily Bay Rd), ME,value:38 Lily Bay Rd\nGreenville, ME 04441},{label:Kingfield, ME,value:354 Main Street\nKingfield, ME 04947},{label:Livermore Falls, ME,value:33 Depot Street\nLivermore Falls, ME 04254},{label:Machias, ME,value:9 Quoddy Lane\nMachias, ME 04654},{label:Madison (Rt 201), ME,value:145 Lakewood Road\nMadison, ME 04950},{label:Mexico, ME,value:369 River Road\nMexico, ME 04257},{label:Old Town, ME,value:1360 Bennoch Road\nOld Town, ME 04489},{label:Palmyra, ME,value:1524 Main Street\nPalmyra, ME 04965},{label:Portland, ME,value:300 Riverside Street\nPortland, ME 04103},{label:Rochester, NH,value:298 North Main Street\nRochester, NH 03867},{label:Rockland, ME,value:103 Maverick Street\nRockland, ME 04841},{label:Skowhegan, ME,value:34 Pennell Street\nSkowhegan, ME 04976},{label:Waterville, ME,value:14 North Street\nWaterville, ME 04901},{label:West Enfield, ME,value:35 Bridge Street\nWest Enfield, ME 04493}},back_fields:}},{id:4679,title:ShoreMaster,frontPreview:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/10\/Hammond-Lumber-BC-Template-2.png,backPreview:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/12\/Hammond-Lumber-BC-Template-back-new.png,frontPrint:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/10\/Hammond-Lumber-BC-Template-2.png,backPrint:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/12\/Hammond-Lumber-BC-Template-back-new.png,sizeIn:3.5x2.0,bleedIn:0.0625,fontUrl:https:\/\/fonts.googleapis.com\/css2?familyPoppins:wght@400;600&displayswap,fontFamily:Poppins, Helvetica, Arial, sans-serif,schema:{stock_map:{Account Manager:Standard - 14pt Matte,Inside Sales:Standard - 14pt Matte},fields:{key:full_name,label:Full Name,x_px:530,y_px:120,font_size_px:45,font_weight:600,letter_spacing:0,color:#000000,align:left,max_chars:30},{key:title,label:Job Title,type:select,x_px:530,y_px:165,font_size_px:35,font_weight:400,letter_spacing:0,color:#000000,align:left,options:{label:Account Manager,value:Account Manager,allow_cell:true},{label:Inside Sales,value:Inside Sales,allow_cell:true}},{key:email,label:Email,x_px:530,y_px:237,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:60},{key:office,label:Office Phone,x_px:530,y_px:285,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:24},{key:cell,label:Cell Phone,x_px:530,y_px:330,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:24},{key:fax,label:Fax Number,x_px:530,y_px:375,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:24},{key:address,label:Store Location,type:select,x_px:530,y_px:435,line_height_px:40,font_size_px:32,font_weight:300,color:#000000,align:left,options:{label:Auburn, ME,value:282 Poland Road\nAuburn, ME 04210},{label:Bangor, ME,value:1087 Hammond Street\nBangor, ME 04401},{label:Bar Harbor, ME,value:1513 State Hwy 102\nBar Harbor, ME 04609},{label:Belfast, ME,value:30 Belmont Avenue\nBelfast, ME 04915},{label:Belgrade, ME,value:2 Hammond Drive\nBelgrade, ME 04917},{label:Blue Hill, ME,value:112 Main Street\nBlue Hill, ME 04614},{label:Boothbay Harbor, ME,value:276 Townsend Ave\nBoothbay Harbor, ME 04538},{label:Brunswick, ME,value:20 Spring Street\nBrunswick, ME 04011},{label:Bucksport (Orland), ME,value:4 Gross Point Road\nOrland, ME 04472},{label:Calais, ME,value:372 South Street\nCalais, ME 04619},{label:Camden, ME,value:50 Union Street\nCamden, ME 04843},{label:Cherryfield, ME,value:82 Milbridge Road\nCherryfield, ME 04622},{label:Corinth, ME,value:534 Main St\nCorinth, ME 04427},{label:Damariscotta, ME,value:511 Main Street\nDamariscotta, ME 04543},{label:Dover-Foxcroft, ME,value:404 Essex Street\nDover-Foxcroft, ME 04426},{label:Ellsworth, ME,value:261 State Street\nEllsworth, ME 04605},{label:Fairfield, ME,value:5 Summit Street\nFairfield, ME 04937},{label:Farmington, ME,value:389 Farmington Falls Rd\nFarmington, ME 04938},{label:Gorham, ME,value:519 Fort Hill Road\nGorham, ME 04038},{label:Greenville, ME,value:16 Moosehead Lake Rd\nGreenville, ME 04441},{label:Greenville (Lily Bay Rd), ME,value:38 Lily Bay Rd\nGreenville, ME 04441},{label:Kingfield, ME,value:354 Main Street\nKingfield, ME 04947},{label:Livermore Falls, ME,value:33 Depot Street\nLivermore Falls, ME 04254},{label:Machias, ME,value:9 Quoddy Lane\nMachias, ME 04654},{label:Madison (Rt 201), ME,value:145 Lakewood Road\nMadison, ME 04950},{label:Mexico, ME,value:369 River Road\nMexico, ME 04257},{label:Old Town, ME,value:1360 Bennoch Road\nOld Town, ME 04489},{label:Palmyra, ME,value:1524 Main Street\nPalmyra, ME 04965},{label:Portland, ME,value:300 Riverside Street\nPortland, ME 04103},{label:Rochester, NH,value:298 North Main Street\nRochester, NH 03867},{label:Rockland, ME,value:103 Maverick Street\nRockland, ME 04841},{label:Skowhegan, ME,value:34 Pennell Street\nSkowhegan, ME 04976},{label:Waterville, ME,value:14 North Street\nWaterville, ME 04901},{label:West Enfield, ME,value:35 Bridge Street\nWest Enfield, ME 04493}},back_fields:}},{id:4677,title:Maine Pine Log Homes,frontPreview:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/11\/Hammond-Lumber-BC-Template.png,backPreview:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/12\/Hammond-Lumber-BC-Template-back-new.png,frontPrint:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/11\/Hammond-Lumber-BC-Template.png,backPrint:https:\/\/printing.hammondlumber.com\/wp-content\/uploads\/2025\/12\/Hammond-Lumber-BC-Template-back-new.png,sizeIn:3.5x2.0,bleedIn:0.0625,fontUrl:https:\/\/fonts.googleapis.com\/css2?familyPoppins:wght@400;600&displayswap,fontFamily:Poppins, Helvetica, Arial, sans-serif,schema:{stock_map:{Log Home Specialist:Standard - 14pt Matte},fields:{key:full_name,label:Full Name,x_px:530,y_px:120,font_size_px:45,font_weight:600,letter_spacing:0,color:#000000,align:left,max_chars:30},{key:title,label:Job Title,type:select,x_px:530,y_px:165,font_size_px:35,font_weight:400,letter_spacing:0,color:#000000,align:left,options:{label:Log Home Specialist,value:Log Home Specialist,allow_cell:true}},{key:email,label:Email,x_px:530,y_px:237,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:60},{key:office,label:Office Phone,x_px:530,y_px:285,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:24},{key:cell,label:Cell Phone,x_px:530,y_px:330,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:24},{key:fax,label:Fax Number,x_px:530,y_px:375,font_size_px:32,font_weight:300,color:#000000,align:left,max_chars:24},{key:address,label:Store Location,type:select,x_px:530,y_px:435,line_height_px:40,font_size_px:32,font_weight:300,color:#000000,align:left,options:{label:Auburn, ME,value:282 Poland Road\nAuburn, ME 04210},{label:Bangor, ME,value:1087 Hammond Street\nBangor, ME 04401},{label:Bar Harbor, ME,value:1513 State Hwy 102\nBar Harbor, ME 04609},{label:Belfast, ME,value:30 Belmont Avenue\nBelfast, ME 04915},{label:Belgrade, ME,value:2 Hammond Drive\nBelgrade, ME 04917},{label:Blue Hill, ME,value:112 Main Street\nBlue Hill, ME 04614},{label:Boothbay Harbor, ME,value:276 Townsend Ave\nBoothbay Harbor, ME 04538},{label:Brunswick, ME,value:20 Spring Street\nBrunswick, ME 04011},{label:Bucksport (Orland), ME,value:4 Gross Point Road\nOrland, ME 04472},{label:Calais, ME,value:372 South Street\nCalais, ME 04619},{label:Camden, ME,value:50 Union Street\nCamden, ME 04843},{label:Cherryfield, ME,value:82 Milbridge Road\nCherryfield, ME 04622},{label:Corinth, ME,value:534 Main St\nCorinth, ME 04427},{label:Damariscotta, ME,value:511 Main Street\nDamariscotta, ME 04543},{label:Dover-Foxcroft, ME,value:404 Essex Street\nDover-Foxcroft, ME 04426},{label:Ellsworth, ME,value:261 State Street\nEllsworth, ME 04605},{label:Fairfield, ME,value:5 Summit Street\nFairfield, ME 04937},{label:Farmington, ME,value:389 Farmington Falls Rd\nFarmington, ME 04938},{label:Gorham, ME,value:519 Fort Hill Road\nGorham, ME 04038},{label:Greenville, ME,value:16 Moosehead Lake Rd\nGreenville, ME 04441},{label:Greenville (Lily Bay Rd), ME,value:38 Lily Bay Rd\nGreenville, ME 04441},{label:Kingfield, ME,value:354 Main Street\nKingfield, ME 04947},{label:Livermore Falls, ME,value:33 Depot Street\nLivermore Falls, ME 04254},{label:Machias, ME,value:9 Quoddy Lane\nMachias, ME 04654},{label:Madison (Rt 201), ME,value:145 Lakewood Road\nMadison, ME 04950},{label:Mexico, ME,value:369 River Road\nMexico, ME 04257},{label:Old Town, ME,value:1360 Bennoch Road\nOld Town, ME 04489},{label:Palmyra, ME,value:1524 Main Street\nPalmyra, ME 04965},{label:Portland, ME,value:300 Riverside Street\nPortland, ME 04103},{label:Rochester, NH,value:298 North Main Street\nRochester, NH 03867},{label:Rockland, ME,value:103 Maverick Street\nRockland, ME 04841},{label:Skowhegan, ME,value:34 Pennell Street\nSkowhegan, ME 04976},{label:Waterville, ME,value:14 North Street\nWaterville, ME 04901},{label:West Enfield, ME,value:35 Bridge Street\nWest Enfield, ME 04493}},back_fields:}}; const defaultId 4562; // NEW: Department -> Title map used ONLY for “General Business Card” const GBC_TEMPLATE_NAME general; // case-insensitive compare const GBC_DEPT_TITLE_MAP { dept: Admin, titles: Administration,Administrative Assistant,Executive Assistance,Executive Secretary,Inside Receiver }, { dept: Delivery & Yard, titles: Assistant Yard Manager,Outside Receiver,Shipper,Shipper & Yard Foreman,Yard Manager }, { dept: Finance, titles: Accounts Payable,Accounts Payable Manager,Accounts Receivable,Accounts Receivable Manager, Chief Financial Officer,Controller,Credit Department,Credit Department Manager,Director of Finance,Financial Analyst }, { dept: Fleet & Garage, titles: Fleet Administrator,Garage Supervisor }, { dept: Human Resources, titles: Human Resources,Human Resources Manager,Vice President of Human Resources }, { dept: Inventory, titles: Inventory Control Manager,Inventory Control Specialist }, { dept: Management, titles: ,Assistant Branch Manager,Branch Manager,Director of Organizational Development,Management Trainee, President & Chief Executive Officer,Retail Store Manager,Vice President of Business Processes,Vice President, Vice President of Operations, Central Region,Vice President of Operations, Downeast Region, Vice President of Operations, Midcoast Region,Vice President of Operations, Northern Region, Vice President of Operations, Southern Region }, { dept: Manufacturing, titles: Metals Manager,Planer Mill Manager,Sawmill Manager }, { dept: Marketing, titles: Marketing }, { dept: Millwork, titles: Millwork Admin Support,Millwork Field Service,Millwork Field Service Assistant,Millwork Manager, Millwork Purchasing,Millwork Sales,Millwork Sales Support }, { dept: Payroll & Benefits, titles: Payroll & Benefits Manager,Payroll & Benefits Specialist }, { dept: Purchasing, titles: Buyer,Regional Vice President of Purchasing,Retail/Hardlines Manager,Vice President of Purchasing }, { dept: Safety, titles: Safety & Risk Management Manager,Vice President of Safety & Risk Management }, { dept: Sales, titles: Account Manager,Inside Sales,Merchandiser,Paint Sales,Sales Support,Senior Vice President of Sales,Special Projects & Sales }, { dept: Technology, titles: Data Analyst,IT Manager,IT Specialist,IT Support,Network Engineer,Senior Systems Engineer,Vice President of Technology }, { dept: Training, titles: Trainer,Training Manager }, ; const GBC_DEPTS GBC_DEPT_TITLE_MAP.map(d > d.dept); const $tplSel document.getElementById(bc-template); const $fieldsWrap document.getElementById(bc-fields); const $tplId document.getElementById(bc_template_id); const $payload document.getElementById(bc_payload_json); const $proofPng document.getElementById(bc_proof_png); const $pdfFile document.getElementById(bc_pdf_file); const $qty document.getElementById(bc-qty); const $sendBtn document.getElementById(bc-send-approval); const $status document.getElementById(bc-status); const ajaxUrl document.getElementById(cp_ajax_url).value; const nonce document.getElementById(cp_ajax_nonce).value; const $form document.getElementById(bc-form); const canvasF document.getElementById(bc-canvas-front); const ctxF canvasF.getContext(2d); const canvasB document.getElementById(bc-canvas-back); const ctxB canvasB.getContext(2d); // NEW: modal nodes + in-flight guard const $modal document.getElementById(cp-modal); const $mSending document.getElementById(cp-modal-sending); const $mDone document.getElementById(cp-modal-done); const $mOk document.getElementById(cp-modal-ok); let cpInFlight false; let current null; let fieldValues {}; function showModalSending(){ if (!$modal) return; $mDone.style.display none; $mSending.style.display block; $modal.style.display flex; } function showModalDone(){ if (!$modal) return; $mSending.style.display none; $mDone.style.display block; $mOk.style.display inline-block; } function hideModal(){ if ($modal) $modal.style.display none; } $mOk?.addEventListener(click, hideModal); // ---------- Font readiness helpers ---------- const _fontReadyByUrl new Map(); function getPrimaryFontFamily(stack){ if (!stack) return ; return String(stack).split(,)0.trim().replace(/^|$/g, ); } function ensureWebFontLoaded(url, family){ if (!url) return Promise.resolve(); if (_fontReadyByUrl.has(url)) return _fontReadyByUrl.get(url); if (!document.querySelector(linkdata-bc-font+url+)){ const link document.createElement(link); link.rel stylesheet; link.href url; link.setAttribute(data-bc-font, url); document.head.appendChild(link); } let p Promise.resolve(); if (document.fonts && document.fonts.load){ const fam getPrimaryFontFamily(family || current?.fontFamily || ); const probes document.fonts.load(`400 16px ${fam}`), document.fonts.load(`600 22px ${fam}`), document.fonts.load(`700 40px ${fam}`) ; p Promise.allSettled(probes).then(() > document.fonts.ready).catch(()>undefined); } _fontReadyByUrl.set(url, p); return p; } // -------------------------------------------- function toTitleCaseName(s){ return (s||).replace(/\S+/g, w > w ? (w0.toUpperCase() + w.slice(1).toLowerCase()) : w); } function toLowerEmail(s){ return (s||).toLowerCase(); } function formatPhoneUS(s){ const d (s||).replace(/\D/g,).slice(0,10); const a d.slice(0,3), b d.slice(3,6), c d.slice(6,10); if (d.length 3) return a; if (d.length 6) return `(${a}) ${b}`; return `(${a}) ${b}-${c}`; } function transformValueByKey(key, value){ if (!value) return value; if (key full_name || key first_name || key last_name) return toTitleCaseName(value); if (key email) return toLowerEmail(value); if (office,cell,fax,phone.includes(key)) return formatPhoneUS(value); return value; } function makeId(key){ return bc_ + key; } function computePaperStock(){ const map (current.schema && current.schema.stock_map) ? current.schema.stock_map : {}; const title fieldValuestitle || ; return maptitle || Standard - 14pt Matte; } // NEW: central, safe Paper Stock updater (guards missing inputs) function updatePaperStock(){ const s computePaperStock(); const v document.getElementById(bc_paper_stock_view); const h document.getElementById(bc_paper_stock); if (v) v.value s; if (h) h.value s; fieldValuespaper_stock s; } // NEW: helpers for GBC Department → Title function isGeneralBusinessCard(){ const name (current?.title || ).trim().toLowerCase(); return name GBC_TEMPLATE_NAME; } function titlesForDept(dept){ const hit GBC_DEPT_TITLE_MAP.find(d > d.dept dept); return hit ? hit.titles : ; } function buildGbcDepartmentAndTitleUI(existingTitleFieldDef){ // Container const wrap document.createElement(div); // Department select (required) const deptId bc_department; const deptLabel label classbc-req>Department/label>; let deptHtml `${deptLabel}select id${deptId} required aria-requiredtrue formbc-form>`; GBC_DEPTS.forEach(d > { deptHtml + `option value${d}>${d}/option>`; }); deptHtml + /select>; wrap.innerHTML deptHtml; $fieldsWrap.appendChild(wrap); // Title select (filtered; required) const titleWrap document.createElement(div); titleWrap.id wrap_bc_title_filtered; titleWrap.innerHTML label classbc-req>Job Title/label>select idbc_title required aria-requiredtrue formbc-form>/select>; $fieldsWrap.appendChild(titleWrap); // Init values const $dept document.getElementById(deptId); const $title document.getElementById(bc_title); function repopulateTitles(){ const dept $dept.value; const list titlesForDept(dept); $title.innerHTML ; list.forEach(t > { const opt document.createElement(option); opt.value opt.textContent t; $title.appendChild(opt); }); // set fieldValues and paper stock safely fieldValuesdepartment dept; fieldValuestitle $title.value || ; updatePaperStock(); } $dept.addEventListener(change, () > { repopulateTitles(); render(); }); $title.addEventListener(change, () > { fieldValuestitle $title.value; updatePaperStock(); render(); }); repopulateTitles(); // initial } // end GBC helpers function buildFieldsUI(){ // Clear container $fieldsWrap.innerHTML ; // Schema const schema (current.schema && current.schema.fields) ? current.schema.fields : ; // Reset fieldValues on template switch fieldValues {}; // Normalize any previously saved values (protect against double-escaped newlines) Object.keys(fieldValues || {}).forEach(k > { if (typeof fieldValuesk string) { fieldValuesk fieldValuesk.replace(/\\n/g, \n); } }); schema.forEach(f > { const wrap document.createElement(div); const id makeId(f.key); wrap.id wrap_ + id; const isCell (f.key cell); const isFax (f.key fax); const isRequired !(isCell || isFax); const baseLabel f.label || f.key; const effective (isCell || isFax) ? (baseLabel.replace(/\s*\(optional\)\s*/i, ) + (optional)) : baseLabel; const reqClass isRequired ? bc-req : ; // Intercept Title for “General” template → Dept + filtered Title if (isGeneralBusinessCard() && f.type select && f.key title) { buildGbcDepartmentAndTitleUI(f); return; // skip normal title rendering } if (f.type select) { // label> const label document.createElement(label); if (reqClass) label.className reqClass; label.textContent effective; wrap.appendChild(label); // select> const sel document.createElement(select); sel.id id; sel.setAttribute(form,bc-form); if (isRequired) { sel.required true; sel.setAttribute(aria-required,true); } // Build options using DOM (no HTML string); preserve newlines in values (f.options || ).forEach(o > { const val (o.value ! null ? o.value : o.label); const opt document.createElement(option); opt.value String(val); opt.textContent (o.label || val); sel.appendChild(opt); }); // Initial value fieldValuesf.key sel.value; // If a saved value isn’t in the list, append it safely if (fieldValuesf.key && !Array.from(sel.options).some(op > op.value fieldValuesf.key)) { const opt document.createElement(option); opt.value fieldValuesf.key; opt.textContent fieldValuesf.key; sel.appendChild(opt); sel.value fieldValuesf.key; } sel.addEventListener(change, () > { fieldValuesf.key sel.value; if (f.key title) updatePaperStock(); render(); }); wrap.appendChild(sel); $fieldsWrap.appendChild(wrap); } else { // Input (text/email/tel) const inputType (f.key email) ? email : (office,cell,fax,phone.includes(f.key) ? tel : text); const label document.createElement(label); if (reqClass) label.className reqClass; label.textContent effective; wrap.appendChild(label); const inp document.createElement(input); inp.type inputType; inp.id id; inp.setAttribute(form,bc-form); inp.maxLength (f.max_chars || 120); if (isRequired) { inp.required true; inp.setAttribute(aria-required,true); } const applyAndStore () > { const raw inp.value || ; const formatted transformValueByKey(f.key, raw); if (formatted ! raw) inp.value formatted; fieldValuesf.key inp.value; render(); }; inp.addEventListener(input, applyAndStore); inp.addEventListener(blur, applyAndStore); wrap.appendChild(inp); $fieldsWrap.appendChild(wrap); } }); // Paper Stock (derived; DOM-safe initialization) const stockWrap document.createElement(div); stockWrap.className bc-row; stockWrap.innerHTML label>Paper Stock/label> + input typetext idbc_paper_stock_view value readonly styleopacity:.8;> + input typehidden idbc_paper_stock />; $fieldsWrap.appendChild(stockWrap); // Initialize derived stock once inputs exist updatePaperStock();} // --- Text helpers: auto-shrink & ellipsis --- function measureWidth(ctx, text){ return ctx.measureText(text).width; } function trimToFitWithEllipsis(ctx, text, maxWidth){ if (measureWidth(ctx, text) maxWidth) return text; const ell …; let s text; while (s.length > 0 && measureWidth(ctx, s + ell) > maxWidth) { s s.slice(0, -1); } return s + ell; } function setCtxFont(ctx, weight, sizePx, familyStack){ const fam (familyStack || Helvetica, Arial, sans-serif); ctx.font `${(weight||400)} ${sizePx}px ${fam}`; } function drawAutoShrinkLine(ctx, text, x, y, cfg){ const targetW (cfg.max_width_px ! null ? cfg.max_width_px : (1125 - (cfg.x_px||0) - 20)); let size cfg.font_size_px || 20; const min cfg.min_font_px || Math.max(12, Math.round(size*0.7)); const fam current.fontFamily || Helvetica, Arial, sans-serif; setCtxFont(ctx, cfg.font_weight||400, size, fam); while (size > min && measureWidth(ctx, text) > targetW) { size - 1; setCtxFont(ctx, cfg.font_weight||400, size, fam); } let out text; if (measureWidth(ctx, out) > targetW) out trimToFitWithEllipsis(ctx, out, targetW); ctx.fillStyle cfg.color || #000; ctx.textAlign (cfg.align||left); ctx.textBaseline alphabetic; if (cfg.letter_spacing && cfg.letter_spacing ! 0) { let pos x; for (let i 0; i out.length; i++) { const ch outi; ctx.fillText(ch, pos, y); pos + ctx.measureText(ch).width + cfg.letter_spacing; } } else { ctx.fillText(out, x, y); } } // --- helpers for right safe area + font fitting --- function pxFromInches(inches){ return Math.round((parseFloat(inches||0)||0) * 300); } function rightLimitPx(){ const bleedPx pxFromInches(current.bleedIn || 0.125); const extra 48; return 1125 - (bleedPx + extra); } function drawTextWithLetterSpacing(ctx, text, x, y, letterSpacing){ let pos x; for (let i 0; i text.length; i++) { const ch texti; ctx.fillText(ch, pos, y); pos + ctx.measureText(ch).width + letterSpacing; } } function fitFontSize(ctx, lines, baseSize, minSize, weight, family, letterSpacing){ const longest lines.reduce((a,b)> (a.length>b.length ? a : b), ); let size baseSize; const spacingExtra (s)> (letterSpacing ? Math.max(s.length-1,0) * letterSpacing : 0); while (size > minSize) { ctx.font `${weight||400} ${size}px ${family||Helvetica, Arial, sans-serif}`; const w ctx.measureText(longest).width + spacingExtra(longest); if (w Math.max(0, (fitFontSize._maxWidth || 0))) break; size - 0.5; } return size; }function drawSide(ctx, bgUrl, fields){ return new Promise((resolve) > { ctx.clearRect(0,0,1125,675); const done ()> resolve(); if (!bgUrl){ done(); return; } // --- Compute effective Y positions for Cell/Fax (already present) --- const rawCell (fieldValuescell || ).toString().trim(); const rawFax (fieldValuesfax || ).toString().trim(); const hasCell rawCell.length > 0; const hasFax rawFax.length > 0; let baseCellY null, baseFaxY null; let cellCfg null, faxCfg null; (fields || ).forEach(f > { if (f.key cell) { baseCellY f.y_px || 0; cellCfg f; } if (f.key fax) { baseFaxY f.y_px || 0; faxCfg f; } }); const effectiveFields (fields || ).map(f > ({ ...f })); if (!hasCell && hasFax && baseCellY ! null && faxCfg) { const ef effectiveFields.find(ff > ff.key fax); if (ef) ef.y_px baseCellY; } const img new Image(); img.crossOrigin anonymous; img.onload async () > { ctx.drawImage(img, 0, 0, 1125, 675); (effectiveFields||).forEach(f > { let raw (fieldValuesf.key||).toString(); if (!raw) return; // Normalize prefixes/formatting if (f.key email) raw raw.toLowerCase(); if (f.key office) raw `O: ${raw}`; if (f.key cell) raw `C: ${raw}`; if (f.key fax) raw `F: ${raw}`; const baseSize f.font_size_px || 20; const minSize (f.min_font_size_px ?? f.min_font_px) ?? Math.max(12, Math.round(baseSize * 0.72)); const weight f.font_weight || 400; const family (current.fontFamily || Helvetica, Arial, sans-serif); const x (f.x_px || 0); const yStart (f.y_px || 0); const letterSp (typeof f.letter_spacing number) ? f.letter_spacing : 0; const naturalMax Math.max(0, rightLimitPx() - x); const maxWidth Math.max(0, (f.max_width_px || naturalMax)); const lines String(raw).split(\n); // Fit text fitFontSize._maxWidth maxWidth; let effSize fitFontSize(ctx, lines, baseSize, minSize, weight, family, letterSp); ctx.save(); ctx.fillStyle f.color || #000; ctx.textAlign (f.align||left); ctx.textBaseline alphabetic; ctx.font `${weight} ${effSize}px ${family}`; let y yStart; lines.forEach(line > { if (letterSp) { drawTextWithLetterSpacing(ctx, line, x, y, letterSp); } else { ctx.fillText(line, x, y); } y + (f.line_height_px || Math.round(effSize * 1.2)); }); ctx.restore(); }); done(); }; img.onerror done; img.src bgUrl; });} async function render(){ if (!current) return; await drawSide(ctxF, current.frontPreview || current.frontPrint, (current.schema && current.schema.fields) ? current.schema.fields : ); const hasBack !!(current.backPreview || current.backPrint); canvasB.style.display hasBack ? block : none; if (hasBack){ await drawSide(ctxB, current.backPreview || current.backPrint, (current.schema && current.schema.back_fields) ? current.schema.back_fields : ); } } function payloadJSON(){ // Ensure name values are in Title Case in payload if (fieldValuesfull_name) fieldValuesfull_name toTitleCaseName(fieldValuesfull_name); if (fieldValuesfirst_name) fieldValuesfirst_name toTitleCaseName(fieldValuesfirst_name); if (fieldValueslast_name) fieldValueslast_name toTitleCaseName(fieldValueslast_name); return JSON.stringify({ templateId: current.id, fields: fieldValues, quantity: Number($qty.value || 1) }); } async function buildAssetsThen(cb){ try { if (current.fontUrl) { await ensureWebFontLoaded(current.fontUrl, current.fontFamily); } await render(); await new Promise(r > requestAnimationFrame(r)); // ensure draw flushed // Capture on-screen proof $proofPng.value canvasF.toDataURL(image/png); // Compute target PDF size const sizeStr (current.sizeIn||3.5x2.0).toLowerCase(); const parts sizeStr.split(x); const wIn parseFloat(parts0) || 3.5; const hIn parseFloat(parts1) || 2.0; const targetBleed parseFloat((current.bleedIn||0.0625).replace(/^0-9./g,)) || 0.0625; const fullW wIn + 2*targetBleed; const fullH hIn + 2*targetBleed; const { jsPDF } window.jspdf || {}; if (jsPDF) { const orientation (fullW > fullH) ? landscape : portrait; const pdf new jsPDF({ orientation, unit: in, format: fullW, fullH }); // Front pdf.addImage(canvasF.toDataURL(image/jpeg, 1.0), JPEG, 0, 0, fullW, fullH, undefined, FAST); // Back (if present) const hasBack !!(current.backPreview || current.backPrint); if (hasBack){ pdf.addPage(fullW, fullH, orientation); pdf.addImage(canvasB.toDataURL(image/jpeg, 1.0), JPEG, 0, 0, fullW, fullH, undefined, FAST); } $pdfFile.value pdf.output(datauristring); } else { console.warn(jsPDF not available; skipping PDF generation); } $payload.value payloadJSON(); cb(); } catch(err){ console.warn(PDF generation failed, err); $status.textContent Could not build proof. Please try again.; $sendBtn.disabled false; cpInFlight false; hideModal(); } } function sendForApproval(){ if (cpInFlight) return; // NEW: hard debounce if (!$form.checkValidity()) { $status.textContent Please complete all required fields (marked with *) before sending.; $form.reportValidity(); return; } cpInFlight true; $sendBtn.disabled true; $status.textContent Preparing proof…; showModalSending(); buildAssetsThen(() > { $status.textContent Sending for approval…; fetch(ajaxUrl, { method: POST, credentials: same-origin, headers: {Content-Type:application/x-www-form-urlencoded}, body: new URLSearchParams({ action: cardpress_send_for_approval, nonce: nonce, product_id: 4620, bc_template_id: $tplId.value, bc_payload_json: $payload.value, bc_proof_png: $proofPng.value, bc_pdf_file: $pdfFile.value }) }).then(r>r.json()).then(res>{ if(res && res.success){ $status.textContent Sent for approval. You will receive an email confirmation of your order once it is approved.; showModalDone(); } else { $status.textContent (res && res.data) ? String(res.data) : Failed to send.; $sendBtn.disabled false; cpInFlight false; hideModal(); } }).catch(()>{ $status.textContent Network error.; $sendBtn.disabled false; cpInFlight false; hideModal(); }); }); } // Template switching + first load async function pickTemplate(id){ current TEMPLATES.find(t > String(t.id) String(id)) || TEMPLATES0; $tplId.value current.id; if (current.fontUrl) { await ensureWebFontLoaded(current.fontUrl, current.fontFamily); } buildFieldsUI(); // build fields first updatePaperStock(); // safely initialize derived stock await render(); // then render preview } document.getElementById(bc-send-approval)?.addEventListener(click, sendForApproval); if ($tplSel){ $tplSel.addEventListener(change, function(){ pickTemplate(this.value); }); } // Kick off initial load pickTemplate(defaultId);})();/script> /div>/div>/div>/div>/div>/div>/div>!-- cell_inner -->/div>!-- cell -->/div>!-- port -->/section>/div>span idbt_bb_fe_preview_toggler classbt_bb_fe_preview_toggler titleEdit/Preview>/span> /div>!-- .entry-content-inner --> /div>!-- .entry-content -->/article>!-- #post-7 --> /main>!-- main.site-main --> /div>!-- .site-content --> footer idcolophon classsite-footer> div classsite-footer-widgets> /div>!-- .site-footer-widgets --> div classsite-footer-page> /div>!-- .footer-page --> /footer>!-- footer.site-footer -->/div>!-- .site -->script typespeculationrules>{prefetch:{source:document,where:{and:{href_matches:/*},{not:{href_matches:/wp-*.php,/wp-admin/*,/wp-content/uploads/*,/wp-content/*,/wp-content/plugins/*,/wp-content/themes/maven/*,/*\\?(.+)}},{not:{selector_matches:arel~\nofollow\}},{not:{selector_matches:.no-prefetch, .no-prefetch a}}},eagerness:conservative}}/script> script> (function () { var c document.body.className; c c.replace(/woocommerce-no-js/, woocommerce-js); document.body.className c; })(); /script> script idhammond-bcard-order-js-extra>var HammondBCard {ajaxUrl:https://printing.hammondlumber.com/wp-admin/admin-ajax.php,nonce:d5ce481732};//# sourceURLhammond-bcard-order-js-extra/script>script srchttps://printing.hammondlumber.com/wp-content/plugins/hammond-bcard-order/assets/script.js?ver1.0.0 idhammond-bcard-order-js>/script>script srchttps://printing.hammondlumber.com/wp-content/themes/maven/framework/assets/js/bt_framework_misc.js?ver6.9.1 idboldthemes-framework-misc-js>/script>script idboldthemes-framework-misc-js-after> var boldthemes_dropdown document.querySelector( .widget_categories #cat ); function boldthemes_onCatChange() { if ( boldthemes_dropdown.optionsboldthemes_dropdown.selectedIndex.value > 0 ) { location.href https://printing.hammondlumber.com/?cat+boldthemes_dropdown.optionsboldthemes_dropdown.selectedIndex.value; } } if ( boldthemes_dropdown ! null ) { boldthemes_dropdown.onchange boldthemes_onCatChange; } //# sourceURLboldthemes-framework-misc-js-after/script>script srchttps://printing.hammondlumber.com/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js?ver10.5.2 idsourcebuster-js-js>/script>script idwc-order-attribution-js-extra>var wc_order_attribution {params:{lifetime:1.0e-5,session:30,base64:false,ajaxurl:https://printing.hammondlumber.com/wp-admin/admin-ajax.php,prefix:wc_order_attribution_,allowTracking:true},fields:{source_type:current.typ,referrer:current_add.rf,utm_campaign:current.cmp,utm_source:current.src,utm_medium:current.mdm,utm_content:current.cnt,utm_id:current.id,utm_term:current.trm,utm_source_platform:current.plt,utm_creative_format:current.fmt,utm_marketing_tactic:current.tct,session_entry:current_add.ep,session_start_time:current_add.fd,session_pages:session.pgs,session_count:udata.vst,user_agent:udata.uag}};//# sourceURLwc-order-attribution-js-extra/script>script srchttps://printing.hammondlumber.com/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js?ver10.5.2 idwc-order-attribution-js>/script>script idwc-cart-fragments-js-extra>var wc_cart_fragments_params {ajax_url:/wp-admin/admin-ajax.php,wc_ajax_url:/?wc-ajax%%endpoint%%,cart_hash_key:wc_cart_hash_d3fc102e16a52555181b8d27c5a92e52,fragment_name:wc_fragments_d3fc102e16a52555181b8d27c5a92e52,request_timeout:5000};//# sourceURLwc-cart-fragments-js-extra/script>script srchttps://printing.hammondlumber.com/wp-content/plugins/woocommerce/assets/js/frontend/cart-fragments.min.js?ver10.5.2 idwc-cart-fragments-js defer data-wp-strategydefer>/script>script srchttps://printing.hammondlumber.com/wp-content/plugins/bold-page-builder/content_elements/bt_bb_section/bt_bb_elements.js?ver5.6.7 idbt_bb_elements-js>/script>script idwp-emoji-settings typeapplication/json>{baseUrl:https://s.w.org/images/core/emoji/17.0.2/72x72/,ext:.png,svgUrl:https://s.w.org/images/core/emoji/17.0.2/svg/,svgExt:.svg,source:{concatemoji:https://printing.hammondlumber.com/wp-includes/js/wp-emoji-release.min.js?ver6.9.1}}/script>script typemodule>/*! This file is auto-generated */const aJSON.parse(document.getElementById(wp-emoji-settings).textContent),o(window._wpemojiSettingsa,wpEmojiSettingsSupports),sflag,emoji;function i(e){try{var t{supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);tnew Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const anew Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)>eat)}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var ne.getImageData(16,16,1,1);for(let e0;en.data.length;e++)if(0!n.datae)return!1;return!0}function u(e,t,n,a){switch(t){caseflag:return n(e,\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f,\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f)?!1:!n(e,\ud83c\udde8\ud83c\uddf6,\ud83c\udde8\u200b\ud83c\uddf6)&&!n(e,\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f,\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f);caseemoji:return!a(e,\ud83e\u1fac8)}return!1}function f(e,t,n,a){let r;const o(rundefined!typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement(canvas)).getContext(2d,{willReadFrequently:!0}),s(o.textBaselinetop,o.font600 32px Arial,{});return e.forEach(e>{set(o,e,n,a)}),s}function r(e){var tdocument.createElement(script);t.srce,t.defer!0,document.head.appendChild(t)}a.supports{everything:!0,everythingExceptFlag:!0},new Promise(t>{let nfunction(){try{var eJSON.parse(sessionStorage.getItem(o));if(objecttypeof e&&numbertypeof e.timestamp&&(new Date).valueOf()e.timestamp+604800&&objecttypeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if(undefined!typeof Worker&&undefined!typeof OffscreenCanvas&&undefined!typeof URL&&URL.createObjectURL&&undefined!typeof Blob)try{var epostMessage(+f.toString()+(+JSON.stringify(s),u.toString(),c.toString(),p.toString().join(,)+));,anew Blob(e,{type:text/javascript});const rnew Worker(URL.createObjectURL(a),{name:wpTestEmojiSupports});return void(r.onmessagee>{i(ne.data),r.terminate(),t(n)})}catch(e){}i(nf(s,u,c,p))}t(n)}).then(e>{for(const n in e)a.supportsnen,a.supports.everythinga.supports.everything&&a.supportsn,flag!n&&(a.supports.everythingExceptFlaga.supports.everythingExceptFlag&&a.supportsn);var t;a.supports.everythingExceptFlaga.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((ta.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))});//# sourceURLhttps://printing.hammondlumber.com/wp-includes/js/wp-emoji-loader.min.js/script>script>(function(){function c(){var ba.contentDocument||a.contentWindow.document;if(b){var db.createElement(script);d.innerHTMLwindow.__CF$cv$params{r:9d6ba146983f1571,t:MTc3MjU3MjI0OC4wMDAwMDA};var adocument.createElement(script);a.nonce;a.src/cdn-cgi/challenge-platform/scripts/jsd/main.js;document.getElementsByTagName(head)0.appendChild(a);;b.getElementsByTagName(head)0.appendChild(d)}}if(document.body){var adocument.createElement(iframe);a.height1;a.width1;a.style.positionabsolute;a.style.top0;a.style.left0;a.style.bordernone;a.style.visibilityhidden;document.body.appendChild(a);if(loading!document.readyState)c();else if(window.addEventListener)document.addEventListener(DOMContentLoaded,c);else{var edocument.onreadystatechange||function(){};document.onreadystatechangefunction(b){e(b);loading!document.readyState&&(document.onreadystatechangee,c())}}}})();/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]