{"id":13,"date":"2026-07-02T13:08:21","date_gmt":"2026-07-02T13:08:21","guid":{"rendered":"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/?page_id=13"},"modified":"2026-07-19T20:35:35","modified_gmt":"2026-07-19T20:35:35","slug":"home","status":"publish","type":"page","link":"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/","title":{"rendered":"Home"},"content":{"rendered":"\n<div class=\"wp-block-uagb-container uagb-block-80bc13fc alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-container uagb-block-b1321062\">\n<div class=\"wp-block-uagb-advanced-heading uagb-block-1f946c24\"><p class=\"uagb-heading-text\"><strong>SLO County Home Services Guide<\/strong><\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-f8978305\"><h1 class=\"uagb-heading-text\">5000 homes,<br>one business per category.<\/h1><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-145d2a63\"><p class=\"uagb-heading-text\">The SLO Home Guide puts your business in front of local homeowners as the only business in your service category. If you&#8217;re in, your competitors are out.<br><\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-buttons uagb-buttons__outer-wrap uagb-btn__default-btn uagb-btn-tablet__default-btn uagb-btn-mobile__default-btn uagb-block-5265cb81\"><div class=\"uagb-buttons__wrap uagb-buttons-layout-wrap \">\n<div class=\"wp-block-uagb-buttons-child uagb-buttons__outer-wrap uagb-block-4b1d063d wp-block-button\"><div class=\"uagb-button__wrapper\"><a class=\"uagb-buttons-repeater wp-block-button__link\" aria-label=\"\" href=\"#checker\" rel=\"follow noopener\" target=\"_self\" role=\"button\"><div class=\"uagb-button__link\">Reserve Your Category<\/div><span class=\"uagb-button__icon uagb-button__icon-position-after\"><svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 448 512\" aria-hidden=\"true\" focussable=\"false\"><path d=\"M438.6 278.6l-160 160C272.4 444.9 264.2 448 256 448s-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L338.8 288H32C14.33 288 .0016 273.7 .0016 256S14.33 224 32 224h306.8l-105.4-105.4c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l160 160C451.1 245.9 451.1 266.1 438.6 278.6z\"><\/path><\/svg><\/span><\/a><\/div><\/div>\n\n\n\n<div class=\"wp-block-uagb-buttons-child uagb-buttons__outer-wrap uagb-block-0744d355 wp-block-button\"><div class=\"uagb-button__wrapper\"><a class=\"uagb-buttons-repeater wp-block-button__link\" aria-label=\"\" href=\"#sizes\" rel=\"follow noopener\" target=\"_self\" role=\"button\"><div class=\"uagb-button__link\">See Ad Sizes<\/div><\/a><\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-ddb4e048 pointer\"><p class=\"uagb-heading-text\">Pilot introductory offer, 50% off for first 10 reservations.<\/p><\/div>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"246\" height=\"100\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/ChamberofCommerce.webp\" alt=\"ChamberofCommerce\" class=\"wp-image-387\" style=\"width:183px;height:auto\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-8eac4dcc\">\n<div class=\"wp-block-uagb-container uag-hide-desktop uagb-block-76df7553\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"800\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/hero-shring-img-1024x800.webp\" alt=\"\" class=\"wp-image-320\" srcset=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/hero-shring-img-1024x800.webp 1024w, https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/hero-shring-img-300x234.webp 300w, https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/hero-shring-img-768x600.webp 768w, https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/hero-shring-img-600x469.webp 600w, https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/hero-shring-img.webp 1100w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<div id=\"watch\" class=\"wp-block-uagb-container uagb-block-0d22bd3d alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-container uagb-block-5661607e alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-advanced-heading uagb-block-99b51ac3\"><p class=\"uagb-heading-text\">How it works<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-bcf26375\"><h2 class=\"uagb-heading-text\">Become the business local homeowners see first.<\/h2><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-7b2f7229\"><p class=\"uagb-heading-text\">Reserve your category, choose your ad size, and get exclusive placement in a guide going to 5,000 local homes.<\/p><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-e229b68a\">\n<figure class=\"wp-block-embed is-type-video is-provider-vimeo wp-block-embed-vimeo wp-embed-aspect-16-9 wp-has-aspect-ratio player\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Composie San Luis Obispo Home Services Guide\" src=\"https:\/\/player.vimeo.com\/video\/1210245415?dnt=1&amp;app_id=122963\" width=\"500\" height=\"281\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\"><\/iframe>\n<\/div><\/figure>\n<\/div>\n<\/div><\/div>\n\n\n\n<div id=\"offer\" class=\"wp-block-uagb-container uagb-block-eadc3874 alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-container uagb-block-64b901a2\">\n<div class=\"wp-block-uagb-advanced-heading uagb-block-f6f6ba0a\"><p class=\"uagb-heading-text\">What&#8217;s included<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-66ab0d39\"><h2 class=\"uagb-heading-text\">Exclusive by design.<\/h2><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-d6a8dc16\"><p class=\"uagb-heading-text\">Your business doesn&#8217;t just appear in the guide. It gets a protected place in front of homeowners, with no direct competitors permitted.<\/p><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-047d6469\">\n<div class=\"wp-block-uagb-container uagb-block-d1f09af9\">\r\n        <div class=\"exclusive-icon-grid float-start w-100\">\r\n            <div class=\"row\">\r\n\r\n                \r\n                    <div class=\"col-sm-6\">\r\n                        <div class=\"ei-box float-start w-100\">\r\n\r\n                            <div class=\"float-start d-flex align-items-center justify-content-between ei-title w-100\">\r\n\r\n                                                                    <h3>One business per category<\/h3>\r\n                                \r\n                                                                    <img decoding=\"async\" class=\"default-image\"\r\n                                         src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/Business_Dark.gif\"\r\n                                         alt=\"Business\">\r\n                                \r\n                                                                    <img decoding=\"async\" class=\"hover-image\"\r\n                                         src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/Business_Light.gif\"\r\n                                         alt=\"Business\">\r\n                                \r\n                            <\/div>\r\n\r\n                                                            <p>If you reserve your category, another business in the same category will not appear in that issue.<\/p>\r\n                            \r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                \r\n                    <div class=\"col-sm-6\">\r\n                        <div class=\"ei-box float-start w-100\">\r\n\r\n                            <div class=\"float-start d-flex align-items-center justify-content-between ei-title w-100\">\r\n\r\n                                                                    <h3>Selected local routes<\/h3>\r\n                                \r\n                                                                    <img decoding=\"async\" class=\"default-image\"\r\n                                         src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/Routes_Dark.gif\"\r\n                                         alt=\"Routes\">\r\n                                \r\n                                                                    <img decoding=\"async\" class=\"hover-image\"\r\n                                         src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/Routes_Light.gif\"\r\n                                         alt=\"Routes\">\r\n                                \r\n                            <\/div>\r\n\r\n                                                            <p>The guide is mailed to select neighborhoods in San Luis Obispo County.<\/p>\r\n                            \r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                \r\n                    <div class=\"col-sm-6\">\r\n                        <div class=\"ei-box float-start w-100\">\r\n\r\n                            <div class=\"float-start d-flex align-items-center justify-content-between ei-title w-100\">\r\n\r\n                                                                    <h3>Ad design included<\/h3>\r\n                                \r\n                                                                    <img decoding=\"async\" class=\"default-image\"\r\n                                         src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/Design_Dark.gif\"\r\n                                         alt=\"Design\">\r\n                                \r\n                                                                    <img decoding=\"async\" class=\"hover-image\"\r\n                                         src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/Design_Light.gif\"\r\n                                         alt=\"Design\">\r\n                                \r\n                            <\/div>\r\n\r\n                                                            <p>You do not need to send a finished ad. Send your details. We'll put the ad together.<\/p>\r\n                            \r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                \r\n                    <div class=\"col-sm-6\">\r\n                        <div class=\"ei-box float-start w-100\">\r\n\r\n                            <div class=\"float-start d-flex align-items-center justify-content-between ei-title w-100\">\r\n\r\n                                                                    <h3>Approve before print<\/h3>\r\n                                \r\n                                                                    <img decoding=\"async\" class=\"default-image\"\r\n                                         src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/Proof_Dark.gif\"\r\n                                         alt=\"Proof\">\r\n                                \r\n                                                                    <img decoding=\"async\" class=\"hover-image\"\r\n                                         src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/Proof_Light.gif\"\r\n                                         alt=\"Proof\">\r\n                                \r\n                            <\/div>\r\n\r\n                                                            <p>You'll see your ad before the guide is printed.<\/p>\r\n                            \r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                \r\n            <\/div>\r\n        <\/div>\r\n\r\n    \n<\/div>\n\n\n\n<div class=\"wp-block-uagb-container uag-hide-tab uag-hide-mob uagb-block-e7f0a1e2\"><\/div>\n\n\n\n<div class=\"wp-block-uagb-container uag-hide-desktop uagb-block-4cf3c479\">\n<figure class=\"wp-block-image size-full full-image b-radius\"><img loading=\"lazy\" decoding=\"async\" width=\"896\" height=\"776\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/New_Whatsincluded.webp\" alt=\"Whatsincluded\" class=\"wp-image-1256\" srcset=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/New_Whatsincluded.webp 896w, https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/New_Whatsincluded-300x260.webp 300w, https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/New_Whatsincluded-768x665.webp 768w, https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/New_Whatsincluded-600x520.webp 600w\" sizes=\"auto, (max-width: 896px) 100vw, 896px\" \/><\/figure>\n<\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-89da2788 alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<figure class=\"wp-block-image size-full is-resized d-flex me-2\"><img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/star.svg\" alt=\"star\" class=\"wp-image-113\" style=\"object-fit:cover;width:15px;height:15px\"\/><\/figure>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-3cd8e41e\"><p class=\"uagb-heading-text\">Pilot offer \u00b7 50% off for the first 10<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-b900978d\"><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-fa31af98\"><p class=\"uagb-heading-text\">Produced by<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-f9bd2b1e\"><p class=\"uagb-heading-text\">Composie<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-70f66fb7\"><p class=\"uagb-heading-text\">Ad design included.<\/p><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-uagb-container logobank uag-hide-desktop uag-hide-tab uag-hide-mob uagb-block-6ce2e60e alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-advanced-heading uagb-block-5c88c3fd\"><p class=\"uagb-heading-text\">First issue \u00b7 Produced by Composie \u00b7 Trusted by Local Businesses<\/p><\/div>\n\n\n    <div class=\"lb-marquee\">\r\n        <div class=\"lb-track\" id=\"logoBank\">\r\n                                                <div class=\"lb-slot\">\r\n                        <img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/sample-logo.png\" alt=\"sample-logo\">\r\n                    <\/div>\r\n                                    <div class=\"lb-slot\">\r\n                        <img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/sample-logo5-1.png\" alt=\"\">\r\n                    <\/div>\r\n                                    <div class=\"lb-slot\">\r\n                        <img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/sample-logo2.png\" alt=\"sample-logo2\">\r\n                    <\/div>\r\n                                    <div class=\"lb-slot\">\r\n                        <img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/sample-logo4-1.png\" alt=\"\">\r\n                    <\/div>\r\n                                    <div class=\"lb-slot\">\r\n                        <img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/sample-logo3.png\" alt=\"sample-logo3\">\r\n                    <\/div>\r\n                                                                <div class=\"lb-slot\">\r\n                        <img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/sample-logo.png\" alt=\"sample-logo\">\r\n                    <\/div>\r\n                                    <div class=\"lb-slot\">\r\n                        <img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/sample-logo5-1.png\" alt=\"\">\r\n                    <\/div>\r\n                                    <div class=\"lb-slot\">\r\n                        <img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/sample-logo2.png\" alt=\"sample-logo2\">\r\n                    <\/div>\r\n                                    <div class=\"lb-slot\">\r\n                        <img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/sample-logo4-1.png\" alt=\"\">\r\n                    <\/div>\r\n                                    <div class=\"lb-slot\">\r\n                        <img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/sample-logo3.png\" alt=\"sample-logo3\">\r\n                    <\/div>\r\n                                                                <div class=\"lb-slot\">\r\n                        <img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/sample-logo.png\" alt=\"sample-logo\">\r\n                    <\/div>\r\n                                    <div class=\"lb-slot\">\r\n                        <img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/sample-logo5-1.png\" alt=\"\">\r\n                    <\/div>\r\n                                    <div class=\"lb-slot\">\r\n                        <img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/sample-logo2.png\" alt=\"sample-logo2\">\r\n                    <\/div>\r\n                                    <div class=\"lb-slot\">\r\n                        <img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/sample-logo4-1.png\" alt=\"\">\r\n                    <\/div>\r\n                                    <div class=\"lb-slot\">\r\n                        <img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/sample-logo3.png\" alt=\"sample-logo3\">\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n    \n<\/div><\/div>\n\n\n\n<div id=\"sizes\" class=\"wp-block-uagb-container uagb-block-8bed4862 alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-container uagb-block-78d9e684\">\n<div class=\"wp-block-uagb-advanced-heading uagb-block-fde0571d\"><p class=\"uagb-heading-text\">Ad sizes<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-e6b58a11\"><h2 class=\"uagb-heading-text\">Choose how visible you<br>want to be.<\/h2><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-c4f75a1e\"><p class=\"uagb-heading-text\">Every option gets you into the guide, in front of local homeowners, with your ad designed by Composie. Start simple, stand out, or own more of the page. Your category exclusivity stays the same.<\/p><\/div>\n<\/div>\n\n\n\r\n\r\n<div class=\"stage float-star w-100\">\r\n\r\n\t<div class=\"left-side float-start d-flex align-items-end justify-content-cemnter\">\r\n\t\t\r\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/wp-content\/uploads\/2026\/07\/ComposiePen.webp\" alt=\"ComposiePen\">\r\n\t\t\t\t\r\n\t\t\t\t\t<div class=\"preview-card\">\r\n\t\t\t\t<div class=\"preview-header d-flex align-items-center gap-2\">\r\n\t\t\t\t\t<div class=\"logo d-flex align-items-center justify-content-center\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M3 7l9 6 9-6\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"2.4\"><\/rect><\/svg><\/div>\r\n\t\t\t\t\t<span>The SLO Home Guide<\/span>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"grid\" id=\"previewGrid\"><\/div>\r\n\t\t\t<\/div>\r\n\t\t\t\t\r\n\t<\/div>\r\n\r\n\t<div class=\"panel float-end\">\r\n\t\r\n\t\t\t\t\t<div class=\"tabs d-flex\" id=\"tabs\">\r\n\t\t\t\t\t\t\t\t\t<button class=\"tab\" data-plan=\"spotlight\">\r\n\t\t\t\t\t\t<span class=\"tab-name\">Spotlight<\/span>\r\n\t\t\t\t\t\t<span class=\"tab-size\">8.5 in<\/span>\r\n\t\t\t\t\t<\/button>\r\n\t\t\t\t\t\t\t\t\t<button class=\"tab\" data-plan=\"standard\">\r\n\t\t\t\t\t\t<span class=\"tab-name\">Standard<\/span>\r\n\t\t\t\t\t\t<span class=\"tab-size\">4.25 in<\/span>\r\n\t\t\t\t\t<\/button>\r\n\t\t\t\t\t\t\t\t\t<button class=\"tab\" data-plan=\"starter\">\r\n\t\t\t\t\t\t<span class=\"tab-name\">Starter<\/span>\r\n\t\t\t\t\t\t<span class=\"tab-size\">2.125 in<\/span>\r\n\t\t\t\t\t<\/button>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\r\n\t\t<div class=\"details float-start w-100 position-relative\">\r\n            <div class=\"plan\" data-plan=\"spotlight\">\r\n            <div class=\"sz-read\">\r\n\r\n                <div class=\"nm\">\r\n                    Spotlight\r\n                                            <span class=\"pr\">\r\n                                                            <s class=\"was\">$1,800<\/s>\r\n                            \r\n                                                            $900                                                    <\/span>\r\n                                    <\/div>\r\n\r\n                                    <div class=\"frate\">Pilot introductory offer<\/div>\r\n                \r\n                                    <div class=\"favail\">50% off \u00b7 first 10 reservations<\/div>\r\n                \r\n                                    <div class=\"dim\">8.5in \u00d7 2.5 in<\/div>\r\n                \r\n                                    <div class=\"cap\">Best for multiple services. A phone number, website, an offer or short reason to call.<\/div>\r\n                \r\n                                    <span class=\"pop\">2x larger<\/span>\r\n                \r\n            <\/div>\r\n\r\n                            <div class=\"szcta\">\r\n                    <a href=\"#checker\"\r\n                       target=\"_self\"\r\n                       class=\"site-btn d-inline-flex align-items-center gap-2\">\r\n                        \t\t\t\t\t\tCheck Availability\r\n                        <svg width=\"16px\" height=\"16px\" fill=\"#fff\" xmlns=\"https:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 448 512\" aria-hidden=\"true\" focussable=\"false\"><path d=\"M438.6 278.6l-160 160C272.4 444.9 264.2 448 256 448s-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L338.8 288H32C14.33 288 .0016 273.7 .0016 256S14.33 224 32 224h306.8l-105.4-105.4c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l160 160C451.1 245.9 451.1 266.1 438.6 278.6z\"><\/path><\/svg>\r\n                    <\/a>\r\n                <\/div>\r\n            \r\n        <\/div>\r\n            <div class=\"plan\" data-plan=\"standard\">\r\n            <div class=\"sz-read\">\r\n\r\n                <div class=\"nm\">\r\n                    Standard\r\n                                            <span class=\"pr\">\r\n                                                            <s class=\"was\">$950<\/s>\r\n                            \r\n                                                            $475                                                    <\/span>\r\n                                    <\/div>\r\n\r\n                                    <div class=\"frate\">Pilot introductory offer<\/div>\r\n                \r\n                                    <div class=\"favail\">50% off \u00b7 first 10 reservations<\/div>\r\n                \r\n                                    <div class=\"dim\">4.25 \u00d7 2.5 in<\/div>\r\n                \r\n                                    <div class=\"cap\">A clear mid-size ad. Best for your service, phone number, website, an offer or short reason to call.<\/div>\r\n                \r\n                                    <span class=\"pop\">Most practical choice<\/span>\r\n                \r\n            <\/div>\r\n\r\n                            <div class=\"szcta\">\r\n                    <a href=\"#checker\"\r\n                       target=\"_self\"\r\n                       class=\"site-btn d-inline-flex align-items-center gap-2\">\r\n                        \t\t\t\t\t\tCheck Availability\r\n                        <svg width=\"16px\" height=\"16px\" fill=\"#fff\" xmlns=\"https:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 448 512\" aria-hidden=\"true\" focussable=\"false\"><path d=\"M438.6 278.6l-160 160C272.4 444.9 264.2 448 256 448s-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L338.8 288H32C14.33 288 .0016 273.7 .0016 256S14.33 224 32 224h306.8l-105.4-105.4c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l160 160C451.1 245.9 451.1 266.1 438.6 278.6z\"><\/path><\/svg>\r\n                    <\/a>\r\n                <\/div>\r\n            \r\n        <\/div>\r\n            <div class=\"plan\" data-plan=\"starter\">\r\n            <div class=\"sz-read\">\r\n\r\n                <div class=\"nm\">\r\n                    Starter\r\n                                            <span class=\"pr\">\r\n                                                            <s class=\"was\">$600<\/s>\r\n                            \r\n                                                            $300                                                    <\/span>\r\n                                    <\/div>\r\n\r\n                                    <div class=\"frate\">Pilot introductory offer<\/div>\r\n                \r\n                                    <div class=\"favail\">50% off \u00b7 first 10 reservations<\/div>\r\n                \r\n                                    <div class=\"dim\">2.125 \u00d7 2.5 in<\/div>\r\n                \r\n                                    <div class=\"cap\">A small, simple placement. Best for your business name, service, phone number, and website.<\/div>\r\n                \r\n                \r\n            <\/div>\r\n\r\n                            <div class=\"szcta\">\r\n                    <a href=\"#checker\"\r\n                       target=\"_self\"\r\n                       class=\"site-btn d-inline-flex align-items-center gap-2\">\r\n                        \t\t\t\t\t\tCheck Availability\r\n                        <svg width=\"16px\" height=\"16px\" fill=\"#fff\" xmlns=\"https:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 448 512\" aria-hidden=\"true\" focussable=\"false\"><path d=\"M438.6 278.6l-160 160C272.4 444.9 264.2 448 256 448s-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L338.8 288H32C14.33 288 .0016 273.7 .0016 256S14.33 224 32 224h306.8l-105.4-105.4c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l160 160C451.1 245.9 451.1 266.1 438.6 278.6z\"><\/path><\/svg>\r\n                    <\/a>\r\n                <\/div>\r\n            \r\n        <\/div>\r\n    \t\t<\/div>\r\n\t<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n\r\n<script>\r\n  \/\/const plans = [\"spotlight\", \"standard\", \"starter\"];\r\n  \r\n\tconst plans = [\r\n\t\"spotlight\",\"standard\",\"starter\",\t];\r\n  \r\n  let currentIndex = 0;\r\n  let timer = null;\r\n  const AUTO_DELAY = 8000;\r\n\r\n  const tabs = document.querySelectorAll(\".tab\");\r\n  const planEls = document.querySelectorAll(\".plan\");\r\n  const previewGrid = document.getElementById(\"previewGrid\");\r\n\r\n  \/\/ Which grid slot index is \"active\" for each plan (matches screenshots)\r\n  \/\/const activeSlotMap = { spotlight: 0, standard: 1, starter: 5 };\r\n  \r\n\tconst activeSlotValues = [0, 1, 5];\r\n\r\n\tconst activeSlotMap = {\r\n\t\t\t\t\"spotlight\": activeSlotValues[0],\r\n\t\t\t\t\t\t\"standard\": activeSlotValues[1],\r\n\t\t\t\t\t\t\"starter\": activeSlotValues[2],\r\n\t\t\t\t};\r\n\r\n  const slotDefs = [\r\n    { full: true },\r\n    { half: true }, { half: true },\r\n    { half: true }, { half: true },\r\n    { third: true }, { third: true }, { third: true, dashed: true }\r\n  ];\r\n\r\n  let slotEls = [];\r\n  let highlightEl;\r\n  let tagEl;\r\n\r\n  function buildGridOnce(){\r\n    slotDefs.forEach((def) => {\r\n      const div = document.createElement(\"div\");\r\n      div.className = \"slot\";\r\n      if(def.full) div.classList.add(\"full\");\r\n      if(def.half) div.classList.add(\"half\");\r\n      if(def.third) div.classList.add(\"third\");\r\n      if(def.dashed) div.classList.add(\"dashed\");\r\n      previewGrid.appendChild(div);\r\n      slotEls.push(div);\r\n    });\r\n\r\n    highlightEl = document.createElement(\"div\");\r\n    highlightEl.className = \"highlight\";\r\n    tagEl = document.createElement(\"span\");\r\n    tagEl.className = \"tag\";\r\n    highlightEl.appendChild(tagEl);\r\n    previewGrid.appendChild(highlightEl);\r\n  }\r\n\r\n  function moveHighlightTo(plan){\r\n    const idx = activeSlotMap[plan];\r\n    const target = slotEls[idx];\r\n\r\n    highlightEl.style.top = target.offsetTop + \"px\";\r\n    highlightEl.style.left = target.offsetLeft + \"px\";\r\n    highlightEl.style.width = target.offsetWidth + \"px\";\r\n    highlightEl.style.height = target.offsetHeight + \"px\";\r\n\r\n    tagEl.classList.remove(\"show\");\r\n    tagEl.textContent = plan.charAt(0).toUpperCase() + plan.slice(1);\r\n    \/\/ fade the label back in slightly after the box starts moving\r\n    setTimeout(() => tagEl.classList.add(\"show\"), 150);\r\n  }\r\n\r\n  function setActive(planName, restartTimer = true){\r\n    currentIndex = plans.indexOf(planName);\r\n\r\n    tabs.forEach(t => t.classList.toggle(\"active\", t.dataset.plan === planName));\r\n    planEls.forEach(p => p.classList.toggle(\"active\", p.dataset.plan === planName));\r\n\r\n    tagEl.classList.remove(\"show\");\r\n    moveHighlightTo(planName);\r\n\r\n    if(restartTimer){\r\n      clearTimeout(timer);\r\n      scheduleNext();\r\n    }\r\n  }\r\n\r\n  function scheduleNext(){\r\n    timer = setTimeout(() => {\r\n      const nextIndex = (currentIndex + 1) % plans.length;\r\n      setActive(plans[nextIndex]);\r\n    }, AUTO_DELAY);\r\n  }\r\n\r\n  tabs.forEach(tab => {\r\n    tab.addEventListener(\"click\", () => {\r\n      setActive(tab.dataset.plan);\r\n    });\r\n  });\r\n\r\n  \/\/ init\r\n  buildGridOnce();\r\n  setActive(plans[0], true);\r\n  tagEl.classList.add(\"show\");\r\n<\/script>\r\n\r\n\r\n\t\n<\/div><\/div>\n\n\n\n<div id=\"checker\" class=\"wp-block-uagb-container uagb-block-2e7b38c4 alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-container uagb-block-dbd25d9d\">\n<div class=\"wp-block-uagb-advanced-heading uagb-block-7c050ce8\"><p class=\"uagb-heading-text\">Check availability<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-58986a7d\"><h2 class=\"uagb-heading-text\">See if your category is still open.<\/h2><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-d841f0d0\"><p class=\"uagb-heading-text\">Each issue includes one business per category. Start by telling us what you do.<\/p><\/div>\n<\/div>\n\n\n\t\t<div id=\"hsr-app\" data-token=\"kaUcELacsjj1YEMZYWRD\">\r\n\r\n\t\t<div class=\"hsr-steps\">\r\n\t\t\t<button type=\"button\" class=\"hsr-back-btn\" id=\"hsr_back_btn\" style=\"display:none;\" aria-label=\"Back\"><svg width=\"16px\" height=\"16px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M15 6l-6 6 6 6\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg><\/button>\r\n\t\t\t<div class=\"hsr-step-badge\" data-step=\"1\"><span><em data-num=\"1\">1<\/em><\/span> Details<\/div>\r\n\t\t\t<div class=\"hsr-step-line\" data-line=\"1\"><\/div>\r\n\t\t\t<div class=\"hsr-step-badge\" data-step=\"2\"><span><em data-num=\"2\">2<\/em><\/span> Category<\/div>\r\n\t\t\t<div class=\"hsr-step-line\" data-line=\"2\"><\/div>\r\n\t\t\t<div class=\"hsr-step-badge\" data-step=\"3\"><span><em data-num=\"3\">3<\/em><\/span> Result<\/div>\r\n\t\t<\/div>\r\n\r\n\t\t<!-- STEP 1: DETAILS -->\r\n\t\t<div class=\"hsr-panel\" id=\"hsr-step-1\">\r\n\t\t\t<h4 class=\"q\">WHERE SHOULD WE SEND YOUR RESULT?<\/h4>\r\n\t\t\t<div class=\"hsr-row\">\r\n\t\t\t\t<div class=\"hsr-field\">\r\n\t\t\t\t\t<label>FIRST NAME *<\/label>\r\n\t\t\t\t\t<input type=\"text\" id=\"hsr_first_name\" required autocomplete=\"given-name\" placeholder=\"First name\">\r\n\t\t\t\t\t<span class=\"hsr-field-error\" id=\"hsr_first_name_error\"><\/span>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"hsr-field\">\r\n\t\t\t\t\t<label>LAST NAME *<\/label>\r\n\t\t\t\t\t<input type=\"text\" id=\"hsr_last_name\" required autocomplete=\"family-name\" placeholder=\"Last name\">\r\n\t\t\t\t\t<span class=\"hsr-field-error\" id=\"hsr_last_name_error\"><\/span>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"hsr-row\">\r\n\t\t\t\t<div class=\"hsr-field\">\r\n\t\t\t\t\t<label>EMAIL *<\/label>\r\n\t\t\t\t\t<input type=\"email\" id=\"hsr_email\" required autocomplete=\"email\" placeholder=\"you@business.com\">\r\n\t\t\t\t\t<span class=\"hsr-field-error\" id=\"hsr_email_error\"><\/span>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"hsr-field\">\r\n\t\t\t\t\t<label>PHONE *<\/label>\r\n\t\t\t\t\t<input type=\"tel\" id=\"hsr_phone\" required autocomplete=\"tel\" placeholder=\"(805) 000-0000\">\r\n\t\t\t\t\t<span class=\"hsr-field-error\" id=\"hsr_phone_error\"><\/span>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"hsr-field\">\r\n\t\t\t\t<label>BUSINESS NAME *<\/label>\r\n\t\t\t\t<input type=\"text\" id=\"hsr_business_name\" required autocomplete=\"organization\" placeholder=\"Your company name\">\r\n\t\t\t\t<span class=\"hsr-field-error\" id=\"hsr_business_name_error\"><\/span>\r\n\t\t\t<\/div>\r\n\t\t\t<button type=\"button\" class=\"hsr-btn hsr-btn-primary\" id=\"hsr-to-step2\">Next &rarr;<\/button>\r\n\t\t\t<p class=\"hsr-error\" id=\"hsr-step1-error\"><\/p>\r\n\t\t<\/div>\r\n\r\n\t\t<!-- STEP 2: CATEGORY -->\r\n\t\t<div class=\"hsr-panel\" id=\"hsr-step-2\" style=\"display:none;\">\r\n\t\t\t<div id=\"hsr-category-block\">\r\n\t\t\t\t<h4 class=\"q\">WHAT KIND OF WORK DO YOU DO?<\/h4>\r\n\t\t\t\t<div class=\"hsr-search-wrap\">\r\n\t\t\t\t\t<input type=\"text\" id=\"hsr_product_search\" placeholder=\"Start typing, like roofing, pool cleaning, HVAC, painting...\">\r\n\t\t\t\t\t<span class=\"hsr-search-loader\" id=\"hsr_search_loader\"><\/span>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div id=\"hsr_search_results\" style=\"display:none;\"><\/div>\r\n\r\n\t\t\t\t<h5 class=\"pop-label\">POPULAR CATEGORIES STILL AVAILABLE<\/h5>\r\n\t\t\t\t<div class=\"hsr-cat-grid\">\r\n\t\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"hsr-cat-btn\" data-product-id=\"733\" data-product-name=\"Air Duct &#038; Dryer Vent Cleaning\">Air Duct &#038; Dryer Vent Cleaning<\/button>\r\n\t\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"hsr-cat-btn\" data-product-id=\"681\" data-product-name=\"Appliance Repair\">Appliance Repair<\/button>\r\n\t\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"hsr-cat-btn\" data-product-id=\"745\" data-product-name=\"Awnings, Patio Covers &#038; Sunrooms\">Awnings, Patio Covers &#038; Sunrooms<\/button>\r\n\t\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"hsr-cat-btn\" data-product-id=\"749\" data-product-name=\"Blinds &#038; Window Treatments\">Blinds &#038; Window Treatments<\/button>\r\n\t\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"hsr-cat-btn\" data-product-id=\"705\" data-product-name=\"Cabinets &#038; Countertops\">Cabinets &#038; Countertops<\/button>\r\n\t\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"hsr-cat-btn\" data-product-id=\"673\" data-product-name=\"Carpet &#038; Upholstery Cleaning\">Carpet &#038; Upholstery Cleaning<\/button>\r\n\t\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"hsr-cat-btn\" data-product-id=\"713\" data-product-name=\"Chimney &#038; Fireplace\">Chimney &#038; Fireplace<\/button>\r\n\t\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"hsr-cat-btn\" data-product-id=\"645\" data-product-name=\"Concrete, Driveways &#038; Masonry\">Concrete, Driveways &#038; Masonry<\/button>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<div id=\"hsr_selected_category\" style=\"display:none;\">\r\n\t\t\t\t\t<span class=\"g\"><svg width=\"16px\" height=\"16px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M5 13l4 4L19 7\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg><\/span>\r\n\t\t\t\t\t<span class=\"hsr-selected-label\">Your category<br><strong id=\"hsr_selected_category_name\"><\/strong><\/span>\r\n\t\t\t\t\t<a href=\"#\" id=\"hsr_change_category\">Change<\/a>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\r\n\t\t\t<div class=\"hsr-not-home\">\r\n\t\t\t\t<strong><span>NOT A HOME-SERVICE BUSINESS?<\/span><\/strong>\r\n\t\t\t\t<div id=\"hsr_not_home_intro\">\r\n\t\t\t\t\t<div><b>This issue is for home services.<\/b> Tell us what you do and we'll let you know if a future guide is a fit.<\/div>\r\n\t\t\t\t\t<button type=\"button\" class=\"hsr-btn hsr-btn-secondary\" id=\"hsr_show_business_type\">Tell us your business type<\/button>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div id=\"hsr_business_type_block\" style=\"display:none;\">\r\n\t\t\t\t\t<label class=\"q\">WHAT KIND OF BUSINESS ARE YOU?<\/label>\r\n\t\t\t\t\t<input type=\"text\" id=\"hsr_business_type_input\" placeholder=\"Restaurant, gym, real estate, wellness, retail\u2026\" \/>\r\n\t\t\t\t\t<a href=\"#\" id=\"hsr_back_to_home_service\">Actually, I am a home-service business.<\/a>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\r\n\t\t\t<button type=\"button\" class=\"hsr-btn hsr-btn-primary\" id=\"hsr-check-availability\">Check availability &#10003;<\/button>\r\n\t\t\t<p class=\"hsr-error\" id=\"hsr-step2-error\"><\/p>\r\n\t\t<\/div>\r\n\r\n\t\t<!-- STEP 3: RESULT -->\r\n\t\t<div class=\"hsr-panel\" id=\"hsr-step-3\" style=\"display:none;\">\r\n\r\n\t\t\t<!-- 3a: Future edition (non home-service path) -->\r\n\t\t\t<div id=\"hsr_future_edition_box\" style=\"display:none;\">\r\n\t\t\t\t<div class=\"hsr-future-badge d-flex align-items-center gap-2\"><svg viewBox=\"0 0 24 24\" width=\"15\" height=\"15\" fill=\"none\"><path d=\"M12 21s7-5.5 7-11a7 7 0 10-14 0c0 5.5 7 11 7 11z\" stroke=\"#956A09\" stroke-width=\"2\"><\/path><circle cx=\"12\" cy=\"10\" r=\"2.4\" stroke=\"#956A09\" stroke-width=\"2\"><\/circle><\/svg> FUTURE EDITION<\/div>\r\n\t\t\t\t<h4>This issue is for home services.<\/h4>\r\n\t\t\t\t<p id=\"hsr_future_text\"><\/p>\r\n\t\t\t\t<button type=\"button\" class=\"hsr-btn hsr-btn-primary\" id=\"hsr_join_future_list\">Join the future-edition list<\/button>\r\n\t\t\t\t<p class=\"hsr-success\" id=\"hsr_future_success\" style=\"display:none;\">Thanks! We'll be in touch.<\/p>\r\n\t\t\t<\/div>\r\n\r\n\t\t\t<!-- 3b: Category held \/ available -->\r\n\t\t\t<div id=\"hsr_hold_box\" style=\"display:none;\">\r\n\t\t\t\t<div id=\"hsr_hold_banner\" class=\"hsr-hold-banner\">\r\n\t\t\t\t\t<svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\"><circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"2\"><\/circle><path d=\"M12 7v5l3 2\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\r\n\t\t\t\t\t<span id=\"hsr_hold_label\"><\/span>\r\n\t\t\t\t\t<span class=\"hsr-timer\" id=\"hsr_timer\">15:00<\/span>\r\n\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<div id=\"hsr_available_box\" style=\"display:none;\">\r\n\t\t\t\t\t<div id=\"hsr_available_content\">\r\n\t\t\t\t\t\t<div class=\"hsr-available-badge d-flex align-items-center gap-2\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" width=\"15\" height=\"15\" fill=\"none\"><path d=\"M5 13l4 4L19 7\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg> AVAILABLE<\/div>\r\n\t\t\t\t\t\t<h4 id=\"hsr_available_title\"><\/h4>\r\n\t\t\t\t\t\t<p id=\"hsr_available_desc\">You can reserve this category for the next issue. A reservation covers one category only. While that spot is yours, no other business in that category appears in the same guide.<\/p>\r\n\t\t\t\t\t\t<button type=\"button\" class=\"hsr-btn hsr-btn-primary active\" id=\"hsr_reserve_btn\">Reserve<\/button>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div id=\"hsr_available_expired\" style=\"display:none;\">\r\n\t\t\t\t\t\t<div class=\"hsr-unavailable-badge\">Hold expired<\/div>\r\n\t\t\t\t\t\t<h4 id=\"hsr_expired_title\">Your hold has expired.<\/h4>\r\n\t\t\t\t\t\t<p>No charge was made. If the category is still available, you can start the reservation again.<\/p>\r\n\t\t\t\t\t\t<button type=\"button\" class=\"hsr-btn hsr-btn-secondary hsr-reset-form-btn\">Start over<\/button>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<div id=\"hsr_unavailable_box\" style=\"display:none;\">\r\n\t\t\t\t\t<div class=\"hsr-unavailable-badge d-flex align-items-center gap-2\"><svg viewBox=\"0 0 24 24\" width=\"15\" height=\"15\" fill=\"none\"><circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"2\"><\/circle><path d=\"M12 8v5M12 16.5v.2\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"><\/path><\/svg> Already reserved<\/div>\r\n\t\t\t\t\t<h4 id=\"hsr_unavailable_title\"><\/h4>\r\n\t\t\t\t\t<p id=\"hsr_unavailable_text\">Only one (selected product name) business appears in each issue. You can join the list for the next guide or ask about a private mailer.<\/p>\r\n\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t<div class=\"col-sm-6\"><button type=\"button\" class=\"hsr-btn hsr-btn-secondary\" id=\"hsr_join_next_issue_btn\">Join the next-issue list<\/button><\/div>\r\n\t\t\t\t\t\t<div class=\"col-sm-6\"><button type=\"button\" class=\"hsr-btn hsr-btn-secondary\" id=\"hsr_private_mailer_btn\">Ask about a private mailer<\/button><\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<p class=\"hsr-success\" id=\"hsr_unavailable_success\" style=\"display:none;\">Thanks! We'll be in touch.<\/p>\r\n\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<div id=\"hsr_reserve_loading\" class=\"hsr-reserve-loading\" style=\"display:none;\">\r\n\t\t\t\t\t<span class=\"hsr-inline-spinner\"><\/span> Loading ad sizes...\r\n\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<!-- 3c: Variation + payment (shown after Reserve click) -->\r\n\t\t\t\t<div id=\"hsr_payment_box\" style=\"display:none;\">\r\n\t\t\t\t\t<h5 class=\"q\">CHOOSE YOUR AD SIZE. WE DESIGN THE AD. YOU SET IT UP RIGHT AFTER CHECKOUT.<\/h5>\r\n\t\t\t\t\t<div id=\"hsr_variations\"><\/div>\r\n\r\n\t\t\t\t\t<div class=\"hsr-ad-planner-wrap\">\r\n\t\t\t\t\t\t<div class=\"hsr-layout-zone\">\r\n\t\t\t\t\t\t\t<div class=\"hsr-screen-box\">\r\n\t\t\t\t\t\t\t\t<div class=\"hsr-screen-head\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"hsr-brand-icon\">&#9993;<\/div>\r\n\t\t\t\t\t\t\t\t\t<span>The SLO Home Guide<\/span>\r\n\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t\t\t<div class=\"hsr-layout-matrix\" id=\"hsr_layout_matrix\"><\/div>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t<div id=\"hsr_variation_details\">\r\n\t\t\t\t\t\t<p id=\"hsr_variation_regular_price\"><\/p>\r\n\t\t\t\t\t\t<p id=\"hsr_variation_sale_price\"><\/p>\r\n\t\t\t\t\t\t<div id=\"hsr_variation_description\"><\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\r\n\t\t\t\t\t<label class=\"hsr-addon\">\r\n\t\t\t\t\t\t<input type=\"checkbox\" id=\"hsr_strongest_position\">\r\n\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\tRequest the strongest position\r\n\t\t\t\t\t\t\t<p class=\"hsr-note\" id=\"hsr_one_category_note\">One business, one category. This reserves this category only. Need a second category? You can start a separate reservation for it after this one.<\/p>\r\n\t\t\t\t\t\t\t<div id=\"hsr_addon_total\" style=\"display:none;\"><\/div>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t<span class=\"hsr-addon-price\">+$99<\/span>\r\n\t\t\t\t\t<\/label>\r\n\t\t\t\t\t\r\n\t\t\t\t\t<div class=\"excl-note\"><b>One business, one category.<\/b> This reserves category only. Need a second category? You can start a separate reservation for it after this one.<\/div>\r\n\t\t\t\t\t\r\n\t\t\t\t\t<div class=\"card-wrap\">\r\n\t\t\t\t\t\t<h5>CARD DETAILS<\/h5>\r\n\t\t\t\t\t\t<div id=\"hsr-card-number\" class=\"hsr-card-field hsr-card-number\"><\/div>\r\n\t\t\t\t\t\t<div class=\"hsr-card-row no-zip\">\r\n\t\t\t\t\t\t\t<div id=\"hsr-card-expiry\" class=\"hsr-card-field\"><\/div>\r\n\t\t\t\t\t\t\t<div id=\"hsr-card-cvc\" class=\"hsr-card-field\"><\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t<span class=\"hsr-field-error\" id=\"hsr_card_zip_error\"><\/span>\r\n\t\t\t\t\t\t<div id=\"hsr-card-errors\" class=\"hsr-error\"><\/div>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t<p>On-page secure payment. No redirect: you finish here and go straight to setting up your ad. <span>(Stripe card field mounts here.)<\/span><\/p>\r\n\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t<p class=\"hsr-note verify-note\">We verify your card now with a small authorization. Your category is <strong>not<\/strong> reserved until payment is captured. You are charged the full amount only when your reservation is processed, and not before.<\/p>\r\n\r\n\t\t\t\t\t<button type=\"button\" class=\"mt-3 hsr-btn hsr-btn-dark\" id=\"hsr_pay_btn\">Pay and reserve my category<\/button>\r\n\t\t\t\t\t<p class=\"hsr-error mt-2\" id=\"hsr-payment-error\"><\/p>\r\n\t\t\t\t\t\r\n\t\t\t\t\t<div class=\"secure-info\">\r\n\t\t\t\t\t\t<p class=\"d-flex align-items-center justify-content-center gap-2\"><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\"><rect x=\"5\" y=\"11\" width=\"14\" height=\"9\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"2\"><\/rect><path d=\"M8 11V8a4 4 0 018 0v3\" stroke=\"currentColor\" stroke-width=\"2\"><\/path><\/svg>Secure payment<\/p>\r\n\t\t\t\t\t\t<div class=\"guarantee\">You\u2019ll receive an ad proof before print. Printing begins after proof approval.<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\r\n\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<!-- 3d: Reserved - collect ad details -->\r\n\t\t\t\t<div id=\"hsr_reserved_box\" style=\"display:none;\">\r\n\t\t\t\t\t<div id=\"hsr_ad_details_form\">\r\n\t\t\t\t\t\t<div class=\"hsr-reserved-wrap\">\r\n\t\t\t\t\t\t\t<div class=\"hsr-reserved-badge d-flex align-items-center gap-2\"><svg viewBox=\"0 0 24 24\" width=\"15\" height=\"15\" fill=\"none\"><path d=\"M5 13l4 4L19 7\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg> RESERVED<\/div>\r\n\t\t\t\t\t\t\t<h4>You're In. Now send us whatever you have.<\/h4>\r\n\t\t\t\t\t\t\t<p>We\u2019ll use the details below to create your SLO Home Guide ad. Don\u2019t worry if you don\u2019t have everything ready, send what you can, leave the rest blank, and our team will fill in the gaps.<\/p>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t<div class=\"col-sm-6\">\r\n\t\t\t\t\t\t\t\t<div class=\"hsr-reserved-wrap dark-title-equal-height\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"hsr-reserved-badge d-flex align-items-center gap-2\"><svg  width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"2\"><\/circle><path d=\"M8.5 12.5l2.5 2.5 4.5-5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg> No perfect brief required.<\/div>\r\n\t\t\t\t\t\t\t\t\t<p>If something is missing, unclear, or low quality, we\u2019ll keep the project moving and make the strongest ad we can from what you provide.<\/p>\r\n\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t\t<div class=\"col-sm-6\">\r\n\t\t\t\t\t\t\t\t<div class=\"hsr-reserved-wrap dark-title-equal-height\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"hsr-reserved-badge d-flex align-items-center gap-2\"><svg  width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"2\"><\/circle><path d=\"M8.5 12.5l2.5 2.5 4.5-5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg> You\u2019ll review the ad before it prints.<\/div>\r\n\t\t\t\t\t\t\t\t\t<p>We\u2019ll create your ad, send you a proof in the Composie portal, and you\u2019ll have one included round of unlimited changes before final approval.<\/p>\r\n\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<div class=\"hsr-field\"><label>BUSINESS NAME<\/label><input type=\"text\" id=\"hsr_ad_business_name\" placeholder=\"Business Name\"><span class=\"hsr-field-info\">This is the name we should use in your ad.<\/span><\/div>\r\n\t\t\t\t\t\t<div class=\"hsr-field\"><label>BEST PHONE NUMBER FOR HOMEOWNERS TO CALL<\/label><input type=\"text\" id=\"hsr_ad_phone\" placeholder=\"Your local sales or office number\"><span class=\"hsr-field-info\">This should be the number you want featured most prominently.<\/span><\/div>\r\n\t\t\t\t\t\t<div class=\"hsr-field\"><label>WHERE SHOULD THE QR CODE SEND PEOPLE?<\/label><input type=\"text\" id=\"hsr_ad_qr_target\" placeholder=\"Website, booking page, contact page, or offer page\"><span class=\"hsr-field-info\">Most businesses use their website, booking page, contact page, or offer page.<\/span><\/div>\r\n\t\t\t\t\t\t<div class=\"hsr-field\"><label>WHAT AREAS DO YOU SERVE? (optional)<\/label><input type=\"text\" id=\"hsr_ad_areas\" placeholder=\"San Luis Obispo, Paso Robles, Arroyo Grande, North County, all of SLO County\"><span class=\"hsr-field-info\">Tell us if there are specific cities, neighborhoods, or service areas we should mention.<\/span><\/div>\r\n\t\t\t\t\t\t<div class=\"hsr-field\"><label>WHAT SERVICES SHOULD HOMEOWNERS KNOW YOU OFFER?<\/label><textarea id=\"hsr_ad_services\" placeholder=\"List your most important services. Short bullets are fine.\"><\/textarea><span class=\"hsr-field-info\">Short bullets are fine. We\u2019ll turn this into clean ad copy.<\/span><\/div>\r\n\t\t\t\t\t\t<div class=\"hsr-field\"><label>DO YOU HAVE A SPECIAL OFFER YOU WANT US TO CONSIDER? (optional)<\/label><textarea id=\"hsr_ad_offer\" placeholder=\"Free estimate, $100 off, seasonal tune-up, new customer discount, financing available\"><\/textarea><span class=\"hsr-field-info\">If you leave this blank, we\u2019ll suggest an offer or call-to-action that fits your business.<\/span><\/div>\r\n\t\t\t\t\t\t<div class=\"hsr-field\"><label>WHAT MAKES YOUR BUSINESS A GOOD CHOICE?<\/label><textarea id=\"hsr_ad_differentiators\" placeholder=\"Licensed, insured, family-owned, 20 years in business, local crew, emergency service, 5-star reviews, warranty, fast response\"><\/textarea><span class=\"hsr-field-info\">Give us the raw facts. We\u2019ll turn them into stronger ad messaging.<\/span><\/div>\r\n\t\t\t\t\t\t<div class=\"hsr-field\"><label>UPLOAD YOUR LOGO, PHOTOS, OR ANYTHING YOU WANT US TO CONSIDER<\/label><input type=\"file\" id=\"hsr_ad_logo\" placeholder=\"\"><span class=\"hsr-field-info\">A logo is helpful, but don\u2019t let file quality slow you down. If your logo is low-resolution or you don\u2019t have one, we\u2019ll clean it up, recreate it, or create a simple treatment for the ad.<\/span><\/div>\r\n\t\t\t\t\t\t<div class=\"hsr-field\"><label>PHOTOS WE CAN USE (optional)<\/label><input type=\"file\" id=\"hsr_ad_photos\" multiple><span class=\"hsr-field-info\">Upload trucks, team photos, completed work, before and after photos, or anything that helps homeowners understand what you do.<\/span><\/div>\r\n\t\t\t\t\t\t<div class=\"hsr-field\"><label>ANY STYLE PREFERENCES WE SHOULD KNOW? (optional)<\/label><textarea id=\"hsr_ad_style\" placeholder=\"Clean and professional, bold and attention-grabbing, local\/family-owned, premium, simple, no preference\"><\/textarea><span class=\"hsr-field-info\">We\u2019ll make the final design decision based on what will work best in the guide.<\/span><\/div>\r\n\t\t\t\t\t\t<div class=\"hsr-field\"><label>ANYTHING WE MUST INCLUDE OR AVOID? (optional)<\/label><textarea id=\"hsr_ad_avoid\"><\/textarea><span class=\"hsr-field-info\">Use this for license numbers, legal notes, required wording, or anything you definitely do or don\u2019t want shown.<\/span><\/div>\r\n\t\t\t\t\t\t<div class=\"hsr-field\">\r\n\t\t\t\t\t\t\t<label class=\"q\">WOULD YOU LIKE HELP WITH ANYTHING BEYOND THIS MAILER AD?<\/label>\r\n\t\t\t\t\t\t\t<label><input type=\"radio\" name=\"hsr_ad_help\" value=\"yes\"> Yes, I'd like to discuss other design or marketing projects.<\/label>\r\n\t\t\t\t\t\t\t<label><input type=\"radio\" name=\"hsr_ad_help\" value=\"no\" checked> Not right now.<\/label>\r\n\t\t\t\t\t\t\t<span class=\"hsr-field-info\">If yes, someone from Composie will reach out separately. This will not delay your SLO Home Guide ad.<\/span>\r\n\t\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<button type=\"button\" class=\"hsr-btn hsr-btn-dark\" id=\"hsr_send_ad_details_btn\">Send My Ad Details &#10003;<\/button>\r\n\t\t\t\t\t\t<p class=\"hsr-error\" id=\"hsr-ad-details-error\"><\/p>\r\n\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t<div id=\"hsr_ad_details_done\" style=\"display:none;\">\r\n\t\t\t\t\t\t<span><svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M5 13l4 4L19 7\" stroke=\"currentColor\" stroke-width=\"2.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg><\/span>\r\n\t\t\t\t\t\t<h4>Got it, your ad request has been created.<\/h4>\r\n\t\t\t\t\t\t<p>Our team will review what you sent, fill in any gaps, and send your proof through the Composie portal.<\/p>\r\n\t\t\t\t\t\t<button type=\"button\" class=\"hsr-btn hsr-btn-secondary hsr-reset-form-btn w-100\">Reserve another category<\/button>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\t<style>\r\n\t\t#hsr-app{max-width:620px;margin:0 auto;font-family:inherit;}\r\n\t\t#hsr-app .hsr-panel{background:#fff;border-radius:12px;padding:24px;}\r\n\t\t#hsr-app .hsr-panel .q{font-size: 12px;font-weight: 700;letter-spacing: .05em;text-transform: uppercase;color: #8C8CA0; margin-bottom: margin-bottom: 11px;;}\r\n\t\t#hsr-app label{display:block;font-size:12px;font-weight:700;letter-spacing:.03em;color:var(--dark-color);margin:0 0 6px 0;}\r\n\t\t#hsr-app input[type=text],#hsr-app input[type=email],#hsr-app input[type=file],#hsr-app textarea,#hsr-app input[type=\"tel\"]{width:100%;box-sizing:border-box;padding:12px;border:1px solid #ddd;border-radius:10px;background:#f3f2ea;font-size:14px;}\r\n\t\t#hsr-app input:hover, #hsr-app input:active, #hsr-app input:focus{border-color: var(--main-color);outline: none !important; background: var(--white-color);}\r\n\t\t#hsr-app textarea{min-height:70px;}\r\n\t\t#hsr-app .hsr-row{display:flex;gap:16px;}\r\n\t\t#hsr-app .hsr-field{flex:1; margin-bottom: 12px;}\r\n\t\t#hsr-app .hsr-field-info{font-size: 12px;color: #8C8CA0;margin-top: 5px;line-height: 1.45;}\r\n\t\t#hsr-app .hsr-btn{border:none;border-radius:8px;padding:14px 20px;font-weight:700;cursor:pointer;width:100%;margin-top:16px;}\r\n\t\t#hsr-app .hsr-btn-primary{background:#8fc9c9;color:#fff; transition-duration: .3s;}\r\n\t\t#hsr-app .hsr-btn-primary.active{background:#349EA7;}\r\n\t\t#hsr-app .hsr-btn-dark{margin: 0;background: #349EA7;color: #fff;box-shadow: 0 10px 22px -12px rgba(52, 158, 167, .9);font-weight: 700;font-size: 15px;padding: 14px 22px;border-radius: 11px;}\r\n\t\t#hsr-app .hsr-btn-dark:hover{filter: brightness(1.07);}\r\n\t\t\r\n\t\t#hsr-app .hsr-btn-secondary{background:#fff;border:1px solid #1b8f8f;color:#1b8f8f;width:auto;}\r\n\t\t#hsr-app .hsr-cat-grid{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0;}\r\n\t\t#hsr-app .hsr-cat-btn{font-size: 13.5px;font-weight: 600;color: #090925;background: #F4F4EB;border: 1px solid #CACABA;padding: 9px 13px;border-radius: 10px;transition: transform .12s, border-color .15s;\t\t\t}\r\n\t\t#hsr-app .hsr-cat-btn:hover{border-color: var(--main-color); transform: translateY(-1px);}\r\n\t\t#hsr-app .hsr-cat-btn.active{background:#349EA7;color:#fff;border-color:#349EA7;}\r\n\t\t#hsr-app .hsr-error{color:#c0392b;font-size:13px;}\r\n\t\t#hsr-app .hsr-field-error{display:block;color:#c0392b;font-size:12px;margin-top:4px;min-height:14px;}\r\n\t\t#hsr-app .hsr-field-error:empty{display: none;}\r\n\t\t#hsr-app #hsr_selected_category{display: flex;align-items: center;gap: 11px;background: #DCEFF0;border: 1px solid #A6D8DC;border-radius: 10px;padding: 12px 14px;margin-top: 13px;}\r\n\t\t#hsr-app #hsr_selected_category #hsr_change_category{margin-left: auto;}\r\n\t\t#hsr-app #hsr_selected_category .g{width: 30px;height: 30px;border-radius: 8px;background: #fff;display: grid;place-items: center;color: #2A828A;flex: none;}\r\n\t\t#hsr-app #hsr_selected_category .hsr-selected-label{font-size: 11px;color: #2A828A;font-weight: 600;}\r\n\t\t#hsr-app #hsr_selected_category .hsr-selected-label #hsr_selected_category_name{font-weight: 700;font-size: 14.5px;}\r\n\t\t#hsr-app #hsr_selected_category #hsr_change_category{margin-left: auto;font-size: 12.5px;color: #2A828A;text-decoration: underline;text-underline-offset: 3px;}\r\n\t\t#hsr-app .hsr-not-home{width: 100%;}\r\n\t\t#hsr-app .hsr-not-home strong{width: 100%;position: relative;display: block;margin: 22px 0 14px;}\r\n\t\t#hsr-app .hsr-not-home strong:before{content: \"\";left: 0;right: 0;top: 50%;background: #DADACB;position: absolute;height: 1px;}\r\n\t\t#hsr-app .hsr-not-home strong span{display: table;z-index: 9;position: relative;background: #fff;padding: 0 10px;margin: auto;color: #8C8CA0;font-size: 11px;font-weight: 700;letter-spacing: .06em;text-transform: uppercase;}\r\n\t\t#hsr-app .hsr-not-home #hsr_not_home_intro{display: flex;align-items: center;gap: 14px;background: #F4F4EB;border: 1px solid #CACABA;border-radius: 12px;padding: 14px 16px;transition: border-color .15s, background .15s;font-size: 13px;color: #474760;line-height: 1.4;}\r\n\t\t#hsr-app .hsr-not-home #hsr_not_home_intro b{display: block;width: 100%;color: #090925;font-weight: 700;display: block;font-size: 13.5px;margin-bottom: 2px;}\r\n\t\t#hsr-app .hsr-not-home #hsr_not_home_intro button{flex: none;font-size: 13px;font-weight: 700;color: #2A828A;border: 1px solid #A6D8DC;background: #fff;border-radius: 9px;padding: 9px 14px;white-space: nowrap;transition: background .15s, color .15s;}\r\n\t\t#hsr-app .hsr-not-home #hsr_not_home_intro button:hover{background: #DCEFF0;}\r\n\t\t#hsr-app #hsr_back_to_home_service{margin-top: 10px;background: none;border: none;color: #2A828A;font-size: 12.5px;font-weight: 600;text-decoration: underline;text-underline-offset: 3px;cursor: pointer;}\r\n\t\t#hsr-app input.hsr-invalid,#hsr-app textarea.hsr-invalid{border-color:#c0392b;background:#fdf1f0;}\r\n\t\t#hsr-app .hsr-success{color:#1b8f8f;font-size:13px;font-weight:700;}\r\n\t\t\r\n\t\t#hsr-app #hsr_future_edition_box{border-radius: 13px;padding: 18px 20px;position: relative;overflow: hidden;background: #FFF1D0;border: 1px solid #F6D27E;}\r\n\t\t#hsr-app #hsr_future_edition_box .hsr-future-badge{color: #956A09;font-size: 12px;font-weight: 800;letter-spacing: .1em;text-transform: uppercase;}\r\n\t\t#hsr-app #hsr_future_edition_box h4{width: 100%;color: #090925;font-weight: 700;display: block;font-size: 18px;margin: 10px 0;}\r\n\t\t#hsr-app #hsr_future_edition_box p{font-size: 14px;color: #474760;margin-top: 8px;line-height: 1.5;}\r\n\t\t#hsr-app #hsr_future_edition_box button{margin: 0;background: #349EA7;color: #fff;box-shadow: 0 10px 22px -12px rgba(52, 158, 167, .9);font-weight: 700;font-size: 15px;padding: 14px 22px;border-radius: 11px;}\r\n\t\t#hsr-app #hsr_future_edition_box button:hover{filter: brightness(1.07);}\r\n\t\t\r\n\t\t#hsr-app #hsr_unavailable_box{background: #FFE4E5;border: 1px solid #FFE4E5;border-radius: 13px;padding: 18px 20px;position: relative;overflow: hidden;}\r\n\t\t#hsr-app #hsr_unavailable_box .hsr-unavailable-badge{color: #FF6165;font-size: 12px;font-weight: 800;letter-spacing: .1em;text-transform: uppercase;}\r\n\t\t#hsr-app #hsr_unavailable_box h4{font-weight: 800;font-size: 21px;line-height: 1.18;margin-top: 10px;letter-spacing: -.01em;}\r\n\t\t#hsr-app #hsr_unavailable_box p{font-size: 14px;color: #474760;margin-top: 8px;line-height: 1.5;}\r\n\t\t#hsr-app #hsr_unavailable_box button{width: 100%; margin: 0;background: #349EA7;color: #fff;box-shadow: 0 10px 22px -12px rgba(52, 158, 167, .9);font-weight: 700;font-size: 15px;padding: 14px 22px;border-radius: 11px;}\r\n\t\t#hsr-app #hsr_unavailable_box button:hover{filter: brightness(1.07);}\r\n\r\n\t\t#hsr-app .hsr-hold-banner{display: flex;align-items: center;gap: 9px;background: #FFF1D0;border: 1px solid #F6D27E;color: #956A09;border-radius: 11px;padding: 9px 13px;margin-bottom: 16px;font-size: 13px;font-weight: 600;}\r\n\t\t#hsr-app .hsr-timer{margin-left: auto;font-weight: 800;background: #fff;border: 1px solid #F6D27E;border-radius: 7px;padding: 2px 9px;}\r\n\t\t#hsr-app .hsr-available-badge{color:#1b8f8f;font-weight:700;font-size:12px;}\r\n\t\t#hsr-app #hsr_available_content{background: #DCEFF0;border: 1px solid #A6D8DC;border-radius: 13px;padding: 18px 20px;position: relative;overflow: hidden;}\r\n\r\n\t\t#hsr-app #hsr_available_expired{background: #FFE4E5;border: 1px solid #FFE4E5;border-radius: 13px;padding: 18px 20px;position: relative;overflow: hidden;}\r\n\t\t#hsr-app #hsr_available_expired .hsr-unavailable-badge{color: #FF6165;font-size: 12px;font-weight: 800;letter-spacing: .1em;text-transform: uppercase;}\r\n\t\t#hsr-app #hsr_available_expired h4{font-weight: 800;font-size: 21px;line-height: 1.18;margin-top: 10px;letter-spacing: -.01em;}\r\n\t\t#hsr-app #hsr_available_expired p{font-size: 14px;color: #474760;margin-top: 8px;line-height: 1.5;}\r\n\t\t#hsr-app #hsr_available_expired button{width: 100%; margin: 0;background: #349EA7;color: #fff;box-shadow: 0 10px 22px -12px rgba(52, 158, 167, .9);font-weight: 700;font-size: 15px;padding: 14px 22px;border-radius: 11px;}\r\n\t\t#hsr-app #hsr_available_expired button:hover{filter: brightness(1.07);}\r\n\t\t#hsr-app #hsr_available_content #hsr_available_title{font-weight: 800;font-size: 21px;line-height: 1.18;margin-top: 10px;letter-spacing: -.01em;}\r\n\t\t#hsr-app #hsr_available_content p{font-size: 14px;color: #474760;margin-top: 8px;line-height: 1.5;}\r\n\t\t#hsr-app #hsr_available_content button{margin: 0;background: #349EA7;color: #fff;box-shadow: 0 10px 22px -12px rgba(52, 158, 167, .9);font-weight: 700;font-size: 15px;padding: 14px 22px;border-radius: 11px;}\r\n\t\t#hsr-app #hsr_available_content button:hover{filter: brightness(1.07);}\r\n\t\t\t\r\n\r\n\t\t#hsr-app .hsr-reserved-badge{color:#1b8f8f;font-weight:700;}\r\n\t\t#hsr-app .hsr-reserve-loading{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:14px;color:#555;}\r\n\t\t#hsr-app .hsr-inline-spinner{width:16px;height:16px;border:2px solid #ddd;border-top-color:#1b8f8f;border-radius:50%;animation:hsr-spin .7s linear infinite;flex:0 0 auto;}\r\n\t\t#hsr-app .hsr-card-field{padding:12px;border:1px solid #ddd;border-radius:8px;background:#fff;box-sizing:border-box;}\r\n\t\t#hsr-app .hsr-card-number{width:100%;margin-top:6px;}\r\n\t\t#hsr-app .hsr-card-row{display:flex;gap:10px;margin-top:10px;}\r\n\t\t#hsr-app .hsr-card-row.no-zip .hsr-card-field{flex:0 0 calc(33.33% - 7px);}\r\n\t\t#hsr-app .hsr-card-row.has-zip .hsr-card-field,\r\n\t\t#hsr-app .hsr-card-row.has-zip .hsr-card-zip-input{flex:0 0 calc(25% - 8px);}\r\n\t\t#hsr-app .hsr-card-zip-input{font-size:14px;}\r\n\t\t\r\n\t\t#hsr-app .hsr-addon{display: flex;gap: 12px;align-items: flex-start;padding: 14px;border: 1px solid #A6D8DC;background: #DCEFF0;border-radius: 11px;margin: 14px 0;cursor: pointer;font-weight: 600;}\r\n\t\t#hsr-app .hsr-addon input{margin-top: 3px;width: 18px;height: 18px;accent-color: #349EA7;flex: none;}\r\n\t\t#hsr-app .hsr-note{font-size: 12px;color: #474760;margin: 6px 0 0 0;font-weight: normal;}\r\n\t\t#hsr-app .hsr-addon-price{color: #2A828A;font-size: 16px;font-weight: bold;}\r\n\t\t#hsr-app #hsr_addon_total{margin-top:8px;font-weight:700;font-size:14px;color:#1b1b2f;}\r\n\t\t\r\n\t\t#hsr-app .excl-note{font-size: 12.5px;color: #474760;background: #FFF1D0;border: 1px solid #F6D27E;border-radius: 10px;padding: 11px 13px;line-height: 1.5;margin: 0 0 20px 0;}\r\n\t\t#hsr-app .excl-note{color: #090925;}\r\n\t\t\r\n\t\t#hsr-app .card-wrap{margin-top: 14px;border: 1px solid #CACABA;border-radius: 12px;padding: 14px;background: #F4F4EB;}\r\n\t\t#hsr-app .card-wrap p{margin: 15px 0 0 0;font-size: 11.5px;color: #8C8CA0;line-height: 1.45;}\r\n\t\t#hsr-app .card-wrap p span{opacity: .7;}\r\n\t\t\r\n\t\t#hsr-app .verify-note{font-size: 12px;color: #474760;background: #DCEFF0;border: 1px solid #A6D8DC;border-radius: 9px;padding: 10px 12px;margin-top: 12px;line-height: 1.45;}\r\n\t\t\r\n\t\t#hsr-app .secure-info{margin-top: 11px;font-size: 12px;color: #8C8CA0;}\r\n\t\t#hsr-app .guarantee{margin-top: 14px;font-size: 12.5px;color: #474760;background: #F4F4EB;border: 1px solid #DADACB;border-radius: 10px;padding: 12px 14px;line-height: 1.5;}\r\n\t\t\r\n\t\t#hsr-app .hsr-reserved-wrap{background: #DCEFF0;border: 1px solid #A6D8DC;border-radius: 13px;padding: 18px 20px;position: relative;overflow: hidden;margin-bottom: 18px;}\r\n\t\t#hsr-app .hsr-reserved-wrap .hsr-reserved-badge{font-size: 12px;font-weight: 800;letter-spacing: .1em;text-transform: uppercase;}\r\n\t\t#hsr-app .hsr-reserved-wrap.dark-title-equal-height{height: calc(100% - 18px);}\r\n\t\t#hsr-app .hsr-reserved-wrap.dark-title-equal-height .hsr-reserved-badge {color: #090925; font-size: 14px;}\r\n\t\t\r\n\t\t#hsr-app .hsr-reserved-wrap h4{font-weight: 800;font-size: 21px;line-height: 1.18;margin: 10px 0;letter-spacing: -.01em;}\r\n\t\t#hsr-app .hsr-reserved-wrap p{font-size: 14px;color: #474760;margin: 8px 0 0 0;line-height: 1.5;}\r\n\t\t\r\n\t\t#hsr-app .hsr-steps{display:flex;align-items:center;gap:10px;margin-bottom:16px;}\r\n\t\t#hsr-app .hsr-back-btn{width: 34px;height: 34px;border-radius: 9px;border: 1px solid #CACABA;display: grid;place-items: center;color: #474760;flex: none;background: #fff;transition: border-color .15s, color .15s;}\r\n\t\t#hsr-app .hsr-back-btn:hover{border-color: #474760;color: #090925;}\r\n\t\t#hsr-app .hsr-step-badge{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:#8C8CA0;white-space:nowrap;}\r\n\t\t#hsr-app .hsr-step-badge span{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;border:2px solid #ddd;color:#8C8CA0;font-size:12.5px;font-weight:800; background: #E6E6D7;}\r\n\t\t#hsr-app .hsr-step-badge span em{font-style: normal; line-height: normal;}\r\n\t\t#hsr-app .hsr-step-badge.active{color:#090925;}\r\n\t\t#hsr-app .hsr-step-badge.active span{border-color:#FEB720;background:#FEB720;color:#090925;}\r\n\t\t#hsr-app .hsr-step-badge.completed{color:#1b8f8f;}\r\n\t\t#hsr-app .hsr-step-badge.completed span{border-color:#1b8f8f;background:#1b8f8f;color:#fff;}\r\n\t\t#hsr-app .hsr-step-line{flex:1;height:2px;background:#e5e5e5;}\r\n\t\t#hsr-app .hsr-step-line.completed{background:#1b8f8f;}\r\n\t\t#hsr_search_results .hsr-cat-btn{display: flex;align-items: center; justify-content: space-between; gap: 10px;padding: 11px 14px;border: 0px;border-bottom: 1px solid #DADACB;cursor: pointer; width: 100%; border-radius:0;}\r\n\t\t#hsr_search_results .hsr-cat-btn:last-child{border-bottom: 0px;}\r\n\t\t#hsr_search_results .hsr-cat-btn:hover{background: #DCEFF0;}\r\n\t\t#hsr-app .cat{margin-left: auto;font-size: 12px;color: #2A828A;font-weight: 600;white-space: nowrap;background: #DCEFF0;border: 1px solid #A6D8DC;padding: 2px 8px;border-radius: 7px;}\r\n\t\t#hsr-app .hsr-status-icon{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;font-size:10px;color:#fff;line-height:1;}\r\n\t\t#hsr-app .hsr-status-active{background:#1b8f8f; display: none;}\r\n\t\t#hsr-app .hsr-status-inactive{background:#c0392b; display: none}\r\n\t\t#hsr-app .hsr-search-wrap{position:relative;}\r\n\t\t#hsr-app .hsr-search-wrap input{background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='11' cy='11' r='7' stroke='%23000' stroke-width='2'\/%3E%3Cpath d='M21 21l-4-4' stroke='%23000' stroke-width='2' stroke-linecap='round'\/%3E%3C\/svg%3E\"); background-repeat: no-repeat; background-size: 18px; background-position: 13px 50%; padding-left: 42px;}\r\n\t\t#hsr-app .hsr-search-loader{display:none;position:absolute;top:50%;right:12px;width:16px;height:16px;margin-top:-8px;border:2px solid #ddd;border-top-color:#1b8f8f;border-radius:50%;animation:hsr-spin .7s linear infinite;}\r\n\t\t#hsr-app .hsr-search-loader.show{display:block;}\r\n\t\t#hsr-app #hsr_search_results{border:1px solid #CACABA;border-radius:10px;background:#fff;margin-top:8px;padding:0;max-height:200px;overflow-y:auto; box-shadow: 0 18px 40px -22px rgba(9,9,37,.5);}\r\n\t\t@keyframes hsr-spin{to{transform:rotate(360deg);}}\r\n\t\t#hsr-app .pop-label{font-size: 11px;font-weight: 700;letter-spacing: .05em;text-transform: uppercase;color: #8C8CA0;margin-top: 16px;}\r\n\t\t#hsr_variations{display:flex;gap:10px;margin:10px 0;flex-wrap:wrap;}\r\n\t\t#hsr-app #hsr_variation_details{margin:16px 0 14px;font-size:13px; text-align: center;}\r\n\t\t#hsr-app #hsr_variation_regular_price{color:#999;text-decoration:line-through;margin:2px 0;}\r\n\t\t#hsr-app #hsr_variation_sale_price{color:#1b8f8f;font-weight:700;margin:2px 0;}\r\n\t\t#hsr-app #hsr_variation_description{color:#555;margin-top:4px;}\r\n\t\t#hsr-app #hsr_variation_description p{margin:0 0 6px;}\r\n\t\t\r\n\t\t#hsr-app #hsr_ad_details_done span{width: 62px;height: 62px;border-radius: 50%;background: #349EA7;display: grid;place-items: center;margin-bottom: 16px;margin: auto;}\r\n\t\t#hsr-app #hsr_ad_details_done span svg{width: 32px;height: 32px;color: #fff;}\r\n\t\t#hsr-app #hsr_ad_details_done h4{font-weight: 800;font-size: 23px;letter-spacing: -.01em;text-align: center;}\r\n\t\t#hsr-app #hsr_ad_details_done p{font-size: 14.5px;color: #474760;margin-top: 9px;line-height: 1.55;text-align: center;}\r\n\r\n\t\t\/* Ad layout preview widget *\/\r\n\t\t#hsr-app .hsr-ad-planner-wrap{width:100%;margin:14px 0;}\r\n\t\t#hsr-app .hsr-layout-zone{display:flex;justify-content:center;width:100%;}\r\n\t\t#hsr-app .hsr-screen-box{background:#ffffff;border-radius:18px;box-shadow:0 10px 30px rgba(30,40,40,0.08);padding:20px;width:100%;max-width:340px;}\r\n\t\t#hsr-app .hsr-screen-head{display:flex;align-items:center;gap:10px;font-weight:700;font-size:14px;margin-bottom:16px;}\r\n\t\t#hsr-app .hsr-brand-icon{width:22px;height:22px;border-radius:6px;background:#2f9c96;display:flex;align-items:center;justify-content:center;color:#ffffff;font-size:12px;}\r\n\t\t#hsr-app .hsr-layout-matrix{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;position:relative;}\r\n\t\t#hsr-app .hsr-grid-block{background:linear-gradient(180deg,#eef4f2,#f5f8f6);border:1px solid #e5e3d4;border-radius:10px;height:52px;}\r\n\t\t#hsr-app .hsr-grid-block.hsr-is-dashed{background:transparent;border:2px dashed #dfe6e2;}\r\n\t\t#hsr-app .hsr-grid-block.hsr-is-full{grid-column:span 6;height:60px;}\r\n\t\t#hsr-app .hsr-grid-block.hsr-is-half{grid-column:span 3;}\r\n\t\t#hsr-app .hsr-grid-block.hsr-is-third{grid-column:span 2;}\r\n\t\t#hsr-app .hsr-active-frame{position:absolute;top:0;left:0;width:0;height:0;border-radius:10px;background:#dcf1ef;border:1px solid #2f9c96;box-shadow:0 0 0 3px rgba(47,156,150,0.12);transition:top .5s cubic-bezier(.4,0,.2,1),left .5s cubic-bezier(.4,0,.2,1),width .5s cubic-bezier(.4,0,.2,1),height .5s cubic-bezier(.4,0,.2,1);pointer-events:none;}\r\n\t\t#hsr-app .hsr-active-label{position:absolute;top:8px;left:8px;background:#2f9c96;color:#ffffff;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;letter-spacing:.2px;white-space:nowrap;opacity:0;transition:opacity .25s ease;}\r\n\t\t#hsr-app .hsr-active-label.hsr-visible{opacity:1;}\r\n\t\t#hsr_variations .hsr-var-btn{display: flex;align-items: center;border:1px solid #DADACB;border-radius:8px;padding:10px 14px;color:#090925; cursor:pointer;background:#F4F4EB; width: calc(50% - 5px); line-height: 15px;}\r\n\t\t#hsr_variations .hsr-var-btn br, #hsr_variations .hsr-var-btn small{display: none;}\r\n\t\t#hsr_variations .hsr-var-btn span{margin-left: auto;}\r\n\t\t#hsr_variations .hsr-var-btn span{font-weight: bold; font-size: 12px;}\r\n\t\t#hsr_variations .hsr-var-btn span bdi{color:#1b8f8f;}\r\n\t\t#hsr_variations .hsr-var-btn span del{text-decoration-color: #999 !important;}\r\n\t\t#hsr_variations .hsr-var-btn span del bdi{color:#999; font-weight: 600;}\r\n\t\t#hsr_variations .hsr-var-btn.active{border-color:#1b8f8f;background:#eaf6f6;}\r\n\t\t#hsr_variations .hsr-var-btn strong{font-weight: 700;font-size: 14px;color: #090925;}\r\n\t\t#hsr_variations .hsr-var-btn small{font-size: 11.5px;color: #8C8CA0;font-weight: 600;}\r\n\t<\/style>\r\n\r\n\t<script src=\"https:\/\/js.stripe.com\/v3\/\"><\/script>\r\n\t<script>\r\n\t(function($){\r\n\t\tvar AJAX_URL   = \"https:\\\/\\\/page.composie.io\\\/Slo\\\/home-services-guide-01\\\/wp-admin\\\/admin-ajax.php\";\r\n\t\tvar NONCE      = \"4d75ceb359\";\r\n\t\tvar STRIPE_PK  = \"pk_live_51TtwsWGYZzagWcint7dnYSCgjanz7I6rAeZrhg59jaRFbjm6bi3siB0w3uQMrxf8vHAV2mnRjoBQkKw2fj9NhA6r00rNUKUTnL\";\r\n\t\tvar SHOW_ZIP   = false;\r\n\t\tvar LOCK_MINUTES = 15;\r\n\r\n\t\t\/\/ Persistent visitor identity: survives page refresh so an active lock\r\n\t\t\/\/ on a category stays tied to this browser instead of resetting.\r\n\t\tvar TOKEN_KEY = 'hsr_visitor_token';\r\n\t\tvar TOKEN = null;\r\n\t\ttry { TOKEN = window.localStorage.getItem(TOKEN_KEY); } catch(e){ TOKEN = null; }\r\n\t\tif(!TOKEN){\r\n\t\t\tTOKEN = 'hsr_' + Date.now().toString(36) + '_' + Math.random().toString(36).slice(2);\r\n\t\t\ttry { window.localStorage.setItem(TOKEN_KEY, TOKEN); } catch(e){}\r\n\t\t}\r\n\r\n\t\tvar STATE_KEY = 'hsr_wizard_state';\r\n\r\n\t\tvar state = {\r\n\t\t\tdetails: {},\r\n\t\t\tmode: 'category', \/\/ 'category' | 'business_type'\r\n\t\t\tproduct_id: null,\r\n\t\t\tproduct_name: '',\r\n\t\t\tsearch_product_term: '', \/\/ matched word from #hsr_product_search, saved to the order's ACF field on submit\r\n\t\t\tbusiness_type: '',\r\n\t\t\tvariation_id: null,\r\n\t\t\tvariation_price: 0,\r\n\t\t\taddon: false,\r\n\t\t\torder_id: null,\r\n\t\t\tpayment_intent_id: null,\r\n\t\t\tlock_expires: 0\r\n\t\t};\r\n\r\n\t\t\/\/ Label to show for the currently selected category: \"alias (Product Title)\"\r\n\t\t\/\/ if it was picked via a search-result alias that differs from the real\r\n\t\t\/\/ product title, otherwise just the plain product title.\r\n\t\tfunction hsrSelectionLabel(){\r\n\t\t\tif(state.search_product_term && state.product_name && state.search_product_term.toLowerCase() !== state.product_name.toLowerCase()){\r\n\t\t\t\treturn state.search_product_term + ' (' + state.product_name + ')';\r\n\t\t\t}\r\n\t\t\treturn state.product_name;\r\n\t\t}\r\n\r\n\t\tfunction saveState(){\r\n\t\t\ttry { window.localStorage.setItem(STATE_KEY, JSON.stringify({ s: state, step: currentStep, paid: paymentLocked })); } catch(e){}\r\n\t\t}\r\n\t\tfunction clearSavedState(){\r\n\t\t\ttry { window.localStorage.removeItem(STATE_KEY); } catch(e){}\r\n\t\t}\r\n\r\n\t\tvar stripe, cardNumberElement, cardExpiryElement, cardCvcElement, elements;\r\n\t\tfunction ensureStripe(){\r\n\t\t\tif(!stripe && window.Stripe && STRIPE_PK){\r\n\t\t\t\tstripe = Stripe(STRIPE_PK);\r\n\t\t\t}\r\n\t\t\treturn stripe;\r\n\t\t}\r\n\r\n\t\tvar currentStep = 1;\r\n\t\tvar paymentLocked = false; \/\/ true once payment has succeeded - back button hidden after that\r\n\r\n\t\tfunction showStep(n){\r\n\t\t\tcurrentStep = n;\r\n\t\t\t$('.hsr-panel').hide();\r\n\t\t\t$('#hsr-step-'+n).show();\r\n\t\t\tupdateStepper(n);\r\n\t\t\t$('#hsr_back_btn').toggle( n > 1 && ! paymentLocked );\r\n\t\t}\r\n\r\n\t\tfunction updateStepper(n){\r\n\t\t\t$('.hsr-step-badge').each(function(){\r\n\t\t\t\tvar step = parseInt($(this).data('step'), 10);\r\n\t\t\t\tvar $span = $(this).find('span');\r\n\t\t\t\t$(this).removeClass('active completed');\r\n\t\t\t\tif(step < n){\r\n\t\t\t\t\t$(this).addClass('completed');\r\n\t\t\t\t\t$span.html('&#10003;');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$span.html('<em data-num=\"'+step+'\">'+step+'<\/em>');\r\n\t\t\t\t\tif(step === n){ $(this).addClass('active'); }\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t$('.hsr-step-line').each(function(){\r\n\t\t\t\tvar line = parseInt($(this).data('line'), 10);\r\n\t\t\t\t$(this).toggleClass('completed', line < n);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t$('#hsr_back_btn').on('click', function(){\r\n\t\t\tif(paymentLocked) return;\r\n\t\t\tif(currentStep === 2){\r\n\t\t\t\tshowStep(1);\r\n\t\t\t} else if(currentStep === 3){\r\n\t\t\t\t$('#hsr_future_edition_box, #hsr_hold_box, #hsr_payment_box, #hsr_reserved_box').hide();\r\n\t\t\t\t$('#hsr_future_success').hide();\r\n\t\t\t\tclearInterval(timerInterval);\r\n\t\t\t\tshowStep(2);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t\/* ---------- STEP 1 : validation ---------- *\/\r\n\t\tvar EMAIL_RE = \/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$\/;\r\n\t\tvar NAME_RE  = \/^[A-Za-z\\u00C0-\\u017F' -]{2,50}$\/;\r\n\t\tvar PHONE_RE = \/^[0-9+()\\s-]{7,20}$\/;\r\n\r\n\t\tfunction digitsOnly(str){ return (str.match(\/\\d\/g) || []).length; }\r\n\r\n\t\tvar step1Validators = {\r\n\t\t\thsr_first_name: function(v){\r\n\t\t\t\tif(!v) return 'First name is required.';\r\n\t\t\t\tif(!NAME_RE.test(v)) return 'Please enter a valid first name (letters only).';\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\thsr_last_name: function(v){\r\n\t\t\t\tif(!v) return 'Last name is required.';\r\n\t\t\t\tif(!NAME_RE.test(v)) return 'Please enter a valid last name (letters only).';\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\thsr_email: function(v){\r\n\t\t\t\tif(!v) return 'Email is required.';\r\n\t\t\t\tif(v.length > 254 || !EMAIL_RE.test(v)) return 'Please enter a valid email address (e.g. you@business.com).';\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\thsr_phone: function(v){\r\n\t\t\t\tif(!v) return 'Phone is required.';\r\n\t\t\t\tif(!PHONE_RE.test(v) || digitsOnly(v) < 7) return 'Please enter a valid phone number (at least 7 digits).';\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\thsr_business_name: function(v){\r\n\t\t\t\tif(!v) return 'Business name is required.';\r\n\t\t\t\tif(v.length < 2 || v.length > 100) return 'Please enter your business name.';\r\n\t\t\t\treturn '';\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction validateField(id){\r\n\t\t\tvar val = $('#'+id).val().trim();\r\n\t\t\tvar msg = step1Validators[id](val);\r\n\t\t\t$('#'+id+'_error').text(msg);\r\n\t\t\t$('#'+id).toggleClass('hsr-invalid', !!msg);\r\n\t\t\treturn !msg;\r\n\t\t}\r\n\r\n\t\t\/\/ Silent check (no error UI) used just to color the Next button once\r\n\t\t\/\/ every field is actually filled in and valid.\r\n\t\tfunction refreshStep1ButtonState(){\r\n\t\t\tvar allValid = true;\r\n\t\t\t$.each(step1Validators, function(id, fn){\r\n\t\t\t\tif(fn($('#'+id).val().trim())){ allValid = false; }\r\n\t\t\t});\r\n\t\t\t$('#hsr-to-step2').toggleClass('active', allValid);\r\n\t\t}\r\n\r\n\t\t$.each(step1Validators, function(id){\r\n\t\t\t$('#'+id).on('blur', function(){ validateField(id); });\r\n\t\t\t$('#'+id).on('input', function(){\r\n\t\t\t\tif($(this).hasClass('hsr-invalid')) validateField(id);\r\n\t\t\t\trefreshStep1ButtonState();\r\n\t\t\t});\r\n\t\t});\r\n\t\trefreshStep1ButtonState(); \/\/ in case fields were restored from a saved state\r\n\r\n\t\t$('#hsr-to-step2').on('click', function(){\r\n\t\t\tvar allValid = true;\r\n\t\t\t$.each(step1Validators, function(id){\r\n\t\t\t\tif(!validateField(id)) allValid = false;\r\n\t\t\t});\r\n\r\n\t\t\tif(!allValid){\r\n\t\t\t\t$('#hsr-step1-error').text('Please fix the highlighted fields above.');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t$('#hsr-step1-error').text('');\r\n\t\t\tstate.details = {\r\n\t\t\t\tfirst_name: $('#hsr_first_name').val().trim(),\r\n\t\t\t\tlast_name: $('#hsr_last_name').val().trim(),\r\n\t\t\t\temail: $('#hsr_email').val().trim(),\r\n\t\t\t\tphone: $('#hsr_phone').val().trim(),\r\n\t\t\t\tbusiness_name: $('#hsr_business_name').val().trim()\r\n\t\t\t};\r\n\t\t\tshowStep(2);\r\n\t\t\tsaveState();\r\n\t\t});\r\n\r\n\t\t\/* ---------- STEP 2 : category selection ---------- *\/\r\n\t\tfunction selectCategory(id, name){\r\n\t\t\tstate.mode = 'category';\r\n\t\t\tstate.product_id = id;\r\n\t\t\tstate.product_name = name;\r\n\t\t\tstate.search_product_term = ''; \/\/ reset by default; set explicitly below for search-result clicks\r\n\t\t\t$('#hsr_selected_category_name').text(name);\r\n\t\t\t$('#hsr_selected_category').show();\r\n\t\t\t$('.hsr-cat-btn').removeClass('active');\r\n\t\t\t$('.hsr-cat-btn[data-product-id=\"'+id+'\"]').addClass('active');\r\n\t\t\t$('#hsr-check-availability').addClass('active');\r\n\t\t\tsaveState();\r\n\t\t}\r\n\r\n\t\t$(document).on('click', '.hsr-cat-btn', function(){\r\n\t\t\tvar id   = $(this).data('product-id');\r\n\t\t\tvar name = $(this).data('product-name') || $(this).text(); \/\/ real product title - used for internal state\/messages, unchanged\r\n\r\n\t\t\tselectCategory(id, name);\r\n\r\n\t\t\tif($(this).hasClass('hsr-search-result-btn')){\r\n\t\t\t\tvar matchedWord = $(this).data('display-label') || name;\r\n\t\t\t\tstate.search_product_term = matchedWord;\r\n\t\t\t\t$('#hsr_product_search').val(matchedWord);\r\n\t\t\t\t$('#hsr_search_results').empty().hide();\r\n\t\t\t\tsaveState();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$('#hsr_change_category').on('click', function(e){\r\n\t\t\te.preventDefault();\r\n\t\t\tstate.product_id = null;\r\n\t\t\t$('#hsr_selected_category').hide();\r\n\t\t\t$('.hsr-cat-btn').removeClass('active');\r\n\t\t\t$('#hsr-check-availability').removeClass('active');\r\n\t\t});\r\n\r\n\t\tvar searchTimer;\r\n\t\t$('#hsr_product_search').on('input', function(){\r\n\t\t\tvar term = $(this).val();\r\n\t\t\t\/\/ Clear whatever is currently showing right away - stale results\r\n\t\t\t\/\/ shouldn't linger while the user is still typing \/ waiting on the\r\n\t\t\t\/\/ next search response.\r\n\t\t\t$('#hsr_search_results').empty().hide();\r\n\t\t\tclearTimeout(searchTimer);\r\n\t\t\tif(term.length < 2){\r\n\t\t\t\t$('#hsr_search_loader').removeClass('show');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t$('#hsr_search_loader').addClass('show');\r\n\t\t\tsearchTimer = setTimeout(function(){\r\n\t\t\t\t$.post(AJAX_URL, { action:'hsr_search_products', nonce:NONCE, term:term }, function(res){\r\n\t\t\t\t\t\/\/ If the box no longer has this exact term (user kept typing while\r\n\t\t\t\t\t\/\/ this request was in flight), don't show now-outdated results.\r\n\t\t\t\t\tif($('#hsr_product_search').val() !== term){ return; }\r\n\t\t\t\t\tvar html = '';\r\n\t\t\t\t\tif(res.success){\r\n\t\t\t\t\t\t$.each(res.data, function(i, p){\r\n\t\t\t\t\t\t\tvar statusIcon = p.active\r\n\t\t\t\t\t\t\t? '<span class=\"hsr-status-icon hsr-status-active\" title=\"Available\">&#10003;<\/span>'\r\n\t\t\t\t\t\t\t: '<span class=\"hsr-status-icon hsr-status-inactive\" title=\"Already reserved\">&#10007;<\/span>';\r\n\t\t\t\t\t\thtml += '<button type=\"button\" class=\"hsr-cat-btn hsr-search-result-btn\" data-product-id=\"'+p.id+'\" data-product-name=\"'+p.product_title+'\" data-display-label=\"'+p.display_label+'\">'+statusIcon+' '+p.display_label+' <span class=\"cat\">'+p.product_title+'<\/span><\/button>';\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$('#hsr_search_results').html(html).toggle(!!html);\r\n\t\t\t\t}).always(function(){\r\n\t\t\t\t\t$('#hsr_search_loader').removeClass('show');\r\n\t\t\t\t});\r\n\t\t\t}, 350);\r\n\t\t});\r\n\r\n\t\t$('#hsr_show_business_type').on('click', function(){\r\n\t\t\tstate.mode = 'business_type';\r\n\t\t\t$('#hsr-category-block').addClass('hsr-disabled');\r\n\t\t\t$('#hsr_not_home_intro').hide();\r\n\t\t\t$('#hsr_business_type_block').show();\r\n\t\t});\r\n\t\t$('#hsr_back_to_home_service').on('click', function(e){\r\n\t\t\te.preventDefault();\r\n\t\t\tstate.mode = 'category';\r\n\t\t\t$('#hsr-category-block').removeClass('hsr-disabled');\r\n\t\t\t$('#hsr_not_home_intro').show();\r\n\t\t\t$('#hsr_business_type_block').hide();\r\n\t\t});\r\n\r\n\t\t$('#hsr-check-availability').on('click', function(){\r\n\t\t\t$('#hsr-step2-error').text('');\r\n\r\n\t\t\tif(state.mode === 'business_type'){\r\n\t\t\t\tstate.business_type = $('#hsr_business_type_input').val().trim();\r\n\t\t\t\tif(!state.business_type){\r\n\t\t\t\t\t$('#hsr-step2-error').text('Please tell us what kind of business you are.');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t$('#hsr_future_edition_box').show();\r\n\t\t\t\t$('#hsr_hold_box').hide();\r\n\t\t\t\t$('#hsr_future_text').text(\"We're starting with home services. We'll email \"+state.details.email+\" if a future guide fits \"+state.business_type+\". No payment, no commitment.\");\r\n\t\t\t\tshowStep(3);\r\n\t\t\t\tsaveState();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(!state.product_id){\r\n\t\t\t\t$('#hsr-step2-error').text('Please choose a category first.');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar $btn = $(this).prop('disabled', true);\r\n\t\t\tvar originalBtnText = $btn.html();\r\n\t\t\t$btn.html('Checking availability...');\r\n\r\n\t\t\t$.post(AJAX_URL, {\r\n\t\t\t\taction:'hsr_check_availability', nonce:NONCE, token:TOKEN, product_id: state.product_id\r\n\t\t\t}, function(res){\r\n\t\t\t\tif(!res.success){\r\n\t\t\t\t\t$('#hsr-step2-error').text(res.data && res.data.message ? res.data.message : 'Something went wrong.');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(res.data.non_home_service){\r\n\t\t\t\t\tstate.mode = 'non_home_service_product';\r\n\t\t\t\t\t$('#hsr_hold_box').hide();\r\n\t\t\t\t\t$('#hsr_future_edition_box').show();\r\n\t\t\t\t\t$('#hsr_future_text').text(\"We're starting with home services. We'll email \"+state.details.email+\" if a future guide fits \"+state.product_name+\". No payment, no commitment.\");\r\n\t\t\t\t\tshowStep(3);\r\n\t\t\t\t\tsaveState();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$('#hsr_future_edition_box').hide();\r\n\t\t\t\t$('#hsr_hold_box').show();\r\n\r\n\t\t\t\tif(res.data.available){\r\n\t\t\t\t\t$('#hsr_hold_banner').show();\r\n\t\t\t\t\t$('#hsr_hold_label').text(hsrSelectionLabel()+' is held for you');\r\n\t\t\t\t\tstate.lock_expires = res.data.expires;\r\n\t\t\t\t\tstartTimer();\r\n\t\t\t\t\t$('#hsr_available_box').show();\r\n\t\t\t\t\t$('#hsr_available_content').show();\r\n\t\t\t\t\t$('#hsr_available_expired').hide();\r\n\t\t\t\t\t$('#hsr_reserve_loading').hide();\r\n\t\t\t\t\t$('#hsr_unavailable_box').hide();\r\n\t\t\t\t\t$('#hsr_available_title').text(hsrSelectionLabel()+' is available.');\r\n\t\t\t\t\t$('#hsr_available_desc').text('You can reserve '+state.product_name+' for the next issue. A reservation covers one category only. While that spot is yours, no other '+state.product_name+' business appears in the same guide.');\r\n\t\t\t\t\t$('#hsr_reserve_btn').text('Reserve '+state.product_name);\r\n\t\t\t\t\t$('#hsr_payment_box, #hsr_reserved_box').hide();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tclearInterval(timerInterval);\r\n\t\t\t\t\t$('#hsr_hold_banner').hide();\r\n\t\t\t\t\t$('#hsr_available_box').hide();\r\n\t\t\t\t\t$('#hsr_unavailable_box').show();\r\n\t\t\t\t\t$('#hsr_unavailable_title').text(state.product_name+' category is taken.');\r\n\t\t\t\t\t$('#hsr_unavailable_text').text('Only one '+state.product_name+' business appears in each issue. You can join the list for the next guide or ask about a private mailer.');\r\n\t\t\t\t\t$('#hsr_payment_box, #hsr_reserved_box').hide();\r\n\t\t\t\t}\r\n\t\t\t\tshowStep(3);\r\n\t\t\t\tsaveState();\r\n\t\t\t}).fail(function(){\r\n\t\t\t\t$('#hsr-step2-error').text('Network error, please try again.');\r\n\t\t\t}).always(function(){\r\n\t\t\t\t$btn.prop('disabled', false).html(originalBtnText);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t\/* ---------- STEP 3 : timer ---------- *\/\r\n\t\tvar timerInterval;\r\n\t\tfunction startTimer(){\r\n\t\t\tclearInterval(timerInterval);\r\n\t\t\ttimerInterval = setInterval(function(){\r\n\t\t\t\tvar remaining = state.lock_expires - Math.floor(Date.now()\/1000);\r\n\t\t\t\tif(remaining <= 0){\r\n\t\t\t\t\tclearInterval(timerInterval);\r\n\t\t\t\t\t$('#hsr_hold_banner').hide();\r\n\t\t\t\t\t$('#hsr_payment_box').hide();\r\n\t\t\t\t\t$('#hsr_available_content').hide();\r\n\t\t\t\t\t$('#hsr_expired_title').text('Your '+LOCK_MINUTES+'-minute hold on '+hsrSelectionLabel()+' has expired.');\r\n\t\t\t\t\t$('#hsr_available_box').show();\r\n\t\t\t\t\t$('#hsr_available_expired').show();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar m = Math.floor(remaining\/60), s = remaining%60;\r\n\t\t\t\t$('#hsr_timer').text( (m<10?'0':'')+m+':'+(s<10?'0':'')+s );\r\n\t\t\t}, 1000);\r\n\t\t}\r\n\r\n\t\t\/* ---------- Reserve -> load variations + mount Stripe card ---------- *\/\r\n\t\tvar variationsData = {}; \/\/ variation_id -> full data (price\/description\/etc.)\r\n\r\n\t\t\/* ---------- Ad layout preview widget ---------- *\/\r\n\t\tvar hsrAdPositionByName = { 'Spotlight': 0, 'Standard': 1, 'Starter': 5 };\r\n\t\tvar hsrAdBlockSettings = [\r\n\t\t\t{ full: true },\r\n\t\t\t{ half: true },\r\n\t\t\t{ half: true },\r\n\t\t\t{ half: true },\r\n\t\t\t{ half: true },\r\n\t\t\t{ third: true },\r\n\t\t\t{ third: true },\r\n\t\t\t{ third: true, dashed: true }\r\n\t\t];\r\n\t\tvar hsrAdBlocks = [];\r\n\t\tvar hsrAdFrame, hsrAdLabel, hsrAdBuilt = false;\r\n\r\n\t\tfunction hsrAdCreateBlocks(){\r\n\t\t\tif(hsrAdBuilt) return;\r\n\t\t\tvar $matrix = $('#hsr_layout_matrix');\r\n\t\t\tif(!$matrix.length) return;\r\n\t\t\thsrAdBuilt = true;\r\n\r\n\t\t\t$.each(hsrAdBlockSettings, function(i, item){\r\n\t\t\t\tvar $block = $('<div class=\"hsr-grid-block\"><\/div>');\r\n\t\t\t\tif(item.full)   $block.addClass('hsr-is-full');\r\n\t\t\t\tif(item.half)   $block.addClass('hsr-is-half');\r\n\t\t\t\tif(item.third)  $block.addClass('hsr-is-third');\r\n\t\t\t\tif(item.dashed) $block.addClass('hsr-is-dashed');\r\n\t\t\t\t$matrix.append($block);\r\n\t\t\t\thsrAdBlocks.push($block);\r\n\t\t\t});\r\n\r\n\t\t\thsrAdLabel = $('<span class=\"hsr-active-label\"><\/span>');\r\n\t\t\thsrAdFrame = $('<div class=\"hsr-active-frame\"><\/div>').append(hsrAdLabel);\r\n\t\t\t$matrix.append(hsrAdFrame);\r\n\t\t}\r\n\r\n\t\tfunction hsrAdActivateOption(optionName){\r\n\t\t\tif(!hsrAdBuilt) hsrAdCreateBlocks();\r\n\t\t\tvar targetIndex = hsrAdPositionByName[optionName];\r\n\t\t\tif(targetIndex === undefined || !hsrAdBlocks[targetIndex]) return;\r\n\r\n\t\t\tvar $target = hsrAdBlocks[targetIndex];\r\n\t\t\thsrAdFrame.css({\r\n\t\t\t\ttop:    $target.position().top,\r\n\t\t\t\tleft:   $target.position().left,\r\n\t\t\t\twidth:  $target.outerWidth(),\r\n\t\t\t\theight: $target.outerHeight()\r\n\t\t\t});\r\n\r\n\t\t\thsrAdLabel.removeClass('hsr-visible').text(optionName);\r\n\t\t\tsetTimeout(function(){ hsrAdLabel.addClass('hsr-visible'); }, 150);\r\n\t\t}\r\n\r\n\t\thsrAdCreateBlocks(); \/\/ grid can be built immediately, independent of loaded variations\r\n\r\n\t\tfunction showVariationDetails(v){\r\n\t\t\tif(!v){ $('#hsr_variation_regular_price, #hsr_variation_sale_price').hide(); $('#hsr_variation_description').html(''); return; }\r\n\t\t\tif(v.regular_price_display){\r\n\t\t\t\t$('#hsr_variation_regular_price').text('Regular price: ' + $('<div>').html(v.regular_price_display).text()).show();\r\n\t\t\t} else {\r\n\t\t\t\t$('#hsr_variation_regular_price').hide();\r\n\t\t\t}\r\n\t\t\tif(v.sale_price_display){\r\n\t\t\t\t$('#hsr_variation_sale_price').text('Sale price: ' + $('<div>').html(v.sale_price_display).text()).show();\r\n\t\t\t} else {\r\n\t\t\t\t$('#hsr_variation_sale_price').hide();\r\n\t\t\t}\r\n\t\t\t$('#hsr_variation_description').html(v.description || '');\r\n\t\t}\r\n\r\n\t\t$('#hsr_reserve_btn').on('click', function(){\r\n\t\t\t$('#hsr_available_box').hide();\r\n\t\t\t$('#hsr_reserve_loading').show();\r\n\t\t\t$.post(AJAX_URL, { action:'hsr_get_variations', nonce:NONCE, product_id: state.product_id }, function(res){\r\n\t\t\t\tif(!res.success){ alert('Could not load ad sizes.'); $('#hsr_reserve_loading').hide(); $('#hsr_available_box').show(); return; }\r\n\t\t\t\tvar html = '';\r\n\t\t\t\tvariationsData = {};\r\n\t\t\t\t$.each(res.data, function(i, v){\r\n\t\t\t\t\tvariationsData[v.variation_id] = v;\r\n\t\t\t\t\thtml += '<div class=\"hsr-var-btn'+(i===0?' active':'')+'\" data-variation-id=\"'+v.variation_id+'\" data-price=\"'+v.price+'\">'+\r\n    '<strong>'+v.name+'<\/strong>'+\r\n    (v.weight ? '<br><small>'+v.weight+' in<\/small>' : '')+\r\n    '<br><span><del>'+ (v.regular_price_display || '') +'<\/del> - '+ (v.sale_price_display || '') +'<\/span>'+\r\n    '<\/div>';\r\n\t\t\t\t});\r\n\t\t\t\t$('#hsr_variations').html(html);\r\n\t\t\t\tif(res.data.length){\r\n\t\t\t\t\tstate.variation_id = res.data[0].variation_id;\r\n\t\t\t\t\tstate.variation_price = res.data[0].price;\r\n\t\t\t\t\tshowVariationDetails(res.data[0]);\r\n\t\t\t\t}\r\n\t\t\t\t$('#hsr_strongest_position').prop('checked', !!state.addon);\r\n\t\t\t\tupdateAddonTotal();\r\n\t\t\t\t$('#hsr_one_category_note').text('One business, one category. This reserves '+state.product_name+' only. Need a second category? You can start a separate reservation for it after this one.');\r\n\t\t\t\t$('#hsr_reserve_loading').hide();\r\n\t\t\t\t$('#hsr_payment_box').show();\r\n\t\t\t\tif(res.data.length){\r\n\t\t\t\t\thsrAdActivateOption(res.data[0].name);\r\n\t\t\t\t}\r\n\t\t\t\tmountCard();\r\n\t\t\t}).fail(function(){\r\n\t\t\t\talert('Network error, please try again.');\r\n\t\t\t\t$('#hsr_reserve_loading').hide();\r\n\t\t\t\t$('#hsr_available_box').show();\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tfunction updateAddonTotal(){\r\n\t\t\tif(state.addon && state.variation_price){\r\n\t\t\t\tvar total = state.variation_price + 99;\r\n\t\t\t\t$('#hsr_addon_total').text('Total: $' + total.toFixed(2)).show();\r\n\t\t\t} else {\r\n\t\t\t\t$('#hsr_addon_total').hide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t$(document).on('click', '.hsr-var-btn', function(){\r\n\t\t\t$('.hsr-var-btn').removeClass('active');\r\n\t\t\t$(this).addClass('active');\r\n\t\t\tstate.variation_id = $(this).data('variation-id');\r\n\t\t\tstate.variation_price = parseFloat($(this).data('price'));\r\n\t\t\tshowVariationDetails(variationsData[state.variation_id]);\r\n\t\t\thsrAdActivateOption($(this).find('strong').text().trim());\r\n\t\t\tupdateAddonTotal();\r\n\t\t\tsaveState();\r\n\t\t});\r\n\r\n\t\t$('#hsr_strongest_position').on('change', function(){\r\n\t\t\tstate.addon = $(this).is(':checked');\r\n\t\t\tupdateAddonTotal();\r\n\t\t\tsaveState();\r\n\t\t});\r\n\r\n\t\tfunction mountCard(){\r\n\t\t\tif(!ensureStripe()){ $('#hsr-card-errors').text('Stripe is not configured.'); return; }\r\n\t\t\tif(cardNumberElement) return; \/\/ already mounted\r\n\t\t\telements = stripe.elements();\r\n\t\t\tcardNumberElement  = elements.create('cardNumber');\r\n\t\t\tcardExpiryElement  = elements.create('cardExpiry');\r\n\t\t\tcardCvcElement     = elements.create('cardCvc');\r\n\t\t\tcardNumberElement.mount('#hsr-card-number');\r\n\t\t\tcardExpiryElement.mount('#hsr-card-expiry');\r\n\t\t\tcardCvcElement.mount('#hsr-card-cvc');\r\n\r\n\t\t\tfunction handleCardError(event){\r\n\t\t\t\t$('#hsr-card-errors').text(event.error ? event.error.message : '');\r\n\t\t\t}\r\n\t\t\tcardNumberElement.on('change', handleCardError);\r\n\t\t\tcardExpiryElement.on('change', handleCardError);\r\n\t\t\tcardCvcElement.on('change', handleCardError);\r\n\t\t}\r\n\r\n\t\tfunction validateZipField(){\r\n\t\t\tif(!SHOW_ZIP) return true;\r\n\t\t\tvar val = $('#hsr_card_zip').val().trim();\r\n\t\t\tif(!val){\r\n\t\t\t\t$('#hsr_card_zip').addClass('hsr-invalid');\r\n\t\t\t\t$('#hsr_card_zip_error').text('ZIP\/postal code is required.');\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t$('#hsr_card_zip').removeClass('hsr-invalid');\r\n\t\t\t$('#hsr_card_zip_error').text('');\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t$(document).on('input blur', '#hsr_card_zip', function(){\r\n\t\t\tif($(this).hasClass('hsr-invalid') || document.activeElement !== this){ validateZipField(); }\r\n\t\t});\r\n\r\n\t\t\/* ---------- Pay & reserve ---------- *\/\r\n\t\t$('#hsr_pay_btn').on('click', function(){\r\n\t\t\tif(!state.variation_id){ $('#hsr-payment-error').text('Please choose an ad size.'); return; }\r\n\t\t\tif(!validateZipField()){ $('#hsr-payment-error').text('Please fix the highlighted field above.'); return; }\r\n\t\t\tif(!ensureStripe()){ $('#hsr-payment-error').text('Stripe is not configured.'); return; }\r\n\t\t\tvar $btn = $(this).prop('disabled', true).text('Processing...');\r\n\t\t\t$('#hsr-payment-error').text('');\r\n\r\n\t\t\t$.post(AJAX_URL, {\r\n\t\t\t\taction:'hsr_create_payment_intent', nonce:NONCE, token:TOKEN,\r\n\t\t\t\tproduct_id: state.product_id, variation_id: state.variation_id, addon: state.addon ? 1 : 0\r\n\t\t\t}, function(res){\r\n\t\t\t\tif(!res.success){\r\n\t\t\t\t\t$('#hsr-payment-error').text(res.data.message || 'Could not start payment.');\r\n\t\t\t\t\t$btn.prop('disabled', false).text('Pay and reserve my category');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar billingDetails = {\r\n\t\t\t\t\tname: state.details.first_name + ' ' + state.details.last_name,\r\n\t\t\t\t\temail: state.details.email,\r\n\t\t\t\t\tphone: state.details.phone\r\n\t\t\t\t};\r\n\t\t\t\tvar zipVal = $('#hsr_card_zip').val();\r\n\t\t\t\tif(zipVal){\r\n\t\t\t\t\tbillingDetails.address = { postal_code: zipVal };\r\n\t\t\t\t}\r\n\t\t\t\tstripe.confirmCardPayment(res.data.client_secret, {\r\n\t\t\t\t\tpayment_method: {\r\n\t\t\t\t\t\tcard: cardNumberElement,\r\n\t\t\t\t\t\tbilling_details: billingDetails\r\n\t\t\t\t\t}\r\n\t\t\t\t}).then(function(result){\r\n\t\t\t\t\tif(result.error){\r\n\t\t\t\t\t\t$('#hsr-payment-error').text(result.error.message);\r\n\t\t\t\t\t\t$btn.prop('disabled', false).text('Pay and reserve my category');\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(result.paymentIntent.status === 'succeeded'){\r\n\t\t\t\t\t\tfinalizeReservation(result.paymentIntent.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}).fail(function(){\r\n\t\t\t\t$('#hsr-payment-error').text('Network error, please try again.');\r\n\t\t\t\t$btn.prop('disabled', false).text('Pay and reserve my category');\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tfunction finalizeReservation(paymentIntentId){\r\n\t\t\t$.post(AJAX_URL, {\r\n\t\t\t\taction:'hsr_finalize_reservation', nonce:NONCE, token:TOKEN,\r\n\t\t\t\tproduct_id: state.product_id, variation_id: state.variation_id, addon: state.addon ? 1 : 0,\r\n\t\t\t\tpayment_intent_id: paymentIntentId,\r\n\t\t\t\tsearch_product: state.search_product_term || '',\r\n\t\t\t\tfirst_name: state.details.first_name, last_name: state.details.last_name,\r\n\t\t\t\temail: state.details.email, phone: state.details.phone, business_name: state.details.business_name\r\n\t\t\t}, function(res){\r\n\t\t\t\tif(!res.success){\r\n\t\t\t\t\t$('#hsr-payment-error').text(res.data.message || 'Payment succeeded but reservation could not be saved. Please contact support.');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tstate.order_id = res.data.order_id;\r\n\t\t\t\tpaymentLocked = true;\r\n\t\t\t\tclearInterval(timerInterval);\r\n\t\t\t\t$('#hsr_hold_banner').hide();\r\n\t\t\t\t$('#hsr_back_btn').hide();\r\n\t\t\t\t$('#hsr_payment_box').hide();\r\n\t\t\t\t$('#hsr_available_box').hide();\r\n\t\t\t\t$('#hsr_reserved_box').show();\r\n\t\t\t\t$('#hsr_ad_business_name').val(state.details.business_name);\r\n\t\t\t\t$('#hsr_ad_phone').val(state.details.phone);\r\n\t\t\t\tsaveState();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t\/* ---------- Ad details (after reservation) ---------- *\/\r\n\t\t$('#hsr_send_ad_details_btn').on('click', function(){\r\n\t\t\tvar $btn = $(this).prop('disabled', true).text('Sending...');\r\n\t\t\tvar fd = new FormData();\r\n\t\t\tfd.append('action', 'hsr_save_ad_details');\r\n\t\t\tfd.append('nonce', NONCE);\r\n\t\t\tfd.append('order_id', state.order_id);\r\n\t\t\tfd.append('business_name', $('#hsr_ad_business_name').val());\r\n\t\t\tfd.append('phone', $('#hsr_ad_phone').val());\r\n\t\t\tfd.append('qr_target', $('#hsr_ad_qr_target').val());\r\n\t\t\tfd.append('areas', $('#hsr_ad_areas').val());\r\n\t\t\tfd.append('services', $('#hsr_ad_services').val());\r\n\t\t\tfd.append('offer', $('#hsr_ad_offer').val());\r\n\t\t\tfd.append('differentiators', $('#hsr_ad_differentiators').val());\r\n\t\t\tfd.append('style', $('#hsr_ad_style').val());\r\n\t\t\tfd.append('avoid', $('#hsr_ad_avoid').val());\r\n\t\t\tfd.append('help_flag', $('input[name=hsr_ad_help]:checked').val());\r\n\t\t\tvar logo = $('#hsr_ad_logo')[0].files[0];\r\n\t\t\tif(logo) fd.append('logo', logo);\r\n\t\t\t$.each($('#hsr_ad_photos')[0].files, function(i, file){ fd.append('photos[]', file); });\r\n\r\n\t\t\t$.ajax({\r\n\t\t\t\turl: AJAX_URL, type:'POST', data: fd, processData:false, contentType:false\r\n\t\t\t}).done(function(res){\r\n\t\t\t\tif(res.success){\r\n\t\t\t\t\t$('#hsr_ad_details_form').hide();\r\n\t\t\t\t\t$('#hsr_ad_details_done').show();\r\n\t\t\t\t\tclearSavedState();\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$('#hsr-ad-details-error').text(res.data.message || 'Could not save details.');\r\n\t\t\t\t\t$btn.prop('disabled', false).text('Send My Ad Details \\u2713');\r\n\t\t\t\t}\r\n\t\t\t}).fail(function(){\r\n\t\t\t\t$('#hsr-ad-details-error').text('Network error, please try again.');\r\n\t\t\t\t$btn.prop('disabled', false).text('Send My Ad Details \\u2713');\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t\/* ---------- Join future-edition list ---------- *\/\r\n\t\t$(document).on('click', '.hsr-reset-form-btn', function(){\r\n\t\t\tclearSavedState();\r\n\t\t\tlocation.reload();\r\n\t\t});\r\n\r\n\t\t$('#hsr_join_future_list').on('click', function(){\r\n\t\t\tvar $btn = $(this).prop('disabled', true);\r\n\t\t\tvar originalText = $btn.text();\r\n\t\t\t$btn.text('Sending email...');\r\n\t\t\t$.post(AJAX_URL, {\r\n\t\t\t\taction:'hsr_join_future_list', nonce:NONCE,\r\n\t\t\t\tfirst_name: state.details.first_name, last_name: state.details.last_name,\r\n\t\t\t\temail: state.details.email, phone: state.details.phone,\r\n\t\t\t\tbusiness_name: state.details.business_name, business_type: state.business_type,\r\n\t\t\t\tselected_product: state.mode === 'non_home_service_product' ? state.product_name : ''\r\n\t\t\t}, function(res){\r\n\t\t\t\tif(res.success){\r\n\t\t\t\t\t$btn.text('Email sent \\u2713');\r\n\t\t\t\t\t$('#hsr_future_success').show();\r\n\t\t\t\t\tsetTimeout(function(){ clearSavedState(); location.reload(); }, 5000);\r\n\t\t\t\t} else {\r\n\t\t\t\t\talert(res.data.message || 'Could not submit, please try again.');\r\n\t\t\t\t\t$btn.prop('disabled', false).text(originalText);\r\n\t\t\t\t}\r\n\t\t\t}).fail(function(){\r\n\t\t\t\talert('Network error, please try again.');\r\n\t\t\t\t$btn.prop('disabled', false).text(originalText);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tfunction hsrSendUnavailableInterest($btn, wantsPrivateMailer){\r\n\t\t\tvar originalText = $btn.text();\r\n\t\t\t$btn.prop('disabled', true).text('Sending email...');\r\n\t\t\t$.post(AJAX_URL, {\r\n\t\t\t\taction:'hsr_unavailable_interest', nonce:NONCE,\r\n\t\t\t\tfirst_name: state.details.first_name, last_name: state.details.last_name,\r\n\t\t\t\temail: state.details.email, phone: state.details.phone,\r\n\t\t\t\tbusiness_name: state.details.business_name,\r\n\t\t\t\tselected_product: state.product_name,\r\n\t\t\t\tprivate_mailer: wantsPrivateMailer ? 1 : 0\r\n\t\t\t}, function(res){\r\n\t\t\t\tif(res.success){\r\n\t\t\t\t\t$btn.text('Email sent \\u2713');\r\n\t\t\t\t\t$('#hsr_join_next_issue_btn, #hsr_private_mailer_btn').prop('disabled', true);\r\n\t\t\t\t\t$('#hsr_unavailable_success').show();\r\n\t\t\t\t\tsetTimeout(function(){ clearSavedState(); location.reload(); }, 5000);\r\n\t\t\t\t} else {\r\n\t\t\t\t\talert(res.data.message || 'Could not submit, please try again.');\r\n\t\t\t\t\t$btn.prop('disabled', false).text(originalText);\r\n\t\t\t\t}\r\n\t\t\t}).fail(function(){\r\n\t\t\t\talert('Network error, please try again.');\r\n\t\t\t\t$btn.prop('disabled', false).text(originalText);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t$('#hsr_join_next_issue_btn').on('click', function(){\r\n\t\t\thsrSendUnavailableInterest($(this), false);\r\n\t\t});\r\n\t\t$('#hsr_private_mailer_btn').on('click', function(){\r\n\t\t\thsrSendUnavailableInterest($(this), true);\r\n\t\t});\r\n\r\n\t\tfunction fillDetailFields(){\r\n\t\t\tif(!state.details) return;\r\n\t\t\t$('#hsr_first_name').val(state.details.first_name||'');\r\n\t\t\t$('#hsr_last_name').val(state.details.last_name||'');\r\n\t\t\t$('#hsr_email').val(state.details.email||'');\r\n\t\t\t$('#hsr_phone').val(state.details.phone||'');\r\n\t\t\t$('#hsr_business_name').val(state.details.business_name||'');\r\n\t\t\trefreshStep1ButtonState();\r\n\t\t}\r\n\r\n\t\tfunction restoreState(){\r\n\t\t\tvar raw;\r\n\t\t\ttry { raw = window.localStorage.getItem(STATE_KEY); } catch(e){ raw = null; }\r\n\t\t\tif(!raw){ showStep(1); return; }\r\n\r\n\t\t\tvar saved;\r\n\t\t\ttry { saved = JSON.parse(raw); } catch(e){ saved = null; }\r\n\t\t\tif(!saved || !saved.s){ showStep(1); return; }\r\n\r\n\t\t\tstate = $.extend(state, saved.s);\r\n\t\t\tfillDetailFields();\r\n\r\n\t\t\t\/\/ Already paid before the refresh -> resume at the ad-details screen, never re-charge.\r\n\t\t\tif(saved.paid && state.order_id){\r\n\t\t\t\tpaymentLocked = true;\r\n\t\t\t\t$('#hsr_future_edition_box, #hsr_payment_box, #hsr_available_box, #hsr_unavailable_box').hide();\r\n\t\t\t\t$('#hsr_hold_banner').hide();\r\n\t\t\t\t$('#hsr_hold_box, #hsr_reserved_box').show();\r\n\t\t\t\t$('#hsr_ad_business_name').val(state.details.business_name);\r\n\t\t\t\t$('#hsr_ad_phone').val(state.details.phone);\r\n\t\t\t\tshowStep(3);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Was on the \"not a home-service business\" path.\r\n\t\t\tif(state.mode === 'business_type' && state.business_type && saved.step >= 3){\r\n\t\t\t\t$('#hsr_future_edition_box').show();\r\n\t\t\t\t$('#hsr_hold_box').hide();\r\n\t\t\t\t$('#hsr_future_text').text(\"We're starting with home services. We'll email \"+(state.details.email||'')+\" if a future guide fits \"+state.business_type+\". No payment, no commitment.\");\r\n\t\t\t\tshowStep(3);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Had a category selected - re-select it. Only auto-resume the hold\/timer\r\n\t\t\t\/\/ if the previous lock genuinely hadn't expired yet by the time of this\r\n\t\t\t\/\/ refresh. If it had already expired, don't silently grab a fresh lock and\r\n\t\t\t\/\/ jump to step 3 - send the user back to step 2 to check availability again.\r\n\t\t\tif(state.product_id && saved.step >= 2){\r\n\t\t\t\tselectCategory(state.product_id, state.product_name);\r\n\r\n\t\t\t\tvar stillActive = saved.step >= 3 && state.lock_expires && (state.lock_expires > Math.floor(Date.now()\/1000));\r\n\r\n\t\t\t\tif(stillActive){\r\n\t\t\t\t\t$.post(AJAX_URL, {\r\n\t\t\t\t\t\taction:'hsr_check_availability', nonce:NONCE, token:TOKEN, product_id: state.product_id\r\n\t\t\t\t\t}, function(res){\r\n\t\t\t\t\t\tif(!res.success){ showStep(2); return; }\r\n\t\t\t\t\t\t$('#hsr_future_edition_box').hide();\r\n\t\t\t\t\t\t$('#hsr_hold_box').show();\r\n\r\n\t\t\t\t\t\tif(res.data.available){\r\n\t\t\t\t\t\t\t$('#hsr_hold_banner').show();\r\n\t\t\t\t\t\t\t$('#hsr_hold_label').text(hsrSelectionLabel()+' is held for you');\r\n\t\t\t\t\t\t\tstate.lock_expires = res.data.expires;\r\n\t\t\t\t\t\t\tstartTimer();\r\n\t\t\t\t\t\t\t$('#hsr_available_box').show();\r\n\t\t\t\t\t\t\t$('#hsr_available_content').show();\r\n\t\t\t\t\t\t\t$('#hsr_available_expired').hide();\r\n\t\t\t\t\t\t\t$('#hsr_reserve_loading').hide();\r\n\t\t\t\t\t\t\t$('#hsr_unavailable_box').hide();\r\n\t\t\t\t\t\t\t$('#hsr_available_title').text(hsrSelectionLabel()+' is available.');\r\n\t\t\t\t\t\t\t$('#hsr_available_desc').text('You can reserve '+state.product_name+' for the next issue. A reservation covers one category only. While that spot is yours, no other '+state.product_name+' business appears in the same guide.');\r\n\t\t\t\t\t\t\t$('#hsr_reserve_btn').text('Reserve '+state.product_name);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tclearInterval(timerInterval);\r\n\t\t\t\t\t\t\t$('#hsr_hold_banner').hide();\r\n\t\t\t\t\t\t\t$('#hsr_available_box').hide();\r\n\t\t\t\t\t\t\t$('#hsr_unavailable_box').show();\r\n\t\t\t\t\t\t\t$('#hsr_unavailable_title').text(state.product_name+' category is taken.');\r\n\t\t\t\t\t\t\t$('#hsr_unavailable_text').text('Only one '+state.product_name+' business appears in each issue. You can join the list for the next guide or ask about a private mailer.');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tshowStep(3);\r\n\t\t\t\t\t\tsaveState();\r\n\t\t\t\t\t}).fail(function(){ showStep(2); });\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/ Previous hold (if any) had already expired - reset to step 2.\r\n\t\t\t\tif(saved.step >= 3){\r\n\t\t\t\t\t$('#hsr-step2-error').text('Your previous hold on '+state.product_name+' expired. Please check availability again.');\r\n\t\t\t\t}\r\n\t\t\t\tshowStep(2);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tshowStep( saved.step && saved.step <= 3 ? saved.step : 1 );\r\n\t\t}\r\n\r\n\t\trestoreState(); \/\/ resume wizard + active lock after a page refresh\r\n\r\n\t\t\/\/ Safety net: browser autofill (name\/email\/phone remembered by the browser)\r\n\t\t\/\/ sometimes fills fields a moment after the page loads without firing a\r\n\t\t\/\/ normal 'input' event, so re-check shortly after load too.\r\n\t\tsetTimeout(function(){\r\n\t\t\trefreshStep1ButtonState();\r\n\t\t\tif(state.product_id){ $('#hsr-check-availability').addClass('active'); }\r\n\t\t}, 400);\r\n\r\n\t})(jQuery);\r\n\tjQuery(function ($) {\r\n\t\t$('#hsr-to-step2, #hsr-check-availability, #hsr_reserve_btn, #hsr_send_ad_details_btn').on('click', function () {\r\n\t\t\t$('html, body').animate({\r\n\t\t\t\tscrollTop: $('#hsr-app').offset().top - 120\r\n\t\t\t}, 500);\r\n\t\t});\r\n\t});\r\n\t<\/script>\r\n\t\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-658650c9 alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-container uagb-block-c81bc2fe\">\n<div class=\"wp-block-uagb-advanced-heading uagb-block-6ad13fcd\"><p class=\"uagb-heading-text\">FAQ<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-503c2cde\"><h2 class=\"uagb-heading-text\">Common Questions<\/h2><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-b2d85079\">    <div class=\"faq-container float-star w-100\">\r\n\r\n        \r\n            <div class=\"faq-item float-star w-100\">\r\n                <h3 class=\"faq-question float-star w-100\">\r\n                    Can I reserve more than one category?                <\/h3>\r\n\r\n                <div class=\"faq-answer float-star w-100\">\r\n                    Each reservation covers one category only. If your business serves multiple distinct categories, for example Solar Installation and Solar Panel Cleaning, each category requires its own reservation.                <\/div>\r\n            <\/div>\r\n\r\n        \r\n            <div class=\"faq-item float-star w-100\">\r\n                <h3 class=\"faq-question float-star w-100\">\r\n                    When is my category officially reserved?                <\/h3>\r\n\r\n                <div class=\"faq-answer float-star w-100\">\r\n                    Your category is only reserved after payment has been successfully completed. Until then, your spot is simply being held during checkout.                <\/div>\r\n            <\/div>\r\n\r\n        \r\n            <div class=\"faq-item float-star w-100\">\r\n                <h3 class=\"faq-question float-star w-100\">\r\n                    How many homeowners receive the guide?                <\/h3>\r\n\r\n                <div class=\"faq-answer float-star w-100\">\r\n                    Each edition is delivered to approximately 5,000 local homeowners.                <\/div>\r\n            <\/div>\r\n\r\n        \r\n            <div class=\"faq-item float-star w-100\">\r\n                <h3 class=\"faq-question float-star w-100\">\r\n                    Can another business appear in my category?                <\/h3>\r\n\r\n                <div class=\"faq-answer float-star w-100\">\r\n                    No. Only one business is featured in each service category.                <\/div>\r\n            <\/div>\r\n\r\n        \r\n            <div class=\"faq-item float-star w-100\">\r\n                <h3 class=\"faq-question float-star w-100\">\r\n                    What happens after I reserve?                <\/h3>\r\n\r\n                <div class=\"faq-answer float-star w-100\">\r\n                    Immediately after payment you'll gain access to set up your ad by uploading your business information, logo, images, and messaging.                <\/div>\r\n            <\/div>\r\n\r\n        \r\n            <div class=\"faq-item float-star w-100\">\r\n                <h3 class=\"faq-question float-star w-100\">\r\n                    Is ad design included?                <\/h3>\r\n\r\n                <div class=\"faq-answer float-star w-100\">\r\n                    Yes. We'll design your ad at no cost to you using the information, logo, and images you provide. One round of unlimited changes is included before you approve it for print. Additional revision rounds are available for $75 each.                <\/div>\r\n            <\/div>\r\n\r\n        \r\n            <div class=\"faq-item float-star w-100\">\r\n                <h3 class=\"faq-question float-star w-100\">\r\n                    What if I have questions?                <\/h3>\r\n\r\n                <div class=\"faq-answer float-star w-100\">\r\n                    We're happy to help. Reach out anytime before or after reserving your category.                <\/div>\r\n            <\/div>\r\n\r\n        \r\n    <\/div>\r\n\r\n\t<script>\r\n\tvar SpeedControl = 400;\r\n\tjQuery(\".faq-item h3\").click(function () {\r\n\t\tjQuery('.faq-answer').slideUp(SpeedControl);\r\n\t\tjQuery('.faq-item').removeClass('active');\r\n\t\tif (!jQuery(this).parent().find('.faq-answer').is(\":visible\")) {\r\n\t\t\tjQuery(this).parent().find('.faq-answer').slideDown(SpeedControl);\r\n\t\t\tjQuery(this).parent().addClass('active');\r\n\t\t} else {\r\n\t\t\tjQuery(this).parent().find('.faq-answer').slideUp(SpeedControl);\r\n\t\t\tjQuery(this).parent().removeClass('active');\r\n\t\t}\r\n\t\treturn false;\r\n\t});\r\n\t<\/script>\r\n    \n<\/div>\n<\/div><\/div>\n\n\n\n<div id=\"notify\" class=\"wp-block-uagb-container notify-wrap uagb-block-000f43f6 alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-container uagb-block-80bd22bd alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-container uagb-block-aeedb114\">\n<div class=\"wp-block-uagb-advanced-heading uagb-block-6b582c97\"><p class=\"uagb-heading-text\">Not ready to reserve?<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-49bce914\"><h2 class=\"uagb-heading-text\">Get notified before the next issue closes.<\/h2><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-f92b244d\"><p class=\"uagb-heading-text\">Spots are limited, and the pilot is first-come, first-served. Leave your email, and we\u2019ll tell you when reservations open for the next issue.<\/p><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-7bcf61d1\"><div class='fluentform ff-default fluentform_wrapper_2 ffs_default_wrap'><form data-form_id=\"2\" id=\"fluentform_2\" class=\"frm-fluent-form fluent_form_2 ff-el-form-top ff_form_instance_2_1 ff-form-loading ffs_default\" data-form_instance=\"ff_form_instance_2_1\" method=\"POST\" ><fieldset  style=\"border: none!important;margin: 0!important;padding: 0!important;background-color: transparent!important;box-shadow: none!important;outline: none!important; min-inline-size: 100%;\">\n                    <legend class=\"ff_screen_reader_title\" style=\"display: block; margin: 0!important;padding: 0!important;height: 0!important;text-indent: -999999px;width: 0!important;overflow:hidden;\">Subscription Form<\/legend><input type='hidden' name='__fluent_form_embded_post_id' value='13' \/><input type=\"hidden\" id=\"_fluentform_2_fluentformnonce\" name=\"_fluentform_2_fluentformnonce\" value=\"e72bed5e2c\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/Slo\/home-services-guide-01\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F13\" \/><div class='ff-el-group'><div class='ff-el-input--content'><input type=\"email\" name=\"email\" id=\"ff_2_email\" class=\"ff-el-form-control\" placeholder=\"you@business.com\" data-name=\"email\"  aria-invalid=\"false\" aria-required=true><\/div><\/div><div class='ff-el-group ff-text-left ff_submit_btn_wrapper ff_submit_btn_wrapper_custom'><button class=\"ff-btn ff-btn-submit ff-btn-md ff_btn_style wpf_has_custom_css\" type=\"submit\" name=\"custom_submit_button-2_1\" data-name=\"custom_submit_button-2_1\"  aria-label=\"Notify me\">Notify me<\/button><style>form.fluent_form_2 .wpf_has_custom_css.ff-btn-submit { background-color:rgba(52, 158, 167, 1);color:#ffffff;min-width:115px; }form.fluent_form_2 .wpf_has_custom_css.ff-btn-submit:hover { background-color:rgba(0, 128, 136, 1);color:rgba(255, 255, 255, 1);min-width:115px; } <\/style><\/div><\/fieldset><\/form><div id='fluentform_2_errors' class='ff-errors-in-stack ff_form_instance_2_1 ff-form-loading_errors ff_form_instance_2_1_errors'><\/div><\/div>            <script type=\"text\/javascript\">\n                window.fluent_form_ff_form_instance_2_1 = {\"id\":\"2\",\"ajaxUrl\":\"https:\\\/\\\/page.composie.io\\\/Slo\\\/home-services-guide-01\\\/wp-admin\\\/admin-ajax.php\",\"settings\":{\"layout\":{\"labelPlacement\":\"top\",\"helpMessagePlacement\":\"with_label\",\"errorMessagePlacement\":\"inline\",\"asteriskPlacement\":\"asterisk-right\"},\"restrictions\":{\"denyEmptySubmission\":{\"enabled\":false}}},\"form_instance\":\"ff_form_instance_2_1\",\"form_id_selector\":\"fluentform_2\",\"rules\":{\"email\":{\"required\":{\"value\":true,\"message\":\"This field is required\",\"global\":false,\"global_message\":\"This field is required\"},\"email\":{\"value\":true,\"message\":\"This field must contain a valid email\",\"global\":false,\"global_message\":\"This field must contain a valid email\"}}},\"debounce_time\":300,\"file_upload_settings\":[]};\n                            <\/script>\n            \n<\/div>\n<\/div><\/div>\n<\/div><\/div>\n\n\n\n<div id=\"futureEditions\" class=\"wp-block-uagb-container uagb-block-ed89587a alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-container uagb-block-a293ee35\">\n<div class=\"wp-block-uagb-advanced-heading uagb-block-7c0d210f\"><p class=\"uagb-heading-text\">Coming next<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-552da114\"><h2 class=\"uagb-heading-text\">Would you be interested in future editions of the Home Guide?<\/h2><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-09dbe318\"><p class=\"uagb-heading-text\">Click below to be the first to know when we open reservations in your area.<\/p><\/div>\n\n\n<div class='fluentform ff-default fluentform_wrapper_3 ffs_default_wrap'><form data-form_id=\"3\" id=\"fluentform_3\" class=\"frm-fluent-form fluent_form_3 ff-el-form-top ff_form_instance_3_2 ff-form-loading ffs_default\" data-form_instance=\"ff_form_instance_3_2\" method=\"POST\" ><fieldset  style=\"border: none!important;margin: 0!important;padding: 0!important;background-color: transparent!important;box-shadow: none!important;outline: none!important; min-inline-size: 100%;\">\n                    <legend class=\"ff_screen_reader_title\" style=\"display: block; margin: 0!important;padding: 0!important;height: 0!important;text-indent: -999999px;width: 0!important;overflow:hidden;\">Future Editions<\/legend><input type='hidden' name='__fluent_form_embded_post_id' value='13' \/><input type=\"hidden\" id=\"_fluentform_3_fluentformnonce\" name=\"_fluentform_3_fluentformnonce\" value=\"e72bed5e2c\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/Slo\/home-services-guide-01\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F13\" \/><div class='ff-el-group checkbox-wrap'><div class='ff-el-input--content'><div class='ff-el-form-check ff-el-form-check-'><label class='ff-el-form-check-label' for='checkbox_cf78a199a01ad8fcd1c1373a446541e6'><input  type=\"checkbox\" name=\"checkbox[]\" data-name=\"checkbox\" class=\"ff-el-form-check-input ff-el-form-check-checkbox\" value=\"North County Edition\"  id='checkbox_cf78a199a01ad8fcd1c1373a446541e6' aria-label='North County Edition' aria-invalid='false' aria-required=true> <span>North County Edition<\/span><\/label><\/div><div class='ff-el-form-check ff-el-form-check-'><label class='ff-el-form-check-label' for='checkbox_cd8d4497e87db759d27b99f3cc65e379'><input  type=\"checkbox\" name=\"checkbox[]\" data-name=\"checkbox\" class=\"ff-el-form-check-input ff-el-form-check-checkbox\" value=\"Five Cities Edition\"  id='checkbox_cd8d4497e87db759d27b99f3cc65e379' aria-label='Five Cities Edition' aria-invalid='false' aria-required=true> <span>Five Cities Edition<\/span><\/label><\/div><div class='ff-el-form-check ff-el-form-check-'><label class='ff-el-form-check-label' for='checkbox_411f9aca279e8fad8f4828158b50e435'><input  type=\"checkbox\" name=\"checkbox[]\" data-name=\"checkbox\" class=\"ff-el-form-check-input ff-el-form-check-checkbox\" value=\"Santa Maria \/ Orcutt Edition\"  id='checkbox_411f9aca279e8fad8f4828158b50e435' aria-label='Santa Maria \/ Orcutt Edition' aria-invalid='false' aria-required=true> <span>Santa Maria \/ Orcutt Edition<\/span><\/label><\/div><div class='ff-el-form-check ff-el-form-check-'><label class='ff-el-form-check-label' for='checkbox_6e2a659bdb89ff6758f6f0e0014ae121'><input  type=\"checkbox\" name=\"checkbox[]\" data-name=\"checkbox\" class=\"ff-el-form-check-input ff-el-form-check-checkbox\" value=\"Santa Barbara South Coast Edition\"  id='checkbox_6e2a659bdb89ff6758f6f0e0014ae121' aria-label='Santa Barbara South Coast Edition' aria-invalid='false' aria-required=true> <span>Santa Barbara South Coast Edition<\/span><\/label><\/div><div class='ff-el-form-check ff-el-form-check-'><label class='ff-el-form-check-label' for='checkbox_7773e1ce2d83816ec394c5ecd0bcaca0'><input  type=\"checkbox\" name=\"checkbox[]\" data-name=\"checkbox\" class=\"ff-el-form-check-input ff-el-form-check-checkbox\" value=\"Ventura \/ Ojai Edition\"  id='checkbox_7773e1ce2d83816ec394c5ecd0bcaca0' aria-label='Ventura \/ Ojai Edition' aria-invalid='false' aria-required=true> <span>Ventura \/ Ojai Edition<\/span><\/label><\/div><div class='ff-el-form-check ff-el-form-check-'><label class='ff-el-form-check-label' for='checkbox_e58eebdd63ba90f0c71506d2a87e6ca3'><input  type=\"checkbox\" name=\"checkbox[]\" data-name=\"checkbox\" class=\"ff-el-form-check-input ff-el-form-check-checkbox\" value=\"Camarillo Edition\"  id='checkbox_e58eebdd63ba90f0c71506d2a87e6ca3' aria-label='Camarillo Edition' aria-invalid='false' aria-required=true> <span>Camarillo Edition<\/span><\/label><\/div><div class='ff-el-form-check ff-el-form-check-'><label class='ff-el-form-check-label' for='checkbox_8ee043ced392d38ab1e2e404d771812e'><input  type=\"checkbox\" name=\"checkbox[]\" data-name=\"checkbox\" class=\"ff-el-form-check-input ff-el-form-check-checkbox\" value=\"Thousand Oaks Edition\"  id='checkbox_8ee043ced392d38ab1e2e404d771812e' aria-label='Thousand Oaks Edition' aria-invalid='false' aria-required=true> <span>Thousand Oaks Edition<\/span><\/label><\/div><div class='ff-el-form-check ff-el-form-check-'><label class='ff-el-form-check-label' for='checkbox_7dbc32d3d2172a4e66216221586c8607'><input  type=\"checkbox\" name=\"checkbox[]\" data-name=\"checkbox\" class=\"ff-el-form-check-input ff-el-form-check-checkbox\" value=\"Simi Valley Edition\"  id='checkbox_7dbc32d3d2172a4e66216221586c8607' aria-label='Simi Valley Edition' aria-invalid='false' aria-required=true> <span>Simi Valley Edition<\/span><\/label><\/div><div class='ff-el-form-check ff-el-form-check-'><label class='ff-el-form-check-label' for='checkbox_a3e44c9f61f8b98da6bfe872c8b165f4'><input  type=\"checkbox\" name=\"checkbox[]\" data-name=\"checkbox\" class=\"ff-el-form-check-input ff-el-form-check-checkbox\" value=\"Monterey Peninsula Edition\"  id='checkbox_a3e44c9f61f8b98da6bfe872c8b165f4' aria-label='Monterey Peninsula Edition' aria-invalid='false' aria-required=true> <span>Monterey Peninsula Edition<\/span><\/label><\/div><div class='ff-el-form-check ff-el-form-check-'><label class='ff-el-form-check-label' for='checkbox_a49146b3b247669cea690bc8c1c86ad5'><input  type=\"checkbox\" name=\"checkbox[]\" data-name=\"checkbox\" class=\"ff-el-form-check-input ff-el-form-check-checkbox\" value=\"Santa Cruz \/ Aptos Edition\"  id='checkbox_a49146b3b247669cea690bc8c1c86ad5' aria-label='Santa Cruz \/ Aptos Edition' aria-invalid='false' aria-required=true> <span>Santa Cruz \/ Aptos Edition<\/span><\/label><\/div><\/div><\/div><div data-name=\"ff_cn_id_1\"  class='ff-t-container ff-column-container ff_columns_total_2 '><div class='ff-t-cell ff-t-column-1' style='flex-basis: 80%;'><div class='ff-el-group'><div class='ff-el-input--content'><input type=\"email\" name=\"email\" id=\"ff_3_2_email\" class=\"ff-el-form-control\" placeholder=\"you@business.com\" data-name=\"email\"  aria-invalid=\"false\" aria-required=true><\/div><\/div><\/div><div class='ff-t-cell ff-t-column-2' style='flex-basis: 20%;'><div class='ff-el-group ff-text-left ff_submit_btn_wrapper ff_submit_btn_wrapper_custom'><button class=\"ff-btn ff-btn-submit ff-btn-md ff_btn_style wpf_has_custom_css\" type=\"submit\" name=\"custom_submit_button-3_1\" data-name=\"custom_submit_button-3_1\"  aria-label=\"Keep me posted\">Keep me posted<\/button><style>form.fluent_form_3 .wpf_has_custom_css.ff-btn-submit { background-color:rgba(52, 158, 167, 1);color:#ffffff;min-width:100%; }form.fluent_form_3 .wpf_has_custom_css.ff-btn-submit:hover { background-color:rgba(0, 128, 136, 1);color:rgba(255, 255, 255, 1);min-width:100%; } <\/style><\/div><\/div><\/div><\/fieldset><\/form><div id='fluentform_3_errors' class='ff-errors-in-stack ff_form_instance_3_2 ff-form-loading_errors ff_form_instance_3_2_errors'><\/div><\/div>            <script type=\"text\/javascript\">\n                window.fluent_form_ff_form_instance_3_2 = {\"id\":\"3\",\"ajaxUrl\":\"https:\\\/\\\/page.composie.io\\\/Slo\\\/home-services-guide-01\\\/wp-admin\\\/admin-ajax.php\",\"settings\":{\"layout\":{\"labelPlacement\":\"top\",\"helpMessagePlacement\":\"with_label\",\"errorMessagePlacement\":\"inline\",\"asteriskPlacement\":\"asterisk-right\"},\"restrictions\":{\"denyEmptySubmission\":{\"enabled\":false}}},\"form_instance\":\"ff_form_instance_3_2\",\"form_id_selector\":\"fluentform_3\",\"rules\":{\"checkbox\":{\"required\":{\"value\":true,\"message\":\"This field is required\",\"global_message\":\"This field is required\",\"global\":true}},\"email\":{\"required\":{\"value\":true,\"message\":\"This field is required\",\"global\":false,\"global_message\":\"This field is required\"},\"email\":{\"value\":true,\"message\":\"This field must contain a valid email\",\"global\":false,\"global_message\":\"This field must contain a valid email\"}}},\"debounce_time\":300,\"file_upload_settings\":[]};\n                            <\/script>\n            \n<\/div>\n<\/div><\/div>\n\n\n\n<div id=\"cta\" class=\"wp-block-uagb-container uagb-block-6d5f1368 alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-container uagb-block-bed0c5dc alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-advanced-heading uagb-block-e7c48daa\"><h2 class=\"uagb-heading-text\">Own your category before someone else does.<\/h2><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-a08f2f2e\"><p class=\"uagb-heading-text\">Every category is limited to one business. If you secure yours today, your competitors won&#8217;t. Reach 5,000 local homeowners, build lasting visibility, and become the business they remember when it&#8217;s time to hire.<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-buttons uagb-buttons__outer-wrap uagb-btn__default-btn uagb-btn-tablet__default-btn uagb-btn-mobile__default-btn uagb-block-dca1096d\"><div class=\"uagb-buttons__wrap uagb-buttons-layout-wrap \">\n<div class=\"wp-block-uagb-buttons-child uagb-buttons__outer-wrap uagb-block-be4877fb wp-block-button\"><div class=\"uagb-button__wrapper\"><a class=\"uagb-buttons-repeater wp-block-button__link\" aria-label=\"\" href=\"#checker\" rel=\"follow noopener\" target=\"_self\" role=\"button\"><div class=\"uagb-button__link\">Reserve Your Category<\/div><span class=\"uagb-button__icon uagb-button__icon-position-after\"><svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 448 512\" aria-hidden=\"true\" focussable=\"false\"><path d=\"M438.6 278.6l-160 160C272.4 444.9 264.2 448 256 448s-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L338.8 288H32C14.33 288 .0016 273.7 .0016 256S14.33 224 32 224h306.8l-105.4-105.4c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l160 160C451.1 245.9 451.1 266.1 438.6 278.6z\"><\/path><\/svg><\/span><\/a><\/div><\/div>\n<\/div><\/div>\n<\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-c46d7226 alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-advanced-heading uagb-block-1a46b343\"><p class=\"uagb-heading-text\">The SLO Home Guide<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-a9826b37\"><p class=\"uagb-heading-text\">Helping connect local homeowners with trusted local businesses.<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-f765d946 alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-advanced-heading uagb-block-e93bb72d\"><p class=\"uagb-heading-text\">Questions? Call our local 805 office:<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-23a7aa09\"><p class=\"uagb-heading-text\">(805) 457-3524<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-6b12b80b\"><p class=\"uagb-heading-text\">or email us at:<\/p><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-95c86803\"><p class=\"uagb-heading-text\">sales@composie.io<\/p><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-71b6f8b4\"><p class=\"uagb-heading-text\">\u00a9 The SLO Home Guide. All rights reserved.<\/p><\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>SLO County Home Services Guide 5000 homes,one business per category. The SLO Home Guide puts your business in front of local homeowners as the only business in your service category. If you&#8217;re in, your competitors are out. Pilot introductory offer, 50% off for first 10 reservations. How it works Become the business local homeowners see [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-13","page","type-page","status-publish","hentry"],"acf":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"woocommerce_thumbnail":false,"woocommerce_single":false,"woocommerce_gallery_thumbnail":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/?author=1"},"uagb_comment_info":0,"uagb_excerpt":"SLO County Home Services Guide 5000 homes,one business per category. The SLO Home Guide puts your business in front of local homeowners as the only business in your service category. If you&#8217;re in, your competitors are out. Pilot introductory offer, 50% off for first 10 reservations. How it works Become the business local homeowners see&hellip;","_links":{"self":[{"href":"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/index.php?rest_route=\/wp\/v2\/pages\/13","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13"}],"version-history":[{"count":227,"href":"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/index.php?rest_route=\/wp\/v2\/pages\/13\/revisions"}],"predecessor-version":[{"id":1269,"href":"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/index.php?rest_route=\/wp\/v2\/pages\/13\/revisions\/1269"}],"wp:attachment":[{"href":"https:\/\/page.composie.io\/Slo\/home-services-guide-01\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}