1<!DOCTYPE html> 2<html lang="en-US"> 3<head> 4 <meta charset="UTF-8">
5<script> 6var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),document.addEventListener("gform/theme/scripts_loaded",function(){gform.themeScriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,themeScriptsLoaded:!1,isFormEditor:()=>"function"==typeof InitializeEditor,callIfLoaded:function(o){return!(!gform.domLoaded||!gform.scriptsLoaded||!gform.themeScriptsLoaded&&!gform.isFormEditor()||(gform.isFormEditor()&&console.warn("The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1."),o(),0))},initializeOnLoaded:function(o){gform.callIfLoaded(o)||(document.addEventListener("gform_main_scripts_loaded",()=>{gform.scriptsLoaded=!0,gform.callIfLoaded(o)}),document.addEventListener("gform/theme/scripts_loaded",()=>{gform.themeScriptsLoaded=!0,gform.callIfLoaded(o)}),window.addEventListener("DOMContentLoaded",()=>{gform.domLoaded=!0,gform.callIfLoaded(o)}))},hooks:{action:{},filter:{}},addAction:function(o,r,e,t){gform.addHook("action",o,r,e,t)},addFilter:function(o,r,e,t){gform.addHook("filter",o,r,e,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,r){gform.removeHook("action",o,r)},removeFilter:function(o,r,e){gform.removeHook("filter",o,r,e)},addHook:function(o,r,e,t,n){null==gform.hooks[o][r]&&(gform.hooks[o][r]=[]);var d=gform.hooks[o][r];null==n&&(n=r+"_"+d.length),gform.hooks[o][r].push({tag:n,callable:e,priority:t=null==t?10:t})},doHook:function(r,o,e){var t;if(e=Array.prototype.slice.call(e,1),null!=gform.hooks[r][o]&&((o=gform.hooks[r][o]).sort(function(o,r){return o.priority-r.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==r?t.apply(null,e):e[0]=t.apply(null,e)})),"filter"==r)return e[0]},removeHook:function(o,r,t,n){var e;null!=gform.hooks[o][r]&&(e=(e=gform.hooks[o][r]).filter(function(o,r,e){return!!(null!=n&&n!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][r]=e)}}); 7</script>
7 8 9 <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" /> <title> 10 HPBExpo | The Hearth, Patio & Barbecue Expo </title> 11 <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> 12 13 <!-- This site is optimized with the Yoast SEO plugin v28.5 - https://yoast.com/product/yoast-seo-wordpress/ --> 14 <meta name="description" content="HPBExpo is the industryâs premier marketplace for barbecue technology, outdoor kitchens, fireplaces, stoves, chimneys and venting, outdoor living products, and accessories delivers more of what matters most." /> 15 <link rel="canonical" href="https://hpbexpo.com/" /> 16 <meta property="og:locale" content="en_US" /> 17 <meta property="og:type" content="website" /> 18 <meta property="og:title" content="HPBExpo | The Hearth, Patio & Barbecue Expo" /> 19 <meta property="og:description" content="HPBExpo is the industryâs premier marketplace for barbecue technology, outdoor kitchens, fireplaces, stoves, chimneys and venting, outdoor living products, and accessories delivers more of what matters most." /> 20 <meta property="og:url" content="https://hpbexpo.com/" /> 21 <meta property="og:site_name" content="Hearth, Patio & Barbecue Expo" /> 22 <meta property="article:modified_time" content="2026-09-14T19:49:33+00:00" /> 23 <meta property="og:image" content="https://hpbexpo.com/wp-content/uploads/2024/10/yaho.png" /> 24 <meta name="twitter:card" content="summary_large_image" /> 25
25<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/hpbexpo.com\/","url":"https:\/\/hpbexpo.com\/","name":"HPBExpo | The Hearth, Patio & Barbecue Expo","isPartOf":{"@id":"https:\/\/hpbexpo.com\/#website"},"about":{"@id":"https:\/\/hpbexpo.com\/#organization"},"primaryImageOfPage":{"@id":"https:\/\/hpbexpo.com\/#primaryimage"},"image":{"@id":"https:\/\/hpbexpo.com\/#primaryimage"},"thumbnailUrl":"https:\/\/hpbexpo.com\/wp-content\/uploads\/2024\/10\/yaho.png","datePublished":"2024-09-23T12:06:45+00:00","dateModified":"2026-09-14T19:49:33+00:00","description":"HPBExpo is the industryâs premier marketplace for barbecue technology, outdoor kitchens, fireplaces, stoves, chimneys and venting, outdoor living products, and accessories delivers more of what matters most.","breadcrumb":{"@id":"https:\/\/hpbexpo.com\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hpbexpo.com\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hpbexpo.com\/#primaryimage","url":"https:\/\/hpbexpo.com\/wp-content\/uploads\/2024\/10\/yaho.png","contentUrl":"https:\/\/hpbexpo.com\/wp-content\/uploads\/2024\/10\/yaho.png","width":150,"height":55},{"@type":"BreadcrumbList","@id":"https:\/\/hpbexpo.com\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https:\/\/hpbexpo.com\/#website","url":"https:\/\/hpbexpo.com\/","name":"Hearth, Patio & Barbecue Expo","description":"HPBExpo is where the hearth, patio & barbecue industry meets. Find new innovations, earn free education, and grow your business.","publisher":{"@id":"https:\/\/hpbexpo.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hpbexpo.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/hpbexpo.com\/#organization","name":"Hearth, Patio & Barbecue Expo","url":"https:\/\/hpbexpo.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hpbexpo.com\/#\/schema\/logo\/image\/","url":"https:\/\/hpbexpo.com\/wp-content\/uploads\/2024\/09\/HPBEExpo_Logo_final.svg","contentUrl":"https:\/\/hpbexpo.com\/wp-content\/uploads\/2024\/09\/HPBEExpo_Logo_final.svg","width":862,"height":284,"caption":"Hearth, Patio & Barbecue Expo"},"image":{"@id":"https:\/\/hpbexpo.com\/#\/schema\/logo\/image\/"}}]}</script>
25 26 <!-- / Yoast SEO plugin. --> 27 28 29<link rel='dns-prefetch' href='//cdn.jsdelivr.net' /> 30<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' /> 31<link rel='dns-prefetch' href='//unpkg.com' /> 32<link rel='dns-prefetch' href='//www.google.com' /> 33<link rel="alternate" type="application/rss+xml" title="Hearth, Patio & Barbecue Expo » Feed" href="https://hpbexpo.com/feed/" /> 34<link rel="alternate" type="application/rss+xml" title="Hearth, Patio & Barbecue Expo » Comments Feed" href="https://hpbexpo.com/comments/feed/" /> 35<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://hpbexpo.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fhpbexpo.com%2F" /> 36<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://hpbexpo.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fhpbexpo.com%2F&format=xml" /> 37<style id="wp-img-auto-sizes-contain-inline-css"> 38img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 39/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 40</style> 41<style id="wp-emoji-styles-inline-css"> 42 43 img.wp-smiley, img.emoji { 44 display: inline !important; 45 border: none !important; 46 box-shadow: none !important; 47 height: 1em !important; 48 width: 1em !important; 49 margin: 0 0.07em !important; 50 vertical-align: -0.1em !important; 51 background: none !important; 52 padding: 0 !important; 53 } 54/*# sourceURL=wp-emoji-styles-inline-css */ 55</style> 56<style id="classic-theme-styles-inline-css"> 57/*! This file is auto-generated */ 58.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} 59/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 60</style> 61<link rel='stylesheet' id='wpda_countdown_gutenberg_css-css' href='https://hpbexpo.com/wp-content/plugins/widget-countdown/includes/admin/gutenberg/style.css' media='all' /> 62<link rel='stylesheet' id='wpda_countdown_basic_gutenberg_css-css' href='https://hpbexpo.com/wp-content/plugins/widget-countdown/includes/legacy/gutenberg/style.css' media='all' /> 63<style id="global-styles-inline-css"> 64: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%);
64--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(body) { margin: 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;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.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;}
64.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;} 65:root :where(.wp-block-icon svg){width: 24px;} 66:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} 67:where(.wp-block-term-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-term-template.is-layout-grid){gap: 1.25em;} 68:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} 69:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} 70/*# sourceURL=global-styles-inline-css */ 71</style> 72<link rel='stylesheet' id='pb-accordion-blocks-style-css' href='https://hpbexpo.com/wp-content/plugins/accordion-blocks/build/index.css' media='all' /> 73<link rel='stylesheet' id='jqmodal-css' href='https://hpbexpo.com/wp-content/themes/hpbe2022/css/jquery.modal.css' media='all' /> 74<link rel='stylesheet' id='style-css' href='https://hpbexpo.com/wp-content/themes/hpbe2022/style.css' media='all' /> 75<link rel='stylesheet' id='slick-css' href='//cdn.jsdelivr.net/jquery.slick/1.6.0/slick.css' media='all' /> 76<link rel='stylesheet' id='magnific-css-css' href='https://hpbexpo.com/wp-content/themes/hpbe2022/vendor/magnific-popup/magnific-popup.css' media='all' /> 77<link rel='stylesheet' id='aos-css' href='//unpkg.com/[email protected]/dist/aos.css' media='all' /> 78<link rel='stylesheet' id='main-css' href='https://hpbexpo.com/wp-content/themes/hpbe2022/css/main.css' media='all' /> 79<link rel='stylesheet' id='font-awesome-css' href='https://hpbexpo.com/wp-content/plugins/elementor/assets/lib/font-awesome/css/font-awesome.min.css' media='all' /> 80<link rel='stylesheet' id='maincss-css' href='https://hpbexpo.com/wp-content/themes/hpbe2022/css/hpbe-main.css' media='all' /> 81<link rel='stylesheet' id='custom-style-css' href='https://hpbexpo.com/wp-content/themes/hpbe2022/css/style.css' media='all' /> 82<link rel='stylesheet' id='e-sticky-css' href='https://hpbexpo.com/wp-content/plugins/elementor-pro/assets/css/modules/sticky.min.css' media='all' /> 83<link rel='stylesheet' id='elementor-frontend-css' href='https://hpbexpo.com/wp-content/uploads/elementor/css/custom-frontend.min.css' media='all' /> 84<style id="elementor-frontend-inline-css"> 85.e-heading-base a, .e-paragraph-base a { all: unset; cursor: pointer; }form[data-element_type="e-form"].form-state-success [data-element_type="e-form-success-message"],form[data-element_type="e-form"].form-state-error [data-element_type="e-form-error-message"]{ display: block; } 86.e-form-textarea-base:not([data-resizable]) { resize: none; } .e-form-submit-button-base { cursor: pointer; box-sizing: border-box; } 87/*# sourceURL=elementor-frontend-inline-css */ 88</style> 89<link rel='stylesheet' id='widget-heading-css' href='https://hpbexpo.com/wp-content/plugins/elementor/assets/css/widget-heading.min.css' media='all' /> 90<link rel='stylesheet' id='widget-nav-menu-css' href='https://hpbexpo.com/wp-content/uploads/elementor/css/custom-pro-widget-nav-menu.min.css' media='all' /> 91<link rel='stylesheet' id='widget-image-css' href='https://hpbexpo.com/wp-content/plugins/elementor/assets/css/widget-image.min.css' media='all' /> 92<link rel='stylesheet' id='widget-social-icons-css' href='https://hpbexpo.com/wp-content/plugins/elementor/assets/css/widget-social-icons.min.css' media='all' /> 93<link rel='stylesheet' id='e-apple-webkit-css' href='https://hpbexpo.com/wp-content/uploads/elementor/css/custom-apple-webkit.min.css' media='all' /> 94<link rel='stylesheet' id='elementor-post-5618-css' href='https://hpbexpo.com/wp-content/uploads/elementor/css/post-5618.css' media='all' /> 95<link rel='stylesheet' id='e-animation-fadeIn-css' href='https://hpbexpo.com/wp-content/plugins/elementor/assets/lib/animations/styles/fadeIn.min.css' media='all' /> 96<link rel='stylesheet' id='widget-video-css' href='https://hpbexpo.com/wp-content/plugins/elementor/assets/css/widget-video.min.css' media='all' /> 97<link rel='stylesheet' id='elementor-post-5469-css' href='https://hpbexpo.com/wp-content/uploads/elementor/css/post-5469.css' media='all' /> 98<link rel='stylesheet' id='base-desktop-css' href='https://hpbexpo.com/wp-content/uploads/elementor/css/base-desktop.css' media='all' /> 99<link rel='stylesheet' id='base-mobile-css' href='https://hpbexpo.com/wp-content/uploads/elementor/css/base-mobile.css' media='(max-width:767px)' /> 100<link rel='stylesheet' id='elementor-post-8694-css' href='https://hpbexpo.com/wp-content/uploads/elementor/css/post-8694.css' media='all' /> 101<link rel='stylesheet' id='elementor-post-5508-css' href='https://hpbexpo.com/wp-content/uploads/elementor/css/post-5508.css' media='all' /> 102<link rel='stylesheet' id='tablepress-default-css' href='https://hpbexpo.com/wp-content/tablepress-combined.min.css' media='all' /> 103<link rel='stylesheet' id='elementor-gf-roboto-css' href='https://fonts.googleapis.com/css?family=Roboto:100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic&display=swap' media='all' /> 104<link rel='stylesheet' id='elementor-gf-radiocanadabig-css' href='https://fonts.googleapis.com/css?family=Radio+Canada+Big:100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic&display=swap' media='all' />
105<script id="jquery-core-js" src="https://hpbexpo.com/wp-includes/js/jquery/jquery.min.js"></script>
vendor: 1 bytes, line 105
105
106<script id="jquery-migrate-js" src="https://hpbexpo.com/wp-includes/js/jquery/jquery-migrate.min.js"></script>
vendor: 1 bytes, line 106
106
107<script id="jqmodal-js" src="https://hpbexpo.com/wp-content/themes/hpbe2022/js/jquery.modal.js"></script>
vendor: 1 bytes, line 107
107
108<script id="slick-js" src="//cdn.jsdelivr.net/jquery.slick/1.6.0/slick.min.js"></script>
vendor: 1 bytes, line 108
108
109<script id="waypoints-js" src="https://cdnjs.cloudflare.com/ajax/libs/waypoints/4.0.1/jquery.waypoints.min.js"></script>
vendor: 1 bytes, line 109
109
110<script id="waypoints-inview-js" src="https://cdnjs.cloudflare.com/ajax/libs/waypoints/4.0.1/shortcuts/inview.min.js"></script>
vendor: 1 bytes, line 110
110
111<script id="stellar-js" src="https://hpbexpo.com/wp-content/themes/hpbe2022/lib/stellar/jquery.stellar.min.js"></script>
vendor: 1 bytes, line 111
111
112<script id="magnific-js-js" src="https://hpbexpo.com/wp-content/themes/hpbe2022/vendor/magnific-popup/magnific-popup.min.js"></script>
vendor: 1 bytes, line 112
112
113<script id="aos-js" src="//unpkg.com/[email protected]/dist/aos.js"></script>
vendor: 1 bytes, line 113
113
114<script id="fuse-js-js" src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/3.0.4/fuse.min.js"></script>
vendor: 1 bytes, line 114
114
115<script id="portal-js-js" src="https://hpbexpo.com/wp-content/plugins/hpbe_custom/portal/portal.js"></script>
115 116<link rel="https://api.w.org/" href="https://hpbexpo.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://hpbexpo.com/wp-json/wp/v2/pages/5469" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://hpbexpo.com/xmlrpc.php?rsd" /> 117<link rel='shortlink' href='https://hpbexpo.com/' /> 118<link rel="stylesheet" href="https://cdn.jsdelivr.net/jquery.slick/1.6.0/slick.css"> 119<link rel="stylesheet" href="https://cdn.jsdelivr.net/jquery.slick/1.6.0/slick-theme.css"><style> 120 121 #portal-loading { 122 position: fixed; 123 opacity: 0; 124 z-index: 300; 125 top: 0; 126 right: 0; 127 bottom: 0; 128 left: 0; 129 background: rgba(0,0,0,0.6); 130 color: white; 131 display: -webkit-flex; 132 display: flex; 133 -webkit-justify-content: center; 134 justify-content: center; 135 -webkit-align-items: center; 136 align-items: center; 137 pointer-events: none; 138 font-size: 6rem; 139 -moz-transition: opacity .2s; 140 -o-transition: opacity .2s; 141 -webkit-transition: opacity .2s; 142 transition: opacity .2s; 143 } 144 145 #portal-loading.active{ 146 opacity: 1; 147 pointer-events: auto; 148 } 149 150 </style><meta name="generator" content="Elementor 4.2.4; features: e_font_icon_svg, additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-swap"> 151<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 151-152
151 152<script async src="https://www.googletagmanager.com/gtag/js?id=
152G-HPK2RF6PMC
vendor: 12 bytes, line 152
152"></script>
153<script> 154
vendor: 134 bytes, lines 154-158
154window.dataLayer = window.dataLayer || []; 155 function gtag(){dataLayer.push(arguments);} 156 gtag('js', new Date()); 157 158 gtag('config', '
158G-HPK2RF6PMC
vendor: 4 bytes, line 158
158');
159</script>
159 160<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.theme.default.css" /> 161<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css" /> 162<link rel="stylesheet" href="https://use.typekit.net/gme3gvs.css"> 163<link rel="stylesheet" href="https://use.typekit.net/nvu8eqw.css"> 164 165 166 167
168<script type="text/javascript"> 169 (function(c,l,a,r,i,t,y){ 170 c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; 171 t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; 172 y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 173 })(window, document, "clarity", "script", "rydlw80ti5"); 174</script>
vendor: 1 bytes, line 174
174
175<script>!function(s,a,e,v,n,t,z){if(s.saq)return;n=s.saq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!s._saq)s._saq=n;n.push=n;n.loaded=!0;n.version='1.0';n.queue=[];t=a.createElement(e);t.async=!0;t.src=v;z=a.getElementsByTagName(e)[0];z.parentNode.insertBefore(t,z)}(window,document,'script','https://tags.srv.stackadapt.com/events.js');saq('ts', 'VDOGqx8OzbT-ZCqcfmWAcA');</script>
175 176<!-- Meta Pixel Code -->
177<script>
vendor: 399 bytes, lines 177-186
177 178!function(f,b,e,v,n,t,s) 179{if(f.fbq)return;n=f.fbq=function(){n.callMethod? 180n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 181if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 182n.queue=[];t=b.createElement(e);t.async=!0; 183t.src=v;s=b.getElementsByTagName(e)[0]; 184s.parentNode.insertBefore(t,s)}(window, document,'script', 185'https://connect.facebook.net/en_US/fbevents.js'); 186fbq('init', '
1861516175539528143
vendor: 30 bytes, lines 186-187
186'); 187fbq('track', 'PageView');
188</script>
188 189<noscript><img height="1" width="1" style="display:none" 190src="https://www.facebook.com/tr?id=1516175539528143&ev=PageView&noscript=1" 191/></noscript> 192<!-- End Meta Pixel Code --> 193<style>.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style> <style> 194 .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload), 195 .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * { 196 background-image: none !important; 197 } 198 @media screen and (max-height: 1024px) { 199 .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload), 200 .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * { 201 background-image: none !important; 202 } 203 } 204 @media screen and (max-height: 640px) { 205 .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload), 206 .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * { 207 background-image: none !important; 208 } 209 } 210 </style> 211 <link rel="icon" href="https://hpbexpo.com/wp-content/uploads/2024/09/HPBExpo27_Logos_HPBExpo_Tag_color_padding-150x150.png" sizes="32x32" /> 212<link rel="icon" href="https://hpbexpo.com/wp-content/uploads/2024/09/HPBExpo27_Logos_HPBExpo_Tag_color_padding-300x300.png" sizes="192x192" /> 213<link rel="apple-touch-icon" href="https://hpbexpo.com/wp-content/uploads/2024/09/HPBExpo27_Logos_HPBExpo_Tag_color_padding-300x300.png" /> 214<meta name="msapplication-TileImage" content="https://hpbexpo.com/wp-content/uploads/2024/09/HPBExpo27_Logos_HPBExpo_Tag_color_padding-300x300.png" /> 215<style id="wp-custom-css"> 216.menu-nav-button { 217 background-color:#f16a21 !important; 218 border-radius:12px!important; 219 cursor:pointer!important; 220 color:#ffffff!important; 221 font-weight:bold!important; 222 text-decoration:none!important; 223 height: 40px !important; 224 margin: auto 8px !important; 225 226} 227.menu-nav-button:hover { 228 background-color:#e08b5e!important; 229} 230 231.menu-nav-button-reg { 232 background-color:#c41331 !important; 233 border-radius:12px!important; 234 cursor:pointer!important; 235 color:#ffffff!important; 236 font-weight:bold!important; 237 text-decoration:none!important; 238 height: 40px !important; 239 margin: auto 8px !important; 240 241} 242.menu-nav-button-reg:hover { 243 background-color:#db7183!important; 244} 245 246.menu-nav-button-drop { 247 background-color:#c41331!important; 248 cursor:pointer!important; 249 color:#ffffff!important; 250 text-decoration:none!important; 251 text-align: center; 252 253} 254 255.menu-nav-button-drop:hover { 256 background-color:#db7183!important; 257} 258 259.important-orange { 260 color: #f16b21!important; 261 font-weight: bold; 262 font-size: 18px; 263} 264 265.blue-heading { 266 color: #7298B1!important; 267} 268 269body .gform_wrapper .gform_body .gform_fields .gfield_select { 270 color: black 271} 272 273body .gform_wrapper .gform_body .gform_fields .gfield select option { 274 color: black 275} 276 277/* logo carousel */ 278 279#gallery-carousel .swiper-wrapper { 280 align-items: center; 281} 282#gallery-carousel .swiper-wrapper .swiper-slide { 283 display: flex; 284 justify-content: center; 285} 286#gallery-carousel .swiper-wrapper .swiper-slide img { 287 padding:50px; 288} 289@media screen and (max-width: 767px) { 290 .swiper-slide img { 291 padding:0px; 292} 293} 294.tablepress-id-8 table { 295 table-layout: fixed; 296 width: 100%; 297} 298 299.tablepress-id-8 .column-1, 300.tablepress-id-8 .column-3 { 301 width: 120px; 302 white-space: nowrap; 303 text-align: left; 304} 305 306.tablepress-id-8 .column-2 { 307 width: 30px; 308 text-align: center; 309 white-space: nowrap; 310} 311 312.tablepress-id-8 .column-4 { 313 width: auto; 314 white-space: normal; 315 word-break: break-word; 316} 317 318@media (max-width: 768px) { 319 .tablepress-id-8 .column-1, 320 .tablepress-id-8 .column-3 { 321 width: 100px; 322 } 323 .tablepress-id-8 .column-2 { 324 width: 20px; 325 } 326 .tablepress-id-8 .column-4 { 327 width: auto; 328 } 329} 330</style> 331</head> 332<body class="home wp-singular page-template-default page page-id-5469 page-parent wp-custom-logo wp-theme-hpbe2022 premiere cloak front-page premiere elementor-default elementor-kit-5618 elementor-page elementor-page-5469"> 333 <header data-elementor-type="header" data-elementor-id="8694" class="elementor elementor-8694 elementor-location-header" data-elementor-post-type="elementor_library"> 334 <div class="elementor-element elementor-element-326022c e-con-full e-flex e-con e-parent" data-id="326022c" data-element_type="container" data-e-type="container" data-settings="{"sticky":"top","sticky_on":["widescreen","desktop","laptop","tablet_extra","tablet","mobile_extra","mobile"],"sticky_offset":0,"sticky_effects_offset":0,"sticky_anchor_link_offset":0}"> 335 <div class="elementor-element elementor-element-f0dc889 elementor-widget elementor-widget-html" data-id="f0dc889" data-element_type="widget" data-e-type="widget" data-widget_type="html.default"> 336 <div class="elementor-widget-container"> 337 <link rel="stylesheet" href="https://use.typekit.net/nvu8eqw.css">
338<link rel="preconnect" href="https://fonts.googleapis.com"> 339<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 340<link href="https://fonts.googleapis.com/css2?family=EB+Garamond:wght@400;700&family=Radio+Canada+Big:wght@400;600;700&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet"> 341<style> 342 /* Variables live on the header and drawer, not :root. Names like --blue and 343 --navy are generic enough to collide with theme or plugin variables if 344 declared globally. */ 345 .hpbhdr,.hpbdrawer{ 346 --navy:#003e6f; 347 --orange:#e27334; 348 --orange-dark:#c25c25; 349 --blue:#0091cc; 350 --ink:#242324; 351 --muted:#69727d; 352 --rule:#e3e3e3; 353 --label:'Radio Canada Big',Montserrat,'Helvetica Neue',Arial,sans-serif; 354 --ui:Roboto,'Helvetica Neue',Arial,sans-serif; 355 356 /* The single most important number here. Below this width the desktop 357 menu is replaced by the hamburger. Raise it if you add menu items. */ 358 --nav-break:1280px; /* 1200 -> 1280 on 2026-09-14 for the second button */ 359 360 /* ââ LOGO NUDGE ââââââââââââââââââââââââââââââââââââââââââââââââââââ 361 Shifts the logo DOWN to compensate for empty canvas at the bottom of 362 the SVG file. 363 364 Measured 2026-07-31: the header centres the logo perfectly â 19px of 365 space above it and 19px below â but it still LOOKS high, because the 366 artwork doesn't fill its own bounding box. The file has whitespace 367 baked in below the mark, so the box is centred and the ink isn't. 368 369 THIS IS A WORKAROUND. The real fix is to crop the SVG's viewBox tight 370 to the artwork, which corrects it everywhere the logo is used and 371 makes this line unnecessary â set it back to 0px if that happens. 372 373 Raise it a few pixels at a time until the mark looks optically 374 centred. 4-8px is the usual range. Too much and it sits low. */ 375 --logo-nudge:0px; 376 } 377 /* Scoped: a bare `*` selector here would reset box-sizing across the whole 378 site, which can shift layouts in unrelated theme components. */ 379 .hpbhdr,.hpbhdr *,.hpbdrawer,.hpbdrawer *,.hpbscrim{box-sizing:border-box;} 380 381 /* ââ THEME RESET ââââââââââââââââââââââââââââââââââââââââââââââââââââââ 382 This header sits inside a WordPress theme that styles bare elements 383 site-wide. Anything not claimed here inherits whatever the theme decided. 384 Symptom this fixes: the CTA rendering as an orange block with invisible 385 text, because the theme's link colour was overriding the white label. */ 386 .hpbhdr, .hpbhdr *, .hpbdrawer, .hpbdrawer *{text-shadow:none;} 387 .hpbhdr a, .hpbdrawer a{text-decoration:none; box-shadow:none;} 388 .hpbhdr ul, .hpbdrawer ul{margin:0; padding:0; list-style:none;} 389 .hpbhdr button, .hpbdrawer button{font:inherit; background:none; border:0; 390 margin:0; -webkit-appearance:none; appearance:none;} 391 .hpbhdr img{border:0; border-radius:0; box-shadow:none; max-width:100%;} 392 /* NO unscoped `body` rule here â this block is pasted into the live site, so 393 anything targeting bare elements leaks sitewide. An earlier `body{margin:0}` 394 overrode the theme's `margin:0 auto`, which stopped the whole site centring 395 on screens wider than 1920px. Style .hpbhdr / .hpbdrawer, never body. */ 396 .hpbhdr,.hpbdrawer{font-family:var(--ui); color:var(--ink);} 397 398 /* âââââââââââ HEADER SHELL âââââââââââ */ 399 /* If the header refuses to stick once inside Elementor, an ancestor container 400 has overflow or transform set, which breaks position:sticky. Fix: either 401 clear that on the container, or delete this line and use Elementor's own 402 Motion Effects â Sticky on the section instead. */ 403 /* No border-bottom here on purpose. A 1px rule reads as a stray divider once 404 a coloured hero sits flush beneath the header. The scroll shadow below is 405 the separator â it appears only when there's content behind the header, 406 which is the only time one is needed. */ 407 408 /* ââ ABOUT position:sticky ââââââââââââââââââââââââââââââââââââââââââ 409 This does NOT make the header stick inside Elementor, and that isn't a 410 bug in the CSS. A sticky element can only travel within its own 411 parent's box, and here the parent is an Elementor widget container 412 exactly as tall as the header â so there is nowhere to travel. 413 414 Making it stick is an Elementor setting, not a CSS one: select the
415 CONTAINER (not the widget) â Advanced â Motion Effects â Sticky: Top. 416 Full steps in docs/replacing-the-header.md. 417 418 This line is kept anyway: it costs nothing, doesn't fight Elementor's 419 sticky effect, and would work if this markup were ever used outside 420 Elementor. Do NOT change it to position:fixed â that would need 140px 421 of top padding on the body to compensate, and an unscoped body rule 422 from this block has already broken the site once. */ 423 .hpbhdr{position:sticky; top:0; z-index:1000; background:#fff; 424 transition:box-shadow .2s;} 425 .hpbhdr.scrolled{box-shadow:0 2px 14px rgba(0,0,0,.10);} 426 427 /* ââ COLLAPSE THE WHITE GAP BELOW THE HEADER ââââââââââââââââââââââââââ 428 Elementor gives every widget a bottom margin (--widget-spacing, 20px by 429 default) and every container its own padding. Stacked, that's the white 430 band between the header and the hero. 431 432 These rules reach up from inside the pasted markup and zero it, so the 433 gap closes without depending on any Elementor setting being right. 434 :has() works in every current browser; on anything older, set the HTML 435 widget's bottom margin and the container's padding to 0 by hand under 436 the Advanced tab. */ 437 .elementor-widget:has(.hpbhdr){margin-bottom:0 !important;} 438 /* .elementor-widget-container sits between the widget and this markup and 439 carries its own padding. It was missing from the first version of this 440 list, which is a likely source of leftover space under the bar. */ 441 .elementor-widget-container:has(> .hpbhdr){padding:0 !important; margin:0 !important;} 442 .e-con:has(.hpbhdr), 443 .e-con-inner:has(.hpbhdr), 444 .elementor-section:has(.hpbhdr), 445 .elementor-container:has(.hpbhdr), 446 .elementor-column:has(.hpbhdr), 447 .elementor-widget-wrap:has(.hpbhdr){ 448 padding-top:0 !important; padding-bottom:0 !important; 449 margin-bottom:0 !important; 450 /* OVERFLOW MUST STAY VISIBLE. A container with overflow:hidden clips the 451 dropdown panels â they'd be cut off at the bottom edge of the header 452 bar instead of hanging below it. 453 454 Set here rather than in Elementor because the setting has moved around 455 between versions (it's under Layout > Additional Options for flexbox 456 containers, and isn't exposed at all on older Section/Column layouts). 457 Doing it in CSS means it's right regardless of which layout the header
458 template happens to use, and nobody has to find a panel. */ 459 overflow:visible !important;} 460 .hpbhdr-inner{max-width:1380px; margin:0 auto; padding:0 clamp(16px,2vw,32px); 461 display:flex; align-items:center; gap:clamp(14px,1.8vw,34px); 462 flex-wrap:nowrap; /* the row can never break to a second line */ 463 /* 168px, fixed â sized around the 138px logo with 15px of clearance. 464 465 THIS MUST MATCH --header-h IN shared/hpb-styles.css, which is now 466 168px. Anchor links offset by that value; if the two disagree, a 467 jumped-to heading lands behind the header and looks like a broken 468 link rather than a spacing bug. 469 470 History, because this has moved four times in two days: 471 92px -> 112px 2026-07-29, logo 66 -> 82 (+25%) 472 112px -> 140px 2026-07-31, logo 82 -> 110 473 140px -> 168px 2026-07-31, logo 110 -> 138 (+25%) 474 475 THE COST, and it is not small now that the header is sticky: 168px is 476 roughly a quarter of the usable height of a 13" laptop screen, held 477 for the entire visit, on every page. Every hero, schedule and rate 478 table is reading into what's left. */ 479 min-height:168px; 480 /* the mega panel is positioned against this box, not against its menu 481 item â see the MEGA PANEL block below for why */ 482 position:relative;} 483 484 /* logo â allowed to shrink, never to disappear. 485 Sized up 25% on 2026-07-29 (was clamp(50px,4.8vw,66px)). The bar grew from 486 92px to 112px to hold it: 82 + 15 above + 15 below = 112. 487 488 IF YOU CHANGE THE BAR HEIGHT, CHANGE --header-h IN shared/hpb-styles.css 489 TO MATCH, then rebuild and re-paste the pages. Anchor links offset by that 490 value; if it's short, a jumped-to heading hides behind the header. */ 491 .hpbhdr-logo{flex:0 1 auto; min-width:0; display:block; line-height:0;} 492 /* FIXED 138px on desktop â +25% on the 110px it was, per the CEO. 493 494 Deliberately not a clamp. It was clamp(72px,7.4vw,110px), which only hit 495 its maximum above ~1486px; below that the logo shrank while the bar 496 stayed fixed, so the bar was sized for a logo that wasn't there. A fixed 497 height keeps the 15px clearance identical at every desktop width. 498 499 Safe because the mobile breakpoint below takes over at 1200px, and this 500 still fits at 1201px: the logo needs about 317px of width against 501 roughly 459px of free space in the row. That margin is now 142px â the 502 next increase is where the row starts to get tight, not the bar. 503 504 position:relative + top lets --logo-nudge shift the mark optically 505 without changing the layout box, so the bar height stays exactly 168. */ 506 .hpbhdr-logo img{height:138px; width:auto; display:block; 507 position:relative; top:var(--logo-nudge,0px);} 508 509 /* âââââââââââ DESKTOP NAV âââââââââââ */ 510 .hpbnav{flex:1 1 auto; min-width:0; display:flex; justify-content:center;} 511 .hpbnav ul{list-style:none; margin:0; padding:0;} 512 .hpbnav > ul{display:flex; flex-wrap:nowrap; align-items:center; 513 gap:clamp(6px,1.3vw,26px);} 514 .hpbnav > ul > li{position:relative;} 515 516 .hpbnav > ul > li > a, 517 .hpbnav > ul > li > button{ 518 display:inline-flex; align-items:center; gap:5px; 519 font-family:var(--label); font-weight:700; text-transform:uppercase; 520 /* Shrinks with the viewport so the row tightens instead of wrapping. 521 Raised with the logo (max was 15px), but ONLY the maximum. The 12.5px 522 floor is what keeps the menu on one line at the 1200px breakpoint, which 523 is the tightest point â and the wider logo already eats ~45px of the 524 space the nav has to fit in. Raise the floor and you risk a wrap. */ 525 font-size:clamp(12.5px,1.05vw,16px); 526 letter-spacing:.4px; color:var(--ink); text-decoration:none; 527 white-space:nowrap; /* labels never break mid-word */ 528 background:none; border:0; cursor:pointer; padding:12px 2px; 529 font-family:var(--label); 530 } 531 .hpbhdr .hpbnav > ul > li > a{color:var(--ink);} 532 .hpbnav > ul > li > a:hover, 533 .hpbnav > ul > li > button:hover, 534 .hpbnav > ul > li.current > a{color:var(--orange);} 535 .hpbnav .caret{width:9px; height:9px; flex:0 0 9px; transition:transform .18s;} 536 .hpbnav li.open > button .caret{transform:rotate(180deg);} 537 538 /* dropdown panels */ 539 .hpbnav .sub{position:absolute; top:100%; left:50%; transform:translateX(-50%) translateY(6px); 540 min-width:280px; background:#fff; border:1px solid var(--rule); border-radius:10px; 541 box-shadow:0 12px 30px rgba(0,0,0,.13); padding:10px; 542 opacity:0; visibility:hidden; transition:opacity .16s, transform .16s, visibility .16s;} 543 .hpbnav li.open > .sub, 544 .hpbnav > ul > li:hover > .sub{opacity:1; visibility:visible; transform:translateX(-50%) translateY(0);} 545 .hpbnav .sub li a{display:block; padding:10px 14px; border-radius:6px; 546 font-family:var(--ui); font-size:15px;
546 color:var(--ink); text-decoration:none; line-height:1.35;} 547 .hpbnav .sub li a:hover{background:#f1f6fa; color:var(--navy);} 548 /* Warning item (Dee, 2026-09-25): bold orange so the fraud notice reads 549 as a flag, not just another link. --orange-dark rather than --orange: 550 the full-strength orange is under 4.5:1 on white at this size. */ 551 .hpbnav .sub li a.alert{font-weight:700; color:var(--orange-dark);} 552 .hpbnav .sub li a.alert:hover{background:#fdeee4; color:var(--orange-dark);} 553 554 /* keep panels on screen near the right edge */ 555 .hpbnav > ul > li:nth-last-child(-n+2) .sub{left:auto; right:0; transform:translateY(6px);} 556 .hpbnav > ul > li:nth-last-child(-n+2):hover > .sub, 557 .hpbnav > ul > li:nth-last-child(-n+2).open > .sub{transform:translateY(0);} 558 559 /* ââ MEGA PANEL â the Exhibit dropdown ââââââââââââââââââââââââââââââââ 560 Thirteen links in a single column is a 560px-tall list, and a list that 561 tall stops being scanned and starts being endured. Three labelled 562 columns cut it to five deep and let people skip two thirds of it on 563 sight. Same links, a third of the reading. 564 565 WHY IT'S ANCHORED TO THE HEADER, NOT THE MENU ITEM: a 940px panel hung 566 under the fourth of six items runs off the right edge of the screen at 567 any viewport under about 1500px. Positioning it against .hpbhdr-inner 568 instead means it spans the header's own content width and can never 569 overflow. The left padding below matches the header's, so the first 570 column lines up under the logo. 571 572 ADDING A FOURTH GROUP: change the 3 in grid-template-columns and add a 573 matching .megacol block in the markup. Past four the panel gets cramped 574 â that's the point to split Exhibit into two top-level items instead. */ 575 /* ââ shared by every mega panel ââ */ 576 .hpbnav .sub.mega{ 577 min-width:0; transform:translateY(6px); 578 display:grid; justify-content:start; align-items:start;} 579 .hpbnav > ul > li:hover > .sub.mega, 580 .hpbnav li.open > .sub.mega{transform:translateY(0);} 581 .hpbnav .sub.mega ul{margin:0; padding:0; list-style:none;} 582 /* group heading: a label, not a link â deliberately not clickable, so 583 nobody hunts for a page behind it */ 584 .hpbnav .sub.mega .megahd{display:block; padding:0 14px 9px; margin-bottom:6px; 585 font-family:var(--label); font-weight:700; text-transform:uppercase; 586 font-size:11.5px; letter-spacing:.9px; color:var(--muted); 587 border-bottom:1px solid var(--rule);} 588 /* a second group stacked below the first inside one column */ 589 .hpbnav .sub.mega .megahd.stacked{margin-top:20px;} 590 .hpbnav .sub.mega li a{padding:9px 14px;} 591 592 /* ââ THREE COLUMNS â Exhibit ââ 593 Anchored to the header bar (hence position:static on the item), because 594 at ~940px wide, hung under the fourth of six items, it would run off the 595 right edge below about 1500px. */ 596 .hpbnav > ul > li.hasmega{position:static;} 597 .hpbnav .sub.mega.cols3{ 598 left:0; right:0; width:auto; 599 grid-template-columns:repeat(3,minmax(0,320px)); gap:0 44px; 600 padding:26px clamp(16px,2vw,32px) 22px; 601 border-radius:0 0 12px 12px;} 602 603 /* ââ TWO COLUMNS â Events ââ 604 This one stays anchored to its own menu item. At ~640px wide, and second 605 from the left, it has room to spare â so it hangs under its button like 606 the small dropdowns instead of spanning the bar. left:0 rather than the 607 centred default keeps its left edge clear of the screen even at the 608 1200px breakpoint. 609 610 THE WIDTH AND THE COLUMNS ARE BOTH FIXED, DELIBERATELY. This panel sets 611 `left` but not `right`, so its width is shrink-to-fit. Pair that with 612 columns that are allowed to collapse â minmax(0,300px), or 1fr with no 613 width â and the browser has nothing to size against: it settles on about 614 65px per column and the two columns overlap in a sliver of a panel. 615 616 So there are two independent guards here, and both should stay: 617 width:640px gives the box a definite size 618 repeat(2,286px) gives the columns one too, so they hold even if 619 something in the theme overrides the width 620 286 + 32 gap + 286 + 36 padding = 640. Change one, change the others. */ 621 .hpbnav .sub.mega.cols2{ 622 left:0; right:auto; 623 width:640px; max-width:calc(100vw - 32px); 624 grid-template-columns:repeat(2,286px); gap:0 32px; 625 padding:22px 18px 18px;} 626 .hpbnav .sub.mega.cols2 li a{white-space:normal;} 627 /* If a theme rule ever zeroes the width again, this keeps the columns from 628 crushing rather than letting them overlap. */ 629 .hpbnav .sub.mega .megacol{min-width:0;} 630 631 /* âââââââââââ CTA + HAMBURGER âââââââââââ */ 632 /* .hpbhdr prefix raises specificity above the theme's link rules â without it 633 the label inherits the theme's orange and vanishes against the button. */ 634 .hpbhdr .hpbhdr-cta{flex:0 0 auto; display:inline-block; background:var(--orange); color:#fff; 635 font-family:var(--ui); font-weight:500; font-size:clamp(13px,1.03vw,17px); 636 padding:13px clamp(15px,1.55vw,26px); border-radius:10px; text-decoration:none; 637 white-space:nowrap; border:2px solid var(--orange); transition:.15s;} 638 .hpbhdr .hpbhdr-cta:hover{background:var(--orange-dark); border-color:var(--orange-dark); 639 color:#fff;} 640 .hpbhdr .hpbhdr-cta:visited,.hpbhdr .hpbhdr-cta:focus{color:#fff;} 641 .hpbdrawer .hpbdrawer-cta,.hpbdrawer .hpbdrawer-cta:visited{color:#fff;} 642 643 /* TWO BUTTONS (added 2026-09-14, registration is open). 644 Register is the primary (solid orange); Apply to Exhibit steps back to an 645 outline so the two don't compete. Both sit in .hpbhdr-ctas so they move 646 as one unit. The outline one hides at the hamburger breakpoint; the 647 drawer carries both. */ 648 .hpbhdr .hpbhdr-ctas{flex:0 0 auto; display:flex; align-items:center; gap:10px;} 649 .hpbhdr .hpbhdr-cta.is-secondary{background:transparent; color:var(--navy); 650 border-color:var(--navy);} 651 .hpbhdr .hpbhdr-cta.is-secondary:hover{background:var(--navy); border-color:var(--navy); 652 color:#fff;} 653 .hpbhdr .hpbhdr-cta.is-secondary:visited,.hpbhdr .hpbhdr-cta.is-secondary:focus{color:var(--navy);} 654 .hpbhdr .hpbhdr-cta.is-secondary:hover:visited{color:#fff;} 655 656 .hpbburger{display:none; flex:0 0 auto; width:46px; height:46px; padding:0; 657 background:none; border:2px solid var(--navy); border-radius:8px; cursor:pointer; 658 color:var(--navy);}
659 .hpbburger span{display:block; width:20px; height:2px; background:currentColor; 660 margin:4px auto; transition:.2s;} 661 .hpbburger[aria-expanded="true"] span:nth-child(1){transform:translateY(6px) rotate(45deg);} 662 .hpbburger[aria-expanded="true"] span:nth-child(2){opacity:0;} 663 .hpbburger[aria-expanded="true"] span:nth-child(3){transform:translateY(-6px) rotate(-45deg);} 664 665 .hpbhdr a:focus-visible,.hpbhdr button:focus-visible, 666 .hpbdrawer a:focus-visible,.hpbdrawer button:focus-visible{ 667 outline:3px solid var(--blue); outline-offset:3px; border-radius:4px;} 668 669 /* âââââââââââ MOBILE DRAWER âââââââââââ */ 670 .hpbdrawer{position:fixed; inset:0 0 0 auto; width:min(420px,100%); 671 background:#fff; z-index:1002; transform:translateX(100%); 672 transition:transform .26s cubic-bezier(.4,0,.2,1); overflow-y:auto; 673 padding:20px 20px 48px; display:none;} 674 .hpbdrawer.open{transform:translateX(0);} 675 .hpbscrim{position:fixed; inset:0; background:rgba(0,26,47,.55); z-index:1001; 676 opacity:0; visibility:hidden; transition:.2s; display:none;} 677 .hpbscrim.open{opacity:1; visibility:visible;} 678 .hpbdrawer ul{list-style:none; margin:0; padding:0;} 679 .hpbdrawer > ul > li{border-bottom:1px solid var(--rule);} 680 .hpbdrawer > ul > li > a, 681 .hpbdrawer > ul > li > button{width:100%; display:flex; align-items:center; 682 justify-content:space-between; gap:10px; padding:17px 4px; 683 font-family:var(--label); font-weight:700; text-transform:uppercase; 684 font-size:15px; letter-spacing:.5px; color:var(--ink); text-decoration:none; 685 background:none; border:0; cursor:pointer; text-align:left;} 686 .hpbdrawer .sub{max-height:0; overflow:hidden; transition:max-height .26s ease;} 687 /* Generous ceiling: this only has to exceed the tallest open group. The 688 Exhibit list with its three headings is around 760px â if you add items 689 and the list starts clipping, this number is why. */ 690 .hpbdrawer li.open > .sub{max-height:1200px;} 691 .hpbdrawer .sub li a{display:block; padding:11px 4px 11px 18px; 692 font-size:15.5px; color:var(--muted); text-decoration:none; 693 border-left:2px solid var(--rule); margin-left:2px; line-height:1.35;} 694 .hpbdrawer .sub li a:hover{color:var(--navy); border-left-color:var(--blue);} 695 .hpbdrawer .sub li a.alert{font-weight:700; color:var(--orange-dark); 696 border-left-color:var(--orange);} 697 /* Columns don't work on a 380px screen, so the drawer keeps one list and 698 uses the same group labels as inline dividers. */ 699 .hpbdrawer .sub .drawerhd{display:block; padding:16px 4px 5px 18px; 700 font-family:var(--label); font-weight:700; text-transform:uppercase; 701 font-size:11px; letter-spacing:.9px; color:var(--navy);} 702 .hpbdrawer .sub li.drawerhd-li:first-child .drawerhd{padding-top:6px;} 703 .hpbdrawer li.open > button .caret{transform:rotate(180deg);} 704 .hpbdrawer-cta{display:block; text-align:center; margin-top:26px; 705 background:var(--orange); color:#fff; font-weight:500; font-size:17px; 706 padding:15px; border-radius:10px; text-decoration:none; 707 border:2px solid var(--orange);} 708 /* Second drawer button sits right under the first: outline, navy. */ 709 .hpbdrawer-cta + .hpbdrawer-cta{margin-top:10px;} 710 .hpbdrawer .hpbdrawer-cta.is-secondary,.hpbdrawer .hpbdrawer-cta.is-secondary:visited{ 711 background:transparent; color:var(--navy); border-color:var(--navy);} 712 .hpbdrawer-top{display:flex; justify-content:flex-end; margin-bottom:8px;} 713 .hpbdrawer-close{width:44px; height:44px; border:2px solid var(--navy); background:none; 714 border-radius:8px; color:var(--navy); font-size:22px; line-height:1; cursor:pointer;} 715 body.hpb-locked{overflow:hidden;} 716 717 /* âââââââââââ THE BREAKPOINT âââââââââââ */ 718 /* 1200px -> 1280px on 2026-09-14: the second button needs roughly 130px 719 more room, so the hamburger takes over a little earlier. */ 720 @media (max-width:1280px){ 721 .hpbnav{display:none;} 722 .hpbburger{display:block;} 723 /* Once the hamburger is showing, the drawer carries both buttons. The 724 outline one leaves the bar; Register stays as a compact pill so the 725 main action is visible without opening the menu. */ 726 .hpbhdr .hpbhdr-cta.is-secondary{display:none;} 727 .hpbhdr .hpbhdr-ctas{margin-left:auto;} 728 .hpbhdr .hpbhdr-cta.is-primary{font-size:15px; padding:11px 18px;} 729 .hpbdrawer,.hpbscrim{display:block;} 730 .hpbnav{flex:0;} 731 /* Phones and tablets keep the smaller bar. 140px would be a punishing 732 share of a small screen, and the hamburger layout doesn't need the 733 room. --header-h has a matching 96px override for this breakpoint. */ 734 .hpbhdr-inner{justify-content:space-between; min-height:96px;} 735 .hpbhdr-logo img{height:clamp(62px,6vw,82px);} 736 } 737 @media (max-width:560px){ 738 /* On a phone the logo competes with the hamburger for a narrow bar, so it 739 steps back down rather than following the clamp. */ 740 .hpbhdr-logo img{height:58px;} 741 .hpbhdr .hpbhdr-cta.is-primary{font-size:14px; padding:10px 14px;} 742 .hpbhdr-inner{gap:10px;} 743 } 744 @media (max-width:360px){ 745 /* Very narrow phones: the pill goes, the drawer still has it. */ 746 .hpbhdr .hpbhdr-cta.is-primary{display:none;} 747 } 748 749</style> 750<header class="hpbhdr" id="hpbhdr"> 751 <div class="hpbhdr-inner"> 752 753 <a class="hpbhdr-logo" href="https://hpbexpo.com" aria-label="HPBExpo home"> 754 <img src="https://hpbexpo.com/wp-content/uploads/2024/09/HPBEExpo_Logo_final.svg" alt="HPBExpo 2027, Nashville, March 3-6"> 755 </a> 756 757 <nav class="hpbnav" aria-label="Main"> 758 <ul> 759 <li> 760 <button type="button" aria-expanded="false">Attend 761 <svg class="caret" viewBox="0 0 12 12" aria-hidden="true"><path d="M2 4.5 6 8.5l4-4" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> 762 </button> 763 <ul class="sub"> 764 <li><a href="https://hpbexpo.com/attend/top-reasons-to-attend/">Why Attend</a></li> 765 <li><a href="https://hpbexpo.com/attend/badge-registration/">Badge Registration</a></li> 766 <li><a href="https://hpbexpo.com/attend/attendee-hotel/">Attendee Hotel & Travel</a></li> 767 <li><a href="https://www.visitmusiccity.com/meetings/client/hpbexpo27">Nashville Visitor Information</a></li> 768 <li><a href="https://hpbexpo.com/attend/participating-companies/">Participating Companies</a></li> 769 <li><a href="https://hpbexpo.com/attend/npp-aca/">New Product Pavilion / Attendees’ Choice Awards</a></li> 770 <li><a href="https://hpbexpo.com/show-info/policies/">Expo Policies</a></li> 771 <li><a href="https://hpbexpo.com/about-hpba/">HPBA Membership for Attendees</a></li> 772 </ul> 773 </li> 774 775 <li> 776 <button type="button" aria-expanded="false">Events 777 <svg class="caret" viewBox="0 0 12 12" aria-hidden="true"><path d="M2 4.5 6 8.5l4-4" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> 778 </button> 779 <!-- EVENTS â two-column mega, three groups. The right column stacks 780 Receptions & Awards above Policies. Keep in step with the drawer 781 copy below. --> 782 <ul class="sub mega cols2"> 783 <li class="megacol">
784 <span class="megahd">Programming</span> 785 <ul> 786 <li><a href="https://hpbexpo.com/showfeatures/events/">Schedule at a Glance</a></li> 787 <li><a href="https://hpbexpo.com/openingsession/">Opening Session</a></li> 788 <li><a href="https://hpbexpo.com/fireside-chats/">Fireside Chats</a></li> 789 <li><a href="https://hpbexpo.com/retailer-round-tables/">Retailer Roundtables</a></li> 790 <li><a href="https://hpbexpo.com/attend/expo-highlights-tour/">Expo Highlights Tour</a></li> 791 </ul> 792 </li> 793 <li class="megacol"> 794 <span class="megahd">Receptions & Awards</span> 795 <ul> 796 <li><a href="https://hpbexpo.com/industry-party/">Industry Party</a></li> 797 <li><a href="https://hpbexpo.com/awards/">Ultimate Awards Show</a></li> 798 <li><a href="https://hpbexpo.com/affiliatereceptions/">Affiliate Receptions</a></li> 799 </ul> 800 <span class="megahd stacked">Policies</span> 801 <ul> 802 <li><a href="https://hpbexpo.com/ancillary-meeting-requests-policy/">Ancillary Meetings & Events Policy</a></li> 803 <li><a href="https://hpbexpo.com/suitcasing-outboarding-policy/">Suitcasing & Outboarding Policy</a></li> 804 </ul> 805 </li> 806 </ul> 807 </li> 808 809 <li> 810 <button type="button" aria-expanded="false">Education 811 <svg class="caret" viewBox="0 0 12 12" aria-hidden="true"><path d="M2 4.5 6 8.5l4-4" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> 812 </button> 813 <ul class="sub"> 814 <li><a href="https://hpbexpo.com/education/">Education Program</a></li> 815 <li><a href="https://hpbexpo.com/hpbexpo27-education-speakers/">Speaker Lineup</a></li> 816 <li><a href="https://hpbexpo.com/manufacturer-training/">Manufacturer Training Sessions</a></li> 817 <li><a href="https://hpbexpo.com/certification/">Certification</a></li> 818 </ul> 819 </li> 820 821 <!-- EXHIBIT â mega panel. Three groups, thirteen links. If you add a 822 group here, add it to the drawer copy below as well, and bump the 823 column count in .sub.mega. --> 824 <li class="current hasmega"> 825 <button type="button" aria-expanded="false">Exhibit 826 <svg class="caret" viewBox="0 0 12 12" aria-hidden="true"><path d="M2 4.5 6 8.5l4-4" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> 827 </button> 828 <ul class="sub mega cols3"> 829 <li class="megacol"> 830 <span class="megahd">Considering Exhibiting</span> 831 <ul> 832 <li><a href="https://hpbexpo.com/exhibit/why-exhibit/">Why Exhibit</a></li> 833 <li><a href="https://hpbexpo.com/exhibit/apply-to-exhibit/">Apply to Exhibit</a></li> 834 <li><a href="https://hpbexpo.com/exhibit/new-product-pavilion/">New Product Pavilion Entry</a></li> 835 <li><a href="https://s23.a2zinc.net/clients/HPBA/hpbexpo2027//Public/GeneratePDF.aspx?IMID=undefined&EventId=10&MapId=18">Exhibit Floor Plan</a></li> 836 <li><a href="https://hpbexpo.com/exhibit/hpba-membership/">HPBA Membership for Exhibitors</a></li> 837 </ul> 838 </li> 839 <li class="megacol"> 840 <span class="megahd">Plan Your Show</span> 841 <ul> 842 <li><a href="https://hpbexpo.com/exhibit/badge-registration/">Badge Registration</a></li> 843 <li><a href="https://hpbexpo.com/exhibit/general-info/">Exhibitor General Information</a></li> 844 <li><a href="https://hpbexpo.com/exhibit/deadlines/">Exhibitor Deadlines</a></li> 845 <li><a href="https://hpbexpo.com/exhibit/forms/">Exhibitor Forms</a></li> 846 <li><a href="https://hpbexpo.com/exhibit/exhibitor-insurance-requirements/">Exhibitor Insurance Requirements</a></li> 847 </ul> 848 </li> 849 <li class="megacol">
850 <span class="megahd">Travel & Resources</span> 851 <ul> 852 <li><a href="https://hpbexpo.com/exhibit/exhibitor-hotel/">Exhibitor Hotel & Travel</a></li> 853 <li><a href="https://hpbexpo.com/exhibit/hpba-international-visitors/">International Visitors</a></li> 854 <li><a href="https://hpbexpo.com/exhibit/2027-exhibitor-marketing-toolkit/">Exhibitor Marketing Toolkit</a></li> 855 <li><a href="https://hpbexpo.com/exhibit/newsletters/">Exhibitor Newsletters</a></li> 856 <li><a class="alert" href="https://hpbexpo.com/exhibit/fraudwarning/">Fraudulent Offer Warning</a></li> 857 </ul> 858 </li> 859 </ul> 860 </li> 861 862 <li><a href="https://hpbexpo.com/our_sponsors/">Sponsors</a></li> 863 <li><a href="https://hpbexpo.com/media/">Media</a></li> 864 </ul> 865 </nav> 866 867 <div class="hpbhdr-ctas"> 868 <a class="hpbhdr-cta is-primary" href="https://hpbexpo.com/attend/badge-registration/">Register</a> 869 <a class="hpbhdr-cta is-secondary" href="https://hpbexpo.com/exhibit/apply-to-exhibit/">Apply to Exhibit</a> 870 </div> 871 872 <button class="hpbburger" type="button" aria-expanded="false" aria-controls="hpbdrawer" aria-label="Open menu"> 873 <span></span><span></span><span></span> 874 </button> 875 </div> 876</header> 877 878<div class="hpbscrim" id="hpbscrim" hidden></div> 879 880<div class="hpbdrawer" id="hpbdrawer" role="dialog" aria-modal="true" aria-label="Site menu" hidden> 881 <div class="hpbdrawer-top"> 882 <button class="hpbdrawer-close" type="button" aria-label="Close menu">×</button> 883 </div> 884 <ul> 885 <li> 886 <button type="button" aria-expanded="false">Attend 887 <svg class="caret" viewBox="0 0 12 12" width="12" height="12" aria-hidden="true"><path d="M2 4.5 6 8.5l4-4" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> 888 </button> 889 <ul class="sub"> 890 <li><a href="https://hpbexpo.com/attend/top-reasons-to-attend/">Why Attend</a></li> 891 <li><a href="https://hpbexpo.com/attend/badge-registration/">Badge Registration</a></li> 892 <li><a href="https://hpbexpo.com/attend/attendee-hotel/">Attendee Hotel & Travel</a></li> 893 <li><a href="https://www.visitmusiccity.com/meetings/client/hpbexpo27">Nashville Visitor Information</a></li> 894 <li><a href="https://hpbexpo.com/attend/participating-companies/">Participating Companies</a></li> 895 <li><a href="https://hpbexpo.com/attend/npp-aca/">New Product Pavilion / Attendees’ Choice Awards</a></li> 896 <li><a href="https://hpbexpo.com/show-info/policies/">Expo Policies</a></li> 897 <li><a href="https://hpbexpo.com/about-hpba/">HPBA Membership for Attendees</a></li> 898 </ul> 899 </li> 900 <li> 901 <button type="button" aria-expanded="false">Events 902 <svg class="caret" viewBox="0 0 12 12" width="12" height="12" aria-hidden="true"><path d="M2 4.5 6 8.5l4-4" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> 903 </button> 904 <ul class="sub"> 905 <!-- Same three groups as the desktop Events panel, one column deep. --> 906 <li class="drawerhd-li"><span class="drawerhd">Programming</span></li> 907 <li><a href="https://hpbexpo.com/showfeatures/events/">Schedule at a Glance</a></li> 908 <li><a href="https://hpbexpo.com/openingsession/">Opening Session</a></li> 909 <li><a href="https://hpbexpo.com/fireside-chats/">Fireside Chats</a></li> 910 <li><a href="https://hpbexpo.com/retailer-round-tables/">Retailer Roundtables</a></li> 911 <li><a href="https://hpbexpo.com/attend/expo-highlights-tour/">Expo Highlights Tour</a></li> 912 <li class="drawerhd-li"><span class="drawerhd">Receptions & Awards</span></li> 913 <li><a href="https://hpbexpo.com/industry-party/">Industry Party</a></li> 914 <li><a href="https://hpbexpo.com/awards/">Ultimate Awards Show</a></li> 915 <li><a href="https://hpbexpo.com/affiliatereceptions/">Affiliate Receptions</a></li> 916 <li class="drawerhd-li"><span class="drawerhd">Policies</span></li> 917 <li><a href="https://hpbexpo.com/ancillary-meeting-requests-policy/">Ancillary Meetings & Events Policy</a></li> 918 <li><a href="https://hpbexpo.com/suitcasing-outboarding-policy/">Suitcasing & Outboarding Policy</a></li> 919 </ul> 920 </li> 921 <li> 922 <button type="button" aria-expanded="false">Education 923 <svg class="caret" viewBox="0 0 12 12" width="12" height="12" aria-hidden="true"><path d="M2 4.5 6 8.5l4-4" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> 924 </button> 925 <ul class="sub"> 926 <li><a href="https://hpbexpo.com/education/">Education Program</a></li> 927 <li><a href="https://hpbexpo.com/hpbexpo27-education-speakers/">Speaker Lineup</a></li> 928 <li><a href="https://hpbexpo.com/manufacturer-training/">Manufacturer Training Sessions</a></li> 929 <li><a href="https://hpbexpo.com/certification/">Certification</a></li> 930 </ul> 931 </li> 932 <li> 933 <button type="button" aria-expanded="false">Exhibit 934 <svg class="caret" viewBox="0 0 12 12" width="12" height="12" aria-hidden="true"><path d="M2 4.5 6 8.5l4-4" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> 935 </button> 936 <ul class="sub"> 937 <!-- Same three groups as the desktop mega panel, one column deep.
938 Keep the order and the labels in step with it. --> 939 <li class="drawerhd-li"><span class="drawerhd">Considering Exhibiting</span></li> 940 <li><a href="https://hpbexpo.com/exhibit/why-exhibit/">Why Exhibit</a></li> 941 <li><a href="https://hpbexpo.com/exhibit/apply-to-exhibit/">Apply to Exhibit</a></li> 942 <li><a href="https://hpbexpo.com/exhibit/new-product-pavilion/">New Product Pavilion Entry</a></li> 943 <li><a href="https://s23.a2zinc.net/clients/HPBA/hpbexpo2027//Public/GeneratePDF.aspx?IMID=undefined&EventId=10&MapId=18">Exhibit Floor Plan</a></li> 944 <li><a href="https://hpbexpo.com/exhibit/hpba-membership/">HPBA Membership for Exhibitors</a></li> 945 <li class="drawerhd-li"><span class="drawerhd">Plan Your Show</span></li> 946 <li><a href="https://hpbexpo.com/exhibit/badge-registration/">Badge Registration</a></li> 947 <li><a href="https://hpbexpo.com/exhibit/general-info/">Exhibitor General Information</a></li> 948 <li><a href="https://hpbexpo.com/exhibit/deadlines/">Exhibitor Deadlines</a></li> 949 <li><a href="https://hpbexpo.com/exhibit/forms/">Exhibitor Forms</a></li> 950 <li><a href="https://hpbexpo.com/exhibit/exhibitor-insurance-requirements/">Exhibitor Insurance Requirements</a></li> 951 <li class="drawerhd-li"><span class="drawerhd">Travel & Resources</span></li> 952 <li><a href="https://hpbexpo.com/exhibit/exhibitor-hotel/">Exhibitor Hotel & Travel</a></li> 953 <li><a href="https://hpbexpo.com/exhibit/hpba-international-visitors/">International Visitors</a></li> 954 <li><a href="https://hpbexpo.com/exhibit/2027-exhibitor-marketing-toolkit/">Exhibitor Marketing Toolkit</a></li> 955 <li><a href="https://hpbexpo.com/exhibit/newsletters/">Exhibitor Newsletters</a></li> 956 <li><a class="alert" href="https://hpbexpo.com/exhibit/fraudwarning/">Fraudulent Offer Warning</a></li> 957 </ul> 958 </li> 959 <li><a href="https://hpbexpo.com/our_sponsors/">Sponsors</a></li> 960 <li><a href="https://hpbexpo.com/media/">Media</a></li> 961 </ul> 962 <a class="hpbdrawer-cta" href="https://hpbexpo.com/attend/badge-registration/">Register to Attend</a> 963 <a class="hpbdrawer-cta is-secondary" href="https://hpbexpo.com/exhibit/apply-to-exhibit/">Apply to Exhibit</a> 964</div> 965
966<script> 967(function () { 968 var hdr = document.getElementById('hpbhdr'); 969 var burger = document.querySelector('.hpbburger'); 970 var drawer = document.getElementById('hpbdrawer'); 971 var scrim = document.getElementById('hpbscrim'); 972 var closeBt = drawer.querySelector('.hpbdrawer-close'); 973 974 /* Adds the drop shadow once the page has moved. 975 Called once immediately as well as on scroll, so a page opened at an 976 anchor â or restored mid-page by the back button â gets the right state 977 straight away instead of waiting for the first scroll event. */ 978 function setScrolled() { 979 hdr.classList.toggle('scrolled', scrollY > 4); 980 } 981 addEventListener('scroll', setScrolled, { passive: true }); 982 setScrolled(); 983 984 /* ââ desktop dropdowns ââ 985 Hover is handled in CSS. This adds click and keyboard support, which 986 hover alone never gives you â important for touch laptops and for 987 anyone navigating with a keyboard. */ 988 document.querySelectorAll('.hpbnav > ul > li > button').forEach(function (btn) { 989 var li = btn.parentNode; 990 btn.addEventListener('click', function (e) { 991 e.stopPropagation(); 992 var wasOpen = li.classList.contains('open'); 993 closeAllDesktop(); 994 if (!wasOpen) { li.classList.add('open'); btn.setAttribute('aria-expanded', 'true'); } 995 }); 996 }); 997 function closeAllDesktop() { 998 document.querySelectorAll('.hpbnav > ul > li.open').forEach(function (li) { 999 li.classList.remove('open'); 1000 var b = li.querySelector('button'); if (b) b.setAttribute('aria-expanded', 'false'); 1001 }); 1002 } 1003 document.addEventListener('click', closeAllDesktop); 1004 document.addEventListener('keydown', function (e) { 1005 if (e.key === 'Escape') { closeAllDesktop(); if (drawer.classList.contains('open')) closeDrawer(); } 1006 }); 1007 1008 /* ââ mobile drawer ââ */ 1009 function openDrawer() { 1010 drawer.hidden = false; scrim.hidden = false; 1011 requestAnimationFrame(function () { 1012 drawer.classList.add('open'); scrim.classList.add('open'); 1013 }); 1014 burger.setAttribute('aria-expanded', 'true'); 1015 burger.setAttribute('aria-label', 'Close menu'); 1016 document.body.classList.add('hpb-locked'); 1017 closeBt.focus(); 1018 } 1019 function closeDrawer() { 1020 drawer.classList.remove('open'); scrim.classList.remove('open'); 1021 burger.setAttribute('aria-expanded', 'false'); 1022 burger.setAttribute('aria-label', 'Open menu'); 1023 document.body.classList.remove('hpb-locked'); 1024 burger.focus(); 1025 setTimeout(function () { 1026 if (!drawer.classList.contains('open')) { drawer.hidden = true; scrim.hidden = true; } 1027 }, 280); 1028 } 1029 burger.addEventListener('click', function () { 1030 drawer.classList.contains('open') ? closeDrawer() : openDrawer(); 1031 }); 1032 closeBt.addEventListener('click', closeDrawer); 1033 scrim.addEventListener('click', closeDrawer); 1034 1035 /* drawer accordions */ 1036 drawer.querySelectorAll('button[aria-expanded]').forEach(function (btn) { 1037 btn.addEventListener('click', function () { 1038 var li = btn.parentNode; 1039 var open = li.classList.toggle('open'); 1040 btn.setAttribute('aria-expanded', open ? 'true' : 'false'); 1041 }); 1042 }); 1043 1044 /* keep focus inside the drawer while it's open */ 1045 drawer.addEventListener('keydown', function (e) { 1046 if (e.key !== 'Tab') return; 1047 var f = drawer.querySelectorAll('a[href], button:not([disabled])'); 1048 if (!f.length) return; 1049 var first = f[0], last = f[f.length - 1]; 1050 if (e.shiftKey && document.activeElement === first) { last.focus(); e.preventDefault(); } 1051 else if (!e.shiftKey && document.activeElement === last) { first.focus(); e.preventDefault(); } 1052 }); 1053 1054 /* if the window grows past the breakpoint while the drawer is open, close it */ 1055 var mq = matchMedia('(min-width:1281px)'); 1056 (mq.addEventListener ? mq.addEventListener.bind(mq, 'change') : mq.addListener.bind(mq))(function (e) { 1057 if (e.matches && drawer.classList.contains('open')) closeDrawer(); 1058 }); 1059})(); 1060</script>
1060 </div> 1061 </div> 1062 </div> 1063 </header> 1064 1065 1066<main class="page cloak"> 1067 1068 <div data-elementor-type="wp-page" data-elementor-id="5469" class="elementor elementor-5469" data-elementor-post-type="page"> 1069 <div class="elementor-element elementor-element-131cbd7 e-con-full e-flex e-con e-parent" data-id="131cbd7" data-element_type="container" data-e-type="container"> 1070 <div class="elementor-element elementor-element-5dab1eb elementor-widget elementor-widget-html" data-id="5dab1eb" data-element_type="widget" data-e-type="widget" data-widget_type="html.default"> 1071 <div class="elementor-widget-container"> 1072 <link rel="stylesheet" href="https://use.typekit.net/nvu8eqw.css"> 1073<link rel="stylesheet" href="https://use.typekit.net/gme3gvs.css"> 1074<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=EB+Garamond:wght@400;500;600;700&family=Radio+Canada+Big:wght@400;500;600;700&family=Montserrat:wght@500;600;700&family=Roboto:wght@400;500;700&display=swap"> 1075 1076<style> 1077/* Generated â edit shared/hpb-styles.css, not this block. */ 1078/* sections: core, carousel */ 1079/* ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1080 WHY HEADINGS ARE WRITTEN `.hpb.hpb` AND WHY SOME SELECTORS APPEAR TWICE 1081 1082 The WordPress child theme (wp-content/themes/hpbe2022/css/style.css) 1083 styles bare elements harder than this stylesheet can normally answer. 1084 Two mechanisms, two different answers. Neither is visible in local 1085 preview â this whole class of bug only shows up on WordPress. 1086 1087 1. HEADINGS. The theme declares, at specificity (0,2,1): 1088 1089 .premiere .page h1,h2,h3 {font-family:"adobe-garamond-pro",serif 1090 !important; color:#242324 !important;} 1091 .premiere .page h2 {font-size:60px !important; 1092 line-height:70px !important;} 1093 .premiere .page h3 {font-size:30px !important; 1094 line-height:40px !important;} 1095 1096 Two things are needed to beat that. `!important`, because nothing 1097 else outranks `!important` â so every rule here that sets color, 1098 font-family, font-size or line-height on an h1-h4 states it 1099 !important, consistently. And enough specificity, because when both 1100 sides are !important the cascade falls back to specificity: a plain 1101 `.hpb h3` is (0,1,1) and still loses. Repeating the class â 1102 `.hpb.hpb h3` â costs nothing, always matches, and lifts the base 1103 heading rules to (0,2,1), where source order decides and this 1104 stylesheet wins because it ships inside the page, below the theme's 1105 <link>. Section-level heading rules keep their extra class and land 1106 at (0,3,1), so this file's own hierarchy is unchanged. 1107 1108 text-align, text-transform and letter-spacing are NOT !important in 1109 the theme, so those stay plain here. 1110 1111 2. p / span / li. The theme wins these on specificity alone: 1112 1113 .premiere .page p, .premiere .page span, .premiere .page li 1114 {font-family:"Radio Canada Big"; font-size:20px; line-height:30px;} 1115 1116 Also (0,2,1). A single-class rule like `.hpb .lede` is (0,2,0) and 1117 loses. Writing it a second time as `.hpb p.lede` ties at (0,2,1) and 1118 wins on source order. The plain selector stays in the list for any 1119 other element that uses the same class. 1120 1121 HOW IT LOOKS WHEN IT BITES: headings render centred, near-black and in 1122 Garamond; span and p text collapses to 20px Radio Canada Big. Seen live 1123 on the homepage carousel and the "More to Experience" tiles, 2026-08-13. 1124 1125 ADDING A RULE: heading rules start `.hpb.hpb` and mark those four 1126 properties !important. A rule that styles a <span>, <p> or <li> by one 1127 class gets its selector written twice. Check it on a WordPress preview, 1128 not just the local file. 1129 ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1130/* âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1131 SHARED â used by every page 1132 âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1133/* ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1134 Design tokens lifted from the live hpbexpo.com stylesheet. 1135 Serif = adobe-garamond-pro (Typekit), EB Garamond as fallback. 1136 Label = Montserrat / Radio Canada Big, uppercase. 1137 UI = Roboto (buttons only, matching Elementor's button style). 1138 ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1139 .hpb { 1140 --ink:#242324; /* body + headings */ 1141 --muted:#69727d; 1142 /* moved here from the membership section â the hotel page uses it too */ 1143 --muted-on-blue:#5e6770; /* section labels, secondary text */ 1144 --orange:#e27334; /* button orange */ 1145 --orange-hi:#f36f21; /* accent orange */ 1146 --orange-dark:#c25c25; 1147 --orange-on-navy:#f69358; /* brand orange + 25% white â 4.81:1 on navy (AA) */ 1148 --blue:#0091cc; /* hairline rules, icons, links */ 1149 --blue-soft:#7fc9e6; 1150 --green:#38b452; /* Elementor global green */ 1151 --navy:#003e6f; /* HPBA Navy, sampled from the HPBExpo logo */ 1152 --navy-deep:#002a4d; /* darker navy, hero overlay only */ 1153 --dark:var(--navy); /* every dark band uses HPBA Navy */ 1154 1155 /* ââ RADIUS âââââââââââââââââââââââââââââââââââââââââââââââââââââââ
1156 The site's radius scale. 10px is the default and covers buttons, 1157 cards and panels. Two rules still use a raw 8px (the day-nav body 1158 tabs) â the only off-scale values left. Circles use 50%, not a 1159 token, because a token can't express "always half the box". */ 1160 --r-xs:4px; 1161 --r-sm:10px; 1162 --r-md:12px; 1163 --r-lg:14px; 1164 --r-pill:999px; 1165 /* ââ HERO PHOTOS ââââââââââââââââââââââââââââââââââââââââââââââââââ 1166 Hero backgrounds are CSS background-images, not <img> tags, so there 1167 is no src= to edit in the markup. Swap a hero photo by changing the 1168 URL here â this is the only place they live. */ 1169 --hero-prospectus:url('https://hpbexpo.com/wp-content/uploads/2026/07/nashville-skyline.jpg'); 1170 --hero-membership:url('https://hpbexpo.com/wp-content/uploads/2026/07/IMG_4978.jpg'); 1171 --hero-hotel:url('https://hpbexpo.com/wp-content/uploads/2026/07/nashville-skyline.jpg'); 1172 --hero-apply:url('https://hpbexpo.com/wp-content/uploads/2026/07/IMG_2781.jpg'); 1173 --hero-sponsors:url('https://hpbexpo.com/wp-content/uploads/2026/07/sponsorship_signage.jpg'); 1174
1175 /* Height of the site header. Anchor links offset by this so a jumped-to 1176 heading lands below the header instead of behind it. 1177 1178 THIS MUST MATCH min-height ON .hpbhdr-inner IN 1179 pages/global-header/header.html. They are two files that have to agree, 1180 and nothing enforces it â if this is short, a jumped-to heading hides 1181 behind the header, which looks like a broken link rather than a spacing 1182 bug. 1183 1184 92px -> 112px on 2026-07-29, logo 66 -> 82 (+25%) 1185 112px -> 140px on 2026-07-31, logo 82 -> 110 1186 140px -> 168px on 2026-07-31, logo 110 -> 138 (+25%) */ 1187 --header-h:168px; 1188 1189 --gutter:3rem; /* side margin. was 30px (1.875rem) â one knob, tune here */ 1190 --grey-bg:#f4f4f4; 1191 --rule:#dcdcdc; 1192 1193 --serif:'adobe-garamond-pro','EB Garamond',Garamond,Georgia,'Times New Roman',serif; 1194 --label:'Radio Canada Big',Montserrat,'Helvetica Neue',Arial,sans-serif; 1195 --ui:Roboto,'Helvetica Neue',Arial,sans-serif; 1196 1197 font-family:var(--serif); 1198 color:var(--ink); line-height:1.45; overflow-x:hidden; 1199 /* The theme centres .entry-content-inner and that inherits into every 1200 block. Reset here so the design's own alignment governs again. */ 1201 text-align:left; 1202 -webkit-font-smoothing:antialiased; 1203 1204 /* ââ FULL-BLEED ESCAPE ââââââââââââââââââââââââââââââââââââââââââââ 1205 A page renders inside the theme's content wrapper AND Elementor's 1206 container. Zeroing the container you can see still leaves an outer 1207 one, so the navy bands stop short of the screen edges. 1208 1209 Negative margins of (50% - 50vw) pull the block out to the viewport 1210 edges no matter how many wrappers sit above it. overflow-x:hidden 1211 above stops the scrollbar's width causing a horizontal scroll. 1212 1213 If the page is ALREADY full width, this is a no-op â 50% and 50vw 1214 are equal, so the margins compute to zero. Safe either way. */ 1215 margin-left:calc(50% - 50vw); 1216 margin-right:calc(50% - 50vw); 1217 width:100vw; 1218 max-width:100vw; 1219 1220 /* ââ CLOSING THE GAP UNDER THE HEADER ââââââââââââââââââââââââââââââ 1221 If a white strip still shows between the header and the hero after 1222 the rules below, raise this one number until it closes. Leave it at 1223 0px unless you actually see a gap â a positive value on a page with 1224 no gap will slide the hero up under the header. */ 1225 --pull-up:0px; 1226 margin-top:calc(0px - var(--pull-up)); 1227 } 1228 .hpb *{box-sizing:border-box;} 1229 /* ââ THE 1920px BODY CAP âââââââââââââââââââââââââââââââââââââââââââ 1230 The negative margins above only reach as far as the nearest ancestor 1231 that clips. On this site that ancestor is `article.entry`, which sets 1232 overflow:hidden, and it sits inside a body the theme caps: 1233 1234 body { max-width: 1920px; margin: 0 auto; } 1235 1236 Below 1920px the body fills the window and the cap is invisible. Above 1237 it â a 4K monitor, a wide ultrawide â the body centres at 1920 and the 1238 block gets clipped to it, so the hero stops with white gutters either 1239 side while the rest of the page looks fine. That is the bug this rule 1240 fixes, and it only ever shows up on a screen wider than most people 1241 test on. 1242 1243 Lifting the cap on pages that carry a block is enough. Worth knowing 1244 why it does not then cause a horizontal scrollbar: 100vw includes the 1245 scrollbar's width, so the block overhangs the document by ~7px each 1246 side â and article.entry's overflow:hidden, the same rule that was 1247 clipping us, now trims exactly that overhang. The two work together 1248 once the cap is gone. 1249 1250 Scoped with :has() so only pages with a block are affected, and this 1251 stylesheet ships inside the block anyway. Verified live at a 2089px 1252 viewport, 2026-08-13. */ 1253 body:has(.hpb){max-width:none;} 1254 1255 1256 1257 /* Below 1200px the header switches to the hamburger and its bar shrinks to
1258 96px, so the anchor offset follows it down. Same 1200px breakpoint as 1259 --nav-break in the header file. */ 1260 @media (max-width:1200px){ 1261 .hpb{--header-h:96px;} 1262 } 1263 1264 /* Elementor's default widget bottom margin (--widget-spacing, 20px) and its 1265 container padding stack up into a white band above the hero. These rules 1266 reach up from inside the pasted block and zero them, so the fix doesn't 1267 depend on getting every Elementor padding field right. 1268 1269 THE SELECTORS ARE DESCENDANT, NOT CHILD â ON PURPOSE. The first version 1270 of this used exact chains like 1271 .e-con:has(> .e-con-inner > .elementor-widget > ... > .hpb) 1272 which worked on the five interior pages and silently missed on the home 1273 page, because Elementor nests containers differently depending on how the 1274 page was built. A structure-specific selector is a selector that will fail 1275 on the next page someone builds. `:has(.hpb)` matches however deep it is. 1276 1277 The trade: this also zeroes padding on ANY ancestor container wrapping the 1278 block. That's correct here, because every .hpb block is a full-bleed 1279 region that should sit flush. If you ever drop a .hpb block into the 1280 MIDDLE of an Elementor page with spacing above it, that spacing will 1281 collapse â use --pull-up above with a negative value, or wrap the block in 1282 a container these rules don't reach. 1283 1284 :has() works in every current browser; on anything older, zero the widget 1285 margin and container padding by hand in the Advanced tab. */ 1286 .elementor-widget:has(.hpb){margin-bottom:0 !important;} 1287 .elementor-widget-container:has(> .hpb){padding:0 !important; margin:0 !important;} 1288 .e-con:has(.hpb), 1289 .e-con-inner:has(.hpb), 1290 .elementor-section:has(.hpb), 1291 .elementor-container:has(.hpb), 1292 .elementor-column:has(.hpb), 1293 .elementor-widget-wrap:has(.hpb){ 1294 padding-top:0 !important; padding-bottom:0 !important;} 1295 1296 /* ââ The theme's page header band and page title ââââââââââââââââââââââ 1297 Every interior page gets two things from the theme template, above the 1298 Elementor content and outside anything Elementor can reach: 1299 1300 section.entry-header a photo band, or a colour if no 1301 featured image is set. Its only child 1302 is div.hero-bg-transparency. 1303 .content-wrap > .fitty > h1 the page title, with an empty h2 under 1304 it for the unused Subtitle field. 1305 1306 Every block in this stylesheet opens with its own hero, so the band 1307 duplicates that hero and the title duplicates the hero's h1 â the 1308 exhibitor hotel page was serving TWO h1 elements, which is a real 1309 search problem, not just a visual one. 1310 1311 Scoped to body.sub-page so the homepage is untouched, and it only 1312 loads at all on pages that carry a block, since this stylesheet ships 1313 inside the block. Nothing in the theme is modified. 1314 1315 THE THEME'S OWN SWITCH: Page Attributes (Extended) â "Hide Title" does 1316 the title half per page, and the band has no switch. This rule does 1317 both, once, for every page â but if a page ever needs the theme header 1318 back, delete these two lines from that page's style block rather than 1319 fighting them. 1320 1321 Verified against the live exhibitor hotel page 2026-08-13. */ 1322 body.sub-page .entry-header{display:none;} 1323 body.sub-page .entry-content > .entry-content-inner > .content-wrap{display:none;} 1324 1325 /* ââ THEME RESET ââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1326 These pages sit inside a WordPress theme that styles bare HTML elements 1327 site-wide. Anything not explicitly claimed here inherits whatever the 1328 theme decided. This block neutralises the properties themes most often 1329 set, so the pages render the same in local preview and on the live site. 1330 1331 Symptom this fixes: a vertical rule appearing to the left of the 1332 testimonial quotes, from the theme's blockquote border. */ 1333 .hpb blockquote{margin:0; padding:0; border:0; background:none; 1334 quotes:none; font-style:normal;} 1335 .hpb blockquote::before,.hpb blockquote::after{content:none;} 1336 .hpb figure{margin:0; padding:0;} 1337 .hpb figcaption{margin:0; padding:0; font-size:inherit; color:inherit; text-align:inherit;} 1338 .hpb ul,.hpb ol{margin:0; padding:0; list-style:none;} 1339 .hpb table{border-collapse:collapse; width:100%; margin:0;} 1340 .hpb th,.hpb td{border:0; vertical-align:middle;} 1341 .hpb button{font:inherit; color:inherit; background:none; border:0; margin:0; 1342 -webkit-appearance:none; appearance:none;} 1343 .hpb img{max-width:100%; height:auto; border:0; border-radius:0; box-shadow:none;} 1344 .hpb a{text-decoration:none; box-shadow:none;} 1345 .hpb p,.hpb h1,.hpb h2,.hpb h3,.hpb h4{text-shadow:none;} 1346 .hpb section{margin:0;} 1347 .hpb section{padding:88px var(--gutter); position:relative;} 1348 .hpb .wrap{max-width:1380px; margin:0 auto; position:relative; z-index:1;} 1349 .hpb .narrow{max-width:900px;} 1350 .hpb.hpb h1, 1351 .hpb.hpb h2{font-family:var(--serif) !important; font-weight:700; color:var(--ink) !important; 1352 margin:0 0 20px; line-height:1.16 !important; letter-spacing:-1px; 1353 text-transform:none !important; 1354 /* The theme has a SECOND heading rule, `text-align:center !important`. 1355 Inheritance cannot beat a direct declaration, so headings have to 1356 state alignment themselves. `inherit` reproduces exactly what the 1357 local file does â take it from the container â instead of pinning 1358 every heading left and breaking the centred cards. */ 1359 text-align:inherit !important;} 1360 .hpb.hpb h1{font-size:clamp(42px,6vw,80px) !important; letter-spacing:-2px;} 1361 .hpb.hpb h2{font-size:clamp(32px,4.6vw,60px) !important;} 1362 .hpb.hpb h3{font-family:var(--label) !important; font-weight:700; font-size:20px !important; 1363 text-align:inherit !important; 1364 text-transform:uppercase; letter-spacing:.3px; color:var(--muted) !important; 1365 margin:0 0 14px; padding-bottom:14px; border-bottom:2px solid var(--blue); 1366 line-height:1.3 !important;} 1367 .hpb.hpb h3.plainhd{border-bottom:none; padding-bottom:0; color:var(--ink) !important;} 1368 1369 /* `.hpb.hpb p` rather than `.hpb p`, and padding stated explicitly, because 1370 the theme wraps page content in .banner-space > .banner-space-inner and 1371 declares `p{padding:0 30px}` there at (0,2,1). A plain `.hpb p` is (0,1,1) 1372 and loses, so every paragraph on WordPress sat 30px in from its own 1373 heading while looking flush in local preview â the indent under "Priority 1374 Points", "Airport" and "Maritz Housing" was all this one rule. Same reason 1375 line-height is here: the theme sets 30px on p and inheritance can't answer 1376 a direct declaration. Verified live 2026-08-13. */ 1377 .hpb.hpb p{margin:0 0 18px; font-size:20px; line-height:1.45; 1378 padding-left:0; padding-right:0; font-family:inherit; text-align:inherit;}
1379 /* Same rule sets font-family, font-size and line-height directly on p, span 1380 and li, so inheritance from .hpb never reaches them and every paragraph 1381 rendered in Radio Canada Big on WordPress while the local file showed 1382 Adobe Garamond. `inherit` restores the local behaviour exactly â take the 1383 face from the container â so .slide p and .btile p keep their Roboto and 1384 everything else falls back to the serif. Placed here, near the top of 1385 core, so the specific span rules further down still win. */ 1386 /* text-align:inherit here and on p above answers a second phone rule in 1387 the theme, `.premiere .page p, span, li {text-align:left}` at (0,2,1) 1388 below 768px. A direct declaration beats inheritance, so every block 1389 span or p that was taking its centring from a parent â the day-nav 1390 labels, the stat figures, the video caption â snapped left on phones. 1391 `inherit` is the default anyway, so this changes nothing in the local 1392 file; it only restores it on WordPress. */ 1393 .hpb.hpb li,.hpb.hpb span{font-family:inherit; font-size:inherit; 1394 line-height:inherit; text-align:inherit;} 1395 /* ââ PHONE ALIGNMENT ââââââââââââââââââââââââââââââââââââââââââââââââââ 1396 Below 768px the theme re-aligns everything, all with !important: 1397 1398 .premiere .page ul li, ol li text-align:center (0,2,2) 1399 .premiere .page p, span, li text-align:left (0,2,1) 1400 .premiere .page h1-h6, .premiere .page, 1401 .premiere .page p text-align:center (0,2,1) 1402 1403 Net effect on a phone: the block's own container is centred, every 1404 span is forced left, every p is forced centre, and every list item is 1405 centred and flattened to display:block. Seen live on the events 1406 schedule 2026-09-09: time and event name ran together on one centred 1407 line, the day-nav labels sat left in their boxes, and the "members 1408 only" note hung left under a centred row. 1409 1410 The answer is the same shape as the heading fix at the top of core: 1411 !important to meet !important, matching specificity, and this 1412 stylesheet ships later in the page, so it wins the tie. `inherit` 1413 reproduces the local file â take alignment from the container â 1414 rather than pinning a direction, so a list inside a centred card 1415 stays centred and one inside a left column stays left. 1416 1417 Because these are !important, the handful of p and span rules in this 1418 file that set text-align WITHOUT !important would lose to them on a 1419 phone, so those are restated here with weight. If you add a text-align 1420 to a p or span anywhere in this file, add it to this list too, or it 1421 will hold on desktop and quietly not on phones. 1422 1423 Any li that is display:grid or flex ALSO needs its display restated at 1424 (0,3,1) or better â see .schlist li in @section events. The offline 1425 sweep runs at desktop width by default; run it with --width 390 as 1426 well. */ 1427 @media (max-width:767px){ 1428 .hpb.hpb{text-align:left !important;} 1429 .hpb.hpb p,.hpb.hpb span{text-align:inherit !important;} 1430 .hpb.hpb ul li,.hpb.hpb ol li{text-align:inherit !important;} 1431 /* restated from elsewhere in this file, see above */ 1432 .hpb .alertbar p{text-align:center !important;} 1433 .hpb span.vidcap{text-align:center !important;} 1434 .hpb p.finenote,.hpb p.pathlead,.hpb p.listcta, 1435 .hpb p.conote,.hpb p.schnote{text-align:center !important;} 1436 .hpb .azbar span{text-align:center !important;} 1437 .hpb .slide .ceyebrow,.hpb .slide p{text-align:left !important;} 1438 } 1439 /* Utility for the odd centred component that needs to sit left in one 1440 place â the hotel page's second .pathlead. An inline style="text-align" 1441 used to do this, but an inline style is not !important and loses to the 1442 phone block above. Stated with weight so it holds at every width. */ 1443 .hpb .alignleft,.hpb p.alignleft{text-align:left !important;} 1444 .hpb a{color:var(--blue);} 1445 1446 /* ââ Section-intro alignment ââââââââââââââââââââââââââââââââââââââââââ 1447 Centers the eyebrow, heading and lede of full-width sections. Scoped to 1448 DIRECT children of .wrap so two-column blocks (.media, .nash-txt) and the 1449 hero keep their left alignment â their text sits deeper in the tree. 1450
1451 Declared explicitly rather than inherited: a theme rule that targets `p` 1452 or `h2` directly beats any inherited alignment from a parent, no matter 1453 how specific that parent selector is. This is why the ledes stayed 1454 left-aligned inside WordPress. */ 1455 .hpb section > .wrap > .eyebrow, 1456 .hpb section > .wrap > h2, 1457 .hpb section > .wrap > .lede{text-align:center !important;} 1458 /* .eyebrow is inline-block by default. text-align on an inline-block centers 1459 its contents, not the box â the box still sits at the left of the line. 1460 display:block makes it span the row so the centering actually applies. */ 1461 .hpb section > .wrap > .eyebrow{display:block;} 1462 .hpb section > .wrap > .lede{margin-left:auto; margin-right:auto;} 1463 /* Buttons that belong to a centered section intro center with it. Rows nested 1464 inside two-column blocks or cards keep their own alignment. */ 1465 .hpb section > .wrap > .btn-row{justify-content:center;} 1466 /* Headings inside two-column blocks sit beside a photo, so they stay left. 1467 Stated explicitly because the theme centers every h2 site-wide. */ 1468 .hpb .media h2,.hpb .media .eyebrow,.hpb .media .lede, 1469 .hpb .nash-txt h2,.hpb .nash-txt .eyebrow{text-align:left !important;} 1470 1471 /* Hero copy is left-aligned in every case â it sits in a two-column layout 1472 beside a video, photo or stat panel, so centering it strands it away from 1473 the artwork. Declared explicitly because the theme centers all headings, 1474 and the hero h1 is nested inside .herogrid rather than being a direct 1475 child of .wrap, so the section-intro rules above never reach it. */ 1476 /* !important is not decoration here. This theme styles bare h1/h2/p with 1477 enough force to beat a two-class selector â it already had to be used on 1478 text-transform above for the same reason. Seen live on the events page: 1479 the hero h1 rendered centred and near-black instead of left and white, 1480 because the theme's own heading rule won. Anything the theme also sets 1481 on these elements has to be stated with the same weight. */ 1482 .hpb .hero h1,.hpb .hero h2,.hpb .hero .kicker, 1483 .hpb .hero .sub,.hpb .hero .heronote,.hpb .hero p{text-align:left !important;} 1484 1485 /* The brand name keeps its own casing everywhere, including inside headings 1486 and labels that are otherwise set in caps â HPBExpo, never HPBEXPO. 1487 Applies whether the caps come from this stylesheet or the WordPress theme. */ 1488 /* The `span` qualifier is load-bearing â see the note on .cdnum in 1489 @section carousel. Without it the brand name inside a heading or a 1490 paragraph drops to 20px Radio Canada Big while the text around it stays 1491 put, so "HPBExpo27" renders larger or smaller than the sentence holding 1492 it. Verified on the live homepage 2026-08-13. */ 1493 .hpb .brand,.hpb span.brand{text-transform:none !important; 1494 font-family:inherit; font-size:inherit; line-height:inherit;} 1495 1496 /* section label above the h2 */ 1497 .hpb .eyebrow{display:inline-block; font-family:var(--label); text-transform:uppercase; 1498 letter-spacing:1.8px; font-weight:700; font-size:14px; color:var(--muted); 1499 margin-bottom:14px;} 1500 .hpb .lede, 1501 .hpb p.lede{font-size:23px; line-height:1.42; color:var(--ink); max-width:840px;} 1502 1503 /* buttons â matched to Elementor's live button widget */ 1504 .hpb .btn{display:inline-block; font-family:var(--ui); font-weight:500; font-size:18px; 1505 padding:14px 26px; border-radius:var(--r-sm); text-decoration:none; border:2px solid transparent; 1506 transition:.15s; line-height:1.3;} 1507 .hpb .btn-primary{background:var(--orange); color:#fff; border-color:var(--orange);} 1508 .hpb .btn-primary:hover{background:var(--orange-dark); border-color:var(--orange-dark); color:#fff;} 1509 .hpb .btn-ghost{background:transparent; color:#fff; border-color:#fff;} 1510 .hpb .btn-ghost:hover{background:#fff; color:var(--ink);} 1511 .hpb .btn-outline{background:transparent; color:var(--navy); border-color:var(--navy);} 1512 .hpb .btn-outline:hover{background:var(--navy); color:#fff;} 1513 1514 /* Keyboard focus. Matches the ring used elsewhere on the site: 1515 3px solid, 3px offset. --blue on light backgrounds (3.55:1 against 1516 white, over the 3:1 WCAG needs for a non-text indicator); 1517 --blue-soft for the ghost button, which sits on navy or photography 1518 where --blue would be too dark to see (5.94:1 on navy). */ 1519 .hpb .btn-primary:focus-visible, 1520 .hpb .btn-outline:focus-visible{outline:3px solid var(--blue); outline-offset:3px;} 1521 .hpb .btn-ghost:focus-visible{outline:3px solid var(--blue-soft); outline-offset:3px;} 1522 .hpb .btn-row{display:flex; gap:14px; flex-wrap:wrap; margin-top:10px;} 1523 .hpb .hero .btn{padding:12px 24px; font-size:17px;} 1524 1525 /* ââ Pending call-to-action âââââââââââââââââââââââââââââââââââââââââ 1526 Registration and the brochure are announced but not live. The buttons 1527 therefore use the ORDINARY button styles â .btn-primary and .btn-ghost, 1528 exactly as a live CTA would â and the pending state is carried by a 1529 separate label sitting under each one, outside the button itself. 1530 1531 They are <span>s, not <a>s. An <a> with no href looks clickable, does 1532 nothing, and reads as a broken control to a screen reader; a span in a 1533 button's clothing at least does not promise a destination. This is a 1534 deliberate short-term state: the buttons look completely live, so the 1535 COMING SOON label is the only thing distinguishing them. Do not remove 1536 the label without making the buttons real links in the same edit. 1537 1538 Used by Why Attend and Participating Companies, which is why it lives in
1539 core rather than in either page's own section. 1540 1541 WHEN THE REAL LINKS EXIST: change <span class="btn btn-primary"> to 1542 <a class="btn btn-primary" href="..."> and delete the .pendlbl div. 1543 The .pend wrapper can stay or go â it collapses to nothing. 1544 1545 .pendlbl is a <div>, not a <span>, so it sidesteps the theme's 1546 `.premiere .page span` rule entirely â see the note at the top of 1547 @section core. --orange-on-navy is safe here because the label now sits 1548 on solid navy rather than on a translucent button fill. */ 1549 /* A <span class="btn"> does NOT inherit the button's type styles on its own. 1550 `.hpb .btn` is (0,2,0), and it loses twice over: to core's 1551 `.hpb.hpb span{font-family:inherit; font-size:inherit}` at (0,2,1) in 1552 local preview, and to the theme's `.premiere .page span` at (0,2,1) on 1553 WordPress. Result: these two buttons rendered in Garamond at body size 1554 while the real <a> button beside them rendered correctly in Roboto. 1555 1556 Restating font at (0,3,1) fixes both at once. The <a> buttons need none 1557 of this â the whole problem exists only because a pending button has to 1558 be a span rather than a link. 1559 1560 The sweep cannot catch this: it diffs local against WordPress, and the 1561 rule was losing in both, so both agreed and the page came back clean.
1562 scripts/selfcheck.mjs in the audit skill is what catches this class. */ 1563 .hpb .pend span.btn{font-family:var(--ui); font-size:18px; line-height:1.3;} 1564 .hpb .hero .pend span.btn{font-size:17px;} 1565 .hpb .pend{display:flex; flex-direction:column; align-items:center; gap:9px;} 1566 .hpb .pendlbl{font-family:var(--label); font-size:11px; font-weight:700; 1567 text-transform:uppercase; letter-spacing:1.2px; color:var(--orange-on-navy);} 1568 1569 /* placeholders â deliberately loud */ 1570 .hpb .ph{display:inline-block; padding:2px 12px; border:2px dashed var(--orange-hi); 1571 border-radius:var(--r-xs); background:#fff4ec; color:#a8501a; font-family:var(--label); 1572 font-weight:700; letter-spacing:.5px;} 1573 .hpb .ph-block{border:2px dashed var(--orange-hi); border-radius:var(--r-sm); 1574 background:#fff4ec; padding:28px; color:#a8501a;} 1575 .hpb .ph-note{font-family:var(--label); font-size:13px; font-weight:700; 1576 text-transform:uppercase; letter-spacing:1.2px; color:#a8501a; margin:0;} 1577 1578 /* âââââ HERO âââââ */ 1579 /* The hero photo is painted on the SECTION itself, not on a helper <div>. 1580 An empty <div class="hero-bg"> is easy to lose when copying markup, and if 1581 it goes missing the photo silently disappears with no other symptom. 1582 Darkening is handled entirely by the ::after scrim below. */ 1583 .hpb .hero{padding:0 var(--gutter); display:flex; align-items:center; 1584 background-color:var(--navy); background-image:var(--hero-prospectus); 1585 background-size:cover; background-position:center;} 1586 /* kept so any leftover markup stays harmless */ 1587 .hpb .hero-bg{display:none;} 1588 /* Scrim strength is a balance: dark enough on the left for white headline 1589 text to pass contrast, light enough on the right for the photo to read. 1590 Checked at 4.5:1 for the body copy over the darkest point. */ 1591 .hpb .hero::after{content:''; position:absolute; inset:0; 1592 background:linear-gradient(100deg, rgba(0,42,77,.90) 0%, rgba(0,42,77,.70) 48%, rgba(0,42,77,.46) 100%);} 1593 /* width:100% is essential â .wrap is a FLEX ITEM here (the hero is display:flex). 1594 Without it the item sizes to content, max-width never engages, and margin:0 auto 1595 centers the block â which is why hero text once sat right of every other section. */ 1596 .hpb .hero .wrap{width:100%; padding:52px 0 40px; z-index:2;} 1597 .hpb .herogrid{display:grid; grid-template-columns:1fr 1.05fr; gap:52px; align-items:center;} 1598 .hpb.hpb .hero h1{color:#fff !important; margin-bottom:14px; 1599 font-size:clamp(34px,4.4vw,56px) !important; letter-spacing:-1.4px;} 1600 .hpb .hero .kicker{font-family:var(--label); color:var(--orange-on-navy); font-weight:700; 1601 letter-spacing:2.6px; text-transform:uppercase; font-size:13px; margin-bottom:12px;} 1602 .hpb .hero .sub{color:#e2edf4; font-size:21px; max-width:520px; margin-bottom:24px; line-height:1.4;} 1603 /* Hero footnote. Lived in @section sponsors until 2026-08-13, which meant 1604 any hero on a page that doesn't load that section â events schedule, 1605 attendee hotel â rendered it in near-black on navy, i.e. invisible. 1606 It belongs with the hero, and the hero is core. 1607 1608 margin is stated with weight for the same reason as the hero headings: 1609 the theme zeroes paragraph margins, which pulled this note up against 1610 the dates block and made the two look collided. */ 1611 .hpb .heronote, 1612 .hpb p.heronote{margin:24px 0 0 !important; font-size:16px; color:#c3d8e6;} 1613 .hpb .heronote strong{color:#fff;} 1614 1615 .hpb .hero .when{display:flex; flex-wrap:wrap; margin:0; 1616 border-left:3px solid var(--orange-hi); padding-left:18px;} 1617 .hpb .hero .when div{padding-right:34px;} 1618 .hpb .hero .when .lbl{font-family:var(--label); color:var(--blue-soft); font-size:12px; 1619 text-transform:uppercase; letter-spacing:1.6px; font-weight:700; margin-bottom:3px;} 1620 .hpb .hero .when .val{color:#fff; font-size:18px; font-weight:600;} 1621 1622 /* video â poster + play ring; the iframe is only injected on click */ 1623 .hpb .herovid{position:relative;} 1624 .hpb .vidbtn{display:block; width:100%; padding:0; border:0; background:none; cursor:pointer; 1625 position:relative; border-radius:var(--r-sm); overflow:hidden; aspect-ratio:16/9; color:#fff;} 1626 .hpb .vidbtn img{width:100%; height:100%; object-fit:cover; display:block;} 1627 /* Even scrim rather than a bottom-heavy gradient â the heavy version existed 1628 to keep a caption legible, and the prospectus poster no longer has one. 1629 Enough contrast remains for the white play ring. */ 1630 .hpb .vidbtn::after{content:''; position:absolute; inset:0; 1631 background:linear-gradient(180deg,rgba(0,42,77,.20),rgba(0,42,77,.42));} 1632 .hpb .playring{position:absolute; inset:0; margin:auto; width:76px; height:76px; z-index:2; 1633 border-radius:50%; background:rgba(255,255,255,.16); border:2px solid #fff; 1634 display:grid; place-items:center; transition:.18s;} 1635 .hpb .playring svg{width:34px; height:34px; margin-left:3px;} 1636 .hpb .vidbtn:hover .playring{background:var(--orange); border-color:var(--orange); transform:scale(1.06);} 1637 .hpb .vidbtn:focus-visible{outline:3px solid var(--blue-soft); outline-offset:3px;} 1638 .hpb .vidcap, 1639 .hpb span.vidcap{position:absolute; left:0; right:0; bottom:20px; z-index:2; text-align:center; 1640 font-family:var(--label); font-size:15px; font-weight:700; letter-spacing:.6px; color:#fff;} 1641 /* Applied to the injected player itself rather than to a parent, so it sizes 1642 correctly wherever a video is placed. Scoped by class, so it cannot touch 1643 the e-sign contract iframe on the Apply page. */ 1644 .hpb .vidframe{width:100%; aspect-ratio:16/9; border:0; display:block; 1645 border-radius:var(--r-sm);} 1646 .hpb .vidwrap .vidframe{border-radius:0;} 1647 .hpb .herovid iframe{width:100%; aspect-ratio:16/9; border:0; border-radius:var(--r-sm); display:block;} 1648 1649 /* quick-nav â jumps to sections further down the page */ 1650 .hpb .quicknav{display:flex; flex-wrap:wrap; justify-content:center; gap:14px; 1651 margin-top:42px;} 1652 .hpb .quicknav .qbtn{display:inline-flex; align-items:center; gap:11px; 1653 font-family:var(--ui); font-size:17px; font-weight:500; text-decoration:none; 1654 padding:14px 26px; border-radius:var(--r-sm); background:#fff; color:var(--navy); 1655 border:2px solid #fff; transition:.15s;} 1656 .hpb .quicknav .qbtn svg{width:21px; height:21px; flex:0 0 21px;} 1657 .hpb .quicknav .qbtn:hover{background:transparent; color:#fff;} 1658 .hpb .quicknav .qbtn-go{background:var(--orange); border-color:var(--orange); color:#fff;} 1659 .hpb .quicknav .qbtn-go:hover{background:var(--orange-dark); border-color:var(--orange-dark); color:#fff;} 1660 .hpb .quicknav .qbtn:focus-visible{outline:3px solid var(--blue-soft); outline-offset:3px;} 1661 1662 /* ââ GLASS BUTTON â for buttons sitting on photography ââââââââââââââ 1663 Translucent fill, hairline light edge, blurred backdrop, arrow before 1664 the label. Use it anywhere a button sits over an image: carousel
1665 slides, bento tiles, photo heroes. 1666 1667 Usage: <a class="btn btn-glass" href="â¦"> 1668 <svg â¦arrowâ¦></svg> Plan Your Trip 1669 </a> 1670 1671 THE FILL IS NAVY, NOT WHITE â and that's a contrast decision, not a 1672 style one. A white translucent fill (which is what most examples of 1673 this pattern use) measures 7.4:1 over our dark gradient but only 1674 2.5:1 where a button lands on a lighter part of a photo â a clear 1675 fail. A navy fill darkens whatever is behind it instead, so the label 1676 holds up regardless of the image: 1677 1678 over the dark gradient 13.07:1 1679 over a mid photo tone 7.84:1 1680 over the brightest photo 4.82:1 (AA needs 4.5:1) 1681 1682 Don't lighten the 0.60 alpha without re-checking those numbers. 1683 backdrop-filter is decoration only â where it isn't supported the 1684 button is still a solid-enough navy to read. */ 1685 .hpb .btn-glass{ 1686 display:inline-flex; align-items:center; gap:11px; 1687 background:rgba(0,42,77,.60); 1688 border:1px solid rgba(255,255,255,.55); 1689 -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); 1690 color:#fff;} 1691 .hpb .btn-glass svg{flex:0 0 auto; width:16px; height:16px; 1692 transition:transform .2s;} 1693 .hpb .btn-glass:hover{background:rgba(0,42,77,.78); 1694 border-color:#fff; color:#fff;} 1695 .hpb .btn-glass:hover svg{transform:translateX(4px);} 1696 .hpb .btn-glass:visited,.hpb .btn-glass:focus{color:#fff;} 1697 /* full-width inside a tile, like the reference */ 1698 .hpb .btn-glass.wide{display:flex; width:100%; justify-content:center;} 1699 1700 /* Anchor targets clear the header, plus a little breathing room. Driven by 1701 --header-h so this stays correct if the header is ever resized. */ 1702 .hpb [id]{scroll-margin-top:calc(var(--header-h) + 20px);} 1703 1704 /* alert bar */ 1705 .hpb .alertbar{background:var(--orange); color:#fff; padding:13px 30px; text-align:center;} 1706 .hpb .alertbar p{margin:0; text-align:center; font-family:var(--label); font-size:15px; font-weight:700; 1707 color:#fff; letter-spacing:.4px; text-transform:uppercase;} 1708 .hpb .alertbar a{color:#fff; text-decoration:underline;} 1709 1710 /* grids */ 1711 .hpb .grid{display:grid; gap:38px;} 1712 .hpb .g2{grid-template-columns:repeat(2,1fr);} 1713 .hpb .g3{grid-template-columns:repeat(3,1fr);} 1714 .hpb .g4{grid-template-columns:repeat(4,1fr);} 1715 1716 /* cards â the live site uses open columns, not boxes */ 1717 .hpb .card{background:transparent; padding:0;} 1718 .hpb .card p{font-size:19px; margin:0; color:var(--ink);} 1719 .hpb .plain{background:transparent; padding:0;} 1720 .hpb .plain p{font-size:19px; margin:0;} 1721 1722 /* Video frame. Lives in core rather than in a page section because two 1723 pages use it now â the membership pages, where it is framed like the 1724 rate table above it (same width behaviour, same radius and border, so 1725 the two blocks read as a matched pair), and Why Exhibit, where it sits 1726 inside a grid cell and uses the .incell modifier to drop the cap. */ 1727 .hpb .vidwrap{max-width:1100px; margin:30px auto 0; border:1px solid var(--rule); 1728 border-radius:var(--r-md); overflow:hidden; background:#fff;} 1729 .hpb .vidwrap .vidbtn{border-radius:0;} 1730 /* In a grid cell the wrapper should fill its column, not centre inside a 1731 1100px cap, and the cell already provides the spacing. */ 1732 .hpb .vidwrap.incell{max-width:none; margin:0;} 1733 1734 /* âââââ STATS (dark band) âââââ */ 1735 .hpb .stats{background:var(--dark); color:#fff;} 1736 .hpb.hpb .stats h2{color:#fff !important;} 1737 .hpb .stats .lede{color:#c3d8e6;} 1738 .hpb .statgrid{display:grid; grid-template-columns:repeat(4,1fr); gap:24px; margin-top:44px;} 1739 /* No card chrome â the live site separates things with rules, not containers. */ 1740 .hpb .stat{text-align:center; padding:8px 16px;} 1741 .hpb .statgrid > .stat + .stat{border-left:1px solid rgba(255,255,255,.22);} 1742 .hpb .stat .num{font-family:var(--serif); font-size:46px; font-weight:700; color:#fff; 1743 display:block; margin-bottom:8px; line-height:1;} 1744 .hpb .stat .lbl{font-family:var(--label); font-size:13px; text-transform:uppercase; 1745 letter-spacing:1.5px; color:var(--blue-soft); font-weight:700;} 1746 /* .stat .num sets white, which out-specifies .ph and made placeholder figures 1747 invisible on their cream fill. Restate the placeholder color here. */ 1748 .hpb .stat .num.ph{font-size:32px; padding:6px 14px; color:#a8501a;} 1749 1750 /* media rows */ 1751 .hpb .media{display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:center;} 1752 .hpb .media img{width:100%; border-radius:var(--r-sm); display:block;} 1753 .hpb .media.flip .txt{order:2;} 1754 1755 /* tick lists */ 1756 .hpb ul.ticks{list-style:none; padding:0; margin:0 0 20px;} 1757 .hpb ul.ticks li{padding-left:30px; position:relative; margin-bottom:12px; font-size:20px;} 1758 .hpb ul.ticks li::before{content:''; position:absolute; left:0; top:11px; width:11px; height:11px; 1759 border-radius:50%; background:var(--blue);} 1760 1761 /* Audience segments â grouped columns rather than a flat row of pills. 1762 Uses the same uppercase-label + blue-rule heading as the rest of the page. */ 1763 .hpb .segments{margin-top:38px;} 1764 .hpb .segments ul{list-style:none; margin:0; padding:0;} 1765 .hpb .segments li{font-size:18px; padding:9px 0; border-bottom:1px solid var(--rule); 1766 line-height:1.4;} 1767 .hpb .segments li:last-child{border-bottom:none;} 1768 1769 /* schedule 1770 Cards are equal height because grid stretches items to their row. The 1771 white space below a short day's last item is intentional â days will gain 1772 items as the program fills in, and it leaves room for them. 1773 1774 DO NOT make the list or its items flex to fill the card. It was tried on 1775 2026-07-29 and reverted: distributing the rows stretches a two-item card 1776 into something that reads as padded out, and â the real problem â turning 1777 an <li> into a flex container makes `<strong>Exhibits Open</strong>` and 1778 the ` (closing at 1 PM)` after it into separate flex items, which collapses 1779 the space between them. It renders as "Exhibits Open(closing at 1 PM)". 1780 1781 align-items:stretch is stated rather than left to the default so a theme 1782 rule touching grids can't quietly break the equal heights. */ 1783 .hpb .days{display:grid; grid-template-columns:repeat(4,1fr); gap:24px; 1784 margin-top:38px; align-items:stretch;} 1785 .hpb .day{background:#fff; border:1px solid var(--rule); border-radius:var(--r-sm); overflow:hidden;} 1786 .hpb .day .hd{background:var(--dark); color:#fff; padding:18px 22px;} 1787 .hpb .day .hd .dow{font-family:var(--label); font-size:12px; text-transform:uppercase; 1788 letter-spacing:1.6px; color:var(--blue-soft); font-weight:700;} 1789 .hpb .day .hd .dt{font-family:var(--serif); font-size:26px; font-weight:700;} 1790 .hpb .day ul{list-style:none; margin:0; padding:20px 22px;} 1791 .hpb .day li{font-size:18px; padding:9px 0; border-bottom:1px solid #eee; line-height:1.35;} 1792 .hpb .day li:last-child{border-bottom:none;} 1793 1794 /* rates */ 1795 .hpb .ratewrap{background:#fff; border:1px solid var(--rule); border-radius:var(--r-sm); 1796 overflow:hidden; margin-top:30px;} 1797 /* max-width, box-shadow and margin are stated because the theme declares 1798 `.page-template-hpbe-singular table{max-width:70%; margin:0 auto; 1799 box-shadow:...}` â every table on this page template is capped at 70%,
1800 centred, and given a drop shadow. Our rule sets `width`, which does not 1801 answer a `max-width`, so the table sat at 965px inside a 1380px column 1802 and read as though its right edge had been cut off. Specificity is 1803 already on our side, (0,2,1) against (0,1,1); the properties just have 1804 to be named. Found on the live page 2026-08-13 â the offline sweep 1805 missed it because max-width and box-shadow weren't being compared. */ 1806 .hpb table.rates{width:100%; max-width:none; margin:0; box-shadow:none; 1807 border-collapse:collapse;} 1808 .hpb table.rates th,.hpb table.rates td{padding:20px 24px; text-align:left;} 1809 .hpb table.rates thead th{background:var(--dark); color:#fff; font-family:var(--label); 1810 font-size:13px; text-transform:uppercase; letter-spacing:1.4px; font-weight:700;} 1811 .hpb table.rates tbody tr{border-bottom:1px solid var(--rule);} 1812 .hpb table.rates tbody tr:last-child{border-bottom:none;} 1813 .hpb table.rates tbody tr.member{background:#f3faf5;} 1814 .hpb table.rates td.who{font-family:var(--label); font-weight:700; font-size:15px; 1815 text-transform:uppercase; letter-spacing:.5px; color:var(--muted);} 1816 .hpb table.rates td.rate{font-family:var(--serif); font-weight:700; font-size:34px; color:var(--ink);} 1817 .hpb table.rates tr.member td.rate{color:#1d8a3f;} 1818 .hpb .savetag, 1819 .hpb span.savetag{display:inline-block; background:var(--green); color:#fff; font-family:var(--label); 1820 font-size:11px; font-weight:700; padding:4px 11px; border-radius:var(--r-pill); margin-left:8px; 1821 text-transform:uppercase; letter-spacing:.8px; vertical-align:middle;} 1822 1823 .hpb .boothtypes{display:grid; grid-template-columns:repeat(2,1fr); gap:20px; margin-top:30px;} 1824 .hpb .bt{background:var(--grey-bg); border-left:3px solid var(--blue); 1825 border-radius:0 8px 8px 0; padding:20px 24px;} 1826 .hpb .bt strong{font-family:var(--label); font-size:14px; text-transform:uppercase; 1827 letter-spacing:.6px; color:var(--ink); display:block; margin-bottom:6px;} 1828 .hpb .bt span{font-size:18px; line-height:1.4;} 1829 1830 /* included checklist */ 1831 .hpb .incl{display:grid; grid-template-columns:repeat(2,1fr); gap:0 40px; margin-top:28px;} 1832 .hpb .incl div{padding:14px 0 14px 34px; border-bottom:1px solid var(--rule); 1833 position:relative; font-size:19px; line-height:1.4;} 1834 .hpb .incl div::before{content:'â'; position:absolute; left:0; top:14px; 1835 color:var(--blue); font-weight:700; font-size:19px;} 1836 1837 /* âââââ TESTIMONIAL CAROUSEL âââââ 1838 Editorial layout: oversized quote mark, large serif quote centered, then a 1839 stacked avatar / name / company credit. Arrows sit outside the quote at 1840 the left and right edges rather than below it. */ 1841 .hpb .tcarousel{position:relative; padding:0 72px;} 1842 .hpb .tviewport{overflow:hidden;} 1843 .hpb .ttrack{display:flex; transition:transform .45s cubic-bezier(.4,0,.2,1);} 1844 .hpb .tslide{flex:0 0 100%; min-width:100%; margin:0; padding:8px 0 0; 1845 display:flex; flex-direction:column; align-items:center; justify-content:flex-start; 1846 text-align:center; background:none;} 1847 .hpb .tslide > *{max-width:900px; width:100%;} 1848 1849 /* decorative opening mark, set above the quote */ 1850 .hpb .tslide blockquote{margin:0; font-family:var(--serif); font-size:clamp(22px,2.5vw,32px); 1851 font-weight:400; color:var(--ink); line-height:1.45; position:relative; padding-top:56px;} 1852 .hpb .tslide blockquote::before{content:'\201C' !important; position:absolute; top:0; left:50%; 1853 transform:translateX(-50%); font-family:var(--serif); font-size:110px; font-weight:700; 1854 line-height:1; color:#d7e2ea;} 1855 1856 /* credit block */ 1857 .hpb .tslide .attrib{display:flex; flex-direction:column; align-items:center; 1858 gap:12px; margin-top:34px; width:auto;} 1859 .hpb .tslide .attrib img{width:64px; height:64px; border-radius:50%; object-fit:cover; 1860 margin:0; border:0; flex:0 0 64px;} 1861 .hpb .tslide .nm{display:flex; flex-direction:column; gap:3px; text-align:center; 1862 font-family:var(--label); font-size:15px; font-weight:700; text-transform:none; 1863 letter-spacing:0; color:var(--ink); line-height:1.35;} 1864 .hpb .tslide .nm em{font-style:normal; font-weight:400; font-size:14.5px; 1865 color:var(--muted); letter-spacing:.3px;} 1866 1867 /* arrows flank the quote; dots sit underneath */ 1868 .hpb .tbtn{position:absolute; top:50%; transform:translateY(-50%); 1869 width:48px; height:48px; border-radius:50%; border:1px solid var(--rule); 1870 background:#fff; color:var(--navy); cursor:pointer; display:grid; place-items:center; 1871 padding:0; transition:.15s; z-index:2;} 1872 .hpb .tbtn[data-prev]{left:0;} 1873 .hpb .tbtn[data-next]{right:0;} 1874 .hpb .tbtn svg{width:20px; height:20px;} 1875 .hpb .tbtn:hover{background:var(--navy); border-color:var(--navy); color:#fff;} 1876 .hpb .tbtn:focus-visible{outline:3px solid var(--blue); outline-offset:3px;} 1877 .hpb .tbtn[disabled]{opacity:.35; cursor:default;} 1878 .hpb .tbtn[disabled]:hover{background:#fff; border-color:var(--rule); color:var(--navy);} 1879 .hpb .tnav{display:flex; align-items:center; justify-content:center; gap:10px; margin-top:30px;} 1880 .hpb .tdots{display:flex; gap:9px; align-items:center;} 1881 .hpb .tdot{width:9px; height:9px; border-radius:50%; border:0; 1882 background:#c7d4dd; padding:0; cursor:pointer; transition:.15s;} 1883 .hpb .tdot[aria-selected="true"]{background:var(--navy); transform:scale(1.3);} 1884 .hpb .tdot:focus-visible{outline:3px solid var(--blue); outline-offset:3px;} 1885 .hpb .tcarousel.single .tnav{display:none;} 1886 .hpb .tcarousel.single .tbtn{display:none;} 1887 1888 /* dark + tint bands */
1889 .hpb .dark{background:var(--dark); color:#fff;} 1890 .hpb.hpb .dark h2{color:#fff !important;} 1891 .hpb.hpb .dark h3{color:#a9c6da !important; border-bottom-color:var(--blue);} 1892 .hpb .dark p,.hpb .dark .lede,.hpb .dark li{color:#dce7ef;} 1893 .hpb .dark .plain p{color:#dce7ef;} 1894 /* Buttons are links, so the generic .dark a rule above would tint their 1895 label light blue. Buttons keep their own colors. */ 1896 /* The gray eyebrow is a light-background color; on navy it reads muddy and 1897 fails contrast. Navy sections use the accent orange, matching the hero kicker. */ 1898 .hpb .dark .eyebrow,.hpb .stats .eyebrow,.hpb .finalcta .eyebrow{color:var(--orange-on-navy);} 1899 .hpb .dark a:not(.btn){color:var(--blue-soft);} 1900 .hpb .dark .btn-primary{color:#fff;} 1901 .hpb .dark .btn-ghost{color:#fff;} 1902 .hpb .dark .btn-ghost:hover{color:var(--navy);} 1903 1904 .hpb .tintbg{background:var(--grey-bg);} 1905 1906 /* nashville split */ 1907 .hpb .nash-split{display:grid; grid-template-columns:1fr 1fr; align-items:stretch;} 1908 .hpb .nash-txt{padding:88px 3.25rem 88px var(--gutter); max-width:700px; margin-left:auto;} 1909 .hpb .nash-img{background-image:url('https://hpbexpo.com/wp-content/uploads/2026/07/nashville-skyline.jpg'); 1910 background-size:cover; background-position:center; min-height:480px;} 1911 1912 /* Closing line under the exhibitor list â turns the roster from a fact into 1913 an invitation, so the section ends on an action rather than a directory. */ 1914 .hpb .listcta, 1915 .hpb p.listcta{font-family:var(--serif); font-size:clamp(24px,2.6vw,32px); 1916 font-weight:700; color:var(--ink); text-align:center; margin:44px 0 0;} 1917 1918 /* exhibitor list */ 1919 .hpb .colist{column-count:4; column-gap:32px; margin-top:30px;} 1920 .hpb .colist span{display:block; break-inside:avoid; font-size:15px; padding:5px 0; 1921 color:var(--ink); border-bottom:1px solid #e8e8e8; line-height:1.3;} 1922 1923 /* Sponsor tiers â a quiet inline list rather than five colored pills. 1924 The tier colors read as decoration, not information, so they're gone. */ 1925 .hpb .tierlist{display:flex; flex-wrap:wrap; align-items:baseline; gap:0 14px; 1926 margin:26px 0 22px; padding-top:20px; border-top:1px solid rgba(255,255,255,.22);} 1927 .hpb .tierlist span{font-family:var(--label); font-size:14px; font-weight:700; 1928 text-transform:uppercase; letter-spacing:1.3px; color:#fff;} 1929 .hpb .tierlist span + span::before{content:'·'; color:var(--blue-soft); 1930 margin-right:14px; font-weight:400;} 1931 .hpb .tierlist .tierlabel{color:var(--blue-soft); margin-right:4px;} 1932 .hpb .tierlist .tierlabel + span::before{content:none;} 1933 1934 /* Callout box. Soft fill and a single accent edge â enough to read as a 1935 distinct block without the outlined, boxed-in look. Works on light and 1936 navy backgrounds. */ 1937 .hpb .callout{background:#edf4f9; border-left:4px solid var(--blue); 1938 border-radius:0 8px 8px 0; padding:22px 26px; margin:26px 0;} 1939 .hpb .callout p{margin:0; font-size:18px; line-height:1.55; color:var(--ink);} 1940 .hpb .callout p + p{margin-top:10px;} 1941 .hpb .callout .lead{font-family:var(--label); font-size:.85em; text-transform:uppercase; 1942 letter-spacing:1.1px; font-weight:700; color:var(--navy);} 1943 .hpb .dark .callout{background:rgba(255,255,255,.09); border-left-color:var(--blue-soft);} 1944 .hpb .dark .callout p{color:#e4eef5;} 1945 .hpb .dark .callout .lead{color:#9edcf5;} 1946 .hpb .dark .callout a{color:#fff;} 1947 1948 /* final cta */ 1949 .hpb .finalcta{background:var(--dark); color:#fff; text-align:center;} 1950 .hpb.hpb .finalcta h2{color:#fff !important;} 1951 .hpb .finalcta .lede{color:#c3d8e6; margin:0 auto 10px;} 1952 .hpb .finalcta .btn-row{justify-content:center; margin-top:30px;} 1953 .hpb .nextdeal{max-width:720px; margin:0 auto 44px; font-size:22px; color:#dce7ef; line-height:1.75;} 1954 .hpb .nextdeal strong{font-family:var(--serif); color:var(--orange-hi); display:block; 1955 font-size:34px; margin-bottom:14px; font-weight:700;} 1956 1957 /* âââââ responsive âââââ */ 1958 @media (max-width:1000px){ 1959 .hpb .g4,.hpb .g3{grid-template-columns:repeat(2,1fr);} 1960 .hpb .statgrid{grid-template-columns:repeat(2,1fr); gap:26px 16px;} 1961 /* in a 2x2 grid the 3rd tile starts a new row, so it gets no left divider */ 1962 .hpb .statgrid > .stat:nth-child(odd){border-left:0;} 1963 .hpb .days{grid-template-columns:repeat(2,1fr);} 1964 .hpb .media{grid-template-columns:1fr; gap:34px;} 1965 .hpb .media.flip .txt{order:0;} 1966 .hpb .colist{column-count:3;} 1967 .hpb .nash-split{grid-template-columns:1fr;} 1968 .hpb .nash-txt{padding:64px var(--gutter); max-width:none; margin:0;} 1969 .hpb .nash-img{min-height:340px;} 1970 .hpb .herogrid{grid-template-columns:1fr; gap:34px;} 1971 .hpb .hero .sub{max-width:none;} 1972 } 1973 @media (max-width:640px){ 1974 .hpb{--gutter:1.5rem;} /* tighter gutter on phones */ 1975 .hpb section{padding:60px var(--gutter);} 1976 .hpb .hero .wrap{padding:40px 0 32px;} 1977 .hpb .quicknav{margin-top:28px; padding-top:24px;} 1978 .hpb .quicknav .qbtn{width:100%; justify-content:center; padding:13px 20px; font-size:16px;} 1979 .hpb .playring{width:60px; height:60px;} 1980 .hpb .playring svg{width:26px; height:26px;} 1981 .hpb [id]{scroll-margin-top:calc(var(--header-h) + 8px);} 1982 .hpb .g4,.hpb .g3,.hpb .g2,.hpb .days,.hpb .boothtypes,.hpb .incl{grid-template-columns:1fr;} 1983 .hpb .statgrid{grid-template-columns:1fr; gap:0;} 1984 .hpb .statgrid > .stat + .stat{border-left:0; border-top:1px solid rgba(255,255,255,.22); 1985 padding-top:22px; margin-top:22px;} 1986 .hpb .colist{column-count:2;} 1987 .hpb .tslide{padding:36px 24px;} 1988 .hpb .tslide .attrib img{width:52px; height:52px; flex-basis:52px;} 1989 .hpb .tierlist{gap:0 10px;} 1990 .hpb .tnav{gap:14px;} 1991 .hpb .hero .when div{padding-right:26px;} 1992 .hpb p,.hpb .card p,.hpb .plain p{font-size:18px;} 1993 .hpb .lede, 1994 .hpb p.lede{font-size:20px;} 1995 .hpb table.rates th,.hpb table.rates td{padding:14px 13px;} 1996 .hpb table.rates td.rate{font-size:24px;} 1997 .hpb .incl div{font-size:17px;} 1998 } 1999 2000 2001 2002 /* ââ SHARED COMPONENTS THAT WERE LIVING IN THE MEMBERSHIP SECTION ââ
2003 The hero side-panel, quick-contact cards, fine print and the rate 2004 table's unit label were all written while building the membership 2005 page, but the hotel, apply and sponsors pages use them too. They sat 2006 in the wrong section until the stylesheet was split, at which point 2007 those pages would have lost them. Shared components belong in core. */ 2008 .hpb .heropanel{background:rgba(255,255,255,.10); border:1px solid rgba(255,255,255,.28); border-radius:var(--r-md); padding:30px 32px; backdrop-filter:blur(2px);} 2009 .hpb .hp-eyebrow{font-family:var(--label); font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:1.6px; color:var(--blue-soft); margin-bottom:10px;} 2010 .hpb .hp-num{font-family:var(--serif); font-size:clamp(52px,6vw,76px); font-weight:700; color:#fff; line-height:.95;} 2011 .hpb .hp-unit{font-family:var(--label); font-size:14px; font-weight:700; text-transform:uppercase; letter-spacing:1.2px; color:#fff; margin-top:6px;} 2012 .hpb .hp-rule{height:1px; background:rgba(255,255,255,.28); margin:20px 0;} 2013 .hpb .hp-note, 2014 .hpb p.hp-note{color:#dce7ef; font-size:16.5px; margin:0 0 16px; line-height:1.5;} 2015 .hpb .hp-note strong{color:#f9b790;} 2016 .hpb .hp-link{font-family:var(--ui); font-size:16px; font-weight:500; color:#fff; text-decoration:underline; text-underline-offset:4px;} 2017 .hpb table.rates .per{font-size:14px; font-weight:400; color:var(--muted);} 2018 .hpb .finenote, 2019 .hpb p.finenote{margin-top:24px; font-size:16px; color:var(--muted); text-align:center;} 2020 /* On a dark band the muted grey is unreadable â #69727D on HPBA navy is 2021 2.24:1, well under the 4.5:1 AA needs for 16px text. This step is the 2022 same blue already used for .dark h3 and .dark .incl em, so it adds no 2023 new value to the palette, and it lands at 6.14:1 while still reading 2024 quieter than .dark p (8.71:1) â which is the whole point of fine print. 2025 2026 Written with BOTH selectors: `.hpb .dark .finenote` catches non-<p> 2027 elements, and `.hpb .dark p.finenote` is needed to beat `.hpb p.finenote` 2028 above, which is (0,2,1) and would otherwise win on source order. */ 2029 .hpb .dark .finenote, 2030 .hpb .dark p.finenote{color:#a9c6da;} 2031 .hpb .pathlead, 2032 .hpb p.pathlead{text-align:center; font-size:19px; margin-top:26px;} 2033 .hpb .qcard{background:var(--grey-bg); border-radius:var(--r-sm); padding:28px 30px;} 2034 .hpb .qcard p{font-size:17px;} 2035 .hpb .qlink{font-family:var(--ui); font-weight:500; font-size:17px; text-decoration:underline; text-underline-offset:4px;} 2036 2037 /* âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2038 HOME â HERO CAROUSEL + COUNTDOWN 2039 Used only by pages/home-hero/. Inert everywhere else. 2040 2041 Replaces four flat JPGs that had their headlines baked into the image. 2042 Text lives in the HTML now, so it reflows on a phone, is readable by 2043 Google and screen readers, and can be edited without a designer. 2044 âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 2045 2046 /* section padding is zeroed â the slides carry their own */ 2047 .hpb section.carousel{padding:0;} 2048 .hpb .carousel{position:relative; overflow:hidden; background:var(--navy-deep);} 2049 2050 /* All slides share one grid cell, so the carousel is as tall as its tallest 2051 slide and never collapses or jumps height between slides. Absolute 2052 positioning would give a zero-height container. */ 2053 .hpb .ctrack{display:grid;} 2054 .hpb .slide{grid-area:1/1; position:relative; display:flex; align-items:center; 2055 min-height:clamp(430px,50vw,600px); padding:0 var(--gutter); 2056 background-size:cover; background-position:center; 2057 opacity:0; visibility:hidden; 2058 transition:opacity .55s ease, visibility .55s;} 2059 .hpb .slide.on{opacity:1; visibility:visible;} 2060 .hpb .slide::after{content:''; position:absolute; inset:0; 2061 background:linear-gradient(100deg, rgba(0,42,77,.93) 0%, rgba(0,42,77,.74) 46%, 2062 rgba(0,42,77,.44) 100%);} 2063 /* width:100% is essential â .wrap is a flex item here, and without it the 2064 max-width never engages and the copy drifts right of every other section */ 2065 .hpb .slide .wrap{width:100%; position:relative; z-index:2; padding:54px 0 74px;}
2066 /* line-height is stated because the theme's span rule sets 30px on it and 2067 this selector, at (0,3,0), only wins the properties it actually names. */ 2068 .hpb .slide .ceyebrow{display:block; font-family:var(--label); font-weight:700; 2069 text-transform:uppercase; letter-spacing:2px; font-size:13px; line-height:1.3; 2070 color:var(--orange-on-navy); margin-bottom:14px; text-align:left;} 2071 .hpb.hpb .slide h2{color:#fff !important; font-size:clamp(34px,4.3vw,58px) !important; 2072 line-height:1.08 !important; margin:0 0 16px; max-width:16ch; 2073 text-align:left !important; letter-spacing:-1px;} 2074 .hpb .slide p{color:#e6eef5; font-family:var(--ui); font-size:clamp(16.5px,1.4vw,20px); 2075 line-height:1.5; margin:0 0 28px; max-width:50ch; text-align:left;} 2076 .hpb .slide .btn-row{justify-content:flex-start; margin:0;} 2077 2078 /* A brand mark was placed over the carousel on 2026-07-31 and removed the 2079 same day. It sat about 40px below the header logo and read as the same 2080 mark twice rather than as presence. If it's ever revisited, the reason it 2081 didn't work was proximity, not size â the answer isn't a bigger one here. 2082 The dark-background logo file it used is still the right asset for any 2083 logo placed on a photo or navy band. */ 2084 2085 /* ââ controls ââ */ 2086 .hpb .cbtn{position:absolute; top:calc(50% - 20px); transform:translateY(-50%); 2087 z-index:5; width:52px; height:52px; border-radius:50%; padding:0; cursor:pointer; 2088 border:2px solid rgba(255,255,255,.5); background:rgba(0,26,47,.32); color:#fff; 2089 display:grid; place-items:center; transition:background .18s, border-color .18s;} 2090 .hpb .cbtn:hover{background:var(--orange); border-color:var(--orange);} 2091 .hpb .cbtn svg{width:20px; height:20px;} 2092 .hpb .cprev{left:16px;} 2093 .hpb .cnext{right:16px;} 2094 2095 .hpb .cbar{position:absolute; left:0; right:0; bottom:24px; z-index:5; 2096 display:flex; align-items:center; justify-content:center; gap:12px;} 2097 .hpb .cdot{width:11px; height:11px; border-radius:var(--r-pill); border:0; padding:0; 2098 cursor:pointer; background:rgba(255,255,255,.4); transition:.2s;} 2099 .hpb .cdot:hover{background:rgba(255,255,255,.7);} 2100 .hpb .cdot[aria-current="true"]{background:var(--orange-hi); width:32px;} 2101 /* WCAG 2.2.2: anything that moves on its own for more than five seconds 2102 needs a visible way to stop it. Hover-pause alone doesn't satisfy that, 2103 and does nothing at all on a touchscreen. */ 2104 .hpb .cpause{width:30px; height:30px; margin-left:6px; border-radius:50%; padding:0; 2105 cursor:pointer; border:1px solid rgba(255,255,255,.45); background:rgba(0,26,47,.32); 2106 color:#fff; display:grid; place-items:center;} 2107 .hpb .cpause:hover{background:var(--orange); border-color:var(--orange);} 2108 .hpb .cpause svg{width:12px; height:12px;} 2109 2110 /* ââ countdown strip ââ */ 2111 .hpb .cdstrip{background:var(--navy); padding:24px var(--gutter);} 2112 .hpb .cdstrip .wrap{display:flex; align-items:center; justify-content:space-between; 2113 gap:22px 34px; flex-wrap:wrap;} 2114 .hpb .cdlabel{font-family:var(--label); font-weight:700; text-transform:uppercase; 2115 letter-spacing:1.6px; font-size:13px; color:var(--orange-on-navy);} 2116 .hpb .cdunits{display:flex; gap:clamp(16px,2.6vw,40px); align-items:flex-start;} 2117 .hpb .cdu{text-align:center; min-width:54px;} 2118 /* tabular-nums keeps the digits a fixed width so the row doesn't twitch 2119 sideways every time the seconds tick over */ 2120 /* ââ Why every span selector here is written twice ââââââââââââââââââ 2121 The child theme (hpbe2022/css/style.css) declares 2122 2123 .premiere .page p, .premiere .page span, .premiere .page li 2124 {font-family:"Radio Canada Big"; font-size:20px; line-height:30px;} 2125 2126 at specificity (0,2,1). A single-class rule like `.hpb .cdnum` is 2127 (0,2,0) and loses, so the countdown digits rendered at 20px in the 2128 label font on the live site while looking correct in local preview â 2129 the number and its caption came out nearly the same size. 2130 2131 Repeating the selector as `.hpb span.cdnum` lifts it to (0,2,1). The 2132 tie then breaks on source order, and this stylesheet ships inside the 2133 page, below the theme's <link>, so it wins. The unqualified selector 2134 stays in the list for any non-span use of the class. 2135 2136 Confirmed against the live theme 2026-08-13. Any new rule that styles 2137 a <span>, <p> or <li> by one class needs the same treatment. */ 2138 .hpb .cdnum,.hpb span.cdnum{display:block; font-family:var(--serif); font-weight:700; 2139 color:#fff; font-size:clamp(30px,3.2vw,42px); line-height:1; 2140 font-variant-numeric:tabular-nums;} 2141 .hpb .cdunit,.hpb span.cdunit{display:block; margin-top:7px; font-family:var(--label); 2142 font-size:11px; line-height:1.2; font-weight:700; text-transform:uppercase; 2143 letter-spacing:1.3px; color:var(--blue-soft);} 2144 .hpb .cdmeta{font-family:var(--ui); font-size:14.5px; color:#cfe0ec;} 2145 .hpb .cdmeta strong{color:#fff; font-weight:500;} 2146 2147 @media (max-width:1000px){ 2148 .hpb .slide h2{max-width:none;} 2149 .hpb .cbtn{width:44px; height:44px;} 2150 .hpb .cprev{left:8px;} 2151 .hpb .cnext{right:8px;} 2152 .hpb .cdstrip .wrap{justify-content:center; text-align:center;} 2153 .hpb .cdunits{width:100%; justify-content:center;} 2154 } 2155 @media (max-width:620px){ 2156 .hpb .slide{min-height:0;} 2157 .hpb .slide .wrap{padding:44px 0 78px;} 2158 /* Arrows fall away on a phone â they'd sit on top of the headline. Swipe 2159 and the dots both still work. */ 2160 .hpb .cbtn{display:none;} 2161 .hpb .slide .btn-row{flex-direction:column; align-items:stretch;} 2162 .hpb .slide .btn-row .btn{width:100%; text-align:center;} 2163 } 2164 /* Someone who has asked their system to reduce motion should not be shown a 2165 carousel that advances by itself. The script checks this too and leaves 2166 autoplay off. */ 2167 @media (prefers-reduced-motion:reduce){ 2168 .hpb .slide{transition:none;} 2169 } 2170</style> 2171 2172<div class="hpb"> 2173 2174<!-- ââââââââââââââââââ HERO CAROUSEL ââââââââââââââââââ --> 2175<section class="carousel" id="hpbcarousel" 2176 aria-roledescription="carousel" aria-label="HPBExpo27 highlights"> 2177 2178 <div class="ctrack"> 2179 2180 <!-- SLIDE-PHOTO 1 2181 Updated 2026-09-14: registration is open, and this is now the FIRST 2182 slide (moved up from slot 3 so it is what a visitor lands on). Two buttons, one per 2183 audience, pointing at the site's own registration pages (rates and 2184 fraud warning first), not straight at Maritz. The Maritz links live 2185 on those two pages. 2186 CHECK-PHOTO â We-love-HPBA-group.jpg chosen from its filename, not seen. --> 2187 <article class="slide on" role="group" aria-roledescription="slide" 2188 aria-label="1 of 4: Registration is open" 2189 style="background-image:url('https://hpbexpo.com/wp-content/uploads/2026/07/We-love-HPBA-group.jpg');"> 2190 <div class="wrap">
2191 <span class="ceyebrow">Attend <span class="brand">HPBExpo27</span></span> 2192 <h2>Registration Is Open!</h2> 2193 <p>Badge registration for <span class="brand">HPBExpo27</span> is live. Register 2194 now for the best rate, then book your room in the official hotel block.</p> 2195 <div class="btn-row"> 2196 <a class="btn btn-primary" href="https://hpbexpo.com/attend/badge-registration/" target="_blank">Register to Attend</a> 2197 <a class="btn btn-ghost" href="https://hpbexpo.com/attend/top-reasons-to-attend/" target="_blank">Why Attend</a> 2198 </div> 2199 </div> 2200 </article> 2201 2202 <!-- SLIDE-PHOTO 2 --> 2203 <article class="slide" role="group" aria-roledescription="slide" 2204 aria-label="2 of 4: Housing is open" 2205 style="background-image:url('https://hpbexpo.com/wp-content/uploads/2026/07/nashville-skyline.jpg');"> 2206 <div class="wrap"> 2207 <span class="ceyebrow">Housing Is Open</span> 2208 <h2>Book Your Stay in Nashville</h2> 2209 <p>The Omni Nashville is the <span class="brand">HPBExpo27</span> headquarters hotel, 2210 steps from Music City Center. Negotiated rates end February 1, 2027.</p> 2211 <div class="btn-row"> 2212 <a class="btn btn-primary" href="https://hpbexpo.com/attend/attendee-hotel/">Attendee Housing</a> 2213 <a class="btn btn-ghost" href="https://hpbexpo.com/exhibit/exhibitor-hotel/">Exhibitor Housing</a> 2214 </div> 2215 </div> 2216 </article> 2217 2218 <!-- SLIDE-PHOTO 3 --> 2219 <article class="slide" role="group" aria-roledescription="slide" 2220 aria-label="3 of 4: Exhibit at HPBExpo27" 2221 style="background-image:url('https://hpbexpo.com/wp-content/uploads/2026/07/IMG_5229_for-web.jpg');"> 2222 <div class="wrap"> 2223 <span class="ceyebrow">Exhibit Space Is Selling</span> 2224 <h2>Put Your Brand on the Floor</h2> 2225 <p>Booths are assigned first-come, first-served, and early-bird rates end 2226 September 30, 2026. HPBA members save $10 per square foot.</p> 2227 <div class="btn-row"> 2228 <a class="btn btn-primary" href="https://hpbexpo.com/exhibit/apply-to-exhibit/">Apply to Exhibit</a> 2229 <a class="btn btn-ghost" href="https://hpbexpo.com/exhibit/why-exhibit/">Why Exhibit</a> 2230 </div> 2231 </div> 2232 </article> 2233 2234 <!-- SLIDE-PHOTO 4 --> 2235 <article class="slide" role="group" aria-roledescription="slide" 2236 aria-label="4 of 4: Award winners" 2237 style="background-image:url('https://hpbexpo.com/wp-content/uploads/2026/07/IMG_5614_for-web_awards.jpg');"> 2238 <div class="wrap"> 2239 <span class="ceyebrow">Ultimate Awards Show</span> 2240 <h2>Celebrating the Best in the Industry</h2> 2241 <p>See the companies and people recognized at <span class="brand">HPBExpo26</span>, 2242 and start thinking about who deserves it next year.</p> 2243 <div class="btn-row"> 2244 <a class="btn btn-primary" href="https://hpbexpo.com/awards/">See the Winners</a> 2245 </div> 2246 </div> 2247 </article> 2248 2249 </div> 2250 2251 <button class="cbtn cprev" type="button" aria-label="Previous slide"> 2252 <svg viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" 2253 stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M15 5l-7 7 7 7"/></svg> 2254 </button> 2255 <button class="cbtn cnext" type="button" aria-label="Next slide"> 2256 <svg viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" 2257 stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M9 5l7 7-7 7"/></svg> 2258 </button> 2259 2260 <div class="cbar"> 2261 <button class="cdot" type="button" aria-current="true" aria-label="Go to slide 1"></button> 2262 <button class="cdot" type="button" aria-label="Go to slide 2"></button> 2263 <button class="cdot" type="button" aria-label="Go to slide 3"></button> 2264 <button class="cdot" type="button" aria-label="Go to slide 4"></button> 2265 <button class="cpause" type="button" aria-label="Pause the carousel"> 2266 <svg viewBox="0 0 12 12" aria-hidden="true" fill="currentColor"><rect x="2" y="1.5" width="3" height="9" rx="1"/><rect x="7" y="1.5" width="3" height="9" rx="1"/></svg> 2267 </button> 2268 </div> 2269</section> 2270 2271<!-- ââââââââââââââââââ COUNTDOWN ââââââââââââââââââ --> 2272<section class="cdstrip"> 2273 <div class="wrap"> 2274 <div class="cdlabel">Countdown to <span class="brand">HPBExpo27</span></div> 2275 <div class="cdunits" id="hpbcd"> 2276 <div class="cdu"><span class="cdnum" data-cd="d">â</span><span class="cdunit">Days</span></div> 2277 <div class="cdu"><span class="cdnum" data-cd="h">â</span><span class="cdunit">Hours</span></div> 2278 <div class="cdu"><span class="cdnum" data-cd="m">â</span><span class="cdunit">Minutes</span></div> 2279 <div class="cdu"><span class="cdnum" data-cd="s">â</span><span class="cdunit">Seconds</span></div> 2280 </div> 2281 <div class="cdmeta"><strong>March 3–6, 2027</strong><br>Music City Center · Nashville, TN</div> 2282 </div> 2283</section> 2284 2285</div> 2286
2287<script> 2288(function () { 2289 /* ââ CAROUSEL âââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 2290 var root = document.getElementById('hpbcarousel'); 2291 if (!root) return; 2292 2293 var slides = [].slice.call(root.querySelectorAll('.slide')); 2294 var dots = [].slice.call(root.querySelectorAll('.cdot')); 2295 var pauseB = root.querySelector('.cpause'); 2296 var i = 0, timer = null; 2297 2298 var PLAY = '<svg viewBox="0 0 12 12" aria-hidden="true" fill="currentColor"><path d="M3 1.5l7 4.5-7 4.5z"/></svg>'; 2299 var PAUSE = '<svg viewBox="0 0 12 12" aria-hidden="true" fill="currentColor"><rect x="2" y="1.5" width="3" height="9" rx="1"/><rect x="7" y="1.5" width="3" height="9" rx="1"/></svg>'; 2300 2301 /* Respect the OS "reduce motion" setting: no self-advancing carousel. */ 2302 var still = window.matchMedia && 2303 window.matchMedia('(prefers-reduced-motion: reduce)').matches; 2304 2305 function show(n) { 2306 i = (n + slides.length) % slides.length; 2307 slides.forEach(function (s, x) { 2308 s.classList.toggle('on', x === i); 2309 /* Hide the off-slides from screen readers and from Tab, so keyboard 2310 users don't tab into buttons they can't see. */ 2311 s.setAttribute('aria-hidden', x === i ? 'false' : 'true'); 2312 [].forEach.call(s.querySelectorAll('a'), function (a) { 2313 a.tabIndex = (x === i) ? 0 : -1; 2314 }); 2315 }); 2316 dots.forEach(function (d, x) { 2317 if (x === i) { d.setAttribute('aria-current', 'true'); } 2318 else { d.removeAttribute('aria-current'); } 2319 }); 2320 } 2321 2322 function start() { 2323 if (still || timer) return; 2324 timer = setInterval(function () { show(i + 1); }, 6500); 2325 pauseB.innerHTML = PAUSE; 2326 pauseB.setAttribute('aria-label', 'Pause the carousel'); 2327 } 2328 function stop() { 2329 clearInterval(timer); timer = null; 2330 pauseB.innerHTML = PLAY; 2331 pauseB.setAttribute('aria-label', 'Play the carousel'); 2332 } 2333 2334 root.querySelector('.cprev').addEventListener('click', function () { stop(); show(i - 1); }); 2335 root.querySelector('.cnext').addEventListener('click', function () { stop(); show(i + 1); }); 2336 dots.forEach(function (d, x) { 2337 d.addEventListener('click', function () { stop(); show(x); }); 2338 }); 2339 pauseB.addEventListener('click', function () { timer ? stop() : start(); }); 2340 2341 /* Pause while the pointer or keyboard focus is inside â but only if it was 2342 playing, so a deliberate pause is never undone by a stray mouse. */ 2343 root.addEventListener('mouseenter', function () { if (timer) { clearInterval(timer); timer = null; } }); 2344 root.addEventListener('mouseleave', function () { if (!still && pauseB.getAttribute('aria-label').indexOf('Pause') === 0) start(); }); 2345 2346 root.addEventListener('keydown', function (e) { 2347 if (e.key === 'ArrowLeft') { stop(); show(i - 1); } 2348 if (e.key === 'ArrowRight') { stop(); show(i + 1); } 2349 }); 2350 2351 /* Swipe. 40px threshold, and it ignores mostly-vertical drags so it can't 2352 hijack normal page scrolling on a phone. */ 2353 var x0 = null, y0 = null; 2354 root.addEventListener('touchstart', function (e) { 2355 x0 = e.touches[0].clientX; y0 = e.touches[0].clientY; 2356 }, { passive: true }); 2357 root.addEventListener('touchend', function (e) { 2358 if (x0 === null) return; 2359 var dx = e.changedTouches[0].clientX - x0, 2360 dy = e.changedTouches[0].clientY - y0; 2361 if (Math.abs(dx) > 40 && Math.abs(dx) > Math.abs(dy)) { stop(); show(i + (dx < 0 ? 1 : -1)); } 2362 x0 = y0 = null; 2363 }, { passive: true }); 2364 2365 /* Don't animate in a background tab. */ 2366 document.addEventListener('visibilitychange', function () { 2367 if (document.hidden) { clearInterval(timer); timer = null; } 2368 else if (!still) start(); 2369 }); 2370 2371 show(0); 2372 start(); 2373 2374 /* ââ COUNTDOWN ââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 2375 /* TARGET-DATE â the moment the show opens, in US Central time. 2376 -06:00 is Central Standard. Nashville is still on CST in early March 2377 2027 (daylight saving starts March 14 that year), so this is correct. 2378 Change this one string if the date moves. */ 2379 var target = new Date('2027-03-03T08:00:00-06:00').getTime(); 2380 var out = { 2381 d: document.querySelector('[data-cd="d"]'),
2382 h: document.querySelector('[data-cd="h"]'), 2383 m: document.querySelector('[data-cd="m"]'), 2384 s: document.querySelector('[data-cd="s"]') 2385 }; 2386 if (!out.d) return; 2387 2388 function pad(n) { return n < 10 ? '0' + n : '' + n; } 2389 2390 function tick() { 2391 var left = target - Date.now(); 2392 if (left <= 0) { 2393 out.d.textContent = '00'; out.h.textContent = '00'; 2394 out.m.textContent = '00'; out.s.textContent = '00'; 2395 return; 2396 } 2397 var s = Math.floor(left / 1000); 2398 out.d.textContent = pad(Math.floor(s / 86400)); 2399 out.h.textContent = pad(Math.floor(s % 86400 / 3600)); 2400 out.m.textContent = pad(Math.floor(s % 3600 / 60)); 2401 out.s.textContent = pad(s % 60); 2402 } 2403 tick(); 2404 setInterval(tick, 1000); 2405})(); 2406</script>
2406 </div> 2407 </div> 2408 </div> 2409 <div class="elementor-element elementor-element-0b0e110 e-flex e-con-boxed elementor-invisible e-con e-parent" data-id="0b0e110" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic","animation":"fadeIn"}"> 2410 <div class="e-con-inner"> 2411 <div class="elementor-element elementor-element-d194305 garamond elementor-widget elementor-widget-heading" data-id="d194305" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 2412 <div class="elementor-widget-container"> 2413 <h2 class="elementor-heading-title elementor-size-default"><strong data-start="294" data-end="343">Where the Industry Comes Together</strong></h2> </div> 2414 </div> 2415 <div class="elementor-element elementor-element-d8b22f5 garamond m-0 elementor-widget elementor-widget-text-editor" data-id="d8b22f5" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> 2416 <div class="elementor-widget-container"> 2417 <p data-start="1250" data-end="1416">Join the industryâs premier marketplace for barbecue technology, outdoor kitchens, fireplaces, stoves, chimneys and venting, outdoor living products, and accessories.</p><p data-start="1418" data-end="1675">From retailers and service professionals to distributors, installers, manufacturers, suppliers, independent sales representatives, and business service providers, HPBExpo27 brings the entire industry together in Nashville to connect, learn, and do business.</p> </div> 2418 </div> 2419 <div class="elementor-element elementor-element-9160d5a garamond elementor-widget elementor-widget-text-editor" data-id="9160d5a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> 2420 <div class="elementor-widget-container"> 2421 <p data-start="1853" data-end="1948">HPBExpo is where new ideas, strong partnerships, and real business opportunities come together.</p><p>HPBExpo27 | March 3-6 | Music City Center, Level 3/Marty Dickens Terrace | Nashville, TN</p> </div> 2422 </div> 2423 </div> 2424 </div> 2425 <div class="elementor-element elementor-element-ba7ad91 text-right e-flex e-con-boxed elementor-invisible e-con e-parent" data-id="ba7ad91" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic","animation":"fadeIn"}"> 2426 <div class="e-con-inner"> 2427 <div class="elementor-element elementor-element-9019c9a e-con-full future e-flex e-con e-child" data-id="9019c9a" data-element_type="container" data-e-type="container"> 2428 <div class="elementor-element elementor-element-65f12dc garamond elementor-widget elementor-widget-heading" data-id="65f12dc" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 2429 <div class="elementor-widget-container"> 2430 <h2 class="elementor-heading-title elementor-size-default">The Future of the Industry Starts Here</h2> </div> 2431 </div> 2432 <div class="elementor-element elementor-element-e8f4317 garamond m-0 elementor-widget elementor-widget-text-editor" data-id="e8f4317" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> 2433 <div class="elementor-widget-container"> 2434 <p>The hearth, barbecue, and outdoor living market is always moving. Staying ahead of your customersâ needs means understanding industry trends as they take shape.</p> </div> 2435 </div> 2436 <div class="elementor-element elementor-element-a62f85b garamond elementor-widget elementor-widget-text-editor" data-id="a62f85b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> 2437 <div class="elementor-widget-container"> 2438 <p>Get ready for an incredible experience with endless opportunities to fuel your business success!</p> </div> 2439 </div> 2440 </div> 2441 <div class="elementor-element elementor-element-986f915 e-con-full iframe-sec-home e-flex e-con e-child" data-id="986f915" data-element_type="container" data-e-type="container"> 2442 <div class="elementor-element elementor-element-59452d4 elementor-widget elementor-widget-video" data-id="59452d4" data-element_type="widget" data-e-type="widget" data-settings="{"video_type":"vimeo"}" data-widget_type="video.default"> 2443 <div class="elementor-widget-container"> 2444 <div class="elementor-wrapper elementor-open-inline"> 2445 <iframe class="elementor-video-iframe" allowfullscreen allow="clipboard-write" title="youtube Video Player" src="https://www.youtube.com/embed/3lSxC2U7eXs?feature=oembed&color&autopause=0&loop=0&muted=0&title=1&portrait=1&byline=1"></iframe> </div> 2446 </div>
2447 </div> 2448 </div> 2449 </div> 2450 </div> 2451 <div class="elementor-element elementor-element-41700d1 e-con-full e-flex e-con e-parent" data-id="41700d1" data-element_type="container" data-e-type="container"> 2452 <div class="elementor-element elementor-element-fd843b1 elementor-widget elementor-widget-html" data-id="fd843b1" data-element_type="widget" data-e-type="widget" data-widget_type="html.default"> 2453 <div class="elementor-widget-container"> 2454 <link rel="stylesheet" href="https://use.typekit.net/nvu8eqw.css"> 2455<link rel="stylesheet" href="https://use.typekit.net/gme3gvs.css"> 2456<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=EB+Garamond:wght@400;500;600;700&family=Radio+Canada+Big:wght@400;500;600;700&family=Montserrat:wght@500;600;700&family=Roboto:wght@400;500;700&display=swap"> 2457 2458<style> 2459/* Generated â edit shared/hpb-styles.css, not this block. */ 2460/* sections: core, ticker, cards */ 2461/* ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2462 WHY HEADINGS ARE WRITTEN `.hpb.hpb` AND WHY SOME SELECTORS APPEAR TWICE 2463 2464 The WordPress child theme (wp-content/themes/hpbe2022/css/style.css) 2465 styles bare elements harder than this stylesheet can normally answer. 2466 Two mechanisms, two different answers. Neither is visible in local 2467 preview â this whole class of bug only shows up on WordPress. 2468 2469 1. HEADINGS. The theme declares, at specificity (0,2,1): 2470 2471 .premiere .page h1,h2,h3 {font-family:"adobe-garamond-pro",serif 2472 !important; color:#242324 !important;} 2473 .premiere .page h2 {font-size:60px !important; 2474 line-height:70px !important;} 2475 .premiere .page h3 {font-size:30px !important; 2476 line-height:40px !important;} 2477 2478 Two things are needed to beat that. `!important`, because nothing 2479 else outranks `!important` â so every rule here that sets color, 2480 font-family, font-size or line-height on an h1-h4 states it 2481 !important, consistently. And enough specificity, because when both 2482 sides are !important the cascade falls back to specificity: a plain 2483 `.hpb h3` is (0,1,1) and still loses. Repeating the class â 2484 `.hpb.hpb h3` â costs nothing, always matches, and lifts the base 2485 heading rules to (0,2,1), where source order decides and this 2486 stylesheet wins because it ships inside the page, below the theme's 2487 <link>. Section-level heading rules keep their extra class and land 2488 at (0,3,1), so this file's own hierarchy is unchanged. 2489 2490 text-align, text-transform and letter-spacing are NOT !important in 2491 the theme, so those stay plain here. 2492 2493 2. p / span / li. The theme wins these on specificity alone: 2494 2495 .premiere .page p, .premiere .page span, .premiere .page li 2496 {font-family:"Radio Canada Big"; font-size:20px; line-height:30px;} 2497 2498 Also (0,2,1). A single-class rule like `.hpb .lede` is (0,2,0) and 2499 loses. Writing it a second time as `.hpb p.lede` ties at (0,2,1) and 2500 wins on source order. The plain selector stays in the list for any 2501 other element that uses the same class. 2502 2503 HOW IT LOOKS WHEN IT BITES: headings render centred, near-black and in 2504 Garamond; span and p text collapses to 20px Radio Canada Big. Seen live 2505 on the homepage carousel and the "More to Experience" tiles, 2026-08-13. 2506 2507 ADDING A RULE: heading rules start `.hpb.hpb` and mark those four 2508 properties !important. A rule that styles a <span>, <p> or <li> by one 2509 class gets its selector written twice. Check it on a WordPress preview, 2510 not just the local file. 2511 ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 2512/* âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2513 SHARED â used by every page 2514 âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 2515/* ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2516 Design tokens lifted from the live hpbexpo.com stylesheet. 2517 Serif = adobe-garamond-pro (Typekit), EB Garamond as fallback. 2518 Label = Montserrat / Radio Canada Big, uppercase. 2519 UI = Roboto (buttons only, matching Elementor's button style). 2520 ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 2521 .hpb { 2522 --ink:#242324; /* body + headings */ 2523 --muted:#69727d; 2524 /* moved here from the membership section â the hotel page uses it too */ 2525 --muted-on-blue:#5e6770; /* section labels, secondary text */ 2526 --orange:#e27334; /* button orange */ 2527 --orange-hi:#f36f21; /* accent orange */ 2528 --orange-dark:#c25c25; 2529 --orange-on-navy:#f69358; /* brand orange + 25% white â 4.81:1 on navy (AA) */ 2530 --blue:#0091cc; /* hairline rules, icons, links */ 2531 --blue-soft:#7fc9e6; 2532 --green:#38b452; /* Elementor global green */ 2533 --navy:#003e6f; /* HPBA Navy, sampled from the HPBExpo logo */ 2534 --navy-deep:#002a4d; /* darker navy, hero overlay only */ 2535 --dark:var(--navy); /* every dark band uses HPBA Navy */ 2536 2537 /* ââ RADIUS âââââââââââââââââââââââââââââââââââââââââââââââââââââââ
2538 The site's radius scale. 10px is the default and covers buttons, 2539 cards and panels. Two rules still use a raw 8px (the day-nav body 2540 tabs) â the only off-scale values left. Circles use 50%, not a 2541 token, because a token can't express "always half the box". */ 2542 --r-xs:4px; 2543 --r-sm:10px; 2544 --r-md:12px; 2545 --r-lg:14px; 2546 --r-pill:999px; 2547 /* ââ HERO PHOTOS ââââââââââââââââââââââââââââââââââââââââââââââââââ 2548 Hero backgrounds are CSS background-images, not <img> tags, so there 2549 is no src= to edit in the markup. Swap a hero photo by changing the 2550 URL here â this is the only place they live. */ 2551 --hero-prospectus:url('https://hpbexpo.com/wp-content/uploads/2026/07/nashville-skyline.jpg'); 2552 --hero-membership:url('https://hpbexpo.com/wp-content/uploads/2026/07/IMG_4978.jpg'); 2553 --hero-hotel:url('https://hpbexpo.com/wp-content/uploads/2026/07/nashville-skyline.jpg'); 2554 --hero-apply:url('https://hpbexpo.com/wp-content/uploads/2026/07/IMG_2781.jpg'); 2555 --hero-sponsors:url('https://hpbexpo.com/wp-content/uploads/2026/07/sponsorship_signage.jpg'); 2556
2557 /* Height of the site header. Anchor links offset by this so a jumped-to 2558 heading lands below the header instead of behind it. 2559 2560 THIS MUST MATCH min-height ON .hpbhdr-inner IN 2561 pages/global-header/header.html. They are two files that have to agree, 2562 and nothing enforces it â if this is short, a jumped-to heading hides 2563 behind the header, which looks like a broken link rather than a spacing 2564 bug. 2565 2566 92px -> 112px on 2026-07-29, logo 66 -> 82 (+25%) 2567 112px -> 140px on 2026-07-31, logo 82 -> 110 2568 140px -> 168px on 2026-07-31, logo 110 -> 138 (+25%) */ 2569 --header-h:168px; 2570 2571 --gutter:3rem; /* side margin. was 30px (1.875rem) â one knob, tune here */ 2572 --grey-bg:#f4f4f4; 2573 --rule:#dcdcdc; 2574 2575 --serif:'adobe-garamond-pro','EB Garamond',Garamond,Georgia,'Times New Roman',serif; 2576 --label:'Radio Canada Big',Montserrat,'Helvetica Neue',Arial,sans-serif; 2577 --ui:Roboto,'Helvetica Neue',Arial,sans-serif; 2578 2579 font-family:var(--serif); 2580 color:var(--ink); line-height:1.45; overflow-x:hidden; 2581 /* The theme centres .entry-content-inner and that inherits into every 2582 block. Reset here so the design's own alignment governs again. */ 2583 text-align:left; 2584 -webkit-font-smoothing:antialiased; 2585 2586 /* ââ FULL-BLEED ESCAPE ââââââââââââââââââââââââââââââââââââââââââââ 2587 A page renders inside the theme's content wrapper AND Elementor's 2588 container. Zeroing the container you can see still leaves an outer 2589 one, so the navy bands stop short of the screen edges. 2590 2591 Negative margins of (50% - 50vw) pull the block out to the viewport 2592 edges no matter how many wrappers sit above it. overflow-x:hidden 2593 above stops the scrollbar's width causing a horizontal scroll. 2594 2595 If the page is ALREADY full width, this is a no-op â 50% and 50vw 2596 are equal, so the margins compute to zero. Safe either way. */ 2597 margin-left:calc(50% - 50vw); 2598 margin-right:calc(50% - 50vw); 2599 width:100vw; 2600 max-width:100vw; 2601 2602 /* ââ CLOSING THE GAP UNDER THE HEADER ââââââââââââââââââââââââââââââ 2603 If a white strip still shows between the header and the hero after 2604 the rules below, raise this one number until it closes. Leave it at 2605 0px unless you actually see a gap â a positive value on a page with 2606 no gap will slide the hero up under the header. */ 2607 --pull-up:0px; 2608 margin-top:calc(0px - var(--pull-up)); 2609 } 2610 .hpb *{box-sizing:border-box;} 2611 /* ââ THE 1920px BODY CAP âââââââââââââââââââââââââââââââââââââââââââ 2612 The negative margins above only reach as far as the nearest ancestor 2613 that clips. On this site that ancestor is `article.entry`, which sets 2614 overflow:hidden, and it sits inside a body the theme caps: 2615 2616 body { max-width: 1920px; margin: 0 auto; } 2617 2618 Below 1920px the body fills the window and the cap is invisible. Above 2619 it â a 4K monitor, a wide ultrawide â the body centres at 1920 and the 2620 block gets clipped to it, so the hero stops with white gutters either 2621 side while the rest of the page looks fine. That is the bug this rule 2622 fixes, and it only ever shows up on a screen wider than most people 2623 test on. 2624 2625 Lifting the cap on pages that carry a block is enough. Worth knowing 2626 why it does not then cause a horizontal scrollbar: 100vw includes the 2627 scrollbar's width, so the block overhangs the document by ~7px each 2628 side â and article.entry's overflow:hidden, the same rule that was 2629 clipping us, now trims exactly that overhang. The two work together 2630 once the cap is gone. 2631 2632 Scoped with :has() so only pages with a block are affected, and this 2633 stylesheet ships inside the block anyway. Verified live at a 2089px 2634 viewport, 2026-08-13. */ 2635 body:has(.hpb){max-width:none;} 2636 2637 2638 2639 /* Below 1200px the header switches to the hamburger and its bar shrinks to
2640 96px, so the anchor offset follows it down. Same 1200px breakpoint as 2641 --nav-break in the header file. */ 2642 @media (max-width:1200px){ 2643 .hpb{--header-h:96px;} 2644 } 2645 2646 /* Elementor's default widget bottom margin (--widget-spacing, 20px) and its 2647 container padding stack up into a white band above the hero. These rules 2648 reach up from inside the pasted block and zero them, so the fix doesn't 2649 depend on getting every Elementor padding field right. 2650 2651 THE SELECTORS ARE DESCENDANT, NOT CHILD â ON PURPOSE. The first version 2652 of this used exact chains like 2653 .e-con:has(> .e-con-inner > .elementor-widget > ... > .hpb) 2654 which worked on the five interior pages and silently missed on the home 2655 page, because Elementor nests containers differently depending on how the 2656 page was built. A structure-specific selector is a selector that will fail 2657 on the next page someone builds. `:has(.hpb)` matches however deep it is. 2658 2659 The trade: this also zeroes padding on ANY ancestor container wrapping the 2660 block. That's correct here, because every .hpb block is a full-bleed 2661 region that should sit flush. If you ever drop a .hpb block into the 2662 MIDDLE of an Elementor page with spacing above it, that spacing will 2663 collapse â use --pull-up above with a negative value, or wrap the block in 2664 a container these rules don't reach. 2665 2666 :has() works in every current browser; on anything older, zero the widget 2667 margin and container padding by hand in the Advanced tab. */ 2668 .elementor-widget:has(.hpb){margin-bottom:0 !important;} 2669 .elementor-widget-container:has(> .hpb){padding:0 !important; margin:0 !important;} 2670 .e-con:has(.hpb), 2671 .e-con-inner:has(.hpb), 2672 .elementor-section:has(.hpb), 2673 .elementor-container:has(.hpb), 2674 .elementor-column:has(.hpb), 2675 .elementor-widget-wrap:has(.hpb){ 2676 padding-top:0 !important; padding-bottom:0 !important;} 2677 2678 /* ââ The theme's page header band and page title ââââââââââââââââââââââ 2679 Every interior page gets two things from the theme template, above the 2680 Elementor content and outside anything Elementor can reach: 2681 2682 section.entry-header a photo band, or a colour if no 2683 featured image is set. Its only child 2684 is div.hero-bg-transparency. 2685 .content-wrap > .fitty > h1 the page title, with an empty h2 under 2686 it for the unused Subtitle field. 2687 2688 Every block in this stylesheet opens with its own hero, so the band 2689 duplicates that hero and the title duplicates the hero's h1 â the 2690 exhibitor hotel page was serving TWO h1 elements, which is a real 2691 search problem, not just a visual one. 2692 2693 Scoped to body.sub-page so the homepage is untouched, and it only 2694 loads at all on pages that carry a block, since this stylesheet ships 2695 inside the block. Nothing in the theme is modified. 2696 2697 THE THEME'S OWN SWITCH: Page Attributes (Extended) â "Hide Title" does 2698 the title half per page, and the band has no switch. This rule does 2699 both, once, for every page â but if a page ever needs the theme header 2700 back, delete these two lines from that page's style block rather than 2701 fighting them. 2702 2703 Verified against the live exhibitor hotel page 2026-08-13. */ 2704 body.sub-page .entry-header{display:none;} 2705 body.sub-page .entry-content > .entry-content-inner > .content-wrap{display:none;} 2706 2707 /* ââ THEME RESET ââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2708 These pages sit inside a WordPress theme that styles bare HTML elements 2709 site-wide. Anything not explicitly claimed here inherits whatever the 2710 theme decided. This block neutralises the properties themes most often 2711 set, so the pages render the same in local preview and on the live site. 2712 2713 Symptom this fixes: a vertical rule appearing to the left of the 2714 testimonial quotes, from the theme's blockquote border. */ 2715 .hpb blockquote{margin:0; padding:0; border:0; background:none; 2716 quotes:none; font-style:normal;} 2717 .hpb blockquote::before,.hpb blockquote::after{content:none;} 2718 .hpb figure{margin:0; padding:0;} 2719 .hpb figcaption{margin:0; padding:0; font-size:inherit; color:inherit; text-align:inherit;} 2720 .hpb ul,.hpb ol{margin:0; padding:0; list-style:none;} 2721 .hpb table{border-collapse:collapse; width:100%; margin:0;} 2722 .hpb th,.hpb td{border:0; vertical-align:middle;} 2723 .hpb button{font:inherit; color:inherit; background:none; border:0; margin:0; 2724 -webkit-appearance:none; appearance:none;} 2725 .hpb img{max-width:100%; height:auto; border:0; border-radius:0; box-shadow:none;} 2726 .hpb a{text-decoration:none; box-shadow:none;} 2727 .hpb p,.hpb h1,.hpb h2,.hpb h3,.hpb h4{text-shadow:none;} 2728 .hpb section{margin:0;} 2729 .hpb section{padding:88px var(--gutter); position:relative;} 2730 .hpb .wrap{max-width:1380px; margin:0 auto; position:relative; z-index:1;} 2731 .hpb .narrow{max-width:900px;} 2732 .hpb.hpb h1, 2733 .hpb.hpb h2{font-family:var(--serif) !important; font-weight:700; color:var(--ink) !important; 2734 margin:0 0 20px; line-height:1.16 !important; letter-spacing:-1px; 2735 text-transform:none !important; 2736 /* The theme has a SECOND heading rule, `text-align:center !important`. 2737 Inheritance cannot beat a direct declaration, so headings have to 2738 state alignment themselves. `inherit` reproduces exactly what the 2739 local file does â take it from the container â instead of pinning 2740 every heading left and breaking the centred cards. */ 2741 text-align:inherit !important;} 2742 .hpb.hpb h1{font-size:clamp(42px,6vw,80px) !important; letter-spacing:-2px;} 2743 .hpb.hpb h2{font-size:clamp(32px,4.6vw,60px) !important;} 2744 .hpb.hpb h3{font-family:var(--label) !important; font-weight:700; font-size:20px !important; 2745 text-align:inherit !important; 2746 text-transform:uppercase; letter-spacing:.3px; color:var(--muted) !important; 2747 margin:0 0 14px; padding-bottom:14px; border-bottom:2px solid var(--blue); 2748 line-height:1.3 !important;} 2749 .hpb.hpb h3.plainhd{border-bottom:none; padding-bottom:0; color:var(--ink) !important;} 2750 2751 /* `.hpb.hpb p` rather than `.hpb p`, and padding stated explicitly, because 2752 the theme wraps page content in .banner-space > .banner-space-inner and 2753 declares `p{padding:0 30px}` there at (0,2,1). A plain `.hpb p` is (0,1,1) 2754 and loses, so every paragraph on WordPress sat 30px in from its own 2755 heading while looking flush in local preview â the indent under "Priority 2756 Points", "Airport" and "Maritz Housing" was all this one rule. Same reason 2757 line-height is here: the theme sets 30px on p and inheritance can't answer 2758 a direct declaration. Verified live 2026-08-13. */ 2759 .hpb.hpb p{margin:0 0 18px; font-size:20px; line-height:1.45; 2760 padding-left:0; padding-right:0; font-family:inherit; text-align:inherit;}
2761 /* Same rule sets font-family, font-size and line-height directly on p, span 2762 and li, so inheritance from .hpb never reaches them and every paragraph 2763 rendered in Radio Canada Big on WordPress while the local file showed 2764 Adobe Garamond. `inherit` restores the local behaviour exactly â take the 2765 face from the container â so .slide p and .btile p keep their Roboto and 2766 everything else falls back to the serif. Placed here, near the top of 2767 core, so the specific span rules further down still win. */ 2768 /* text-align:inherit here and on p above answers a second phone rule in 2769 the theme, `.premiere .page p, span, li {text-align:left}` at (0,2,1) 2770 below 768px. A direct declaration beats inheritance, so every block 2771 span or p that was taking its centring from a parent â the day-nav 2772 labels, the stat figures, the video caption â snapped left on phones. 2773 `inherit` is the default anyway, so this changes nothing in the local 2774 file; it only restores it on WordPress. */ 2775 .hpb.hpb li,.hpb.hpb span{font-family:inherit; font-size:inherit; 2776 line-height:inherit; text-align:inherit;} 2777 /* ââ PHONE ALIGNMENT ââââââââââââââââââââââââââââââââââââââââââââââââââ 2778 Below 768px the theme re-aligns everything, all with !important: 2779 2780 .premiere .page ul li, ol li text-align:center (0,2,2) 2781 .premiere .page p, span, li text-align:left (0,2,1) 2782 .premiere .page h1-h6, .premiere .page, 2783 .premiere .page p text-align:center (0,2,1) 2784 2785 Net effect on a phone: the block's own container is centred, every 2786 span is forced left, every p is forced centre, and every list item is 2787 centred and flattened to display:block. Seen live on the events 2788 schedule 2026-09-09: time and event name ran together on one centred 2789 line, the day-nav labels sat left in their boxes, and the "members 2790 only" note hung left under a centred row. 2791 2792 The answer is the same shape as the heading fix at the top of core: 2793 !important to meet !important, matching specificity, and this 2794 stylesheet ships later in the page, so it wins the tie. `inherit` 2795 reproduces the local file â take alignment from the container â 2796 rather than pinning a direction, so a list inside a centred card 2797 stays centred and one inside a left column stays left. 2798 2799 Because these are !important, the handful of p and span rules in this 2800 file that set text-align WITHOUT !important would lose to them on a 2801 phone, so those are restated here with weight. If you add a text-align 2802 to a p or span anywhere in this file, add it to this list too, or it 2803 will hold on desktop and quietly not on phones. 2804 2805 Any li that is display:grid or flex ALSO needs its display restated at 2806 (0,3,1) or better â see .schlist li in @section events. The offline 2807 sweep runs at desktop width by default; run it with --width 390 as 2808 well. */ 2809 @media (max-width:767px){ 2810 .hpb.hpb{text-align:left !important;} 2811 .hpb.hpb p,.hpb.hpb span{text-align:inherit !important;} 2812 .hpb.hpb ul li,.hpb.hpb ol li{text-align:inherit !important;} 2813 /* restated from elsewhere in this file, see above */ 2814 .hpb .alertbar p{text-align:center !important;} 2815 .hpb span.vidcap{text-align:center !important;} 2816 .hpb p.finenote,.hpb p.pathlead,.hpb p.listcta, 2817 .hpb p.conote,.hpb p.schnote{text-align:center !important;} 2818 .hpb .azbar span{text-align:center !important;} 2819 .hpb .slide .ceyebrow,.hpb .slide p{text-align:left !important;} 2820 } 2821 /* Utility for the odd centred component that needs to sit left in one 2822 place â the hotel page's second .pathlead. An inline style="text-align" 2823 used to do this, but an inline style is not !important and loses to the 2824 phone block above. Stated with weight so it holds at every width. */ 2825 .hpb .alignleft,.hpb p.alignleft{text-align:left !important;} 2826 .hpb a{color:var(--blue);} 2827 2828 /* ââ Section-intro alignment ââââââââââââââââââââââââââââââââââââââââââ 2829 Centers the eyebrow, heading and lede of full-width sections. Scoped to 2830 DIRECT children of .wrap so two-column blocks (.media, .nash-txt) and the 2831 hero keep their left alignment â their text sits deeper in the tree. 2832
2833 Declared explicitly rather than inherited: a theme rule that targets `p` 2834 or `h2` directly beats any inherited alignment from a parent, no matter 2835 how specific that parent selector is. This is why the ledes stayed 2836 left-aligned inside WordPress. */ 2837 .hpb section > .wrap > .eyebrow, 2838 .hpb section > .wrap > h2, 2839 .hpb section > .wrap > .lede{text-align:center !important;} 2840 /* .eyebrow is inline-block by default. text-align on an inline-block centers 2841 its contents, not the box â the box still sits at the left of the line. 2842 display:block makes it span the row so the centering actually applies. */ 2843 .hpb section > .wrap > .eyebrow{display:block;} 2844 .hpb section > .wrap > .lede{margin-left:auto; margin-right:auto;} 2845 /* Buttons that belong to a centered section intro center with it. Rows nested 2846 inside two-column blocks or cards keep their own alignment. */ 2847 .hpb section > .wrap > .btn-row{justify-content:center;} 2848 /* Headings inside two-column blocks sit beside a photo, so they stay left. 2849 Stated explicitly because the theme centers every h2 site-wide. */ 2850 .hpb .media h2,.hpb .media .eyebrow,.hpb .media .lede, 2851 .hpb .nash-txt h2,.hpb .nash-txt .eyebrow{text-align:left !important;} 2852 2853 /* Hero copy is left-aligned in every case â it sits in a two-column layout 2854 beside a video, photo or stat panel, so centering it strands it away from 2855 the artwork. Declared explicitly because the theme centers all headings, 2856 and the hero h1 is nested inside .herogrid rather than being a direct 2857 child of .wrap, so the section-intro rules above never reach it. */ 2858 /* !important is not decoration here. This theme styles bare h1/h2/p with 2859 enough force to beat a two-class selector â it already had to be used on 2860 text-transform above for the same reason. Seen live on the events page: 2861 the hero h1 rendered centred and near-black instead of left and white, 2862 because the theme's own heading rule won. Anything the theme also sets 2863 on these elements has to be stated with the same weight. */ 2864 .hpb .hero h1,.hpb .hero h2,.hpb .hero .kicker, 2865 .hpb .hero .sub,.hpb .hero .heronote,.hpb .hero p{text-align:left !important;} 2866 2867 /* The brand name keeps its own casing everywhere, including inside headings 2868 and labels that are otherwise set in caps â HPBExpo, never HPBEXPO. 2869 Applies whether the caps come from this stylesheet or the WordPress theme. */ 2870 /* The `span` qualifier is load-bearing â see the note on .cdnum in 2871 @section carousel. Without it the brand name inside a heading or a 2872 paragraph drops to 20px Radio Canada Big while the text around it stays 2873 put, so "HPBExpo27" renders larger or smaller than the sentence holding 2874 it. Verified on the live homepage 2026-08-13. */ 2875 .hpb .brand,.hpb span.brand{text-transform:none !important; 2876 font-family:inherit; font-size:inherit; line-height:inherit;} 2877 2878 /* section label above the h2 */ 2879 .hpb .eyebrow{display:inline-block; font-family:var(--label); text-transform:uppercase; 2880 letter-spacing:1.8px; font-weight:700; font-size:14px; color:var(--muted); 2881 margin-bottom:14px;} 2882 .hpb .lede, 2883 .hpb p.lede{font-size:23px; line-height:1.42; color:var(--ink); max-width:840px;} 2884 2885 /* buttons â matched to Elementor's live button widget */ 2886 .hpb .btn{display:inline-block; font-family:var(--ui); font-weight:500; font-size:18px; 2887 padding:14px 26px; border-radius:var(--r-sm); text-decoration:none; border:2px solid transparent; 2888 transition:.15s; line-height:1.3;} 2889 .hpb .btn-primary{background:var(--orange); color:#fff; border-color:var(--orange);} 2890 .hpb .btn-primary:hover{background:var(--orange-dark); border-color:var(--orange-dark); color:#fff;} 2891 .hpb .btn-ghost{background:transparent; color:#fff; border-color:#fff;} 2892 .hpb .btn-ghost:hover{background:#fff; color:var(--ink);} 2893 .hpb .btn-outline{background:transparent; color:var(--navy); border-color:var(--navy);} 2894 .hpb .btn-outline:hover{background:var(--navy); color:#fff;} 2895 2896 /* Keyboard focus. Matches the ring used elsewhere on the site: 2897 3px solid, 3px offset. --blue on light backgrounds (3.55:1 against 2898 white, over the 3:1 WCAG needs for a non-text indicator); 2899 --blue-soft for the ghost button, which sits on navy or photography 2900 where --blue would be too dark to see (5.94:1 on navy). */ 2901 .hpb .btn-primary:focus-visible, 2902 .hpb .btn-outline:focus-visible{outline:3px solid var(--blue); outline-offset:3px;} 2903 .hpb .btn-ghost:focus-visible{outline:3px solid var(--blue-soft); outline-offset:3px;} 2904 .hpb .btn-row{display:flex; gap:14px; flex-wrap:wrap; margin-top:10px;} 2905 .hpb .hero .btn{padding:12px 24px; font-size:17px;} 2906 2907 /* ââ Pending call-to-action âââââââââââââââââââââââââââââââââââââââââ 2908 Registration and the brochure are announced but not live. The buttons 2909 therefore use the ORDINARY button styles â .btn-primary and .btn-ghost, 2910 exactly as a live CTA would â and the pending state is carried by a 2911 separate label sitting under each one, outside the button itself. 2912 2913 They are <span>s, not <a>s. An <a> with no href looks clickable, does 2914 nothing, and reads as a broken control to a screen reader; a span in a 2915 button's clothing at least does not promise a destination. This is a 2916 deliberate short-term state: the buttons look completely live, so the 2917 COMING SOON label is the only thing distinguishing them. Do not remove 2918 the label without making the buttons real links in the same edit. 2919 2920 Used by Why Attend and Participating Companies, which is why it lives in
2921 core rather than in either page's own section. 2922 2923 WHEN THE REAL LINKS EXIST: change <span class="btn btn-primary"> to 2924 <a class="btn btn-primary" href="..."> and delete the .pendlbl div. 2925 The .pend wrapper can stay or go â it collapses to nothing. 2926 2927 .pendlbl is a <div>, not a <span>, so it sidesteps the theme's 2928 `.premiere .page span` rule entirely â see the note at the top of 2929 @section core. --orange-on-navy is safe here because the label now sits 2930 on solid navy rather than on a translucent button fill. */ 2931 /* A <span class="btn"> does NOT inherit the button's type styles on its own. 2932 `.hpb .btn` is (0,2,0), and it loses twice over: to core's 2933 `.hpb.hpb span{font-family:inherit; font-size:inherit}` at (0,2,1) in 2934 local preview, and to the theme's `.premiere .page span` at (0,2,1) on 2935 WordPress. Result: these two buttons rendered in Garamond at body size 2936 while the real <a> button beside them rendered correctly in Roboto. 2937 2938 Restating font at (0,3,1) fixes both at once. The <a> buttons need none 2939 of this â the whole problem exists only because a pending button has to 2940 be a span rather than a link. 2941 2942 The sweep cannot catch this: it diffs local against WordPress, and the 2943 rule was losing in both, so both agreed and the page came back clean.
2944 scripts/selfcheck.mjs in the audit skill is what catches this class. */ 2945 .hpb .pend span.btn{font-family:var(--ui); font-size:18px; line-height:1.3;} 2946 .hpb .hero .pend span.btn{font-size:17px;} 2947 .hpb .pend{display:flex; flex-direction:column; align-items:center; gap:9px;} 2948 .hpb .pendlbl{font-family:var(--label); font-size:11px; font-weight:700; 2949 text-transform:uppercase; letter-spacing:1.2px; color:var(--orange-on-navy);} 2950 2951 /* placeholders â deliberately loud */ 2952 .hpb .ph{display:inline-block; padding:2px 12px; border:2px dashed var(--orange-hi); 2953 border-radius:var(--r-xs); background:#fff4ec; color:#a8501a; font-family:var(--label); 2954 font-weight:700; letter-spacing:.5px;} 2955 .hpb .ph-block{border:2px dashed var(--orange-hi); border-radius:var(--r-sm); 2956 background:#fff4ec; padding:28px; color:#a8501a;} 2957 .hpb .ph-note{font-family:var(--label); font-size:13px; font-weight:700; 2958 text-transform:uppercase; letter-spacing:1.2px; color:#a8501a; margin:0;} 2959 2960 /* âââââ HERO âââââ */ 2961 /* The hero photo is painted on the SECTION itself, not on a helper <div>. 2962 An empty <div class="hero-bg"> is easy to lose when copying markup, and if 2963 it goes missing the photo silently disappears with no other symptom. 2964 Darkening is handled entirely by the ::after scrim below. */ 2965 .hpb .hero{padding:0 var(--gutter); display:flex; align-items:center; 2966 background-color:var(--navy); background-image:var(--hero-prospectus); 2967 background-size:cover; background-position:center;} 2968 /* kept so any leftover markup stays harmless */ 2969 .hpb .hero-bg{display:none;} 2970 /* Scrim strength is a balance: dark enough on the left for white headline 2971 text to pass contrast, light enough on the right for the photo to read. 2972 Checked at 4.5:1 for the body copy over the darkest point. */ 2973 .hpb .hero::after{content:''; position:absolute; inset:0; 2974 background:linear-gradient(100deg, rgba(0,42,77,.90) 0%, rgba(0,42,77,.70) 48%, rgba(0,42,77,.46) 100%);} 2975 /* width:100% is essential â .wrap is a FLEX ITEM here (the hero is display:flex). 2976 Without it the item sizes to content, max-width never engages, and margin:0 auto 2977 centers the block â which is why hero text once sat right of every other section. */ 2978 .hpb .hero .wrap{width:100%; padding:52px 0 40px; z-index:2;} 2979 .hpb .herogrid{display:grid; grid-template-columns:1fr 1.05fr; gap:52px; align-items:center;} 2980 .hpb.hpb .hero h1{color:#fff !important; margin-bottom:14px; 2981 font-size:clamp(34px,4.4vw,56px) !important; letter-spacing:-1.4px;} 2982 .hpb .hero .kicker{font-family:var(--label); color:var(--orange-on-navy); font-weight:700; 2983 letter-spacing:2.6px; text-transform:uppercase; font-size:13px; margin-bottom:12px;} 2984 .hpb .hero .sub{color:#e2edf4; font-size:21px; max-width:520px; margin-bottom:24px; line-height:1.4;} 2985 /* Hero footnote. Lived in @section sponsors until 2026-08-13, which meant 2986 any hero on a page that doesn't load that section â events schedule, 2987 attendee hotel â rendered it in near-black on navy, i.e. invisible. 2988 It belongs with the hero, and the hero is core. 2989 2990 margin is stated with weight for the same reason as the hero headings: 2991 the theme zeroes paragraph margins, which pulled this note up against 2992 the dates block and made the two look collided. */ 2993 .hpb .heronote, 2994 .hpb p.heronote{margin:24px 0 0 !important; font-size:16px; color:#c3d8e6;} 2995 .hpb .heronote strong{color:#fff;} 2996 2997 .hpb .hero .when{display:flex; flex-wrap:wrap; margin:0; 2998 border-left:3px solid var(--orange-hi); padding-left:18px;} 2999 .hpb .hero .when div{padding-right:34px;} 3000 .hpb .hero .when .lbl{font-family:var(--label); color:var(--blue-soft); font-size:12px; 3001 text-transform:uppercase; letter-spacing:1.6px; font-weight:700; margin-bottom:3px;} 3002 .hpb .hero .when .val{color:#fff; font-size:18px; font-weight:600;} 3003 3004 /* video â poster + play ring; the iframe is only injected on click */ 3005 .hpb .herovid{position:relative;} 3006 .hpb .vidbtn{display:block; width:100%; padding:0; border:0; background:none; cursor:pointer; 3007 position:relative; border-radius:var(--r-sm); overflow:hidden; aspect-ratio:16/9; color:#fff;} 3008 .hpb .vidbtn img{width:100%; height:100%; object-fit:cover; display:block;} 3009 /* Even scrim rather than a bottom-heavy gradient â the heavy version existed 3010 to keep a caption legible, and the prospectus poster no longer has one. 3011 Enough contrast remains for the white play ring. */ 3012 .hpb .vidbtn::after{content:''; position:absolute; inset:0; 3013 background:linear-gradient(180deg,rgba(0,42,77,.20),rgba(0,42,77,.42));} 3014 .hpb .playring{position:absolute; inset:0; margin:auto; width:76px; height:76px; z-index:2; 3015 border-radius:50%; background:rgba(255,255,255,.16); border:2px solid #fff; 3016 display:grid; place-items:center; transition:.18s;} 3017 .hpb .playring svg{width:34px; height:34px; margin-left:3px;} 3018 .hpb .vidbtn:hover .playring{background:var(--orange); border-color:var(--orange); transform:scale(1.06);} 3019 .hpb .vidbtn:focus-visible{outline:3px solid var(--blue-soft); outline-offset:3px;} 3020 .hpb .vidcap, 3021 .hpb span.vidcap{position:absolute; left:0; right:0; bottom:20px; z-index:2; text-align:center; 3022 font-family:var(--label); font-size:15px; font-weight:700; letter-spacing:.6px; color:#fff;} 3023 /* Applied to the injected player itself rather than to a parent, so it sizes 3024 correctly wherever a video is placed. Scoped by class, so it cannot touch 3025 the e-sign contract iframe on the Apply page. */ 3026 .hpb .vidframe{width:100%; aspect-ratio:16/9; border:0; display:block; 3027 border-radius:var(--r-sm);} 3028 .hpb .vidwrap .vidframe{border-radius:0;} 3029 .hpb .herovid iframe{width:100%; aspect-ratio:16/9; border:0; border-radius:var(--r-sm); display:block;} 3030 3031 /* quick-nav â jumps to sections further down the page */ 3032 .hpb .quicknav{display:flex; flex-wrap:wrap; justify-content:center; gap:14px; 3033 margin-top:42px;} 3034 .hpb .quicknav .qbtn{display:inline-flex; align-items:center; gap:11px; 3035 font-family:var(--ui); font-size:17px; font-weight:500; text-decoration:none; 3036 padding:14px 26px; border-radius:var(--r-sm); background:#fff; color:var(--navy); 3037 border:2px solid #fff; transition:.15s;} 3038 .hpb .quicknav .qbtn svg{width:21px; height:21px; flex:0 0 21px;} 3039 .hpb .quicknav .qbtn:hover{background:transparent; color:#fff;} 3040 .hpb .quicknav .qbtn-go{background:var(--orange); border-color:var(--orange); color:#fff;} 3041 .hpb .quicknav .qbtn-go:hover{background:var(--orange-dark); border-color:var(--orange-dark); color:#fff;} 3042 .hpb .quicknav .qbtn:focus-visible{outline:3px solid var(--blue-soft); outline-offset:3px;} 3043 3044 /* ââ GLASS BUTTON â for buttons sitting on photography ââââââââââââââ 3045 Translucent fill, hairline light edge, blurred backdrop, arrow before 3046 the label. Use it anywhere a button sits over an image: carousel
3047 slides, bento tiles, photo heroes. 3048 3049 Usage: <a class="btn btn-glass" href="â¦"> 3050 <svg â¦arrowâ¦></svg> Plan Your Trip 3051 </a> 3052 3053 THE FILL IS NAVY, NOT WHITE â and that's a contrast decision, not a 3054 style one. A white translucent fill (which is what most examples of 3055 this pattern use) measures 7.4:1 over our dark gradient but only 3056 2.5:1 where a button lands on a lighter part of a photo â a clear 3057 fail. A navy fill darkens whatever is behind it instead, so the label 3058 holds up regardless of the image: 3059 3060 over the dark gradient 13.07:1 3061 over a mid photo tone 7.84:1 3062 over the brightest photo 4.82:1 (AA needs 4.5:1) 3063 3064 Don't lighten the 0.60 alpha without re-checking those numbers. 3065 backdrop-filter is decoration only â where it isn't supported the 3066 button is still a solid-enough navy to read. */ 3067 .hpb .btn-glass{ 3068 display:inline-flex; align-items:center; gap:11px; 3069 background:rgba(0,42,77,.60); 3070 border:1px solid rgba(255,255,255,.55); 3071 -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); 3072 color:#fff;} 3073 .hpb .btn-glass svg{flex:0 0 auto; width:16px; height:16px; 3074 transition:transform .2s;} 3075 .hpb .btn-glass:hover{background:rgba(0,42,77,.78); 3076 border-color:#fff; color:#fff;} 3077 .hpb .btn-glass:hover svg{transform:translateX(4px);} 3078 .hpb .btn-glass:visited,.hpb .btn-glass:focus{color:#fff;} 3079 /* full-width inside a tile, like the reference */ 3080 .hpb .btn-glass.wide{display:flex; width:100%; justify-content:center;} 3081 3082 /* Anchor targets clear the header, plus a little breathing room. Driven by 3083 --header-h so this stays correct if the header is ever resized. */ 3084 .hpb [id]{scroll-margin-top:calc(var(--header-h) + 20px);} 3085 3086 /* alert bar */ 3087 .hpb .alertbar{background:var(--orange); color:#fff; padding:13px 30px; text-align:center;} 3088 .hpb .alertbar p{margin:0; text-align:center; font-family:var(--label); font-size:15px; font-weight:700; 3089 color:#fff; letter-spacing:.4px; text-transform:uppercase;} 3090 .hpb .alertbar a{color:#fff; text-decoration:underline;} 3091 3092 /* grids */ 3093 .hpb .grid{display:grid; gap:38px;} 3094 .hpb .g2{grid-template-columns:repeat(2,1fr);} 3095 .hpb .g3{grid-template-columns:repeat(3,1fr);} 3096 .hpb .g4{grid-template-columns:repeat(4,1fr);} 3097 3098 /* cards â the live site uses open columns, not boxes */ 3099 .hpb .card{background:transparent; padding:0;} 3100 .hpb .card p{font-size:19px; margin:0; color:var(--ink);} 3101 .hpb .plain{background:transparent; padding:0;} 3102 .hpb .plain p{font-size:19px; margin:0;} 3103 3104 /* Video frame. Lives in core rather than in a page section because two 3105 pages use it now â the membership pages, where it is framed like the 3106 rate table above it (same width behaviour, same radius and border, so 3107 the two blocks read as a matched pair), and Why Exhibit, where it sits 3108 inside a grid cell and uses the .incell modifier to drop the cap. */ 3109 .hpb .vidwrap{max-width:1100px; margin:30px auto 0; border:1px solid var(--rule); 3110 border-radius:var(--r-md); overflow:hidden; background:#fff;} 3111 .hpb .vidwrap .vidbtn{border-radius:0;} 3112 /* In a grid cell the wrapper should fill its column, not centre inside a 3113 1100px cap, and the cell already provides the spacing. */ 3114 .hpb .vidwrap.incell{max-width:none; margin:0;} 3115 3116 /* âââââ STATS (dark band) âââââ */ 3117 .hpb .stats{background:var(--dark); color:#fff;} 3118 .hpb.hpb .stats h2{color:#fff !important;} 3119 .hpb .stats .lede{color:#c3d8e6;} 3120 .hpb .statgrid{display:grid; grid-template-columns:repeat(4,1fr); gap:24px; margin-top:44px;} 3121 /* No card chrome â the live site separates things with rules, not containers. */ 3122 .hpb .stat{text-align:center; padding:8px 16px;} 3123 .hpb .statgrid > .stat + .stat{border-left:1px solid rgba(255,255,255,.22);} 3124 .hpb .stat .num{font-family:var(--serif); font-size:46px; font-weight:700; color:#fff; 3125 display:block; margin-bottom:8px; line-height:1;} 3126 .hpb .stat .lbl{font-family:var(--label); font-size:13px; text-transform:uppercase; 3127 letter-spacing:1.5px; color:var(--blue-soft); font-weight:700;} 3128 /* .stat .num sets white, which out-specifies .ph and made placeholder figures 3129 invisible on their cream fill. Restate the placeholder color here. */ 3130 .hpb .stat .num.ph{font-size:32px; padding:6px 14px; color:#a8501a;} 3131 3132 /* media rows */ 3133 .hpb .media{display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:center;} 3134 .hpb .media img{width:100%; border-radius:var(--r-sm); display:block;} 3135 .hpb .media.flip .txt{order:2;} 3136 3137 /* tick lists */ 3138 .hpb ul.ticks{list-style:none; padding:0; margin:0 0 20px;} 3139 .hpb ul.ticks li{padding-left:30px; position:relative; margin-bottom:12px; font-size:20px;} 3140 .hpb ul.ticks li::before{content:''; position:absolute; left:0; top:11px; width:11px; height:11px; 3141 border-radius:50%; background:var(--blue);} 3142 3143 /* Audience segments â grouped columns rather than a flat row of pills. 3144 Uses the same uppercase-label + blue-rule heading as the rest of the page. */ 3145 .hpb .segments{margin-top:38px;} 3146 .hpb .segments ul{list-style:none; margin:0; padding:0;} 3147 .hpb .segments li{font-size:18px; padding:9px 0; border-bottom:1px solid var(--rule); 3148 line-height:1.4;} 3149 .hpb .segments li:last-child{border-bottom:none;} 3150 3151 /* schedule 3152 Cards are equal height because grid stretches items to their row. The 3153 white space below a short day's last item is intentional â days will gain 3154 items as the program fills in, and it leaves room for them. 3155 3156 DO NOT make the list or its items flex to fill the card. It was tried on 3157 2026-07-29 and reverted: distributing the rows stretches a two-item card 3158 into something that reads as padded out, and â the real problem â turning 3159 an <li> into a flex container makes `<strong>Exhibits Open</strong>` and 3160 the ` (closing at 1 PM)` after it into separate flex items, which collapses 3161 the space between them. It renders as "Exhibits Open(closing at 1 PM)". 3162 3163 align-items:stretch is stated rather than left to the default so a theme 3164 rule touching grids can't quietly break the equal heights. */ 3165 .hpb .days{display:grid; grid-template-columns:repeat(4,1fr); gap:24px; 3166 margin-top:38px; align-items:stretch;} 3167 .hpb .day{background:#fff; border:1px solid var(--rule); border-radius:var(--r-sm); overflow:hidden;} 3168 .hpb .day .hd{background:var(--dark); color:#fff; padding:18px 22px;} 3169 .hpb .day .hd .dow{font-family:var(--label); font-size:12px; text-transform:uppercase; 3170 letter-spacing:1.6px; color:var(--blue-soft); font-weight:700;} 3171 .hpb .day .hd .dt{font-family:var(--serif); font-size:26px; font-weight:700;} 3172 .hpb .day ul{list-style:none; margin:0; padding:20px 22px;} 3173 .hpb .day li{font-size:18px; padding:9px 0; border-bottom:1px solid #eee; line-height:1.35;} 3174 .hpb .day li:last-child{border-bottom:none;} 3175 3176 /* rates */ 3177 .hpb .ratewrap{background:#fff; border:1px solid var(--rule); border-radius:var(--r-sm); 3178 overflow:hidden; margin-top:30px;} 3179 /* max-width, box-shadow and margin are stated because the theme declares 3180 `.page-template-hpbe-singular table{max-width:70%; margin:0 auto; 3181 box-shadow:...}` â every table on this page template is capped at 70%,
3182 centred, and given a drop shadow. Our rule sets `width`, which does not 3183 answer a `max-width`, so the table sat at 965px inside a 1380px column 3184 and read as though its right edge had been cut off. Specificity is 3185 already on our side, (0,2,1) against (0,1,1); the properties just have 3186 to be named. Found on the live page 2026-08-13 â the offline sweep 3187 missed it because max-width and box-shadow weren't being compared. */ 3188 .hpb table.rates{width:100%; max-width:none; margin:0; box-shadow:none; 3189 border-collapse:collapse;} 3190 .hpb table.rates th,.hpb table.rates td{padding:20px 24px; text-align:left;} 3191 .hpb table.rates thead th{background:var(--dark); color:#fff; font-family:var(--label); 3192 font-size:13px; text-transform:uppercase; letter-spacing:1.4px; font-weight:700;} 3193 .hpb table.rates tbody tr{border-bottom:1px solid var(--rule);} 3194 .hpb table.rates tbody tr:last-child{border-bottom:none;} 3195 .hpb table.rates tbody tr.member{background:#f3faf5;} 3196 .hpb table.rates td.who{font-family:var(--label); font-weight:700; font-size:15px; 3197 text-transform:uppercase; letter-spacing:.5px; color:var(--muted);} 3198 .hpb table.rates td.rate{font-family:var(--serif); font-weight:700; font-size:34px; color:var(--ink);} 3199 .hpb table.rates tr.member td.rate{color:#1d8a3f;} 3200 .hpb .savetag, 3201 .hpb span.savetag{display:inline-block; background:var(--green); color:#fff; font-family:var(--label); 3202 font-size:11px; font-weight:700; padding:4px 11px; border-radius:var(--r-pill); margin-left:8px; 3203 text-transform:uppercase; letter-spacing:.8px; vertical-align:middle;} 3204 3205 .hpb .boothtypes{display:grid; grid-template-columns:repeat(2,1fr); gap:20px; margin-top:30px;} 3206 .hpb .bt{background:var(--grey-bg); border-left:3px solid var(--blue); 3207 border-radius:0 8px 8px 0; padding:20px 24px;} 3208 .hpb .bt strong{font-family:var(--label); font-size:14px; text-transform:uppercase; 3209 letter-spacing:.6px; color:var(--ink); display:block; margin-bottom:6px;} 3210 .hpb .bt span{font-size:18px; line-height:1.4;} 3211 3212 /* included checklist */ 3213 .hpb .incl{display:grid; grid-template-columns:repeat(2,1fr); gap:0 40px; margin-top:28px;} 3214 .hpb .incl div{padding:14px 0 14px 34px; border-bottom:1px solid var(--rule); 3215 position:relative; font-size:19px; line-height:1.4;} 3216 .hpb .incl div::before{content:'â'; position:absolute; left:0; top:14px; 3217 color:var(--blue); font-weight:700; font-size:19px;} 3218 3219 /* âââââ TESTIMONIAL CAROUSEL âââââ 3220 Editorial layout: oversized quote mark, large serif quote centered, then a 3221 stacked avatar / name / company credit. Arrows sit outside the quote at 3222 the left and right edges rather than below it. */ 3223 .hpb .tcarousel{position:relative; padding:0 72px;} 3224 .hpb .tviewport{overflow:hidden;} 3225 .hpb .ttrack{display:flex; transition:transform .45s cubic-bezier(.4,0,.2,1);} 3226 .hpb .tslide{flex:0 0 100%; min-width:100%; margin:0; padding:8px 0 0; 3227 display:flex; flex-direction:column; align-items:center; justify-content:flex-start; 3228 text-align:center; background:none;} 3229 .hpb .tslide > *{max-width:900px; width:100%;} 3230 3231 /* decorative opening mark, set above the quote */ 3232 .hpb .tslide blockquote{margin:0; font-family:var(--serif); font-size:clamp(22px,2.5vw,32px); 3233 font-weight:400; color:var(--ink); line-height:1.45; position:relative; padding-top:56px;} 3234 .hpb .tslide blockquote::before{content:'\201C' !important; position:absolute; top:0; left:50%; 3235 transform:translateX(-50%); font-family:var(--serif); font-size:110px; font-weight:700; 3236 line-height:1; color:#d7e2ea;} 3237 3238 /* credit block */ 3239 .hpb .tslide .attrib{display:flex; flex-direction:column; align-items:center; 3240 gap:12px; margin-top:34px; width:auto;} 3241 .hpb .tslide .attrib img{width:64px; height:64px; border-radius:50%; object-fit:cover; 3242 margin:0; border:0; flex:0 0 64px;} 3243 .hpb .tslide .nm{display:flex; flex-direction:column; gap:3px; text-align:center; 3244 font-family:var(--label); font-size:15px; font-weight:700; text-transform:none; 3245 letter-spacing:0; color:var(--ink); line-height:1.35;} 3246 .hpb .tslide .nm em{font-style:normal; font-weight:400; font-size:14.5px; 3247 color:var(--muted); letter-spacing:.3px;} 3248 3249 /* arrows flank the quote; dots sit underneath */ 3250 .hpb .tbtn{position:absolute; top:50%; transform:translateY(-50%); 3251 width:48px; height:48px; border-radius:50%; border:1px solid var(--rule); 3252 background:#fff; color:var(--navy); cursor:pointer; display:grid; place-items:center; 3253 padding:0; transition:.15s; z-index:2;} 3254 .hpb .tbtn[data-prev]{left:0;} 3255 .hpb .tbtn[data-next]{right:0;} 3256 .hpb .tbtn svg{width:20px; height:20px;} 3257 .hpb .tbtn:hover{background:var(--navy); border-color:var(--navy); color:#fff;} 3258 .hpb .tbtn:focus-visible{outline:3px solid var(--blue); outline-offset:3px;} 3259 .hpb .tbtn[disabled]{opacity:.35; cursor:default;} 3260 .hpb .tbtn[disabled]:hover{background:#fff; border-color:var(--rule); color:var(--navy);} 3261 .hpb .tnav{display:flex; align-items:center; justify-content:center; gap:10px; margin-top:30px;} 3262 .hpb .tdots{display:flex; gap:9px; align-items:center;} 3263 .hpb .tdot{width:9px; height:9px; border-radius:50%; border:0; 3264 background:#c7d4dd; padding:0; cursor:pointer; transition:.15s;} 3265 .hpb .tdot[aria-selected="true"]{background:var(--navy); transform:scale(1.3);} 3266 .hpb .tdot:focus-visible{outline:3px solid var(--blue); outline-offset:3px;} 3267 .hpb .tcarousel.single .tnav{display:none;} 3268 .hpb .tcarousel.single .tbtn{display:none;} 3269 3270 /* dark + tint bands */
3271 .hpb .dark{background:var(--dark); color:#fff;} 3272 .hpb.hpb .dark h2{color:#fff !important;} 3273 .hpb.hpb .dark h3{color:#a9c6da !important; border-bottom-color:var(--blue);} 3274 .hpb .dark p,.hpb .dark .lede,.hpb .dark li{color:#dce7ef;} 3275 .hpb .dark .plain p{color:#dce7ef;} 3276 /* Buttons are links, so the generic .dark a rule above would tint their 3277 label light blue. Buttons keep their own colors. */ 3278 /* The gray eyebrow is a light-background color; on navy it reads muddy and 3279 fails contrast. Navy sections use the accent orange, matching the hero kicker. */ 3280 .hpb .dark .eyebrow,.hpb .stats .eyebrow,.hpb .finalcta .eyebrow{color:var(--orange-on-navy);} 3281 .hpb .dark a:not(.btn){color:var(--blue-soft);} 3282 .hpb .dark .btn-primary{color:#fff;} 3283 .hpb .dark .btn-ghost{color:#fff;} 3284 .hpb .dark .btn-ghost:hover{color:var(--navy);} 3285 3286 .hpb .tintbg{background:var(--grey-bg);} 3287 3288 /* nashville split */ 3289 .hpb .nash-split{display:grid; grid-template-columns:1fr 1fr; align-items:stretch;} 3290 .hpb .nash-txt{padding:88px 3.25rem 88px var(--gutter); max-width:700px; margin-left:auto;} 3291 .hpb .nash-img{background-image:url('https://hpbexpo.com/wp-content/uploads/2026/07/nashville-skyline.jpg'); 3292 background-size:cover; background-position:center; min-height:480px;} 3293 3294 /* Closing line under the exhibitor list â turns the roster from a fact into 3295 an invitation, so the section ends on an action rather than a directory. */ 3296 .hpb .listcta, 3297 .hpb p.listcta{font-family:var(--serif); font-size:clamp(24px,2.6vw,32px); 3298 font-weight:700; color:var(--ink); text-align:center; margin:44px 0 0;} 3299 3300 /* exhibitor list */ 3301 .hpb .colist{column-count:4; column-gap:32px; margin-top:30px;} 3302 .hpb .colist span{display:block; break-inside:avoid; font-size:15px; padding:5px 0; 3303 color:var(--ink); border-bottom:1px solid #e8e8e8; line-height:1.3;} 3304 3305 /* Sponsor tiers â a quiet inline list rather than five colored pills. 3306 The tier colors read as decoration, not information, so they're gone. */ 3307 .hpb .tierlist{display:flex; flex-wrap:wrap; align-items:baseline; gap:0 14px; 3308 margin:26px 0 22px; padding-top:20px; border-top:1px solid rgba(255,255,255,.22);} 3309 .hpb .tierlist span{font-family:var(--label); font-size:14px; font-weight:700; 3310 text-transform:uppercase; letter-spacing:1.3px; color:#fff;} 3311 .hpb .tierlist span + span::before{content:'·'; color:var(--blue-soft); 3312 margin-right:14px; font-weight:400;} 3313 .hpb .tierlist .tierlabel{color:var(--blue-soft); margin-right:4px;} 3314 .hpb .tierlist .tierlabel + span::before{content:none;} 3315 3316 /* Callout box. Soft fill and a single accent edge â enough to read as a 3317 distinct block without the outlined, boxed-in look. Works on light and 3318 navy backgrounds. */ 3319 .hpb .callout{background:#edf4f9; border-left:4px solid var(--blue); 3320 border-radius:0 8px 8px 0; padding:22px 26px; margin:26px 0;} 3321 .hpb .callout p{margin:0; font-size:18px; line-height:1.55; color:var(--ink);} 3322 .hpb .callout p + p{margin-top:10px;} 3323 .hpb .callout .lead{font-family:var(--label); font-size:.85em; text-transform:uppercase; 3324 letter-spacing:1.1px; font-weight:700; color:var(--navy);} 3325 .hpb .dark .callout{background:rgba(255,255,255,.09); border-left-color:var(--blue-soft);} 3326 .hpb .dark .callout p{color:#e4eef5;} 3327 .hpb .dark .callout .lead{color:#9edcf5;} 3328 .hpb .dark .callout a{color:#fff;} 3329 3330 /* final cta */ 3331 .hpb .finalcta{background:var(--dark); color:#fff; text-align:center;} 3332 .hpb.hpb .finalcta h2{color:#fff !important;} 3333 .hpb .finalcta .lede{color:#c3d8e6; margin:0 auto 10px;} 3334 .hpb .finalcta .btn-row{justify-content:center; margin-top:30px;} 3335 .hpb .nextdeal{max-width:720px; margin:0 auto 44px; font-size:22px; color:#dce7ef; line-height:1.75;} 3336 .hpb .nextdeal strong{font-family:var(--serif); color:var(--orange-hi); display:block; 3337 font-size:34px; margin-bottom:14px; font-weight:700;} 3338 3339 /* âââââ responsive âââââ */ 3340 @media (max-width:1000px){ 3341 .hpb .g4,.hpb .g3{grid-template-columns:repeat(2,1fr);} 3342 .hpb .statgrid{grid-template-columns:repeat(2,1fr); gap:26px 16px;} 3343 /* in a 2x2 grid the 3rd tile starts a new row, so it gets no left divider */ 3344 .hpb .statgrid > .stat:nth-child(odd){border-left:0;} 3345 .hpb .days{grid-template-columns:repeat(2,1fr);} 3346 .hpb .media{grid-template-columns:1fr; gap:34px;} 3347 .hpb .media.flip .txt{order:0;} 3348 .hpb .colist{column-count:3;} 3349 .hpb .nash-split{grid-template-columns:1fr;} 3350 .hpb .nash-txt{padding:64px var(--gutter); max-width:none; margin:0;} 3351 .hpb .nash-img{min-height:340px;} 3352 .hpb .herogrid{grid-template-columns:1fr; gap:34px;} 3353 .hpb .hero .sub{max-width:none;} 3354 } 3355 @media (max-width:640px){ 3356 .hpb{--gutter:1.5rem;} /* tighter gutter on phones */ 3357 .hpb section{padding:60px var(--gutter);} 3358 .hpb .hero .wrap{padding:40px 0 32px;} 3359 .hpb .quicknav{margin-top:28px; padding-top:24px;} 3360 .hpb .quicknav .qbtn{width:100%; justify-content:center; padding:13px 20px; font-size:16px;} 3361 .hpb .playring{width:60px; height:60px;} 3362 .hpb .playring svg{width:26px; height:26px;} 3363 .hpb [id]{scroll-margin-top:calc(var(--header-h) + 8px);} 3364 .hpb .g4,.hpb .g3,.hpb .g2,.hpb .days,.hpb .boothtypes,.hpb .incl{grid-template-columns:1fr;} 3365 .hpb .statgrid{grid-template-columns:1fr; gap:0;} 3366 .hpb .statgrid > .stat + .stat{border-left:0; border-top:1px solid rgba(255,255,255,.22); 3367 padding-top:22px; margin-top:22px;} 3368 .hpb .colist{column-count:2;} 3369 .hpb .tslide{padding:36px 24px;} 3370 .hpb .tslide .attrib img{width:52px; height:52px; flex-basis:52px;} 3371 .hpb .tierlist{gap:0 10px;} 3372 .hpb .tnav{gap:14px;} 3373 .hpb .hero .when div{padding-right:26px;} 3374 .hpb p,.hpb .card p,.hpb .plain p{font-size:18px;} 3375 .hpb .lede, 3376 .hpb p.lede{font-size:20px;} 3377 .hpb table.rates th,.hpb table.rates td{padding:14px 13px;} 3378 .hpb table.rates td.rate{font-size:24px;} 3379 .hpb .incl div{font-size:17px;} 3380 } 3381 3382 3383 3384 /* ââ SHARED COMPONENTS THAT WERE LIVING IN THE MEMBERSHIP SECTION ââ
3385 The hero side-panel, quick-contact cards, fine print and the rate 3386 table's unit label were all written while building the membership 3387 page, but the hotel, apply and sponsors pages use them too. They sat 3388 in the wrong section until the stylesheet was split, at which point 3389 those pages would have lost them. Shared components belong in core. */ 3390 .hpb .heropanel{background:rgba(255,255,255,.10); border:1px solid rgba(255,255,255,.28); border-radius:var(--r-md); padding:30px 32px; backdrop-filter:blur(2px);} 3391 .hpb .hp-eyebrow{font-family:var(--label); font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:1.6px; color:var(--blue-soft); margin-bottom:10px;} 3392 .hpb .hp-num{font-family:var(--serif); font-size:clamp(52px,6vw,76px); font-weight:700; color:#fff; line-height:.95;} 3393 .hpb .hp-unit{font-family:var(--label); font-size:14px; font-weight:700; text-transform:uppercase; letter-spacing:1.2px; color:#fff; margin-top:6px;} 3394 .hpb .hp-rule{height:1px; background:rgba(255,255,255,.28); margin:20px 0;} 3395 .hpb .hp-note, 3396 .hpb p.hp-note{color:#dce7ef; font-size:16.5px; margin:0 0 16px; line-height:1.5;} 3397 .hpb .hp-note strong{color:#f9b790;} 3398 .hpb .hp-link{font-family:var(--ui); font-size:16px; font-weight:500; color:#fff; text-decoration:underline; text-underline-offset:4px;} 3399 .hpb table.rates .per{font-size:14px; font-weight:400; color:var(--muted);} 3400 .hpb .finenote, 3401 .hpb p.finenote{margin-top:24px; font-size:16px; color:var(--muted); text-align:center;} 3402 /* On a dark band the muted grey is unreadable â #69727D on HPBA navy is 3403 2.24:1, well under the 4.5:1 AA needs for 16px text. This step is the 3404 same blue already used for .dark h3 and .dark .incl em, so it adds no 3405 new value to the palette, and it lands at 6.14:1 while still reading 3406 quieter than .dark p (8.71:1) â which is the whole point of fine print. 3407 3408 Written with BOTH selectors: `.hpb .dark .finenote` catches non-<p> 3409 elements, and `.hpb .dark p.finenote` is needed to beat `.hpb p.finenote` 3410 above, which is (0,2,1) and would otherwise win on source order. */ 3411 .hpb .dark .finenote, 3412 .hpb .dark p.finenote{color:#a9c6da;} 3413 .hpb .pathlead, 3414 .hpb p.pathlead{text-align:center; font-size:19px; margin-top:26px;} 3415 .hpb .qcard{background:var(--grey-bg); border-radius:var(--r-sm); padding:28px 30px;} 3416 .hpb .qcard p{font-size:17px;} 3417 .hpb .qlink{font-family:var(--ui); font-weight:500; font-size:17px; text-decoration:underline; text-underline-offset:4px;} 3418 3419 /* âââââââ HOME â "AS SEEN IN" LOGO TICKER âââââââ 3420 Infinite scroll, CSS only, no JavaScript. 3421 3422 HOW THE SEAMLESS LOOP WORKS: the markup contains the nine logos TWICE. 3423 The row animates from 0 to -50%, which is exactly the width of one full 3424 set, so the moment it resets the second set is sitting precisely where 3425 the first one started. The join is invisible. 3426 3427 That means: if you add or remove a logo, you must add or remove it from 3428 BOTH sets, or the loop will visibly jump. The duplicate set is marked 3429 aria-hidden so screen readers don't announce nine logos twice. */ 3430 .hpb .ticker{position:relative; overflow:hidden; margin-top:34px; 3431 /* fades the logos out at both edges instead of clipping them mid-letter */ 3432 -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent); 3433 mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);} 3434 .hpb .tickrow{display:flex; align-items:center; width:max-content; 3435 gap:clamp(38px,5vw,80px); animation:hpbtick 46s linear infinite;} 3436 /* Pause on hover so anyone who wants to read a logo can stop it. */ 3437 .hpb .ticker:hover .tickrow{animation-play-state:paused;} 3438 .hpb .tlogo{flex:0 0 auto; display:grid; place-items:center; height:62px;} 3439 .hpb .tlogo img{max-height:62px; max-width:190px; width:auto; height:auto; 3440 object-fit:contain; display:block;} 3441 @keyframes hpbtick{ 3442 from{transform:translateX(0);} 3443 to{transform:translateX(-50%);} 3444 } 3445 @media (prefers-reduced-motion:reduce){ 3446 /* No motion: fall back to a plain centered wrap showing every logo at 3447 once. The duplicate set is hidden so nothing appears twice. */ 3448 .hpb .tickrow{animation:none; width:100%; flex-wrap:wrap; 3449 justify-content:center; gap:34px 48px;} 3450 .hpb .tickrow .dupe{display:none;} 3451 .hpb .ticker{-webkit-mask-image:none; mask-image:none;} 3452 } 3453 3454 /* âââââââ HOME â "MORE TO EXPERIENCE" CARDS âââââââ 3455 Five cards in the same proportions as the section this replaces: two wide 3456 tiles on the top row, three narrower ones beneath. 3457 3458 HOW THE 2-THEN-3 SPLIT WORKS: the first two cards get a 50% basis, so 3459 they fill the first row and push the third onto a new line. The remaining 3460 three get a 33% basis and fill the second. No grid-template needed, and 3461 nothing breaks if a card is added â six would simply become 2 + 3 + 1. 3462 3463 Flexbox rather than grid specifically so a partial row centers itself; a 3464 3-column grid would leave the last two hanging on the left. */ 3465 .hpb .xcards{display:flex; flex-wrap:wrap; justify-content:center; 3466 gap:26px; margin-top:38px;} 3467 .hpb .xcard{flex:1 1 calc(33.333% - 18px); min-width:0; background:#fff; 3468 border:1px solid var(--rule); border-radius:var(--r-md); overflow:hidden; 3469 display:flex; flex-direction:column; 3470 transition:transform .18s ease, box-shadow .18s ease;} 3471 .hpb .xcard:nth-child(-n+2){flex-basis:calc(50% - 13px);} 3472 /* The whole card is the link, not just the heading â a bigger target and
3473 one unambiguous action per card. */ 3474 .hpb a.xcard{text-decoration:none; color:inherit;} 3475 .hpb a.xcard:hover{transform:translateY(-3px); 3476 box-shadow:0 12px 28px rgba(0,42,77,.13);} 3477 .hpb a.xcard:focus-visible{outline:3px solid var(--blue); outline-offset:3px;} 3478 /* Fixed height, not an aspect ratio. With aspect-ratio the two wide tiles 3479 would be noticeably taller than the three narrow ones, because height 3480 would follow width. A fixed height keeps every tile level across both 3481 rows, which is how the original section reads. */ 3482 .hpb .xcard img{width:100%; height:clamp(190px,20vw,290px); 3483 object-fit:cover; display:block;} 3484 .hpb .xbody{padding:22px 24px 24px; flex:1 1 auto;} 3485 .hpb.hpb .xcard h3{font-family:var(--serif) !important; font-size:23px !important; font-weight:700; 3486 color:var(--ink) !important; margin:0 0 9px; line-height:1.2 !important; text-transform:none;} 3487 .hpb .xcard p{font-family:var(--ui); font-size:16px; line-height:1.5; 3488 color:var(--muted); margin:0;} 3489 .hpb .xmore, 3490 .hpb span.xmore{display:inline-block; margin-top:14px; font-family:var(--label); 3491 font-weight:700; text-transform:uppercase; letter-spacing:1.1px; 3492 font-size:12px; color:var(--blue);} 3493 .hpb a.xcard:hover .xmore{color:var(--orange-dark);} 3494 @media (max-width:1000px){ 3495 /* Two across, with the odd one out centered on its own row. */ 3496 .hpb .xcard, 3497 .hpb .xcard:nth-child(-n+2){flex-basis:calc(50% - 13px);} 3498 } 3499 @media (max-width:760px){ 3500 .hpb .xcard, 3501 .hpb .xcard:nth-child(-n+2){flex-basis:100%;} 3502 } 3503 /* âââââââ BENTO TILES â "More to Experience" âââââââ 3504 Labels sit ON the photos rather than in a panel beneath them, and every 3505 photo carries the same navy gradient. That tint is doing the real work: 3506 it's what makes five unrelated photographs read as one set instead of a 3507 row of mismatched pictures. 3508 3509 THE LAYOUT is a 3-column grid where two tiles are deliberately larger: 3510 3511 âââââââââââââââââ¬ââââââââ 3512 â â 2 â 3513 â 1 ââââââââ⤠3514 â â 3 â 3515 âââââââââ¬ââââââââ´âââââââ⤠3516 â 4 â 5 â 3517 âââââââââ´ââââââââââââââââ 3518 3519 Sizes come from nth-child, so the ORDER OF THE TILES IN THE MARKUP 3520 decides which ones are big. Move a tile in the HTML and it changes size. 3521 That's a trade for not needing a class on every tile â worth knowing 3522 before you reorder them. */ 3523 .hpb .bento{display:grid; grid-template-columns:repeat(3,1fr); 3524 gap:18px; margin-top:38px;} 3525 .hpb .btile{position:relative; display:flex; align-items:flex-end; 3526 min-height:230px; overflow:hidden; border-radius:var(--r-lg); 3527 text-decoration:none; color:#fff; 3528 transition:transform .2s ease, box-shadow .2s ease;} 3529 .hpb .btile:nth-child(1){grid-column:span 2; grid-row:span 2; min-height:480px;} 3530 .hpb .btile:nth-child(5){grid-column:span 2;} 3531 .hpb .btile img{position:absolute; inset:0; width:100%; height:100%; 3532 object-fit:cover; display:block; border-radius:0;} 3533 /* Dark at the bottom where the label sits, clear at the top so the photo 3534 still reads. Deepens on hover rather than lightening â a lighter overlay 3535 would hurt the text contrast at the moment of interaction. */ 3536 .hpb .btile::after{content:''; position:absolute; inset:0; 3537 background:linear-gradient(180deg, rgba(0,42,77,.12) 0%, rgba(0,42,77,.38) 46%, 3538 rgba(0,42,77,.88) 100%); 3539 transition:opacity .25s;} 3540 .hpb .btile:hover{transform:translateY(-3px); box-shadow:0 14px 30px rgba(0,42,77,.22);} 3541 .hpb .btile:hover::after{background:linear-gradient(180deg, rgba(0,42,77,.28) 0%, 3542 rgba(0,42,77,.55) 46%, rgba(0,42,77,.93) 100%);} 3543 .hpb .btile:focus-visible{outline:3px solid var(--blue); outline-offset:3px;} 3544 .hpb .blabel{position:relative; z-index:2; width:100%; padding:24px 26px 22px;} 3545 .hpb.hpb .btile h3{display:flex; align-items:center; gap:10px; margin:0; 3546 font-family:var(--label) !important; font-weight:700; text-transform:uppercase; 3547 letter-spacing:1.3px; line-height:1.2 !important; color:#fff !important; 3548 font-size:clamp(16px,1.35vw,20px) !important;} 3549 .hpb.hpb .btile:nth-child(1) h3{font-size:clamp(20px,1.9vw,28px) !important;} 3550 .hpb .btile h3 svg{flex:0 0 auto; width:15px; height:15px; 3551 color:var(--orange-hi); transition:transform .2s;} 3552 .hpb .btile:hover h3 svg{transform:translateX(4px);}
3553 /* Only the large tile carries a description â there's room for it there, 3554 and "Outdoor Burn" means nothing to a first-time attendee without one. */ 3555 .hpb .btile p{margin:10px 0 0; max-width:44ch; font-family:var(--ui); 3556 font-size:16.5px; line-height:1.45; color:#dbe7f1;} 3557 3558 @media (max-width:1000px){ 3559 .hpb .bento{grid-template-columns:repeat(2,1fr);} 3560 .hpb .btile:nth-child(1){grid-column:span 2; grid-row:auto; min-height:320px;} 3561 .hpb .btile:nth-child(5){grid-column:span 2;} 3562 } 3563 @media (max-width:680px){ 3564 .hpb .bento{grid-template-columns:1fr;} 3565 .hpb .btile, 3566 .hpb .btile:nth-child(1), 3567 .hpb .btile:nth-child(5){grid-column:span 1; min-height:220px;} 3568 } 3569 3570 /* Four equal cards, no wide pair â used by "Don't Miss" on the events page. */ 3571 .hpb .xcards.even .xcard, 3572 .hpb .xcards.even .xcard:nth-child(-n+2){flex-basis:calc(25% - 20px);} 3573 @media (max-width:1000px){ 3574 .hpb .xcards.even .xcard, 3575 .hpb .xcards.even .xcard:nth-child(-n+2){flex-basis:calc(50% - 13px);} 3576 } 3577 @media (max-width:760px){ 3578 .hpb .xcards.even .xcard, 3579 .hpb .xcards.even .xcard:nth-child(-n+2){flex-basis:100%;} 3580 } 3581</style> 3582 3583<div class="hpb"> 3584 3585<!-- ââââââââââââââââââ AS SEEN IN ââââââââââââââââââ --> 3586<section> 3587 <div class="wrap"> 3588 <h2>As Seen In…</h2> 3589 3590 <div class="ticker"> 3591 <div class="tickrow"> 3592 3593 <!-- ââ SET 1 of 2 â keep both sets identical ââ --> 3594 <span class="tlogo"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2024/10/yaho.png" alt="Yahoo Finance"></span> 3595 <span class="tlogo"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2025/01/CookOut_News_Logo.jpg" alt="CookOut News"></span> 3596 <span class="tlogo"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2025/01/Traditional-White-Firetime-Network-Logo-on-black-background.jpg" alt="Fire Time Network"></span> 3597 <span class="tlogo"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2024/10/lp-logo.webp" alt="Luxury Pools + Outdoor Living"></span> 3598 <!-- CHECK-ALT â the five below were read off filenames, not seen --> 3599 <span class="tlogo"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2024/10/BCN-Logo1-Horizontal.jpg" alt="Barbecue News"></span> 3600 <span class="tlogo"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2024/10/maple-scapes.png" alt="Maple Scapes"></span> 3601 <span class="tlogo"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2024/10/style-logo.png" alt="Style"></span> 3602 <span class="tlogo"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2024/10/header_logo_v2.jpg" alt="Industry publication"></span> 3603 <span class="tlogo"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2024/10/cropped-logo-2.png" alt="Industry publication"></span> 3604 3605 <!-- ââ SET 2 of 2 â duplicate, hidden from screen readers ââ --> 3606 <span class="tlogo dupe" aria-hidden="true"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2024/10/yaho.png" alt=""></span> 3607 <span class="tlogo dupe" aria-hidden="true"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2025/01/CookOut_News_Logo.jpg" alt=""></span> 3608 <span class="tlogo dupe" aria-hidden="true"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2025/01/Traditional-White-Firetime-Network-Logo-on-black-background.jpg" alt=""></span> 3609 <span class="tlogo dupe" aria-hidden="true"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2024/10/lp-logo.webp" alt=""></span> 3610 <span class="tlogo dupe" aria-hidden="true"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2024/10/BCN-Logo1-Horizontal.jpg" alt=""></span> 3611 <span class="tlogo dupe" aria-hidden="true"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2024/10/maple-scapes.png" alt=""></span> 3612 <span class="tlogo dupe" aria-hidden="true"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2024/10/style-logo.png" alt=""></span>
3613 <span class="tlogo dupe" aria-hidden="true"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2024/10/header_logo_v2.jpg" alt=""></span> 3614 <span class="tlogo dupe" aria-hidden="true"><img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2024/10/cropped-logo-2.png" alt=""></span> 3615 3616 </div> 3617 </div> 3618 </div> 3619</section> 3620 3621<!-- ââââââââââââââââââ MORE TO EXPERIENCE ââââââââââââââââââ --> 3622<section class="tintbg"> 3623 <div class="wrap"> 3624 <div class="eyebrow">On the Floor</div> 3625 <h2>More to Experience</h2> 3626 <p class="lede">There’s more to <span class="brand">HPBExpo27</span> than the exhibit 3627 hall — product demonstrations, free education, and the moments the industry 3628 turns up for.</p> 3629 3630 <!-- BENTO â tile SIZE comes from position, not from a class: 3631 1st = large (2x2), 5th = wide (2x1), the rest are single. 3632 Reordering these tiles changes which ones are big. --> 3633 <div class="bento"> 3634 3635 <!-- 1 â LARGE TILE. The only one with a description; there's room here, 3636 and it sets up the section. --> 3637 <a class="btile" href="https://hpbexpo.com/education/"> 3638 <img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2026/07/education_tom-parks.jpg" 3639 alt="A speaker presenting to a full room at an HPBExpo education session"> 3640 <div class="blabel"> 3641 <h3>Free Education 3642 <svg viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M9 5l7 7-7 7"/></svg> 3643 </h3> 3644 <p>Sessions led by industry experts, held right on the show floor and included 3645 with your badge.</p> 3646 </div> 3647 </a> 3648 3649 <!-- NEEDS-LINK â no dedicated Outdoor Burn page found; points at the schedule --> 3650 <a class="btile" href="https://hpbexpo.com/showfeatures/events/"> 3651 <img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2026/07/IMG_2704_for-web_outdoor-burn.jpg" 3652 alt="An outdoor fire table burning at dusk"> 3653 <div class="blabel"> 3654 <h3>Outdoor Burn 3655 <svg viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M9 5l7 7-7 7"/></svg> 3656 </h3> 3657 </div> 3658 </a> 3659 3660 <a class="btile" href="https://hpbexpo.com/attend/npp-aca/"> 3661 <img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2026/07/product-grill.jpg" 3662 alt="A grill on display in an exhibitor booth"> 3663 <div class="blabel"> 3664 <h3>New Product Pavilion 3665 <svg viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M9 5l7 7-7 7"/></svg> 3666 </h3> 3667 </div> 3668 </a> 3669 3670 <!-- Links to the certification page (Notion tracker, 2026-09-14). 3671 CHECK-PHOTO â IMG_3555 chosen from its filename, not seen --> 3672 <a class="btile" href="https://hpbexpo.com/certification/"> 3673 <img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2026/07/IMG_2590_for-web_classroom.jpg" 3674 alt="Industry professionals at an HPBExpo session"> 3675 <div class="blabel"> 3676 <h3>Certification 3677 <svg viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M9 5l7 7-7 7"/></svg> 3678 </h3> 3679 </div> 3680 </a> 3681 3682 <!-- 5 â WIDE TILE 3683 CHECK-PHOTO â IMG_5041 chosen from its filename, not seen --> 3684 <a class="btile" href="https://hpbexpo.com/openingsession/"> 3685 <img decoding="async" src="https://hpbexpo.com/wp-content/uploads/2026/07/IMG_1901_for-web_opening-session.jpg" 3686 alt="The audience at the HPBExpo opening session"> 3687 <div class="blabel"> 3688 <h3>Opening Session & Keynote 3689 <svg viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M9 5l7 7-7 7"/></svg> 3690 </h3> 3691 </div> 3692 </a> 3693 3694 </div> 3695 </div> 3696</section> 3697 3698</div>
3698 </div> 3699 </div> 3700 </div> 3701 </div> 3702 3703</main> 3704 3705<div id="viewport"></div> 3706 3707 <footer data-elementor-type="footer" data-elementor-id="5508" class="elementor elementor-5508 elementor-location-footer" data-elementor-post-type="elementor_library"> 3708 <div class="elementor-element elementor-element-6e2cd0e3 slider-outer e-con-full e-flex e-con e-parent" data-id="6e2cd0e3" data-element_type="container" data-e-type="container"> 3709 <div class="elementor-element elementor-element-373256f5 e-con-full e-flex e-con e-child" data-id="373256f5" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> 3710 <div class="elementor-element elementor-element-21243073 e-flex e-con-boxed e-con e-child" data-id="21243073" data-element_type="container" data-e-type="container"> 3711 <div class="e-con-inner"> 3712 <div class="elementor-element elementor-element-3785496c garamond elementor-widget elementor-widget-heading" data-id="3785496c" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 3713 <div class="elementor-widget-container"> 3714 <h2 class="elementor-heading-title elementor-size-default">HPBA is committed to giving your company the best experience. This includes show management working alongside you to maintain the integrity of our show and protect our exhibitors from suitcasing. 3715In accordance with our official suitcasing policy, suppliers, manufacturers, and business service providers may only attend HPBExpo by exhibiting and/or sponsoring.</h2> </div> 3716 </div> 3717 <div class="elementor-element elementor-element-34aca1ac e-con-full e-flex e-con e-child" data-id="34aca1ac" data-element_type="container" data-e-type="container"> 3718 <div class="elementor-element elementor-element-dd84483 elementor-widget elementor-widget-button" data-id="dd84483" data-element_type="widget" data-e-type="widget" id="updates" data-widget_type="button.default"> 3719 <div class="elementor-widget-container"> 3720 <div class="elementor-button-wrapper"> 3721 <a class="elementor-button elementor-button-link elementor-size-sm" href="https://hpbexpo.com/suitcasing-outboarding-policy/"> 3722 <span class="elementor-button-content-wrapper"> 3723 <span class="elementor-button-text">See our Suitcasing Policy</span> 3724 </span> 3725 </a> 3726 </div> 3727 </div> 3728 </div> 3729 <div class="elementor-element elementor-element-6dcaca94 elementor-widget elementor-widget-button" data-id="6dcaca94" data-element_type="widget" data-e-type="widget" data-widget_type="button.default"> 3730 <div class="elementor-widget-container"> 3731 <div class="elementor-button-wrapper"> 3732 <a class="elementor-button elementor-button-link elementor-size-sm" href="https://hpbexpo.com/show-info/contact/"> 3733 <span class="elementor-button-content-wrapper"> 3734 <span class="elementor-button-text">Get in touch</span> 3735 </span> 3736 </a> 3737 </div> 3738 </div> 3739 </div> 3740 </div> 3741 </div> 3742 </div> 3743 </div> 3744 </div> 3745 <div class="elementor-element elementor-element-f3920a0 footer-form e-flex e-con-boxed e-con e-parent" data-id="f3920a0" data-element_type="container" data-e-type="container" id="form" data-settings="{"background_background":"classic"}"> 3746 <div class="e-con-inner"> 3747 <div class="elementor-element elementor-element-78c11527 e-con-full e-flex e-con e-child" data-id="78c11527" data-element_type="container" data-e-type="container"> 3748 <div class="elementor-element elementor-element-2692bb6c garamond elementor-widget elementor-widget-heading" data-id="2692bb6c" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 3749 <div class="elementor-widget-container"> 3750 <h2 class="elementor-heading-title elementor-size-default">STAY TUNED</h2> </div> 3751 </div> 3752 <div class="elementor-element elementor-element-7bf35c2e garamond elementor-widget elementor-widget-heading" data-id="7bf35c2e" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 3753 <div class="elementor-widget-container"> 3754 <h3 class="elementor-heading-title elementor-size-default">Sign up now to stay on top of important HPBExpo updates. We will keep you in the loop on all the latest opportunities to grow your business at North Americaâs largest industry marketplace.</h3>
3754 </div> 3755 </div> 3756 <div class="elementor-element elementor-element-aaba04d garamond elementor-widget elementor-widget-heading" data-id="aaba04d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 3757 <div class="elementor-widget-container"> 3758 <p class="elementor-heading-title elementor-size-default">HPBExpo is open to trade only</p> </div> 3759 </div> 3760 </div> 3761 <div class="elementor-element elementor-element-47462390 e-con-full e-flex e-con e-child" data-id="47462390" data-element_type="container" data-e-type="container"> 3762 <div class="elementor-element elementor-element-493e2eb5 elementor-widget elementor-widget-shortcode" data-id="493e2eb5" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default"> 3763 <div class="elementor-widget-container"> 3764 <div class="elementor-shortcode"> 3765 <div class='gf_browser_chrome gform_wrapper gform_legacy_markup_wrapper gform-theme--no-framework form-layout-signup_wrapper' data-form-theme='legacy' data-form-index='0' id='gform_wrapper_4' style='display:none'> 3766 <div class='gform_heading'> 3767 <h3 class="gform_title">Sign Up for Updates</h3> 3768 <p class='gform_description'></p> 3769 </div><form method='post' enctype='multipart/form-data' id='gform_4' class='form-layout-signup' action='/' data-formid='4' novalidate><div class='gf_invisible ginput_recaptchav3' data-sitekey='6LdUN14rAAAAAGz51u0LDFhf--Yw5fPrm9WmDAaI' data-tabindex='0'><input id="input_1c9cb9763a57953039690a5d3630d98b" class="gfield_recaptcha_response" type="hidden" name="input_1c9cb9763a57953039690a5d3630d98b" value=""/></div> 3770 <div class='gform-body gform_body'><ul id='gform_fields_4' class='gform_fields top_label form_sublabel_below description_below validation_below'><li id="field_4_29" class="gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_4_29'>Instagram</label><div class='ginput_container'><input name='input_29' id='input_4_29' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_4_29'>This field is for validation purposes and should be left unchanged.</div></li><li id="field_4_20" class="gfield gfield--type-hidden gfield--input-type-hidden gfield--width-full gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><div class='ginput_container ginput_container_text'><input name='input_20' id='input_4_20' type='hidden' class='gform_hidden' aria-invalid="false" value='https://app-3SBM6RVWYC.marketingautomation.services/webforms/receivePostback/MzY0MrK0NDUyAAA/' /></div></li><li id="field_4_21" class="gfield gfield--type-hidden gfield--input-type-hidden gfield--width-full gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><div class='ginput_container ginput_container_text'><input name='input_21' id='input_4_21' type='hidden' class='gform_hidden' aria-invalid="false" value='158679b3-e624-40cb-8ac0-7ca816a45918' /></div></li><li id="field_4_13" class="gfield gfield--type-name gfield--input-type-name gfield_contains_required field_sublabel_hidden_label gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label gfield_label_before_complex' >Name<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_complex ginput_container ginput_container--name no_prefix has_first_name no_middle_name has_last_name no_suffix gf_name_has_2 ginput_container_name gform-grid-row' id='input_4_13'> 3771 3772 <span id='input_4_13_3_container' class='name_first gform-grid-col gform-grid-col--size-auto' > 3773 <input type='text' name='input_13.3' id='input_4_13_3' value='' aria-required='true' placeholder='First Name *' /> 3774 <label for='input_4_13_3' class='gform-field-label gform-field-label--type-sub hidden_sub_label screen-reader-text'>First</label> 3775 </span> 3776
3777 <span id='input_4_13_6_container' class='name_last gform-grid-col gform-grid-col--size-auto' > 3778 <input type='text' name='input_13.6' id='input_4_13_6' value='' aria-required='true' placeholder='Last Name *' /> 3779 <label for='input_4_13_6' class='gform-field-label gform-field-label--type-sub hidden_sub_label screen-reader-text'>Last</label> 3780 </span> 3781 3782 </div></li><li id="field_4_6" class="gfield gfield--type-text gfield--input-type-text gfield--width-full gf_left_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_4_6'>Company<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_6' id='input_4_6' type='text' value='' class='large' placeholder='Company *' aria-required="true" aria-invalid="false" /></div></li><li id="field_4_28" class="gfield gfield--type-text gfield--input-type-text gfield--width-full gf_right_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_4_28'>Country<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_28' id='input_4_28' type='text' value='' class='large' placeholder='Country *' aria-required="true" aria-invalid="false" /></div></li><li id="field_4_8" class="gfield gfield--type-email gfield--input-type-email gfield--width-full gf_left_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_4_8'>Email<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_email'> 3783 <input name='input_8' id='input_4_8' type='email' value='' class='large' placeholder='Email *' aria-required="true" aria-invalid="false" /> 3784 </div></li><li id="field_4_9" class="gfield gfield--type-select gfield--input-type-select gfield--width-full gf_right_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_4_9'>Primary Industry<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_select'><select name='input_9' id='input_4_9' class='large gfield_select' aria-required="true" aria-invalid="false" ><option value='' class='gf_placeholder'>Industry *</option><option value='Hearth' >Hearth</option><option value='Patio' >Patio</option><option value='Barbecue' >Barbecue</option><option value='Hybrid' >Hybrid</option><option value='Other' >Other</option></select></div></li><li id="field_4_24" class="gfield gfield--type-address gfield--input-type-address gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden" ><div class="admin-hidden-markup"><i class="gform-icon gform-icon--hidden" aria-hidden="true" title="This field is hidden when viewing the form"></i><span>This field is hidden when viewing the form</span></div><label class='gfield_label gform-field-label gfield_label_before_complex' >Address<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label> 3785 <div class='ginput_complex ginput_container has_street has_city has_state has_zip ginput_container_address gform-grid-row' id='input_4_24' >
3786 <span class='ginput_full address_line_1 ginput_address_line_1 gform-grid-col' id='input_4_24_1_container' > 3787 <input type='text' name='input_24.1' id='input_4_24_1' value='' aria-required='true' /> 3788 <label for='input_4_24_1' id='input_4_24_1_label' class='gform-field-label gform-field-label--type-sub '>Street Address</label> 3789 </span><span class='ginput_left address_city ginput_address_city gform-grid-col' id='input_4_24_3_container' > 3790 <input type='text' name='input_24.3' id='input_4_24_3' value='' aria-required='true' /> 3791 <label for='input_4_24_3' id='input_4_24_3_label' class='gform-field-label gform-field-label--type-sub '>City</label> 3792 </span><span class='ginput_right address_state ginput_address_state gform-grid-col' id='input_4_24_4_container' > 3793 <input type='text' name='input_24.4' id='input_4_24_4' value='' aria-required='true' /> 3794 <label for='input_4_24_4' id='input_4_24_4_label' class='gform-field-label gform-field-label--type-sub '>State / Province / Region</label> 3795 </span><span class='ginput_left address_zip ginput_address_zip gform-grid-col' id='input_4_24_5_container' > 3796 <input type='text' name='input_24.5' id='input_4_24_5' value='' aria-required='true' /> 3797 <label for='input_4_24_5' id='input_4_24_5_label' class='gform-field-label gform-field-label--type-sub '>ZIP / Postal Code</label> 3798 </span><input type='hidden' class='gform_hidden' name='input_24.6' id='input_4_24_6' value='United States' /> 3799 <div class='gf_clear gf_clear_complex'></div> 3800 </div></li><li id="field_4_26" class="gfield gfield--type-website gfield--input-type-website gfield--width-full field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden" ><div class="admin-hidden-markup"><i class="gform-icon gform-icon--hidden" aria-hidden="true" title="This field is hidden when viewing the form"></i><span>This field is hidden when viewing the form</span></div><label class='gfield_label gform-field-label' for='input_4_26'>Website</label><div class='ginput_container ginput_container_website'> 3801 <input name='input_26' id='input_4_26' type='url' value='' class='large' placeholder='https://' aria-invalid="false" /> 3802 </div></li><li id="field_4_25" class="gfield gfield--type-select gfield--input-type-select gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden" ><div class="admin-hidden-markup"><i class="gform-icon gform-icon--hidden" aria-hidden="true" title="This field is hidden when viewing the form"></i><span>This field is hidden when viewing the form</span></div><label class='gfield_label gform-field-label' for='input_4_25'>Company Type<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_select'><select name='input_25' id='input_4_25' class='large gfield_select' aria-required="true" aria-invalid="false" ><option value='Retailer' selected='selected'>Retailer</option><option value='Distributor' >Distributor</option><option value='Service (Maintenance, Chimney Sweeps)' >Service (Maintenance, Chimney Sweeps)</option><option value='Independent Mfgr. Representative' >Independent Mfgr. Representative</option><option value='Manufacturer' >Manufacturer</option><option value='Associate (Business Service Provider)' >Associate (Business Service Provider)</option></select></div></li><li id="field_4_10" class="gfield gfield--type-text gfield--input-type-text field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden" ><div class="admin-hidden-markup"><i class="gform-icon gform-icon--hidden" aria-hidden="true" title="This field is hidden when viewing the form"></i><span>This field is hidden when viewing the form</span></div><label class='gfield_label gform-field-label' for='input_4_10'>Other</label><div class='ginput_container ginput_container_text'><input name='input_10' id='input_4_10' type='text' value='' class='large' aria-invalid="false" /></div></li><li id="field_4_19" class="gfield gfield--type-radio gfield--type-choice gfield--in
3802put-type-radio gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' >Interested in<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_radio'><ul class='gfield_radio' id='input_4_19'> 3803 <li class='gchoice gchoice_4_19_0'> 3804 <input name='input_19' type='radio' value='Attending' id='choice_4_19_0' /> 3805 <label for='choice_4_19_0' id='label_4_19_0' class='gform-field-label gform-field-label--type-inline'>Attending</label> 3806 </li> 3807 <li class='gchoice gchoice_4_19_1'> 3808 <input name='input_19' type='radio' value='Exhibiting' id='choice_4_19_1' /> 3809 <label for='choice_4_19_1' id='label_4_19_1' class='gform-field-label gform-field-label--type-inline'>Exhibiting</label> 3810 </li></ul></div></li><li id="field_4_14" class="gfield gfield--type-html gfield--input-type-html gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden" ><br></li><li id="field_4_11" class="gfield gfield--type-hidden gfield--input-type-hidden gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><div class='ginput_container ginput_container_text'><input name='input_11' id='input_4_11' type='hidden' class='gform_hidden' aria-invalid="false" value='HPBExpo Sign Up for Updates' /></div></li><li id="field_4_12" class="gfield gfield--type-hidden gfield--input-type-hidden gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><div class='ginput_container ginput_container_text'><input name='input_12' id='input_4_12' type='hidden' class='gform_hidden' aria-invalid="false" value='09/26/2026' /></div></li><li id="field_4_22" class="gfield gfield--type-hidden gfield--input-type-hidden gfield--width-full gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><div class='ginput_container ginput_container_text'><input name='input_22' id='input_4_22' type='hidden' class='gform_hidden' aria-invalid="false" value='1' /></div></li><li id="field_4_15" class="gfield gfield--type-hidden gfield--input-type-hidden gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><div class='ginput_container ginput_container_text'><input name='input_15' id='input_4_15' type='hidden' class='gform_hidden' aria-invalid="false" value='HPBExpo Sign Up for Updates v.20180525' /></div></li><li id="field_4_16" class="gfield gfield--type-hidden gfield--input-type-hidden gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><div class='ginput_container ginput_container_text'><input name='input_16' id='input_4_16' type='hidden' class='gform_hidden' aria-invalid="false" value='09/26/2026' /></div></li><li id="field_4_23" class="gfield gfield--type-hidden gfield--input-type-hidden gfield--width-full gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><div class='ginput_container ginput_container_text'><input name='input_23' id='input_4_23' type='hidden' class='gform_hidden' aria-invalid="false" value='1' /></div></li><li id="field_4_17" class="gfield gfield--type-checkbox gfield--type-choice gfield--input-type-checkbox field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden" ><div class="admin-hidden-markup"><i class="gform-icon gform-icon--hidden" aria-hidden="true" title="This field is hidden when viewing the form"></i><span>This field is hidden when viewing the form</span></div><label class='gfield_label gform-field-label gfield_label_before_complex' >Subscriptions</label>
3810<div class='ginput_container ginput_container_checkbox'><ul class='gfield_checkbox' id='input_4_17'><li class='gchoice gchoice_4_17_1'> 3811 <input class='gfield-choice-input' name='input_17.1' type='checkbox' value='' id='choice_4_17_1' /> 3812 <label for='choice_4_17_1' id='label_4_17_1' class='gform-field-label gform-field-label--type-inline'></label> 3813 </li></ul></div></li></ul></div> 3814 <div class='gform-footer gform_footer top_label'> <input type='submit' id='gform_submit_button_4' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' value='Submit' /> 3815 <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_4' value='postback' /> 3816 <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_4' id='gform_theme_4' value='legacy' /> 3817 <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_4' id='gform_style_settings_4' value='[]' /> 3818 <input type='hidden' class='gform_hidden' name='is_submit_4' value='1' /> 3819 <input type='hidden' class='gform_hidden' name='gform_submit' value='4' /> 3820 3821 <input type='hidden' class='gform_hidden' name='gform_currency' data-currency='USD' value='aXkHZZ5VbAxbgx+dB9J/P6lnlUMAigNCAkNsOmqktBvV8nR5G6vpdiOWtTXWNr3KV7MJWhjdwAOSzwvrELc1/JMyHXInSz5HePqL9IGAP9XUhnE=' /> 3822 <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> 3823 <input type='hidden' class='gform_hidden' name='state_4' value='WyJbXSIsIjMyMmQ3ZGRiYjU3M2FjMGYxZmEzYjdlMTA0MmIxZGVmIl0=' /> 3824 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_4' id='gform_target_page_number_4' value='0' /> 3825 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_4' id='gform_source_page_number_4' value='1' /> 3826 <input type='hidden' name='gform_field_values' value='' /> 3827 3828 </div> 3829 <p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="177"/>
3829<script> 3830document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() ); 3831</script>
3831 3832</p></form> 3833 </div>
3833<script> 3834gform.initializeOnLoaded( function() {gformInitSpinner( 4, 'https://hpbexpo.com/wp-content/plugins/gravityforms/images/spinner.svg', true );jQuery('#gform_ajax_frame_4').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_4');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_4').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){form_content.find('form').css('opacity', 0);jQuery('#gform_wrapper_4').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_4').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_4').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_4').val();gformInitSpinner( 4, 'https://hpbexpo.com/wp-content/plugins/gravityforms/images/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [4, current_page]);window['gf_submitting_4'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_4').replaceWith(confirmation_content);jQuery(document).trigger('gform_confirmation_loaded', [4]);window['gf_submitting_4'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_4').text());}else{jQuery('#gform_4').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "4", currentPage: "current_page", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_4" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_4"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_4" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 4, current_page ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } );} ); 3835</script>
3835 3836</div> 3837 </div> 3838 </div> 3839 </div> 3840 </div> 3841 </div> 3842 <div class="elementor-element elementor-element-4a3cc7f6 footer-bottom elementor-hidden-widescreen elementor-hidden-desktop elementor-hidden-laptop elementor-hidden-tablet_extra elementor-hidden-tablet elementor-hidden-mobile_extra elementor-hidden-mobile e-flex e-con-boxed e-con e-parent" data-id="4a3cc7f6" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> 3843 <div class="e-con-inner"> 3844 <div class="elementor-element elementor-element-315e8cd5 e-con-full e-flex e-con e-child" data-id="315e8cd5" data-element_type="container" data-e-type="container"> 3845 <div class="elementor-element elementor-element-67ed6f02 elementor-nav-menu--dropdown-none elementor-nav-menu__align-start elementor-widget elementor-widget-nav-menu" data-id="67ed6f02" data-element_type="widget" data-e-type="widget" data-settings="{"layout":"horizontal","submenu_icon":{"value":"<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-caret-down\"
3845 viewBox=\"0 0 320 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"><\/path><\/svg>","library":"fa-solid"}}" data-widget_type="nav-menu.default"> 3846 <div class="elementor-widget-container"> 3847 <nav aria-label="Menu" class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-none"> 3848 <ul id="menu-1-67ed6f02" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5974"><a href="https://hpbexpo.com/attend/top-reasons-to-attend/" class="elementor-item">Why Attend</a></li> 3849<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5979"><a href="https://hpbexpo.com/exhibit/why-exhibit/" class="elementor-item">Why Exhibit</a></li> 3850<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-6801"><a href="http://www.hpba.org" class="elementor-item">HPBA Membership</a></li> 3851</ul> </nav> 3852 <nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true"> 3853 <ul id="menu-2-67ed6f02" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5974"><a href="https://hpbexpo.com/attend/top-reasons-to-attend/" class="elementor-item" tabindex="-1">Why Attend</a></li> 3854<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5979"><a href="https://hpbexpo.com/exhibit/why-exhibit/" class="elementor-item" tabindex="-1">Why Exhibit</a></li> 3855<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-6801"><a href="http://www.hpba.org" class="elementor-item" tabindex="-1">HPBA Membership</a></li> 3856</ul> </nav> 3857 </div> 3858 </div> 3859 <div class="elementor-element elementor-element-44a3e794 elementor-widget elementor-widget-text-editor" data-id="44a3e794" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> 3860 <div class="elementor-widget-container"> 3861 <p>© 2025 HPBExpo. All rights reserved</p> </div> 3862 </div> 3863 </div> 3864 <div class="elementor-element elementor-element-3a99d843 e-con-full e-flex e-con e-child" data-id="3a99d843" data-element_type="container" data-e-type="container"> 3865 </div> 3866 </div> 3867 </div> 3868 <div class="elementor-element elementor-element-421d5599 footer-bottom e-flex e-con-boxed e-con e-parent" data-id="421d5599" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> 3869 <div class="e-con-inner"> 3870 <div class="elementor-element elementor-element-50e51f9a e-con-full e-flex e-con e-child" data-id="50e51f9a" data-element_type="container" data-e-type="container"> 3871 <div class="elementor-element elementor-element-8d11f25 elementor-nav-menu--dropdown-none elementor-nav-menu__align-start elementor-widget elementor-widget-nav-menu" data-id="8d11f25" data-element_type="widget" data-e-type="widget" data-settings="{"layout":"horizontal","submenu_icon":{"value":"<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-caret-down\"
3871 viewBox=\"0 0 320 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"><\/path><\/svg>","library":"fa-solid"}}" data-widget_type="nav-menu.default"> 3872 <div class="elementor-widget-container"> 3873 <nav aria-label="Menu" class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-none"> 3874 <ul id="menu-1-8d11f25" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5974"><a href="https://hpbexpo.com/attend/top-reasons-to-attend/" class="elementor-item">Why Attend</a></li> 3875<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5979"><a href="https://hpbexpo.com/exhibit/why-exhibit/" class="elementor-item">Why Exhibit</a></li> 3876<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-6801"><a href="http://www.hpba.org" class="elementor-item">HPBA Membership</a></li> 3877</ul> </nav> 3878 <nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true"> 3879 <ul id="menu-2-8d11f25" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5974"><a href="https://hpbexpo.com/attend/top-reasons-to-attend/" class="elementor-item" tabindex="-1">Why Attend</a></li> 3880<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5979"><a href="https://hpbexpo.com/exhibit/why-exhibit/" class="elementor-item" tabindex="-1">Why Exhibit</a></li> 3881<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-6801"><a href="http://www.hpba.org" class="elementor-item" tabindex="-1">HPBA Membership</a></li> 3882</ul> </nav> 3883 </div> 3884 </div> 3885 </div> 3886 <div class="elementor-element elementor-element-63dfac0b e-con-full e-flex e-con e-child" data-id="63dfac0b" data-element_type="container" data-e-type="container"> 3887 <div class="elementor-element elementor-element-385b07d3 elementor-nav-menu--dropdown-none elementor-nav-menu__align-end elementor-widget elementor-widget-nav-menu" data-id="385b07d3" data-element_type="widget" data-e-type="widget" data-settings="{"layout":"horizontal","submenu_icon":{"value":"<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-caret-down\"
3887 viewBox=\"0 0 320 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"><\/path><\/svg>","library":"fa-solid"}}" data-widget_type="nav-menu.default"> 3888 <div class="elementor-widget-container"> 3889 <nav aria-label="Menu" class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-none"> 3890 <ul id="menu-1-385b07d3" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5980"><a href="https://hpbexpo.com/about-hpba/" class="elementor-item">About HPBA</a></li> 3891<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5982"><a href="https://hpbexpo.com/show-info/contact/" class="elementor-item">Contact</a></li> 3892<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5983"><a href="https://hpbexpo.com/faqs/" class="elementor-item">FAQs</a></li> 3893<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5981"><a href="https://hpbexpo.com/home/privacy-policy/" class="elementor-item">Privacy Policy</a></li> 3894</ul> </nav> 3895 <nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true"> 3896 <ul id="menu-2-385b07d3" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5980"><a href="https://hpbexpo.com/about-hpba/" class="elementor-item" tabindex="-1">About HPBA</a></li> 3897<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5982"><a href="https://hpbexpo.com/show-info/contact/" class="elementor-item" tabindex="-1">Contact</a></li> 3898<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5983"><a href="https://hpbexpo.com/faqs/" class="elementor-item" tabindex="-1">FAQs</a></li> 3899<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5981"><a href="https://hpbexpo.com/home/privacy-policy/" class="elementor-item" tabindex="-1">Privacy Policy</a></li> 3900</ul> </nav> 3901 </div> 3902 </div> 3903 </div> 3904 </div> 3905 </div> 3906 <div class="elementor-element elementor-element-4e491e4e footer-bottom e-flex e-con-boxed e-con e-parent" data-id="4e491e4e" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> 3907 <div class="e-con-inner"> 3908 <div class="elementor-element elementor-element-1afc6b11 e-con-full footer-bottom-inner e-flex e-con e-child" data-id="1afc6b11" data-element_type="container" data-e-type="container"> 3909 <div class="elementor-element elementor-element-5a43bfca e-con-full e-flex e-con e-child" data-id="5a43bfca" data-element_type="container" data-e-type="container"> 3910 <div class="elementor-element elementor-element-43f693cb elementor-widget elementor-widget-image" data-id="43f693cb" data-element_type="widget" data-e-type="widget" data-widget_type="image.default"> 3911 <div class="elementor-widget-container"> 3912 <a href="https://hpba.org/" target="_blank"> 3913 <img width="640" height="322" src="https://hpbexpo.com/wp-content/uploads/2024/09/HPBA-2017-Logo-white-and-orange-flame.png" class="attachment-large size-large wp-image-8895" alt="" srcset="https://hpbexpo.com/wp-content/uploads/2024/09/HPBA-2017-Logo-white-and-orange-flame.png 1003w, https://hpbexpo.com/wp-content/uploads/2024/09/HPBA-2017-Logo-white-and-orange-flame-300x150.png 300w, https://hpbexpo.com/wp-content/uploads/2024/09/HPBA-2017-Logo-white-and-orange-flame-768x387.png 768w" sizes="(max-width: 640px) 100vw, 640px" /> </a> 3914 </div> 3915 </div> 3916 </div> 3917 <div class="elementor-element elementor-element-3855c8e e-con-full e-flex e-con e-child" data-id="3855c8e" data-element_type="container" data-e-type="container"> 3918 </div> 3919 </div> 3920 <div class="elementor-element elementor-element-5eaa8f88 e-con-full footer-social e-flex e-con e-child" data-id="5eaa8f88" data-element_type="container" data-e-type="container"> 3921 <div class="elementor-element elementor-element-6e506039 footer-socials elementor-shape-rounded elementor-grid-0 e-grid-align-center elementor-widget elementor-widget-social-icons" data-id="6e506039" data-element_type="widget" data-e-type="widget" data-widget_type="social-icons.default"> 3922 <div class="elementor-widget-container"> 3923 <div class="elementor-social-icons-wrapper elementor-grid" role="list"> 3924 <span class="elementor-grid-item" role="listitem"> 3925 <a class="elementor-icon elementor-social-icon elementor-social-icon-facebook-f elementor-repeater-item-79aab3c" href="https://www.facebook.com/HPBExpo27/" target="_blank"> 3926 <span class="elementor-screen-only">Facebook-f</span> 3927 <svg aria-hidden="true" class="e-font-icon-svg e-fab-facebook-f" viewBox="0 0 320 512" xmlns="http://www.w3.org/2000/svg">
3927<path d="M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z"></path></svg> </a> 3928 </span> 3929 <span class="elementor-grid-item" role="listitem"> 3930 <a class="elementor-icon elementor-social-icon elementor-social-icon-instagram elementor-repeater-item-42f39ef" href="https://www.instagram.com/hpbexpo/" target="_blank"> 3931 <span class="elementor-screen-only">Instagram</span> 3932 <svg aria-hidden="true" class="e-font-icon-svg e-fab-instagram" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg> </a> 3933 </span> 3934 <span class="elementor-grid-item" role="listitem"> 3935 <a class="elementor-icon elementor-social-icon elementor-social-icon-youtube elementor-repeater-item-c32d98f" href="https://www.youtube.com/HPBExpo" target="_blank"> 3936 <span class="elementor-screen-only">Youtube</span> 3937 <svg aria-hidden="true" class="e-font-icon-svg e-fab-youtube" viewBox="0 0 576 512" xmlns="http://www.w3.org/2000/svg"><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path></svg> </a> 3938 </span> 3939 </div> 3940 </div> 3941 </div> 3942 <div class="elementor-element elementor-element-2a22a064 m-0 elementor-widget elementor-widget-text-editor" data-id="2a22a064" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> 3943 <div class="elementor-widget-container"> 3944 <p>© 2026 HPBExpo. All rights reserved</p> </div> 3945 </div> 3946 </div> 3947 </div> 3948 </div> 3949 </footer> 3950
3951<script type="speculationrules"> 3952{"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/hpbe2022/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 3953</script>
vendor: 1 bytes, line 3953
3953
3954<script>window.portalData = {"url":"https:\/\/hpbexpo.com\/wp-json\/"}</script>
3954<div id="portal-loading"><i class="fa fa-cog fa-spin"></i></div>
3954<script> 3955 jQuery(document).ready(function($) { 3956 // Targeting the select field by its ID 3957 var selectedOption = $('#input_1_9 option:selected'); 3958 3959 // Add a custom class to the default selected option 3960 selectedOption.addClass('default-selected'); 3961 3962 // Adjust the opacity of the default selected option 3963 selectedOption.css('opacity', '0.5'); 3964 }); 3965 </script>
3965 3966
3966<script> 3967 ( () => { 3968 const lazyloadRunObserver = () => { 3969 const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` ); 3970 const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => { 3971 entries.forEach( ( entry ) => { 3972 if ( entry.isIntersecting ) { 3973 let lazyloadBackground = entry.target; 3974 if( lazyloadBackground ) { 3975 lazyloadBackground.classList.add( 'e-lazyloaded' ); 3976 } 3977 lazyloadBackgroundObserver.unobserve( entry.target ); 3978 } 3979 }); 3980 }, { rootMargin: '200px 0px 200px 0px' } ); 3981 lazyloadBackgrounds.forEach( ( lazyloadBackground ) => { 3982 lazyloadBackgroundObserver.observe( lazyloadBackground ); 3983 } ); 3984 }; 3985 const events = [ 3986 'DOMContentLoaded', 3987 'elementor/lazyload/observe', 3988 ]; 3989 events.forEach( ( event ) => { 3990 document.addEventListener( event, lazyloadRunObserver ); 3991 } ); 3992 } )(); 3993 </script>
3993 3994 <link rel='stylesheet' id='animated-css' href='https://hpbexpo.com/wp-content/plugins/widget-countdown/includes/legacy/style/effects.css' media='all' /> 3995<link rel='stylesheet' id='countdown_css-css' href='https://hpbexpo.com/wp-content/plugins/widget-countdown/includes/legacy/style/style.css' media='all' /> 3996<link rel='stylesheet' id='dashicons-css' href='https://hpbexpo.com/wp-includes/css/dashicons.min.css' media='all' /> 3997<link rel='stylesheet' id='thickbox-css' href='https://hpbexpo.com/wp-includes/js/thickbox/thickbox.css' media='all' /> 3998<link rel='stylesheet' id='gforms_reset_css-css' href='https://hpbexpo.com/wp-content/plugins/gravityforms/legacy/css/formreset.min.css' media='all' /> 3999<link rel='stylesheet' id='gforms_formsmain_css-css' href='https://hpbexpo.com/wp-content/plugins/gravityforms/legacy/css/formsmain.min.css' media='all' /> 4000<link rel='stylesheet' id='gforms_ready_class_css-css' href='https://hpbexpo.com/wp-content/plugins/gravityforms/legacy/css/readyclass.min.css' media='all' /> 4001<link rel='stylesheet' id='gforms_browsers_css-css' href='https://hpbexpo.com/wp-content/plugins/gravityforms/legacy/css/browsers.min.css' media='all' />
4002<script id="pb-accordion-blocks-frontend-script-js" src="https://hpbexpo.com/wp-content/plugins/accordion-blocks/js/accordion-blocks.min.js"></script>
vendor: 1 bytes, line 4002
4002
4003<script id="mainjs-js" src="https://hpbexpo.com/wp-content/themes/hpbe2022/js/hpbe-main.js"></script>
vendor: 1 bytes, line 4003
4003
4004<script id="elementor-webpack-runtime-js" src="https://hpbexpo.com/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js"></script>
vendor: 1 bytes, line 4004
4004
4005<script id="elementor-frontend-modules-js" src="https://hpbexpo.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js"></script>
vendor: 1 bytes, line 4005
4005
4006<script id="jquery-ui-core-js" src="https://hpbexpo.com/wp-includes/js/jquery/ui/core.min.js"></script>
vendor: 1 bytes, line 4006
4006
4007<script id="elementor-frontend-js-before"> 4008var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Share on Facebook","shareOnX":"Share on X","pinIt":"Pin it","download":"Download","downloadImage":"Download image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Play Video","previous":"Previous","next":"Next","close":"Close","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":true},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1280,"default_value":1200,"direction":"max","is_enabled":true},"laptop":{"label":"Laptop","value":1440,"default_value":1366,"direction":"max","is_enabled":true},"widescreen":{"label":"Widescreen","value":1680,"default_value":2400,"direction":"min","is_enabled":true}},"hasCustomBreakpoints":true},"version":"4.2.4","is_static":false,"experimentalFeatures":{"e_font_icon_svg":true,"additional_custom_breakpoints":true,"container":true,"e_panel_promotions":true,"theme_builder_v2":true,"nested-elements":true,"e_atomic_elements":true,"atomic_widgets_should_enforce_capabilities":true,"editor_mcp":true,"e_bc_migrations":true,"e_classes":true,"global_classes_should_enforce_capabilities":true,"e_variables":true,"e_variables_manager":true,"e_opt_in_v4_page":true,"e_opt_in_v4":true,"e_components":true,"e_interactions":true,"e_widget_creation":true,"import-export-customization":true,"e_pro_atomic_form":true,"e_pro_collection_loop":true},"urls":{"assets":"https:\/\/hpbexpo.com\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/hpbexpo.com\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/hpbexpo.com\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"f5a2caeaeb","atomicFormsSendForm":"2eee10b760"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"active_breakpoints":["viewport_mobile","viewport_mobile_extra","viewport_tablet","viewport_tablet_extra","viewport_laptop","viewport_widescreen"],"viewport_widescreen":1680,"viewport_tablet_extra":1280,"viewport_laptop":1440,"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description"},"post":{"id":5469,"title":"HPBExpo%20%7C%20The%20Hearth%2C%20Patio%20%26%20Barbecue%20Expo","excerpt":"","featuredImage":false}}; 4009//# sourceURL=elementor-frontend-js-before 4010</script>
vendor: 1 bytes, line 4010
4010
4011<script id="elementor-frontend-js" src="https://hpbexpo.com/wp-content/plugins/elementor/assets/js/frontend.min.js"></script>
vendor: 1 bytes, line 4011
4011
4012<script id="e-sticky-js" src="https://hpbexpo.com/wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js"></script>
vendor: 1 bytes, line 4012
4012
4013<script id="smartmenus-js" src="https://hpbexpo.com/wp-content/plugins/elementor-pro/assets/lib/smartmenus/jquery.smartmenus.min.js"></script>
vendor: 1 bytes, line 4013
4013
4014<script id="gforms_recaptcha_recaptcha-js-extra"> 4015var gforms_recaptcha_recaptcha_strings = {"nonce":"c9db8e0c7b","disconnect":"Disconnecting","change_connection_type":"Resetting","spinner":"https://hpbexpo.com/wp-content/plugins/gravityforms/images/spinner.svg","connection_type":"classic","disable_badge":"","change_connection_type_title":"Change Connection Type","change_connection_type_message":"Changing the connection type will delete your current settings. Do you want to proceed?","disconnect_title":"Disconnect","disconnect_message":"Disconnecting from reCAPTCHA will delete your current settings. Do you want to proceed?","site_key":"6LdUN14rAAAAAGz51u0LDFhf--Yw5fPrm9WmDAaI"}; 4016//# sourceURL=gforms_recaptcha_recaptcha-js-extra 4017</script>
vendor: 127 bytes, lines 4017-4018
4017 4018<script data-wp-strategy="defer" defer id="gforms_recaptcha_recaptcha-js" src="https://www.google.com/recaptcha/api.js?render=
40186LdUN14rAAAAAGz51u0LDFhf--Yw5fPrm9WmDAaI
vendor: 27 bytes, line 4018
4018&ver=2.2.2"></script>
4019<script data-wp-strategy="defer" defer id="gforms_recaptcha_frontend-js" src="https://hpbexpo.com/wp-content/plugins/gravityformsrecaptcha/js/frontend.min.js"></script>
vendor: 1 bytes, line 4019
4019
4020<script id="countdown-front-end-js" src="https://hpbexpo.com/wp-content/plugins/widget-countdown/includes/legacy/javascript/front_end_js.js"></script>
vendor: 1 bytes, line 4020
4020
4021<script id="thickbox-js-extra"> 4022var thickboxL10n = {"next":"Next \u003E","prev":"\u003C Prev","image":"Image","of":"of","close":"Close","noiframes":"This feature requires inline frames. You have iframes disabled or your browser does not support them.","loadingAnimation":"https://hpbexpo.com/wp-includes/js/thickbox/loadingAnimation.gif"}; 4023//# sourceURL=thickbox-js-extra 4024</script>
vendor: 1 bytes, line 4024
4024
4025<script id="thickbox-js" src="https://hpbexpo.com/wp-includes/js/thickbox/thickbox.js"></script>
vendor: 1 bytes, line 4025
4025
4026<script id="wp-dom-ready-js" src="https://hpbexpo.com/wp-includes/js/dist/dom-ready.min.js"></script>
vendor: 1 bytes, line 4026
4026
4027<script id="wp-hooks-js" src="https://hpbexpo.com/wp-includes/js/dist/hooks.min.js"></script>
vendor: 1 bytes, line 4027
4027
4028<script id="wp-i18n-js" src="https://hpbexpo.com/wp-includes/js/dist/i18n.min.js"></script>
vendor: 1 bytes, line 4028
4028
4029<script id="wp-i18n-js-after"> 4030wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); 4031//# sourceURL=wp-i18n-js-after 4032</script>
vendor: 1 bytes, line 4032
4032
4033<script id="wp-a11y-js" src="https://hpbexpo.com/wp-includes/js/dist/a11y.min.js"></script>
vendor: 1 bytes, line 4033
4033
4034<script id="gform_json-js" defer='defer' src="https://hpbexpo.com/wp-content/plugins/gravityforms/js/jquery.json.min.js"></script>
vendor: 1 bytes, line 4034
4034
4035<script id="gform_gravityforms-js-extra"> 4036var gform_i18n = {"datepicker":{"days":{"monday":"Mo","tuesday":"Tu","wednesday":"We","thursday":"Th","friday":"Fr","saturday":"Sa","sunday":"Su"},"months":{"january":"January","february":"February","march":"March","april":"April","may":"May","june":"June","july":"July","august":"August","september":"September","october":"October","november":"November","december":"December"},"firstDay":1,"iconText":"Select date"}}; 4037var gf_legacy_multi = []; 4038var gform_gravityforms = {"strings":{"invalid_file_extension":"This type of file is not allowed. Must be one of the following:","file_uploaded":"File uploaded","delete_file":"Delete this file","in_progress":"in progress","file_exceeds_limit":"File exceeds size limit","illegal_extension":"This type of file is not allowed.","max_reached":"Maximum number of files reached","unknown_error":"There was a problem while saving the file on the server","currently_uploading":"Please wait for the uploading to complete","cancel":"Cancel","cancel_upload":"Cancel this upload","cancelled":"Cancelled","error":"Error","message":"Message"},"vars":{"images_url":"https://hpbexpo.com/wp-content/plugins/gravityforms/images"}}; 4039var gf_global = {"gf_currency_config":{"name":"U.S. Dollar","symbol_left":"$","symbol_right":"","symbol_padding":"","thousand_separator":",","decimal_separator":".","decimals":2,"code":"USD"},"base_url":"https://hpbexpo.com/wp-content/plugins/gravityforms","number_formats":[],"spinnerUrl":"https://hpbexpo.com/wp-content/plugins/gravityforms/images/spinner.svg","version_hash":"d1109ebc732f4e61f75b90a7ee833407","strings":{"newRowAdded":"New row added.","rowRemoved":"Row removed","formSaved":"The form has been saved. The content contains the link to return and complete the form."}}; 4040//# sourceURL=gform_gravityforms-js-extra 4041</script>
vendor: 1 bytes, line 4041
4041
4042<script id="gform_gravityforms-js" defer='defer' src="https://hpbexpo.com/wp-content/plugins/gravityforms/js/gravityforms.min.js"></script>
vendor: 1 bytes, line 4042
4042
4043<script id="gform_conditional_logic-js-extra"> 4044var gf_legacy = {"is_legacy":"1"}; 4045//# sourceURL=gform_conditional_logic-js-extra 4046</script>
vendor: 1 bytes, line 4046
4046
4047<script id="gform_conditional_logic-js" defer='defer' src="https://hpbexpo.com/wp-content/plugins/gravityforms/js/conditional_logic.min.js"></script>
vendor: 1 bytes, line 4047
4047
4048<script id="gform_placeholder-js" defer='defer' src="https://hpbexpo.com/wp-content/plugins/gravityforms/js/placeholders.jquery.min.js"></script>
vendor: 1 bytes, line 4048
4048
4049<script id="gform_gravityforms_utils-js" defer='defer' src="https://hpbexpo.com/wp-content/plugins/gravityforms/assets/js/dist/utils.min.js"></script>
vendor: 1 bytes, line 4049
4049
4050<script id="gform_gravityforms_theme_vendors-js" defer='defer' src="https://hpbexpo.com/wp-content/plugins/gravityforms/assets/js/dist/vendor-theme.min.js"></script>
vendor: 1 bytes, line 4050
4050
4051<script id="gform_gravityforms_theme-js-extra"> 4052var gform_theme_config = {"common":{"form":{"honeypot":{"version_hash":"d1109ebc732f4e61f75b90a7ee833407"},"ajax":{"ajaxurl":"https://hpbexpo.com/wp-admin/admin-ajax.php","ajax_submission_nonce":"f0d2366def","i18n":{"step_announcement":"Step %1$s of %2$s, %3$s","unknown_error":"There was an unknown error processing your request. Please try again.","error_403":"The request was blocked (403 error) for unknown security reasons. Remove any code-like text (scripts or DB queries) and try again."}}}},"hmr_dev":"","public_path":"https://hpbexpo.com/wp-content/plugins/gravityforms/assets/js/dist/","config_nonce":"944685f843"}; 4053//# sourceURL=gform_gravityforms_theme-js-extra 4054</script>
vendor: 1 bytes, line 4054
4054
4055<script id="gform_gravityforms_theme-js" defer='defer' src="https://hpbexpo.com/wp-content/plugins/gravityforms/assets/js/dist/scripts-theme.min.js"></script>
vendor: 1 bytes, line 4055
4055
4056<script id="elementor-pro-frontend-js-before"> 4057var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/hpbexpo.com\/wp-admin\/admin-ajax.php","nonce":"8982220e65","urls":{"assets":"https:\/\/hpbexpo.com\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/hpbexpo.com\/wp-json\/"},"settings":{"lazy_load_background_images":true},"popup":{"hasPopUps":true},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"},"x-twitter":{"title":"X"},"threads":{"title":"Threads"}},"facebook_sdk":{"lang":"en_US","app_id":""},"lottie":{"defaultAnimationUrl":"https:\/\/hpbexpo.com\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json"}}; 4058//# sourceURL=elementor-pro-frontend-js-before 4059</script>
vendor: 1 bytes, line 4059
4059
4060<script id="elementor-pro-frontend-js" src="https://hpbexpo.com/wp-content/plugins/elementor-pro/assets/js/frontend.min.js"></script>
vendor: 1 bytes, line 4060
4060
4061<script id="pro-elements-handlers-js" src="https://hpbexpo.com/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js"></script>
vendor: 1 bytes, line 4061
4061
4062<script id="wp-emoji-settings" type="application/json"> 4063{"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://hpbexpo.com/wp-includes/js/wp-emoji-release.min.js"}} 4064</script>
vendor: 1 bytes, line 4064
4064
4065<script type="module"> 4066/*! This file is auto-generated */ 4067var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,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);t=new 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 r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":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");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof 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 e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 4068//# sourceURL=https://hpbexpo.com/wp-includes/js/wp-emoji-loader.min.js 4069</script>
4069 4070<!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 4070-4071
4070 4071<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
4071GTM-5HKVM76
vendor: 83 bytes, lines 4071-4072
4071" 4072height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
4073<!-- End Google Tag Manager (noscript) --> 4074 <!--AdRoll Insert BEGIN-->
4075<script type="text/javascript"> 4076 4077adroll_adv_id = "2TLXGX6ZZRFODJ7PSASSSD"; 4078adroll_pix_id = "TCKKE5DNVVFRZF5DNWX3BJ"; 4079(function () { 4080var oldonload = window.onload; 4081window.onload = function(){ 4082 __adroll_loaded=true; 4083 var scr = document.createElement("script"); 4084 var host = (("https:" == document.location.protocol) ? "https://s.adroll.com" : "http://a.adroll.com"); 4085 scr.setAttribute('async', 'true'); 4086 scr.type = "text/javascript"; 4087 scr.src = host + "/j/roundtrip.js"; 4088 ((document.getElementsByTagName('head') || [null])[0] || 4089 document.getElementsByTagName('script')[0].parentNode).appendChild(scr); 4090 if(oldonload){oldonload()}}; 4091}()); 4092 4093</script>
4093 4094<!-- GOOGLE REMARKETING TAG -->
4095<script type="text/javascript"> 4096/* <![CDATA[ */ 4097var google_conversion_id = 945320264; 4098var google_custom_params = window.google_tag_params; 4099var google_remarketing_only = true; 4100/* ]]> */ 4101</script>
vendor: 1 bytes, line 4101
4101
4102<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js"> 4103</script>
4103 4104<noscript> 4105<div style="display:inline;"> 4106<img height="1" width="1" style="border-style:none;" alt="" src="//googleads.g.doubleclick.net/pagead/viewthroughconversion/945320264/?guid=ON&script=0"/> 4107</div> 4108</noscript>
4109<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js"></script>
vendor: 1 bytes, line 4109
4109
4110<script> 4111 jQuery(document).ready(function($) { 4112 4113 console.log('DOM fully loaded and parsed'); 4114 var metaViewport = document.querySelector('meta[name="viewport"]'); 4115 if (metaViewport) { 4116 console.log('Found viewport meta tag'); 4117 metaViewport.setAttribute('content', 'width=device-width, initial-scale=1'); 4118 } else { 4119 console.log('Viewport meta tag not found, creating new one'); 4120 var meta = document.createElement('meta'); 4121 meta.name = 'viewport'; 4122 meta.content = 'width=device-width, initial-scale=1'; 4123 document.head.appendChild(meta); 4124 } 4125 4126 // Ensure the container exists before initializing 4127 if ($("#sync1 .e-con-inner").length) { 4128 // Log to confirm elements are found 4129 console.log("Found .e-con-inner elements"); 4130 4131 // Add class 'owl-carousel' to the first '.e-con-inner' 4132 var $firstInner = $("#sync1 .e-con-inner").first(); 4133 $firstInner.addClass('owl-carousel'); 4134 4135 // Log to confirm class addition 4136 console.log("Class added to first .e-con-inner:", $firstInner.hasClass('owl-carousel')); 4137 4138 // Initialize Owl Carousel on the modified element 4139 $firstInner.owlCarousel({ 4140 items: 1, 4141 slideSpeed: 5000, 4142 nav: false, 4143 autoplay: false, 4144 animateIn: 'fadeIn', // add this 4145 animateOut: 'fadeOut', // and this 4146 dots: true, 4147 loop: true, // Enable looping 4148 touchDrag: true, 4149 mouseDrag: true, 4150 responsiveRefreshRate: 200 4151 }); 4152 4153 // Log to confirm initialization 4154 console.log("Owl Carousel initialized"); 4155 } else { 4156 console.log("No .e-con-inner elements found"); 4157 } 4158 // Create the new wrapper div 4159 var $wrapperDiv = jQuery('<div class="wrapper-div"></div>'); 4160 4161 // Find the .owl-dots container 4162 var $owlDots = jQuery('.owl-dots'); 4163 4164 // Check if .owl-dots exists 4165 if ($owlDots.length) { 4166 // Insert the new wrapper div just above the .owl-dots 4167 $owlDots.before($wrapperDiv); 4168 4169 // Move the .owl-dots content into the new wrapper div 4170 $wrapperDiv.append($owlDots); 4171 } 4172 if (window.innerWidth >= 1025) { 4173 // Find the maximum height among the spans 4174 var maxHeight = 0; 4175 jQuery('.benefits h3.elementor-icon-box-title span').each(function() { 4176 var height = jQuery(this).outerHeight(); 4177 if (height > maxHeight) { 4178 maxHeight = height; 4179 } 4180 }); 4181 4182 // Set all spans to the maximum height 4183 jQuery('.benefits h3.elementor-icon-box-title span').each(function() { 4184 jQuery(this).outerHeight(maxHeight); 4185 }); 4186} 4187 4188jQuery(window).resize(function() { 4189 if (window.innerWidth >= 1025) { 4190 // Reset heights and apply again on resize 4191 jQuery('.benefits h3.elementor-icon-box-title span').css('height', ''); 4192 var maxHeight = 0; 4193 jQuery('.benefits h3.elementor-icon-box-title span').each(function() { 4194 var height = jQuery(this).outerHeight(); 4195 if (height > maxHeight) { 4196 maxHeight = height; 4197 } 4198 }); 4199 jQuery('.benefits h3.elementor-icon-box-title span').each(function() { 4200 jQuery(this).outerHeight(maxHeight); 4201 }); 4202 } else { 4203 jQuery('.benefits h3.elementor-icon-box-title span').css('height', ''); // Reset heights for smaller screens 4204 } 4205}); 4206 4207}); 4208 4209// search toggle 4210jQuery(".search-toggle").addClass("closed"); 4211 jQuery(".search-toggle ").click(function (e) { 4212 if (jQuery(".search-toggle").hasClass("closed")) { 4213 jQuery(".search-toggle").removeClass("closed").addClass("opened"); 4214 jQuery(".search-container").addClass("opened"); 4215 jQuery("#search-terms").focus(); 4216 } else { 4217 jQuery(".search-toggle").removeClass("opened").addClass("closed"); 4218 jQuery(".search-container").removeClass("opened"); 4219 } 4220 }); 4221 4222// Site language translator 4223function googleTranslateElementInit() { 4224 new google.translate.TranslateElement({pageLanguage: 'en', layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, 'google_translate_element'); 4225} 4226 4227jQuery('.site-language-toggle').click( function(){ 4228 jQuery('.site-language').toggleClass('open'); 4229}); 4230 4231 function playVideo() { 4232 document.querySelector('.video-placeholder').style.display = 'none'; 4233 document.getElementById('video-frame').style.display = 'block'; 4234} 4235 4236</script>
vendor: 1 bytes, line 4236
4236
4237<script type="text/javascript" src="https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
4237 4238 4239<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 4239-4240
4239 4240<script async src="https://www.googletagmanager.com/gtag/js?id=
4240AW-16897193092
vendor: 13 bytes, lines 4240-4241
4240"> 4241</script>
4242<script> 4243
vendor: 134 bytes, lines 4243-4247
4243window.dataLayer = window.dataLayer || []; 4244 function gtag(){dataLayer.push(arguments);} 4245 gtag('js', new Date()); 4246 4247 gtag('config', '
4247AW-16897193092
vendor: 4 bytes, line 4247
4247');
4248</script>
vendor: 1 bytes, line 4248
4248
4249<script type="text/javascript"> 4250_linkedin_partner_id = "8144628"; 4251window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; 4252window._linkedin_data_partner_ids.push(_linkedin_partner_id); 4253</script>
4253<script type="text/javascript"> 4254(function(l) { 4255if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])}; 4256window.lintrk.q=[]} 4257var s = document.getElementsByTagName("script")[0]; 4258var b = document.createElement("script"); 4259b.type = "text/javascript";b.async = true; 4260b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; 4261s.parentNode.insertBefore(b, s);})(window.lintrk); 4262</script>
4262 4263<noscript> 4264<img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=8144628&fmt=gif" /> 4265</noscript>
4266<script> 4267gform.initializeOnLoaded( function() { jQuery(document).on('gform_post_render', function(event, formId, currentPage){if(formId == 4) {gf_global["number_formats"][4] = {"20":{"price":false,"value":false},"21":{"price":false,"value":false},"13":{"price":false,"value":false},"6":{"price":false,"value":false},"28":{"price":false,"value":false},"8":{"price":false,"value":false},"9":{"price":false,"value":false},"24":{"price":false,"value":false},"26":{"price":false,"value":false},"25":{"price":false,"value":false},"10":{"price":false,"value":false},"19":{"price":false,"value":false},"14":{"price":false,"value":false},"11":{"price":false,"value":false},"12":{"price":false,"value":false},"22":{"price":false,"value":false},"15":{"price":false,"value":false},"16":{"price":false,"value":false},"23":{"price":false,"value":false},"17":{"price":false,"value":false}};if(window['jQuery']){if(!window['gf_form_conditional_logic'])window['gf_form_conditional_logic'] = new Array();window['gf_form_conditional_logic'][4] = { logic: { 10: {"field":{"actionType":"show","logicType":"all","rules":[{"fieldId":"9","operator":"is","value":"Other"}],"enabled":true},"nextButton":null,"section":null} }, dependents: { 10: [10] }, animation: 0, defaults: {"20":"https:\/\/app-3SBM6RVWYC.marketingautomation.services\/webforms\/receivePostback\/MzY0MrK0NDUyAAA\/","21":"158679b3-e624-40cb-8ac0-7ca816a45918","13":{"13.2":"","13.3":"","13.4":"","13.6":"","13.8":""},"9":"Hearth","24":{"24.1":"","24.2":"","24.3":"","24.4":"","24.5":"","24.6":"United States"},"25":"Retailer","11":"HPBExpo Sign Up for Updates","12":"09\/26\/2026","22":"1","15":"HPBExpo Sign Up for Updates v.20180525","16":"09\/26\/2026","23":"1","17":["choice_4_17_1"]}, fields: {"20":[],"21":[],"13":[],"6":[],"28":[],"8":[],"9":[10],"24":[],"26":[],"25":[],"10":[],"19":[],"14":[],"11":[],"12":[],"22":[],"15":[],"16":[],"23":[],"17":[]} }; if(!window['gf_number_format'])window['gf_number_format'] = 'decimal_dot';jQuery(document).ready(function(){gform.utils.trigger({ event: 'gform/conditionalLogic/init/start', native: false, data: { formId: 4, fields: null, isInit: true } });window['gformInitPriceFields']();gf_apply_rules(4, [10], true);jQuery('#gform_wrapper_4').show();jQuery('#gform_wrapper_4 form').css('opacity', '');jQuery(document).trigger('gform_post_conditional_logic', [4, null, true]);gform.utils.trigger({ event: 'gform/conditionalLogic/init/end', native: false, data: { formId: 4, fields: null, isInit: true } });} );} if(typeof Placeholders != 'undefined'){ 4268 Placeholders.enable(); 4269 }} } );jQuery(document).on('gform_post_conditional_logic', function(event, formId, fields, isInit){} ) } ); 4270</script>
vendor: 1 bytes, line 4270
4270
4271<script> 4272gform.initializeOnLoaded( function() {jQuery(document).trigger("gform_pre_post_render", [{ formId: "4", currentPage: "1", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_4" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_4"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_4" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 4, 1 ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } ); 4273</script>
4273 4274
4275<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a40e38efcdf238bd',t:'MTc5MDM4MzI4MA=='};var a=document.createElement('script');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 a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
4275</body> 4276</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.