PageSourceSearch

https://hpbexpo.com/

html hpbexpo.com collected 2026-09-26 00:41:21 UTC 307,306 bytes, 4,276 lines download raw bytes

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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; Barbecue Expo &raquo; Feed" href="https://hpbexpo.com/feed/" />
34<link rel="alternate" type="application/rss+xml" title="Hearth, Patio &amp; Barbecue Expo &raquo; 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&#038;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&#038;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&#038;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="{&quot;sticky&quot;:&quot;top&quot;,&quot;sticky_on&quot;:[&quot;widescreen&quot;,&quot;desktop&quot;,&quot;laptop&quot;,&quot;tablet_extra&quot;,&quot;tablet&quot;,&quot;mobile_extra&quot;,&quot;mobile&quot;],&quot;sticky_offset&quot;:0,&quot;sticky_effects_offset&quot;:0,&quot;sticky_anchor_link_offset&quot;: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 &amp; 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&rsquo; 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 &amp; 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 &amp; Events Policy</a></li>
803                <li><a href="https://hpbexpo.com/suitcasing-outboarding-policy/">Suitcasing &amp; 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&amp;EventId=10&amp;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 &amp; Resources</span>
851              <ul>
852                <li><a href="https://hpbexpo.com/exhibit/exhibitor-hotel/">Exhibitor Hotel &amp; 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">&times;</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 &amp; 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&rsquo; 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 &amp; 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 &amp; Events Policy</a></li>
918        <li><a href="https://hpbexpo.com/suitcasing-outboarding-policy/">Suitcasing &amp; 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&amp;EventId=10&amp;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 &amp; Resources</span></li>
952        <li><a href="https://hpbexpo.com/exhibit/exhibitor-hotel/">Exhibitor Hotel &amp; 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&ndash;6, 2027</strong><br>Music City Center &middot; 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="{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeIn&quot;}">
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="{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeIn&quot;}">
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="{&quot;video_type&quot;:&quot;vimeo&quot;}" 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&amp;color&amp;autopause=0&amp;loop=0&amp;muted=0&amp;title=1&amp;portrait=1&amp;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&hellip;</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&rsquo;s more to <span class="brand">HPBExpo27</span> than the exhibit
3627       hall &mdash; 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 &amp; 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="{&quot;background_background&quot;:&quot;classic&quot;}">
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="{&quot;background_background&quot;:&quot;classic&quot;}">
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>&#916;<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="{&quot;background_background&quot;:&quot;classic&quot;}">
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="{&quot;layout&quot;:&quot;horizontal&quot;,&quot;submenu_icon&quot;:{&quot;value&quot;:&quot;&lt;svg aria-hidden=\&quot;true\&quot; class=\&quot;e-font-icon-svg e-fas-caret-down\&quot;
3845 viewBox=\&quot;0 0 320 512\&quot; xmlns=\&quot;http:\/\/www.w3.org\/2000\/svg\&quot;&gt;&lt;path d=\&quot;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\&quot;&gt;&lt;\/path&gt;&lt;\/svg&gt;&quot;,&quot;library&quot;:&quot;fa-solid&quot;}}" 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="{&quot;background_background&quot;:&quot;classic&quot;}">
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="{&quot;layout&quot;:&quot;horizontal&quot;,&quot;submenu_icon&quot;:{&quot;value&quot;:&quot;&lt;svg aria-hidden=\&quot;true\&quot; class=\&quot;e-font-icon-svg e-fas-caret-down\&quot;
3871 viewBox=\&quot;0 0 320 512\&quot; xmlns=\&quot;http:\/\/www.w3.org\/2000\/svg\&quot;&gt;&lt;path d=\&quot;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\&quot;&gt;&lt;\/path&gt;&lt;\/svg&gt;&quot;,&quot;library&quot;:&quot;fa-solid&quot;}}" 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="{&quot;layout&quot;:&quot;horizontal&quot;,&quot;submenu_icon&quot;:{&quot;value&quot;:&quot;&lt;svg aria-hidden=\&quot;true\&quot; class=\&quot;e-font-icon-svg e-fas-caret-down\&quot;
3887 viewBox=\&quot;0 0 320 512\&quot; xmlns=\&quot;http:\/\/www.w3.org\/2000\/svg\&quot;&gt;&lt;path d=\&quot;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\&quot;&gt;&lt;\/path&gt;&lt;\/svg&gt;&quot;,&quot;library&quot;:&quot;fa-solid&quot;}}" 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="{&quot;background_background&quot;:&quot;classic&quot;}">
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&#038;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&amp;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.