{"id":5589,"date":"2026-10-11T02:38:36","date_gmt":"2026-10-11T02:38:36","guid":{"rendered":"https:\/\/housefly.com\/services\/pest-control\/"},"modified":"2026-10-11T02:38:36","modified_gmt":"2026-10-11T02:38:36","slug":"pest-control","status":"publish","type":"page","link":"https:\/\/housefly.com\/es\/services\/pest-control\/","title":{"rendered":"Control de plagas"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5589\" class=\"elementor elementor-5589\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-464c961 e-con-full e-flex e-con e-parent\" data-id=\"464c961\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4efcae1 elementor-widget elementor-widget-html\" data-id=\"4efcae1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style id=\"hfc-css\">\n.hfc,.hfc *{box-sizing:border-box}.hfc{font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;color:#0b172a;position:relative;width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);background:#fff;text-align:left}\n.hfc-hero{position:relative;width:100%;margin-top:calc(-1 * var(--hf-header-h, 88px));padding:calc(84px + var(--hf-header-h, 88px)) 24px 64px;text-align:center;color:#fff;\n background:linear-gradient(180deg,rgba(11,23,42,.40),rgba(11,23,42,.84)),url(\"https:\/\/housefly.com\/account\/front_assets\/pro-hero-pc.jpg\") 62% 30%\/cover no-repeat,#0b172a}\n.hfc-ey{font-size:20px;font-weight:800;letter-spacing:3px;text-transform:uppercase;color:#41C7F5!important;margin:0}.hfc-lead{color:rgba(255,255,255,.92)!important}#hfc .hfc-hero .hfc-ey{color:#41C7F5!important;-webkit-text-fill-color:#41C7F5}\n.hfc-h1{font-size:60px;font-weight:800;letter-spacing:-1.5px;line-height:1.04;margin:12px 0 14px;color:#fff}.hfc-h1 span{background:linear-gradient(90deg,#41C7F5,#5cd67a);-webkit-background-clip:text;background-clip:text;color:transparent}\n.hfc-lead{font-size:18px;line-height:1.55;max-width:600px;margin:0 auto;color:rgba(255,255,255,.92)}\n.hfc-srch{max-width:660px;margin:28px auto 0;display:flex;align-items:center;background:#fff;border:1.5px solid #40C9F3;border-radius:999px;padding:7px 7px 7px 22px;box-shadow:0 0 0 6px rgba(64,201,243,.16),0 24px 60px -18px rgba(0,0,0,.45)}\n.hfc-srch svg{flex:none;color:#94a3b8;margin-right:10px}\n.hfc-srch input{flex:1;border:0!important;outline:0;font:500 17px Inter,sans-serif;padding:12px 0!important;color:#16233A;min-width:0;background:transparent!important;box-shadow:none!important;height:auto;border-radius:0}\n.hfc-srch input::placeholder{color:#8CA0B8}\n.hfc .hfc-srch button,.hfc .hfc-srch button:focus{flex:none;border:0;border-radius:999px;background:#40C9F3;color:#fff;font:700 16px Inter,sans-serif;padding:14px 30px;cursor:pointer;transition:background .15s}\n.hfc .hfc-srch button:hover{background:#2ED87A;color:#fff}\n.hfc-btn{display:inline-flex;align-items:center;justify-content:center;background:#41C7F5;color:#0b172a!important;font-weight:800;font-size:15px;border-radius:11px;padding:14px 22px;border:0;cursor:pointer;font-family:inherit;text-decoration:none!important;line-height:1.1}\n.hfc-btn:disabled{opacity:.55;cursor:default}\n.hfc-pop{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:20px auto 0;max-width:660px}\n.hfc .hfc-pop button{display:inline-flex;align-items:center;border-radius:999px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.28);padding:9px 16px;font:600 15px Inter,sans-serif;color:#eaf2fa;cursor:pointer;transition:all .15s;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}\n.hfc-wrap{max-width:1240px;margin:0 auto;padding:0 29px}\n.hfc-lay{display:grid;grid-template-columns:minmax(0,1fr) 508px;gap:32px;align-items:stretch;padding:40px 0 58px}.hfc-box{position:relative;align-self:stretch}.hfc-box .hfc-nb{position:relative;top:0}\n.hfc-stp{display:flex;align-items:center;gap:11px;margin:0 0 13px}.hfc-stp i{font-style:normal;width:31px;height:31px;border-radius:5px;background:#0b172a;color:#41C7F5;font-weight:800;font-size:15px;display:flex;align-items:center;justify-content:center;flex:none}\n.hfc-stp h3{margin:0;font-size:22px;font-weight:800;letter-spacing:-.3px;color:#0b172a}.hfc-stp span{margin-left:auto;font-size:14px;color:#5a6b85}\n.hfc-blk{margin-bottom:31px}\n.hfc-lay>*,.hfc-sv>*,.hfc-aog>*{min-width:0}.hfc-sv{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px}\n.hfc-card{display:flex;gap:11px;align-items:center;border:1.5px solid #e3e9f1;border-radius:13px;padding:13px;background:#fff;cursor:pointer;text-align:left;font-family:inherit;width:100%;transition:border-color .15s,box-shadow .15s}\n.hfc-card:hover{border-color:#9fd6ee}.hfc-card.on{border-color:#29ABE2;background:#eef8fd;box-shadow:0 0 0 3px rgba(41,171,226,.15)}\n.hfc-ic{width:40px;height:40px;border-radius:5px;background:#f2f6fa;display:flex;align-items:center;justify-content:center;font-size:20px;flex:none}\n.hfc-card h4{margin:0;font-size:15px;font-weight:800;color:#0b172a;line-height:1.2}.hfc-card p{margin:2px 0 0;font-size:14px;color:#5a6b85;line-height:1.35}\n.hfc-more{display:flex;justify-content:center;align-items:center;gap:7px;border:1.5px dashed #9fd6ee;border-radius:11px;padding:13px;color:#1580b8;font-weight:800;font-size:14px;margin-top:9px;background:#fff;width:100%;cursor:pointer;font-family:inherit}\n.hfc-more span{font-weight:600;color:#5a6b85}\n.hfc-cat{margin-top:16px}.hfc-cat h5{margin:0 0 7px;font-size:14px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:#29ABE2}\n.hfc-aog{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px}\n.hfc-ao{display:flex;justify-content:space-between;align-items:center;gap:9px;border:1.5px solid #e3e9f1;border-radius:11px;padding:13px 14px;font-size:14px;font-weight:700;background:#fff;color:#0b172a;cursor:pointer;font-family:inherit;text-align:left;width:100%}\n.hfc-ao b{color:#1f9d55;white-space:nowrap;font-weight:800}.hfc-ao small{font-size:14px;font-weight:600;color:#5a6b85}.hfc-ao.on{border-color:#5cd67a;background:#effbf2}.hfc-ao:disabled{opacity:.45;cursor:default}\n.hfc-note{font-size:14px;color:#5a6b85;margin:0 0 11px}\n.hfc-nb{background:linear-gradient(160deg,#16243a,#0b172a 60%);border:1px solid rgba(65,199,245,.18);border-radius:17px;padding:22px;color:#fff;box-shadow:0 24px 50px rgba(11,23,42,.28)}\n.hfc-nb .t{font-size:23px;font-weight:800;letter-spacing:-.4px;line-height:1.15}\n.hfc-pill{display:inline-block;margin-top:8px;font-size:14px;font-weight:700;color:#8fe0ff;border:1px solid rgba(65,199,245,.4);background:rgba(65,199,245,.1);border-radius:77px;padding:5px 10px}\n.hfc-inc{border:1.5px solid rgba(255,255,255,.16);border-radius:9px;margin-top:12px}.hfc-inc button{display:flex;justify-content:space-between;width:100%;background:none;border:0;color:#fff;padding:12px 14px;font:800 14px Inter,sans-serif;letter-spacing:1.4px;cursor:pointer}\n.hfc-inc button span{color:#41C7F5}.hfc-inc ul{margin:0;padding:0 14px 11px 28px;font-size:14px;line-height:1.5;color:#d7e2ef}.hfc-inc li{margin:3px 0}\n.hfc-lbl{font-size:14px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:#9fb0c6;margin:12px 0 6px}\n.hfc-seg{display:grid;grid-template-columns:1fr 1fr;gap:8px}.hfc-seg.c3{grid-template-columns:repeat(3,1fr)}.hfc-seg.c4{grid-template-columns:1fr 1fr}\n.hfc-seg button{border:1.5px solid rgba(255,255,255,.2);border-radius:9px;padding:10px 6px;text-align:center;font:700 14px Inter,sans-serif;color:#fff;background:transparent;cursor:pointer}\n.hfc-seg button.on{border-color:#41C7F5;background:rgba(65,199,245,.14);color:#8fe0ff}\n.hfc-step{display:grid;grid-template-columns:40px 1fr 40px;gap:8px}.hfc-step button,.hfc-step div{border:1.5px solid rgba(255,255,255,.22);border-radius:9px;height:40px;display:flex;align-items:center;justify-content:center;font:800 15px Inter,sans-serif;color:#fff;background:transparent}\n.hfc-step button{cursor:pointer}.hfc-step button:disabled{opacity:.35;cursor:default}.hfc-step div{border-color:#41C7F5;color:#8fe0ff;font-size:15px}.hfc-step div small{font-size:14px;font-weight:600;margin-left:5px;opacity:.8}\n.hfc-rooms{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.hfc-rooms>div{border:1.5px solid rgba(255,255,255,.2);border-radius:9px;padding:9px 5px;text-align:center;font-weight:700;font-size:14px}\n.hfc-mini{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:5px}.hfc-mini button{width:25px;height:25px;border-radius:6px;border:1.5px solid rgba(255,255,255,.25);background:transparent;color:#8fe0ff;font:800 14px Inter,sans-serif;cursor:pointer}\n.hfc-mini button:disabled{opacity:.3;cursor:default}.hfc-mini b{font-size:19px;min-width:17px}\n.hfc-ex{border-top:1px solid rgba(255,255,255,.14);margin-top:14px;padding-top:5px}\n.hfc-li{display:flex;align-items:center;gap:8px;font-size:14px;padding:5px 0;color:#d7e2ef}.hfc-li span{flex:1}.hfc-li b{color:#5cd67a}.hfc-li .hfc-mini{margin:0}.hfc-li .hfc-mini b{font-size:14px}\n.hfc-li .x{background:none;border:0;color:#8a9bb2;font-size:14px;cursor:pointer;padding:0 2px}\n.hfc-foot{display:flex;align-items:center;justify-content:space-between;gap:9px;border-top:1px solid rgba(255,255,255,.14);margin-top:14px;padding-top:12px}\n.hfc-price{font-size:31px;font-weight:800;color:#5cd67a;letter-spacing:-.5px;line-height:1.05}.hfc-price.na{font-size:14px;color:#ffcf70}.hfc-foot p{margin:3px 0 0;font-size:14px;color:#9fb0c6}\n.hfc-ft{font-size:14px;color:#8a9bb2;text-align:center;margin-top:11px}.hfc-err{font-size:14px;color:#ffcf70;text-align:center;margin-top:8px}\n.hfc-bar{display:none}\n.hfc button{font-family:inherit;text-transform:none;box-shadow:none;outline:none;min-height:0;line-height:1.2}\n.hfc button{white-space:normal;word-break:normal}.hfc .hfc-card h4{color:#0b172a!important}.hfc .hfc-card p{color:#5a6b85!important;font-size:14px!important}.hfc .hfc-card{color:#0b172a!important}.hfc-card>span:last-child{flex:1;min-width:0}.hfc-ao>span{min-width:0}\n.hfc .hfc-card:hover,.hfc .hfc-card:focus{background:#fff;color:#0b172a}.hfc .hfc-card.on:hover,.hfc .hfc-card.on:focus{background:#eef8fd}\n.hfc .hfc-ao:hover,.hfc .hfc-ao:focus{background:#fff;color:#0b172a;border-color:#9fd6ee}.hfc .hfc-ao.on:hover,.hfc .hfc-ao.on:focus{background:#effbf2;border-color:#5cd67a}\n.hfc .hfc-more:hover,.hfc .hfc-more:focus{background:#f4f9fd;color:#1580b8}\n.hfc .hfc-btn:hover,.hfc .hfc-btn:focus{background:#6dd5f8;color:#0b172a}\n.hfc .hfc-seg button:hover,.hfc .hfc-seg button:focus{background:rgba(255,255,255,.06);color:#fff}.hfc .hfc-seg button.on:hover,.hfc .hfc-seg button.on:focus{background:rgba(65,199,245,.14);color:#8fe0ff}\n.hfc .hfc-step button:hover,.hfc .hfc-step button:focus,.hfc .hfc-mini button:hover,.hfc .hfc-mini button:focus{background:rgba(255,255,255,.08);color:#8fe0ff}\n.hfc .hfc-inc button:hover,.hfc .hfc-inc button:focus,.hfc .hfc-li .x:hover,.hfc .hfc-li .x:focus{background:none;color:#fff}\n.hfc .hfc-pop button:hover,.hfc .hfc-pop button:focus{background:rgba(64,201,243,.22);border-color:#40C9F3;color:#fff}\n.hfc-mini button{padding:0;display:inline-flex;align-items:center;justify-content:center}.hfc-step button{padding:0}\n@media(max-width:1100px){.hfc-lay{grid-template-columns:minmax(0,1fr) 454px;gap:22px}}\n@media(max-width:900px){.hfc-lay{grid-template-columns:minmax(0,1fr)}.hfc-box{position:static}.hfc-box .hfc-nb{position:static!important;width:auto!important}}\n@media(max-width:767px){.hfc-rooms{gap:5px}.hfc-rooms>div{padding:8px 2px;font-size:14px}.hfc-mini{gap:3px}.hfc-mini button{width:22px;height:22px;font-size:14px}.hfc-mini b{font-size:15px;min-width:11px}.hfc-li{gap:5px;font-size:14px}.hfc-li .hfc-mini b{font-size:14px}}\n@media(max-width:767px){.hfc-hero{padding:calc(48px + var(--hf-header-h, 70px)) 16px 40px;background-image:linear-gradient(180deg,rgba(11,23,42,.55),rgba(11,23,42,.9)),url(\"https:\/\/housefly.com\/account\/front_assets\/pro-hero-pc.jpg\")}\n.hfc-ey{font-size:15px;letter-spacing:1.8px}.hfc-h1{font-size:38px;letter-spacing:-1px}.hfc-lead{font-size:16px}\n.hfc-srch{margin-top:22px;padding:5px 5px 5px 16px}.hfc-srch svg{display:none}.hfc-srch input{font-size:16px;padding:10px 0!important}.hfc .hfc-srch button,.hfc .hfc-srch button:focus{padding:12px 16px;font-size:14px}.hfc-pop{gap:6px;margin-top:16px}.hfc .hfc-pop button{padding:8px 13px;font-size:14px}\n.hfc-wrap{padding:0 14px}.hfc-lay{gap:23px;padding:25px 0 0}.hfc-stp h3{font-size:18px}.hfc-sv,.hfc-aog{grid-template-columns:minmax(0,1fr)}\n.hfc-nb{padding:15px;border-radius:14px}.hfc-nb .t{font-size:19px}.hfc-price{font-size:25px}.hfc-btn{font-size:14px;padding:13px 16px}\n.hfc-bar{display:flex;position:sticky;bottom:0;z-index:5;justify-content:space-between;align-items:center;gap:11px;background:#0b172a;color:#fff;padding:11px 14px;margin:22px -14px 0;border-radius:14px 14px 0 0}\n.hfc-bar b{font-size:20px;color:#5cd67a;display:block}.hfc-bar small{display:block;color:#9fb0c6;font-size:14px}}\n@media(max-width:767px){.hfc-mini button{width:30px;height:30px}.hfc-step button,.hfc-step div{height:44px}}\n<\/style>\n<style id=\"hfc-css2\">\n.hfc .hfc-sv{align-items:start}\n.hfc-cw{border:1.5px solid #e3e9f1;border-radius:13px;background:#fff;transition:border-color .15s,box-shadow .15s;min-width:0}\n.hfc-cw:hover{border-color:#9fd6ee}.hfc-cw.on{border-color:#29ABE2;box-shadow:0 0 0 3px rgba(41,171,226,.15)}\n.hfc .hfc-cw>.hfc-card{border:0!important;box-shadow:none!important;border-radius:12px;position:relative;padding-right:40px}\n.hfc .hfc-cw.on>.hfc-card{background:#eef8fd}.hfc .hfc-cw.on>.hfc-card:not(:last-child){border-radius:12px 12px 0 0}\n.hfc-ck{position:absolute;top:12px;right:12px;width:22px;height:22px;border-radius:6px;border:1.5px solid #c9d6e4;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;color:#fff;background:#fff}\n.hfc-cw.on .hfc-ck{background:#29ABE2;border-color:#29ABE2}\n.hfc-opt{padding:4px 14px 14px;border-top:1px solid #e3e9f1}\n.hfc-opt .ol{font-size:14px;font-weight:800;letter-spacing:1.1px;text-transform:uppercase;color:#5a6b85;margin:12px 0 7px}\n.hfc-opt .os{display:flex;flex-wrap:wrap;gap:7px}\n.hfc .hfc-opt .os button{flex:1 1 auto;border:1.5px solid #dbe4ee;border-radius:10px;padding:9px 10px;font:700 14px Inter,sans-serif;color:#0b172a;background:#fff;cursor:pointer;text-align:center}\n.hfc .hfc-opt .os button.on,.hfc .hfc-opt .os button.on:hover{border-color:#29ABE2;background:#eef8fd;color:#0b6c99}\n.hfc .hfc-opt .os button:hover,.hfc .hfc-opt .os button:focus{background:#f6f9fc;color:#0b172a}.hfc .hfc-opt .os button small{font-size:14px;font-weight:600;color:#1f9d55}\n.hfc-opt .orw{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:15px;color:#0b172a}.hfc-opt .orw>span{flex:1;min-width:0}\n.hfc-opt .orw small{display:block;font-size:14px;color:#5a6b85}\n.hfc-opt .om{display:flex;align-items:center;gap:8px;flex:none}\n.hfc .hfc-opt .om button{width:32px;height:32px;border-radius:8px;border:1.5px solid #c9d6e4;background:#fff;color:#1580b8;font:800 18px Inter,sans-serif;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center}\n.hfc .hfc-opt .om button:hover,.hfc .hfc-opt .om button:focus{background:#f2f8fc;color:#1580b8}\n.hfc .hfc-opt .om button:disabled{opacity:.35;cursor:default}\n.hfc-opt .om b{min-width:22px;text-align:center;font-size:16px;color:#0b172a}.hfc-opt .om b.z{color:#94a3b8}\n.hfc-opt .ost{display:flex;align-items:center;gap:8px}.hfc-opt .ost .ov{flex:1;text-align:center;border:1.5px solid #dbe4ee;border-radius:10px;padding:7px 6px;font-weight:800;font-size:15px;color:#0b172a}\n.hfc-opt .ost .ov small{font-weight:600;color:#5a6b85;margin-left:5px;font-size:14px}\n.hfc-opt .orm{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.hfc-opt .orm>div{border:1.5px solid #dbe4ee;border-radius:10px;padding:8px 4px;text-align:center;font-size:14px;font-weight:700;color:#0b172a}\n.hfc-opt .orm .om{justify-content:center;margin-top:5px}\n.hfc-opt .oh{font-size:14px;color:#c2410c;margin:8px 0 0}\n.hfc .hfc-opt .oi{display:flex;justify-content:space-between;width:100%;background:none;border:0;padding:12px 0 0;font:800 14px Inter,sans-serif;letter-spacing:1.1px;color:#1580b8;cursor:pointer;text-transform:uppercase}\n.hfc .hfc-opt .oi:hover,.hfc .hfc-opt .oi:focus{background:none;color:#1580b8}\n.hfc-opt ul{margin:6px 0 0;padding-left:20px;font-size:14px;line-height:1.45;color:#3d4d66}\n.hfc-nb .t{font-size:23px}\n.hfc-nb .hfc-emp{font-size:15px;color:#9fb0c6;margin:12px 0 4px;line-height:1.45}\n.hfc-nb .hfc-ln{display:flex;gap:10px;align-items:flex-start;padding:11px 0;border-bottom:1px solid rgba(255,255,255,.1);font-size:15px;color:#fff}\n.hfc-nb .hfc-ln:last-child{border-bottom:0}.hfc-nb .hfc-ln>span{flex:1;min-width:0;font-weight:700;line-height:1.3}\n.hfc-nb .hfc-ln small{display:block;font-weight:500;font-size:14px;color:#9fb0c6;margin-top:2px}\n.hfc-nb .hfc-ln b{color:#5cd67a;white-space:nowrap;font-size:15px}.hfc-nb .hfc-ln b.q{color:#ffcf70}\n.hfc .hfc-nb .x,.hfc .hfc-nb .x:hover,.hfc .hfc-nb .x:focus{border:0!important;box-shadow:none!important;background:none!important;min-width:0;width:auto;height:auto;padding:0 2px;color:#8a9bb2;font-size:18px;line-height:1}.hfc .hfc-nb .x:hover{color:#fff}\n.hfc .hfc-nb .hfc-ln .x{background:none;border:0;color:#8a9bb2;font-size:18px;cursor:pointer;padding:0 2px;line-height:1}\n.hfc .hfc-nb .hfc-ln .x:hover,.hfc .hfc-nb .hfc-ln .x:focus{background:none;color:#fff}\n.hfc-nb .hfc-lns{margin-top:6px;max-height:52vh;overflow-y:auto}\n.hfc-sv{grid-auto-flow:row dense}.hfc-cw.wide{grid-column:1\/-1}.hfc-cw.wide .hfc-card h4{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.hfc-cw.wide .hfc-opt{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:28px}.hfc-cw.wide .hfc-opt>.ol,.hfc-cw.wide .hfc-opt>.os,.hfc-cw.wide .hfc-opt>.ost,.hfc-cw.wide .hfc-opt>.orm,.hfc-cw.wide .hfc-opt>.oh,.hfc-cw.wide .hfc-opt>.oi,.hfc-cw.wide .hfc-opt>ul{grid-column:1\/-1}\n.hfc-cat{margin-top:26px}.hfc-cat .hfc-stp{margin-bottom:12px}\n.hfc-nb .hfc-sg{border-bottom:1px solid rgba(255,255,255,.1);padding:4px 0 8px}.hfc-nb .hfc-sg:last-child{border-bottom:0}\n.hfc-nb .hfc-sg .hfc-ln{border-bottom:0;padding:8px 0}.hfc-nb .hfc-row{padding:6px 0 6px 12px!important;border-left:2px solid rgba(65,199,245,.35)}\n.hfc-nb .hfc-sh{display:flex;align-items:center;gap:10px;padding:10px 0 4px;font-weight:800;font-size:15px;color:#fff}.hfc-nb .hfc-sh>span{flex:1}\n.hfc-bs{display:flex;align-items:center;gap:7px;flex:none}\n.hfc .hfc-bs button{width:28px;height:28px;border-radius:8px;border:1.5px solid rgba(255,255,255,.28);background:transparent;color:#8fe0ff;font:800 16px Inter,sans-serif;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center}\n.hfc .hfc-bs button:hover,.hfc .hfc-bs button:focus{background:rgba(255,255,255,.08);color:#8fe0ff}.hfc .hfc-bs button:disabled{opacity:.3;cursor:default}\n.hfc-bs b{min-width:20px;text-align:center;color:#fff!important;font-size:15px}\n.hfc .hfc-sm{background:none;border:0;padding:2px 0;color:#41C7F5;font:700 14px Inter,sans-serif;cursor:pointer}.hfc .hfc-sm:hover,.hfc .hfc-sm:focus{background:none;color:#8fe0ff}\n.hfc-dsc{font-size:14px;line-height:1.5;color:#c9d6e6;padding:4px 0 6px}.hfc-dsc p{margin:0 0 4px}.hfc-dsc ul{margin:0;padding-left:18px}\n\/* HF-2026-10-10v: the hero subtext on ONE line (two at most on phones); the pills ONE row, never wider than the search bar *\/\n.hfc .hfc-hero .hfc-lead{max-width:none;white-space:nowrap}\n.hfc .hfc-pop{flex-wrap:nowrap;overflow:hidden;max-width:660px;width:100%}.hfc .hfc-pop button{flex:none;white-space:nowrap}\n@media(max-width:767px){.hfc .hfc-opt .om button{width:34px;height:34px}.hfc .hfc-hero .hfc-lead{white-space:normal;max-width:350px;font-size:16px}}\n<\/style>\n<!-- ================= HOUSE FLY \u2014 SMOKE SPLIT HERO + GLASS BOOKING CELL (production template, 2026-07-16) =================\n     Left: header + smoke service pills. Right: frosted-glass booking cell (live check-zip pricing, Book -> autobook -> cart).\n     Generated per page from pc-memory\/smoke-hero-template.html \u2014 edit the template, regenerate, redeploy. -->\n<style>\n@keyframes hfHeroKenBurns{0%{transform:scale(1) translate(0%,0%)}50%{transform:scale(1.06) translate(-1.5%,0.5%)}100%{transform:scale(1.10) translate(1.5%,-0.5%)}}\n@media (prefers-reduced-motion: reduce){.hfsk-hero::before{animation:none !important}}\nbody{overflow-x:hidden}\nbody [class*=\"elementor-\"] .elementor-element.elementor-element-464c961,\nbody [class*=\"elementor-\"] .elementor-element.elementor-element-464c961::before,\nbody [class*=\"elementor-\"] .elementor-element.elementor-element-464c961::after{\n  max-height:none !important;min-height:0 !important;height:auto !important;\n  background-image:none !important;background-color:transparent !important;\n  flex-direction:column !important;align-items:stretch !important;justify-content:flex-start !important;\n  padding:0 !important;overflow:visible !important;border-radius:0 !important;box-shadow:none !important}\nbody [class*=\"elementor-\"] .elementor-element.elementor-element-464c961::before,\nbody [class*=\"elementor-\"] .elementor-element.elementor-element-464c961::after{display:none !important;background:transparent !important;content:none !important}\nbody [class*=\"elementor-\"] .elementor-element.elementor-element-4efcae1 .elementor-widget-container{display:block !important;width:100% !important}\n.hfsk-root{display:block;width:100%}\n.hfsk-root,.hfsk-root *{box-sizing:border-box}\n\/* ===== hero: full-bleed smoke split ===== *\/\n.hfsk-hero{position:relative;background:#10161f;overflow:hidden;isolation:isolate;color:#fff;\n  width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);\n  margin-top:calc(-1 * var(--hf-header-h, 88px));\n  padding:calc(56px + var(--hf-header-h, 88px)) 40px 72px;\n  font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif}\n.hfsk-hero::before{content:\"\";position:absolute;top:0;left:0;right:0;bottom:0;background:url('https:\/\/housefly.com\/wp-content\/uploads\/2026\/03\/hero-cleaning-3-1536x864.webp') center\/cover no-repeat;opacity:.45;animation:hfHeroKenBurns 28s ease-in-out infinite alternate;will-change:transform;z-index:-2}\n.hfsk-hero::after{content:\"\";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(115deg,rgba(13,20,31,.92) 0%,rgba(13,20,31,.72) 45%,rgba(13,20,31,.55) 100%);z-index:-1;pointer-events:none}\n@media (max-width:1024px){.hfsk-hero::before{background-image:url('https:\/\/housefly.com\/wp-content\/uploads\/2026\/03\/hero-cleaning-3-1024x576.webp')}}\n.hfsk-cols{position:relative;z-index:2;max-width:1220px;margin:0 auto;display:grid;grid-template-columns:1.05fr 1fr;gap:56px;align-items:center}\n.hfsk-left{text-align:left}\n.hfsk-ey{font-size:clamp(16px,1.6vw,21px);font-weight:800;letter-spacing:.22em;color:#40C9F3;text-transform:uppercase;margin:0 0 12px;line-height:1.2}\n.hfsk-h1{font-size:clamp(34px,4.4vw,56px);font-weight:900;line-height:1.05;letter-spacing:-1.5px;margin:0 0 12px;color:#fff}\n.hfsk-h1 span{background:linear-gradient(90deg,#40C9F3,#2ED87A);-webkit-background-clip:text;background-clip:text;color:transparent}\n.hfsk-sub{color:rgba(201,214,230,.82);font-size:16.5px;font-weight:300;line-height:1.55;max-width:460px;margin:0 0 30px}\n.hfsk-rowlabel{font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.85);margin:0 0 12px}\n.hfsk-pills{display:flex;flex-wrap:wrap;gap:10px}\n#hfskCats{margin-bottom:24px}\n.hfsk-pill{display:inline-flex;align-items:center;font-family:inherit;font-size:14px;font-weight:700;color:#dfe9f5;\n  background:linear-gradient(180deg,rgba(255,255,255,.09),rgba(255,255,255,.02));border:1.5px solid rgba(255,255,255,.2);\n  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-radius:999px;padding:11px 19px;cursor:pointer;transition:all .16s}\n.hfsk-pill:hover:not(.on){border-color:rgba(255,255,255,.48)}\n.hfsk-pill.on{border-color:#40C9F3;background:linear-gradient(180deg,rgba(35,210,255,.26),rgba(35,210,255,.09));color:#fff;box-shadow:0 0 0 4px rgba(35,210,255,.14),0 12px 30px -12px rgba(35,210,255,.5)}\n.hfsk-pill:focus{outline:none}\n.hfsk-pill:focus-visible{outline:2px solid #40C9F3;outline-offset:2px}\n.hfsk-divider{max-width:420px;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.18),transparent);margin:2px 0 20px}\n#hfskSubs{display:flex;flex-direction:column;gap:10px}\n.hfsk-pills.fixedrow{flex-wrap:nowrap}\n.hfsk-pills.fixedrow .hfsk-pill{min-width:0;justify-content:center;white-space:nowrap}\n@media (max-width:480px){.hfsk-pills.fixedrow .hfsk-pill{flex:1 1 0;font-size:clamp(9.5px,2.9vw,12.5px);padding:9px 4px;min-height:33px}}\n@media (max-width:480px){.hfsk-pills.fixedrow.compact .hfsk-pill{white-space:nowrap;font-size:clamp(9px,2.55vw,12.5px);padding:9px 2px;min-height:33px}}\n\/* ===== glass booking cell ===== *\/\n.hfsk-glass{background:rgba(20,29,43,.62);border:1px solid rgba(255,255,255,.16);border-radius:22px;\n  backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);\n  box-shadow:0 40px 110px -30px rgba(0,0,0,.8),inset 0 1px 0 rgba(255,255,255,.09);\n  padding:24px 26px 22px;max-width:520px;margin-left:auto;color:#fff;text-align:left;font-family:'Inter',-apple-system,sans-serif}\n.hfsk-glass *{box-sizing:border-box}\n.g-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}\n.g-top h3{font-size:23px;font-weight:800;letter-spacing:-.5px;color:#fff;margin:0;font-family:inherit}\n.g-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;color:#7FE3FF;background:rgba(35,210,255,.14);border:1px solid rgba(35,210,255,.3);padding:4px 10px;border-radius:99px;margin-top:8px}\n.g-zip{flex:none;width:150px;text-align:left}\n.g-zip label{display:block;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#8fb3d0;margin-bottom:6px;padding-left:2px}\n.g-zipbox{position:relative;display:flex;align-items:center;height:42px;background:rgba(255,255,255,.07);border:1.5px solid rgba(255,255,255,.22);border-radius:12px;padding:0 12px;transition:border-color .15s}\n.g-zipbox:focus-within{border-color:#40C9F3}.g-zipbox.bad{border-color:#ff8f8f}\n.g-zipbox .pin{position:absolute;left:12px;font-size:14px;line-height:1}\n.g-zipbox input{width:100%;height:100%;padding:0;margin:0;text-align:center;border:none;background:transparent;font-family:inherit;font-size:16px;font-weight:800;color:#fff;outline:none;letter-spacing:2px;line-height:normal;box-shadow:none}\n.g-inc{border:1px solid rgba(255,255,255,.14);border-radius:13px;overflow:hidden;margin-bottom:15px;background:rgba(255,255,255,.03)}\n.g-inc>button{width:100%;display:flex;align-items:center;justify-content:space-between;background:transparent;border:none;padding:11px 14px;font-family:inherit;font-size:12.5px;font-weight:800;color:#dfe9f5;cursor:pointer;letter-spacing:.04em}\n.g-inc .car{transition:transform .2s;color:#40C9F3}.g-inc.open .car{transform:rotate(180deg)}\n.g-inc ul{list-style:none;max-height:0;overflow:hidden;transition:max-height .28s;padding:0 16px;margin:0}\n.g-inc.open ul{max-height:420px;padding:2px 16px 12px}\n.g-inc li{font-size:12.5px;color:rgba(223,233,245,.92);padding:4px 0 4px 20px;position:relative;line-height:1.5}\n.g-inc li::before{content:\"\";position:absolute;left:2px;top:11px;width:6px;height:6px;border-radius:50%;background:#2ED87A}\n.g-inc li.you::before{background:#40C9F3}\n.g-inc li.na::before{background:#ff9b9b}\n.g-inc li b{color:#fff;font-weight:800}\n.g-q{margin-bottom:14px}.g-q:last-child{margin-bottom:0}\n.g-q>label{display:block;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#8fa6c0;margin-bottom:8px}\n.g-seg{display:flex;flex-wrap:wrap;gap:7px}\n.g-seg button{flex:1 1 0;min-width:0;font-family:inherit;font-size:13px;font-weight:700;color:#fff;background:rgba(255,255,255,.05);border:1.5px solid rgba(255,255,255,.18);border-radius:10px;padding:10px 8px;cursor:pointer;transition:all .15s;white-space:nowrap}\n.g-seg button.on{border-color:#40C9F3;background:rgba(35,210,255,.12);color:#7FE3FF;box-shadow:0 0 0 3px rgba(35,210,255,.12)}\n.g-seg.four button{flex:1 1 46%}\n.g-step{display:flex;align-items:center;gap:8px}\n.g-step button{width:42px;height:40px;flex:none;border-radius:10px;border:1.5px solid rgba(255,255,255,.22);background:rgba(255,255,255,.06);color:#40C9F3;font-size:21px;font-weight:700;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center;transition:all .15s}\n.g-step button:hover:not(:disabled){border-color:#40C9F3}.g-step button:disabled{opacity:.3;cursor:not-allowed}\n.g-step .val{flex:1;text-align:center;height:40px;display:flex;align-items:center;justify-content:center;border:1.5px solid rgba(64,201,243,.55);background:rgba(35,210,255,.09);border-radius:10px;font-size:14.5px;font-weight:800;color:#7FE3FF;letter-spacing:.2px}\n.g-step .val span{font-size:11px;font-weight:600;color:#8fa6c0;margin-left:5px}\n.g-rooms{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}\n.g-rooms.two{grid-template-columns:repeat(2,minmax(0,1fr))}\n.g-rc{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.13);border-radius:12px;padding:10px 8px;text-align:center}\n.g-rc .rl{font-size:16.5px;font-weight:700;color:#fff;line-height:1.2;min-height:26px;display:flex;align-items:center;justify-content:center}\n.g-rc .rs{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:6px}\n.g-rc .rs button{width:28px;height:28px;border-radius:8px;border:1.5px solid rgba(255,255,255,.22);background:rgba(255,255,255,.06);font-size:17px;font-weight:700;color:#40C9F3;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center}\n.g-rc .rs button:disabled{opacity:.3;cursor:not-allowed}\n.g-rc .rs .v{font-size:24px;line-height:1;font-weight:800;color:#fff;min-width:20px}\n.g-itemhead{display:flex;justify-content:space-between;font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#6d8199;padding:0 2px 7px}\n.g-item .lbl{min-width:0}\n.g-item{display:flex;align-items:center;justify-content:space-between;gap:10px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.13);border-radius:13px;padding:10px 13px;margin-bottom:8px;transition:all .15s}\n.g-item:last-child{margin-bottom:0}\n.g-item.picked{border-color:rgba(64,201,243,.6);background:rgba(35,210,255,.09)}\n.g-item .lbl{font-size:13.5px;font-weight:700;color:#fff;line-height:1.3}\n.g-item .rs{display:flex;align-items:center;gap:9px;flex:none}\n.g-item .rs button{width:30px;height:30px;border-radius:9px;border:1.5px solid rgba(255,255,255,.25);background:rgba(255,255,255,.06);font-size:17px;font-weight:700;color:#40C9F3;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center}\n.g-item .rs button:disabled{opacity:.3;cursor:not-allowed}\n.g-item .rs .v{font-size:16px;font-weight:800;color:#fff;min-width:16px;text-align:center}\n.g-note{font-size:11px;color:#8fa6c0;margin-top:8px;line-height:1.5}\n.g-foot{margin-top:16px;padding-top:15px;border-top:1px solid rgba(255,255,255,.12)}\n.g-row{display:flex;align-items:center;justify-content:space-between;gap:14px}\n.g-pr{text-align:left}\n.g-price{font-size:32px;font-weight:900;letter-spacing:-1.2px;color:#2ED87A;line-height:1}\n.g-price.na{font-size:15px;color:#ff9b9b;font-weight:700;letter-spacing:0}\n.g-est{font-size:11.5px;color:#8fa6c0;margin-top:5px}\n.g-book{flex:none;background:#23D2FF;color:#0F1923;border:none;border-radius:13px;padding:15px 26px;font-family:inherit;font-size:15.5px;font-weight:800;cursor:pointer;box-shadow:0 14px 34px -12px rgba(35,210,255,.6);transition:filter .15s;white-space:nowrap}\n.g-book:hover,.g-book:focus,.g-book:active{background:#23D2FF !important;color:#0F1923 !important;filter:brightness(1.06);outline:none}\n.g-book:disabled{opacity:.45;cursor:not-allowed}\n\/* WP theme sets a red\/pink global button:hover \u2014 pin every control in this block to our palette *\/\n.hfsk-root button:hover,.hfsk-root button:focus,.hfsk-root button:active{color:inherit}\n.hfsk-pill:hover,.hfsk-pill:focus,.hfsk-pill:active{background:linear-gradient(180deg,rgba(255,255,255,.09),rgba(255,255,255,.02)) !important;color:#dfe9f5 !important}\n.hfsk-pill.on:hover,.hfsk-pill.on:focus,.hfsk-pill.on:active{background:linear-gradient(180deg,rgba(35,210,255,.26),rgba(35,210,255,.09)) !important;color:#fff !important}\n.g-seg button:hover,.g-seg button:focus,.g-seg button:active{background:rgba(255,255,255,.08) !important;color:#fff !important;outline:none}\n.g-seg button.on:hover,.g-seg button.on:focus,.g-seg button.on:active{background:rgba(35,210,255,.12) !important;color:#7FE3FF !important}\n.g-step button:hover,.g-step button:focus,.g-step button:active{background:rgba(255,255,255,.1) !important;color:#40C9F3 !important;outline:none}\n.g-item .rs button:hover,.g-item .rs button:focus,.g-item .rs button:active{background:rgba(255,255,255,.12) !important;color:#40C9F3 !important;outline:none}\n.g-rc .rs button:hover,.g-rc .rs button:focus,.g-rc .rs button:active{background:rgba(255,255,255,.12) !important;color:#40C9F3 !important;outline:none}\n.g-inc>button:hover,.g-inc>button:focus,.g-inc>button:active{background:rgba(255,255,255,.04) !important;color:#dfe9f5 !important;outline:none}\n.g-fine{font-size:10.5px;color:#6d8199;margin-top:12px;text-align:center}\n\/* flooring extras: pattern preview, stain picker *\/\n.g-flprev{display:flex;align-items:center;gap:10px;margin-top:9px}\n.g-flprev img{width:96px;height:64px;object-fit:cover;border-radius:9px;border:1px solid rgba(255,255,255,.18);background:#fff}\n.g-flprev span{font-size:12px;color:#8fa6c0}\n.g-flstain{display:flex;align-items:center;gap:10px;margin-top:2px}\n.g-flstain img{width:44px;height:44px;object-fit:cover;border-radius:9px;border:1px solid rgba(255,255,255,.22);flex:none}\n.g-select{flex:1;min-width:0;height:42px;padding:0 12px;border-radius:10px;background:rgba(255,255,255,.07);border:1.5px solid rgba(255,255,255,.22);color:#fff;font-family:inherit;font-size:13.5px;font-weight:600;outline:none;appearance:auto;-webkit-appearance:menulist}\n.g-select:focus{border-color:#40C9F3}\n.g-select option{color:#0F1923;background:#fff}\n@media (max-width:980px){\n  .hfsk-hero{padding:calc(34px + var(--hf-header-h, 88px)) 18px 56px}\n  \/* minmax(0,1fr): a bare 1fr track grows to the cell's min-content and the\n     hero's overflow:hidden clips it off the right edge of small phones *\/\n  .hfsk-cols{grid-template-columns:minmax(0,1fr);gap:32px}\n  .hfsk-cols>*{min-width:0;max-width:100%}\n  .hfsk-glass{margin:0 auto;width:100%;max-width:520px}\n  .hfsk-sub{margin-bottom:22px}\n  .hfsk-pills{gap:8px}\n  .hfsk-pill{font-size:12.5px;padding:9px 14px}\n}\n@media (max-width:480px){\n  .hfsk-glass{padding:20px 18px 18px}\n  .g-price{font-size:26px}\n  .g-book{padding:13px 18px;font-size:14px}\n  .g-row{gap:10px}\n  .g-zip{width:132px}\n  .g-top h3{font-size:20px}\n  \/* compress-only-when-needed: identical at 390px+, shrinks on smaller phones *\/\n  .g-seg button{white-space:normal}\n  .hfsk-pills.fixedrow .hfsk-pill{white-space:normal;text-align:center;line-height:1.15}\n  .g-rc{padding:10px 5px}\n  .g-rc .rl{font-size:clamp(13px,4.2vw,16.5px)}\n  .g-rc .rs{gap:5px}\n  .g-rc .rs button{width:26px;height:26px}\n  .g-rc .rs .v{min-width:16px;font-size:22px}\n}\n<\/style>\n\n<div class=\"hfc\" id=\"hfc\">\n<section class=\"hfc-hero\"><div class=\"hfc-ey\">Pest Control Services<\/div><h1 class=\"hfc-h1\">Book Trusted <span>Pest Control Pros<\/span><\/h1>\n<p class=\"hfc-lead\">Search for what you need or pick a service below, and see your price as you go<\/p>\n<form class=\"hfc-srch\" id=\"hfcSearch\" role=\"search\" autocomplete=\"off\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"7\"\/><path d=\"m20 20-3.5-3.5\"\/><\/svg><input id=\"hfcQ\" type=\"text\" placeholder=\"Search for what you need\" aria-label=\"What do you need done?\"><button type=\"submit\">Get My Price<\/button><\/form>\n<div class=\"hfc-pop\"><button type=\"button\" data-hq=\"General pest control\">General Pest<\/button><button type=\"button\" data-hq=\"Ant treatment\">Ants<\/button><button type=\"button\" data-hq=\"Roach treatment\">Roaches<\/button><button type=\"button\" data-hq=\"Rodent control\">Rodents<\/button><button type=\"button\" data-hq=\"Termite inspection\">Termites<\/button><\/div><\/section>\n<div class=\"hfc-wrap\"><div class=\"hfc-lay\" id=\"hfcLay\">\n<div class=\"hfc-left\"><div class=\"hfc-blk\" id=\"hfcS1\"><div class=\"hfc-stp\"><h3>Most popular<\/h3><\/div><div class=\"hfc-sv\" id=\"hfcMain\"><\/div><div id=\"hfcAll\" hidden><\/div><button type=\"button\" class=\"hfc-more\" id=\"hfcMore\"><\/button><\/div>\n<\/div>\n<div class=\"hfc-box\" id=\"hfcBox\"><div class=\"hfc-nb\" id=\"hfcNb\"><\/div><\/div>\n<div class=\"hfc-bar\" id=\"hfcBar\"><div><b id=\"hfcBarP\">&hellip;<\/b><small id=\"hfcBarS\"><\/small><\/div><button type=\"button\" class=\"hfc-btn\" id=\"hfcBarB\">Book It<\/button><\/div>\n<\/div><\/div><\/div>\n\n\n\n<!-- ================= END HOUSE FLY SMOKE HERO ================= -->\n\n<!-- HF deep-link preselect 2026-08-17 (live) -->\n<script>\n(function(){\n  var q = new URLSearchParams(window.location.search);\n  var svc = q.get('hf_svc'), task = q.get('hf_task');\n  if(!svc && !task) return;\n  var tries = 0;\n  function norm(s){return (s||'').replace(\/\\s+\/g,' ').trim().toLowerCase()}\n  function findPill(label){\n    var pills = [].slice.call(document.querySelectorAll('button.hfsk-pill'));\n    var n = norm(label);\n    return pills.find(function(p){return norm(p.textContent)===n}) ||\n           pills.find(function(p){return norm(p.textContent).indexOf(n)===0}) ||\n           pills.find(function(p){return n.indexOf(norm(p.textContent))===0});\n  }\n  function go(){\n    tries++;\n    var pills = document.querySelectorAll('button.hfsk-pill');\n    if(!pills.length){ if(tries<40) return setTimeout(go,250); return; }\n    var s = svc && findPill(svc);\n    if(s && s.className.indexOf('on')<0){ s.click(); }\n    setTimeout(function(){\n      var t = task && findPill(task);\n      if(t && t.className.indexOf('on')<0){ t.click(); }\n    }, s ? 400 : 0);\n  }\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',function(){setTimeout(go,300)});\n  else setTimeout(go,300);\n})();\n<\/script><script id=\"hfc-js\" data-no-defer=\"1\" data-no-optimize=\"1\" data-no-minify=\"1\">\n(function(){\n  var D = {\"slug\": \"pest-control\", \"st\": \"Pest Control\", \"items\": [{\"qdef\": null, \"pstep\": null, \"key\": \"pc_general\", \"t\": \"menu\", \"name\": \"General Pest Control Treatment\", \"icon\": \"\ud83d\udc1c\", \"desc\": \"The standard visit every pest company sells\", \"full\": \"The standard visit every pest company sells: the inside treated at the baseboards, under sinks and appliances and in the garage, the outside perimeter sprayed, webs and nests knocked down off the eaves, entry points noted. Covers ants, roaches, spiders, silverfish, earwigs, crickets and the other common house pests. Book it once, or set it monthly and we keep it that way.\", \"section\": \"General Pests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 169.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-GENERAL\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"pc_size\", \"label\": \"Home size\", \"options\": [\"Up to 2,000 sq ft\", \"2,001 to 3,500 sq ft\", \"Over 3,500 sq ft\"], \"add\": {\"2,001 to 3,500 sq ft\": 29.99, \"Over 3,500 sq ft\": 59.99}}, {\"key\": \"pc_level\", \"label\": \"How bad is it?\", \"options\": [\"Prevention or a few bugs\", \"Active infestation, we can see them daily\"], \"add\": {\"Active infestation, we can see them daily\": 79.99}}, {\"key\": \"pc_pets\", \"label\": \"Products\", \"options\": [\"Standard products\", \"Pet and kid safe products only\"], \"add\": {\"Pet and kid safe products only\": 29.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_plan\", \"t\": \"menu\", \"name\": \"Pest Protection Plan, Four Quarterly Visits\", \"icon\": \"\ud83d\udcc5\", \"desc\": \"What the national brands sell as the subscription\", \"full\": \"What the national brands sell as the subscription: an initial inside-and-out treatment now, then three quarterly exterior visits over the year with free re-treats in between if anything comes back. Booked once; we schedule the follow-ups.\", \"section\": \"General Pests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 499.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-PLAN\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"pc_size\", \"label\": \"Home size\", \"options\": [\"Up to 2,000 sq ft\", \"2,001 to 3,500 sq ft\", \"Over 3,500 sq ft\"], \"add\": {\"2,001 to 3,500 sq ft\": 29.99, \"Over 3,500 sq ft\": 59.99}}, {\"key\": \"pc_pets\", \"label\": \"Products\", \"options\": [\"Standard products\", \"Pet and kid safe products only\"], \"add\": {\"Pet and kid safe products only\": 29.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_inspection\", \"t\": \"menu\", \"name\": \"Pest Inspection and Treatment Plan\", \"icon\": \"\ud83d\udd0d\", \"desc\": \"A tech walks the house, attic, crawl space and yard\", \"full\": \"A tech walks the house, attic, crawl space and yard, identifies what you have and where it is getting in, and writes up a treatment plan with the price. For the \\\"something is in the walls and I do not know what\\\" call. Credited toward the treatment when you book it.\", \"section\": \"General Pests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 89.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-INSPECT\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"pc_when\", \"label\": \"When\", \"options\": [\"Next available\", \"Same day\"], \"add\": {\"Same day\": 49.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_ants\", \"t\": \"menu\", \"name\": \"Ant Treatment\", \"icon\": \"\ud83d\udc1c\", \"desc\": \"The trail followed to the colony and the colony killed\", \"full\": \"The trail followed to the colony and the colony killed, not just the ants on the counter: non-repellent spray and gel baits inside, a perimeter barrier outside, mounds treated in the yard. Carpenter ants get the nest located in the wood and treated with a dust or foam.\", \"section\": \"General Pests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 199.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-ANTS\", \"variants\": [{\"key\": \"common\", \"label\": \"Common house ants (sugar, odorous, pavement)\", \"price\": 199.99}, {\"key\": \"fire\", \"label\": \"Fire ants, yard treatment\", \"price\": 199.99}, {\"key\": \"carpenter\", \"label\": \"Carpenter ants in the structure\", \"price\": 349.99}], \"rows\": false, \"variant_q\": \"Which ants?\", \"variant_default\": \"Common house ants (sugar, odorous, pavement)\", \"rank\": 50, \"questions\": [{\"key\": \"pc_size\", \"label\": \"Home size\", \"options\": [\"Up to 2,000 sq ft\", \"2,001 to 3,500 sq ft\", \"Over 3,500 sq ft\"], \"add\": {\"2,001 to 3,500 sq ft\": 29.99, \"Over 3,500 sq ft\": 59.99}}, {\"key\": \"an_follow\", \"label\": \"Follow-up\", \"options\": [\"One visit\", \"Add a follow-up visit in two weeks\"], \"add\": {\"Add a follow-up visit in two weeks\": 79.99}}, {\"key\": \"pc_pets\", \"label\": \"Products\", \"options\": [\"Standard products\", \"Pet and kid safe products only\"], \"add\": {\"Pet and kid safe products only\": 29.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_roaches\", \"t\": \"menu\", \"name\": \"Cockroach Treatment\", \"icon\": \"\ud83e\udeb3\", \"desc\": \"Gel baits and a growth regulator in every crack\", \"full\": \"Gel baits and a growth regulator in every crack, crevice and appliance void in the kitchen and baths, a residual spray at the baseboards and the perimeter, and a follow-up visit because German roaches never die in one. The American and oriental roaches that come in from outside get the perimeter and the drains.\", \"section\": \"General Pests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 199.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-ROACH\", \"variants\": [{\"key\": \"outdoor\", \"label\": \"Big outdoor roaches (American, oriental, palmetto)\", \"price\": 199.99}, {\"key\": \"german\", \"label\": \"German roaches in the kitchen and baths, two visits\", \"price\": 349.99}, {\"key\": \"severe\", \"label\": \"Severe, whole home, three visits\", \"price\": 599.99}], \"rows\": false, \"variant_q\": \"Which roaches?\", \"variant_default\": \"Big outdoor roaches (American, oriental, palmetto)\", \"rank\": 50, \"questions\": [{\"key\": \"pc_size\", \"label\": \"Home size\", \"options\": [\"Up to 2,000 sq ft\", \"2,001 to 3,500 sq ft\", \"Over 3,500 sq ft\"], \"add\": {\"2,001 to 3,500 sq ft\": 29.99, \"Over 3,500 sq ft\": 59.99}}, {\"key\": \"pc_pets\", \"label\": \"Products\", \"options\": [\"Standard products\", \"Pet and kid safe products only\"], \"add\": {\"Pet and kid safe products only\": 29.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_spiders\", \"t\": \"menu\", \"name\": \"Spider and Scorpion Treatment\", \"icon\": \"\ud83d\udd77\", \"desc\": \"Every web and egg sac swept off the eaves, soffits\", \"full\": \"Every web and egg sac swept off the eaves, soffits, windows and garage, the inside and outside treated with a residual, and the black widow and brown recluse hiding spots (wood piles, sheds, closets, crawl space) hit directly. Scorpions get a black-light sweep after dark.\", \"section\": \"General Pests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 199.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-SPIDER\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"pc_size\", \"label\": \"Home size\", \"options\": [\"Up to 2,000 sq ft\", \"2,001 to 3,500 sq ft\", \"Over 3,500 sq ft\"], \"add\": {\"2,001 to 3,500 sq ft\": 29.99, \"Over 3,500 sq ft\": 59.99}}, {\"key\": \"sp_scorp\", \"label\": \"Scorpions?\", \"options\": [\"Spiders only\", \"Scorpions too, black-light sweep\"], \"add\": {\"Scorpions too, black-light sweep\": 69.99}}, {\"key\": \"pc_pets\", \"label\": \"Products\", \"options\": [\"Standard products\", \"Pet and kid safe products only\"], \"add\": {\"Pet and kid safe products only\": 29.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_occasional\", \"t\": \"menu\", \"name\": \"Occasional Invaders Treatment\", \"icon\": \"\ud83e\udd97\", \"desc\": \"The bugs that wander in with the seasons and do not belong\", \"full\": \"The bugs that wander in with the seasons and do not belong to anyone: silverfish, earwigs, crickets, centipedes, millipedes, boxelder bugs, stink bugs, ladybugs, pill bugs. Inside and outside treated and the moisture and entry points they follow pointed out.\", \"section\": \"General Pests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 199.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-OCCASIONAL\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"pc_size\", \"label\": \"Home size\", \"options\": [\"Up to 2,000 sq ft\", \"2,001 to 3,500 sq ft\", \"Over 3,500 sq ft\"], \"add\": {\"2,001 to 3,500 sq ft\": 29.99, \"Over 3,500 sq ft\": 59.99}}, {\"key\": \"pc_pets\", \"label\": \"Products\", \"options\": [\"Standard products\", \"Pet and kid safe products only\"], \"add\": {\"Pet and kid safe products only\": 29.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_stored\", \"t\": \"menu\", \"name\": \"Pantry and Fabric Pest Treatment\", \"icon\": \"\ud83e\udd8b\", \"desc\": \"Pantry moths, grain beetles, carpet beetles and clothes moths\", \"full\": \"Pantry moths, grain beetles, carpet beetles and clothes moths: the source found and bagged, the shelves and closets treated with a residual and pheromone traps, and what to throw out and what to freeze explained.\", \"section\": \"General Pests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 179.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-PANTRY\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"st_where\", \"label\": \"Where\", \"options\": [\"Kitchen or pantry\", \"Closets, rugs and furniture\", \"Both\"], \"add\": {\"Both\": 69.99}}, {\"key\": \"pc_pets\", \"label\": \"Products\", \"options\": [\"Standard products\", \"Pet and kid safe products only\"], \"add\": {\"Pet and kid safe products only\": 29.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_fleas\", \"t\": \"menu\", \"name\": \"Flea and Tick Treatment, Indoors\", \"icon\": \"\ud83d\udc15\", \"desc\": \"Every carpet, rug, pet bed\", \"full\": \"Every carpet, rug, pet bed, couch and baseboard treated with an adulticide plus a growth regulator so the eggs never hatch, and a second visit two weeks later for the ones that do. Add the yard so they do not walk straight back in.\", \"section\": \"Bed Bugs & Fleas\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 199.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-FLEAS\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"pc_size\", \"label\": \"Home size\", \"options\": [\"Up to 2,000 sq ft\", \"2,001 to 3,500 sq ft\", \"Over 3,500 sq ft\"], \"add\": {\"2,001 to 3,500 sq ft\": 29.99, \"Over 3,500 sq ft\": 59.99}}, {\"key\": \"fl_yard\", \"label\": \"Yard\", \"options\": [\"Indoors only\", \"Treat the yard too\"], \"add\": {\"Treat the yard too\": 89.99}}, {\"key\": \"fl_follow\", \"label\": \"Follow-up\", \"options\": [\"Two visits included\", \"Add a third visit\"], \"add\": {\"Add a third visit\": 79.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_bedbugs\", \"t\": \"menu\", \"name\": \"Bed Bug Treatment\", \"icon\": \"\ud83d\udecf\", \"desc\": \"Chemical: every seam, crack, frame\", \"full\": \"Chemical: every seam, crack, frame, outlet and baseboard in the room treated with a residual and a dust, mattress and box spring encased, a second visit two weeks later. Heat: the whole home brought to 135 degrees for hours so every egg and bug dies in one day with no chemicals. Prep list sent the day you book.\", \"section\": \"Bed Bugs & Fleas\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 349.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-BEDBUG\", \"variants\": [{\"key\": \"chem1\", \"label\": \"Chemical, one room, two visits\", \"price\": 349.99}, {\"key\": \"chem3\", \"label\": \"Chemical, up to three rooms, two visits\", \"price\": 749.99}, {\"key\": \"heat\", \"label\": \"Whole-home heat treatment, one day\", \"price\": 1999.99}], \"rows\": false, \"variant_q\": \"Treatment\", \"variant_default\": \"Chemical, one room, two visits\", \"rank\": 50, \"questions\": [{\"key\": \"bb_encase\", \"label\": \"Mattress encasements\", \"options\": [\"I have them\", \"Add encasements, per bed\"], \"add\": {\"Add encasements, per bed\": 59.99}}, {\"key\": \"bb_level\", \"label\": \"How bad is it?\", \"options\": [\"A few bites, one room\", \"Bugs seen in more than one room\"], \"add\": {\"Bugs seen in more than one room\": 149.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_rodents\", \"t\": \"menu\", \"name\": \"Rodent Control, Rats and Mice\", \"icon\": \"\ud83d\udc00\", \"desc\": \"The attic, crawl space, garage and kitchen inspected for runs\", \"full\": \"The attic, crawl space, garage and kitchen inspected for runs and droppings, snap traps and tamper-proof bait stations set where they travel, a return visit in a week to clear the traps and re-set, and every hole they are using written up. Sealing the holes is the add-on that ends it.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 299.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-RODENT\", \"variants\": [{\"key\": \"mice\", \"label\": \"Mice\", \"price\": 299.99}, {\"key\": \"rats\", \"label\": \"Rats\", \"price\": 399.99}], \"rows\": false, \"variant_q\": \"Which rodents?\", \"variant_default\": \"Mice\", \"rank\": 50, \"questions\": [{\"key\": \"rd_seal\", \"label\": \"Sealing\", \"options\": [\"Trapping and baiting only\", \"Seal the entry points found, up to 10\"], \"add\": {\"Seal the entry points found, up to 10\": 199.99}}, {\"key\": \"rd_follow\", \"label\": \"Follow-up\", \"options\": [\"One return visit included\", \"Add a second return visit\"], \"add\": {\"Add a second return visit\": 89.99}}, {\"key\": \"pc_when\", \"label\": \"When\", \"options\": [\"Next available\", \"Same day\"], \"add\": {\"Same day\": 49.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_exclusion\", \"t\": \"menu\", \"name\": \"Rodent Exclusion and Home Sealing\", \"icon\": \"\ud83e\uddf1\", \"desc\": \"Every gap a mouse can fit through (a dime) sealed with hardware\", \"full\": \"Every gap a mouse can fit through (a dime) sealed with hardware cloth, copper mesh, sealant and metal flashing: foundation vents, weep holes, utility penetrations, roof returns, garage door corners, the gap under the siding. One-year warranty on the work.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 499.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-EXCLUSION\", \"variants\": [{\"key\": \"e10\", \"label\": \"Up to 10 entry points\", \"price\": 499.99}, {\"key\": \"whole\", \"label\": \"Whole home, 11 or more points\", \"price\": 899.99}], \"rows\": false, \"variant_q\": \"How much of the house?\", \"variant_default\": \"Up to 10 entry points\", \"rank\": 50, \"questions\": [{\"key\": \"ex_roof\", \"label\": \"Roof line\", \"options\": [\"Ground level and crawl space only\", \"Roof line and soffits too, ladder work\"], \"add\": {\"Roof line and soffits too, ladder work\": 149.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_wildlife\", \"t\": \"menu\", \"name\": \"Wildlife Removal\", \"icon\": \"\ud83e\udd9d\", \"desc\": \"Live traps or one-way doors set at the entry\", \"full\": \"Live traps or one-way doors set at the entry, the animals removed humanely within the law, the entry sealed so the next one cannot follow, and the attic or crawl space checked for damage. Bats get a one-way exclusion in season, never a trap.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 349.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-WILDLIFE\", \"variants\": [{\"key\": \"squirrel\", \"label\": \"Squirrels or chipmunks\", \"price\": 349.99}, {\"key\": \"raccoon\", \"label\": \"Raccoon or opossum\", \"price\": 449.99}, {\"key\": \"skunk\", \"label\": \"Skunk, groundhog or armadillo\", \"price\": 449.99}, {\"key\": \"bats\", \"label\": \"Bats, one-way exclusion\", \"price\": 699.99}, {\"key\": \"snake\", \"label\": \"Snake\", \"price\": 249.99}], \"rows\": false, \"variant_q\": \"What is it?\", \"variant_default\": \"Squirrels or chipmunks\", \"rank\": 50, \"questions\": [{\"key\": \"wl_seal\", \"label\": \"Sealing\", \"options\": [\"Removal only\", \"Seal the entry and the other openings found\"], \"add\": {\"Seal the entry and the other openings found\": 299.99}}, {\"key\": \"pc_when\", \"label\": \"When\", \"options\": [\"Next available\", \"Same day\"], \"add\": {\"Same day\": 49.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_dead_animal\", \"t\": \"menu\", \"name\": \"Dead Animal Removal and Deodorizing\", \"icon\": \"\ud83e\uddf9\", \"desc\": \"The smell traced to the carcass, the animal removed and bagged\", \"full\": \"The smell traced to the carcass, the animal removed and bagged, the spot disinfected and deodorized with an enzyme treatment, and the hole it died in opened and patched when it is inside a wall or ceiling.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 249.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-DEADANIMAL\", \"variants\": [{\"key\": \"open\", \"label\": \"Accessible: attic, crawl space, under a deck\", \"price\": 249.99}, {\"key\": \"wall\", \"label\": \"Inside a wall or ceiling, opened and patched\", \"price\": 399.99}], \"rows\": false, \"variant_q\": \"Where is it?\", \"variant_default\": \"Accessible: attic, crawl space, under a deck\", \"rank\": 50, \"questions\": [{\"key\": \"pc_when\", \"label\": \"When\", \"options\": [\"Next available\", \"Same day\"], \"add\": {\"Same day\": 49.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_attic\", \"t\": \"menu\", \"name\": \"Attic Cleanup and Sanitizing After Rodents\", \"icon\": \"\ud83c\udfe0\", \"desc\": \"The droppings and nesting vacuumed out with a HEPA system\", \"full\": \"The droppings and nesting vacuumed out with a HEPA system, the attic fogged with an antimicrobial and deodorizer, and when the insulation is soaked, the contaminated insulation removed and bagged so the smell and the pheromone trail that brings the next rodents are gone.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 599.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-ATTIC\", \"variants\": [{\"key\": \"sanitize\", \"label\": \"Clean and sanitize, insulation stays\", \"price\": 599.99}, {\"key\": \"remove\", \"label\": \"Remove contaminated insulation, up to 1,000 sq ft\", \"price\": 1999.99}, {\"key\": \"reinsulate\", \"label\": \"Remove and re-insulate, up to 1,000 sq ft\", \"price\": 3499.99}], \"rows\": false, \"variant_q\": \"How much?\", \"variant_default\": \"Clean and sanitize, insulation stays\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_moles\", \"t\": \"menu\", \"name\": \"Mole, Vole and Gopher Control\", \"icon\": \"\ud83e\uddab\", \"desc\": \"The active runs and mounds found, traps and bait set in them\", \"full\": \"The active runs and mounds found, traps and bait set in them, a return visit to check and re-set, and the grubs they feed on treated when that is what brought them. Three visits over a month because one trap night never gets them all.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 349.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-MOLES\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"ml_size\", \"label\": \"Yard\", \"options\": [\"Up to 1\/4 acre\", \"1\/4 to 1\/2 acre\", \"Over 1\/2 acre\"], \"add\": {\"1\/4 to 1\/2 acre\": 79.99, \"Over 1\/2 acre\": 149.99}}, {\"key\": \"ml_grub\", \"label\": \"Grubs\", \"options\": [\"Trapping only\", \"Add a grub treatment on the lawn\"], \"add\": {\"Add a grub treatment on the lawn\": 89.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_birds\", \"t\": \"menu\", \"name\": \"Bird Control and Nest Removal\", \"icon\": \"\ud83d\udc26\", \"desc\": \"Pigeon, starling and sparrow nests pulled out of the vents\", \"full\": \"Pigeon, starling and sparrow nests pulled out of the vents, soffits and ledges, the droppings cleaned and disinfected, and spikes, wire or a vent screen installed so they do not rebuild. Netting a whole roof line or a warehouse is a custom quote.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 199.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-BIRDS\", \"variants\": [{\"key\": \"nest\", \"label\": \"Nest removal and cleanup\", \"price\": 199.99}, {\"key\": \"spikes\", \"label\": \"Spikes or wire deterrents, up to 50 ft\", \"price\": 499.99}, {\"key\": \"vents\", \"label\": \"Vent screens and nest removal, up to 4 vents\", \"price\": 299.99}], \"rows\": false, \"variant_q\": \"What do you need?\", \"variant_default\": \"Nest removal and cleanup\", \"rank\": 50, \"questions\": [{\"key\": \"bd_height\", \"label\": \"Height\", \"options\": [\"Reachable from a ladder\", \"Over 20 ft, lift or roof work\"], \"add\": {\"Over 20 ft, lift or roof work\": 149.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_wasps\", \"t\": \"menu\", \"name\": \"Wasp, Hornet or Yellow Jacket Nest Removal\", \"icon\": \"\ud83d\udc1d\", \"desc\": \"The nest treated with a dust or aerosol at dusk\", \"full\": \"The nest treated with a dust or aerosol at dusk when they are all home, removed once it is dead, and the spot treated so a new queen does not rebuild. Yellow jackets in the ground, in a wall or under siding get the void treated and the hole sealed after.\", \"section\": \"Mosquitoes & Stinging\", \"unit\": \"unit\", \"unit_label\": \"nest\", \"price\": 199.99, \"min_qty\": 1, \"max_qty\": 99, \"step\": 1, \"code\": \"PC-WASPS\", \"variants\": [{\"key\": \"open\", \"label\": \"Exposed and reachable, eave or shrub\", \"price\": 199.99}, {\"key\": \"void\", \"label\": \"In a wall, the ground or a roof void\", \"price\": 349.99}, {\"key\": \"high\", \"label\": \"Over 20 ft up\", \"price\": 299.99}], \"rows\": false, \"variant_q\": \"Where is the nest?\", \"variant_default\": \"Exposed and reachable, eave or shrub\", \"rank\": 50, \"questions\": [{\"key\": \"pc_when\", \"label\": \"When\", \"options\": [\"Next available\", \"Same day\"], \"add\": {\"Same day\": 49.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_bees\", \"t\": \"menu\", \"name\": \"Honey Bee Removal and Relocation\", \"icon\": \"\ud83d\udc1d\", \"desc\": \"A swarm on a branch or fence boxed and relocated alive\", \"full\": \"A swarm on a branch or fence boxed and relocated alive to a beekeeper. An established hive in a wall, soffit or chimney opened up, the comb and the bees removed (the honey left behind rots and draws every pest in the county), the cavity treated and closed.\", \"section\": \"Mosquitoes & Stinging\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 299.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-BEES\", \"variants\": [{\"key\": \"swarm\", \"label\": \"Exposed swarm, boxed and relocated\", \"price\": 299.99}, {\"key\": \"hive\", \"label\": \"Established hive in a wall, soffit or chimney\", \"price\": 849.99}], \"rows\": false, \"variant_q\": \"Which one?\", \"variant_default\": \"Exposed swarm, boxed and relocated\", \"rank\": 50, \"questions\": [{\"key\": \"be_repair\", \"label\": \"Closing up\", \"options\": [\"We seal the opening\", \"Leave it open for your contractor\"], \"add\": {}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_termite_inspect\", \"t\": \"menu\", \"name\": \"Termite Inspection and WDO Report\", \"icon\": \"\ud83e\udeb5\", \"desc\": \"An inspector probes the sills, joists, crawl space, attic\", \"full\": \"An inspector probes the sills, joists, crawl space, attic, slab edges and every piece of wood touching soil, with a moisture meter and a sounding tool, and writes the wood-destroying organism report lenders and buyers ask for. Active termites, old damage and the conditions that invite them all go on the report.\", \"section\": \"Termites & Wood\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 129.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-TERMITEINSPECT\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"ti_purpose\", \"label\": \"Purpose\", \"options\": [\"Peace of mind\", \"Real estate closing, official WDO \/ WDI form\"], \"add\": {\"Real estate closing, official WDO \/ WDI form\": 49.99}}, {\"key\": \"pc_size\", \"label\": \"Home size\", \"options\": [\"Up to 2,000 sq ft\", \"2,001 to 3,500 sq ft\", \"Over 3,500 sq ft\"], \"add\": {\"2,001 to 3,500 sq ft\": 29.99, \"Over 3,500 sq ft\": 59.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_termite_liquid\", \"t\": \"menu\", \"name\": \"Termite Treatment, Liquid Barrier\", \"icon\": \"\ud83e\udeb5\", \"desc\": \"A trench dug and treated around the whole foundation\", \"full\": \"A trench dug and treated around the whole foundation with a non-repellent termiticide (Termidor class), the slab, porch and garage edges drilled and injected where the soil cannot be reached, and the holes patched. The subterranean termite treatment that comes with a renewable warranty. Priced per linear foot of foundation.\", \"section\": \"Termites & Wood\", \"unit\": \"unit\", \"unit_label\": \"linear ft\", \"price\": 9.99, \"min_qty\": 100, \"max_qty\": 600, \"step\": 10, \"code\": \"PC-TERMITELIQUID\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"tl_found\", \"label\": \"Foundation\", \"options\": [\"Slab\", \"Crawl space or basement\"], \"add\": {\"Crawl space or basement\": 199.99}}, {\"key\": \"tl_drill\", \"label\": \"Concrete\", \"options\": [\"Mostly soil, little drilling\", \"Patios, porches and a garage to drill through\"], \"add\": {\"Patios, porches and a garage to drill through\": 149.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_termite_bait\", \"t\": \"menu\", \"name\": \"Termite Bait Station System\", \"icon\": \"\ud83e\udeb5\", \"desc\": \"Bait stations (Sentricon class) set in the soil every ten\", \"full\": \"Bait stations (Sentricon class) set in the soil every ten to fifteen feet around the house, the colony eliminated as the workers carry the bait home, and a year of monitoring visits included. The no-drilling, no-trenching option. Renewable each year.\", \"section\": \"Termites & Wood\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 1499.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-TERMITEBAIT\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"pc_size\", \"label\": \"Home size\", \"options\": [\"Up to 2,000 sq ft\", \"2,001 to 3,500 sq ft\", \"Over 3,500 sq ft\"], \"add\": {\"2,001 to 3,500 sq ft\": 29.99, \"Over 3,500 sq ft\": 59.99}}, {\"key\": \"tb_active\", \"label\": \"Activity\", \"options\": [\"Prevention, no termites seen\", \"Active termites found, add a spot treatment\"], \"add\": {\"Active termites found, add a spot treatment\": 299.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_termite_spot\", \"t\": \"menu\", \"name\": \"Termite Spot Treatment\", \"icon\": \"\ud83e\udeb5\", \"desc\": \"One active spot treated\", \"full\": \"One active spot treated: a subterranean mud tube and the soil below it injected, or a drywood gallery in a window frame, fascia or piece of furniture drilled and treated with a foam or dust. For a known, limited infestation; a whole-house problem needs the barrier, the bait system or the tent.\", \"section\": \"Termites & Wood\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 349.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-TERMITESPOT\", \"variants\": [{\"key\": \"sub\", \"label\": \"Subterranean, a mud tube or one active spot\", \"price\": 349.99}, {\"key\": \"dry\", \"label\": \"Drywood, a gallery in trim, a frame or furniture\", \"price\": 449.99}], \"rows\": false, \"variant_q\": \"Which termites?\", \"variant_default\": \"Subterranean, a mud tube or one active spot\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_termite_renew\", \"t\": \"menu\", \"name\": \"Annual Termite Inspection and Bond Renewal\", \"icon\": \"\ud83d\udcc4\", \"desc\": \"The yearly visit on a treated house\", \"full\": \"The yearly visit on a treated house: the foundation, crawl space and bait stations inspected, the stations refreshed, the warranty renewed for another year so a re-treatment is free if they come back. For a house we treated or a bond you are transferring to us.\", \"section\": \"Termites & Wood\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 249.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-TERMITERENEW\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"tr_system\", \"label\": \"System\", \"options\": [\"Liquid barrier\", \"Bait stations\"], \"add\": {\"Bait stations\": 99.99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_carpenter_bees\", \"t\": \"menu\", \"name\": \"Carpenter Bee and Wood-Boring Beetle Treatment\", \"icon\": \"\ud83d\udc1d\", \"desc\": \"Every hole in the fascia, deck\", \"full\": \"Every hole in the fascia, deck, railings and eaves dusted and treated, the holes plugged after, and the bare wood that draws them pointed out. Powder post and old house borer beetles get the infested wood treated with a borate.\", \"section\": \"Termites & Wood\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 199.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-CARPENTERBEES\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"cb_height\", \"label\": \"Height\", \"options\": [\"Reachable from a ladder\", \"Over 20 ft up\"], \"add\": {\"Over 20 ft up\": 99.99}}, {\"key\": \"cb_plug\", \"label\": \"Holes\", \"options\": [\"Treat and plug\", \"Treat only\"], \"add\": {}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_q_fumigation\", \"t\": \"quote\", \"name\": \"Whole-House Tent Fumigation\", \"icon\": \"\u26fa\", \"desc\": \"The house tented and fumigated for drywood termites or a bed bug\", \"full\": \"The house tented and fumigated for drywood termites or a bed bug or beetle infestation nothing else will reach: two to three days out of the house, every egg and insect in every piece of wood dead. Priced by the cubic footage of the house after a measurement visit.\", \"section\": \"Termites & Wood\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 2999.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-Q-FUMIGATION\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_q_crawl\", \"t\": \"quote\", \"name\": \"Crawl Space Encapsulation and Moisture Control\", \"icon\": \"\ud83c\udfda\", \"desc\": \"The crawl space cleaned, the fungus treated\", \"full\": \"The crawl space cleaned, the fungus treated, a vapor barrier sealed to the walls and piers, vents closed and a dehumidifier set, so the moisture that feeds termites, mold and the pests that eat them is gone. Quoted after a look under the house.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 4999.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-Q-CRAWL\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_q_birds\", \"t\": \"quote\", \"name\": \"Bird Netting and Large Exclusion\", \"icon\": \"\ud83d\udc26\", \"desc\": \"A whole roof line, a loading dock\", \"full\": \"A whole roof line, a loading dock, a parking structure or a warehouse netted or wired off, the droppings cleaned. Measured and quoted on site.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 1499.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-Q-BIRDNET\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_q_pretreat\", \"t\": \"quote\", \"name\": \"New Construction Termite Pretreatment\", \"icon\": \"\ud83c\udfd7\", \"desc\": \"The soil under a new slab or around new footings treated\", \"full\": \"The soil under a new slab or around new footings treated before the pour, or the framing sprayed with a borate, with the certificate the builder and the lender need. Quoted from the plans.\", \"section\": \"Termites & Wood\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 999.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-Q-PRETREAT\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_q_attic_whole\", \"t\": \"quote\", \"name\": \"Whole-Attic Insulation Removal and Re-Insulation\", \"icon\": \"\ud83c\udfe0\", \"desc\": \"A whole attic over 1,000 sq ft stripped of contaminated\", \"full\": \"A whole attic over 1,000 sq ft stripped of contaminated insulation, sanitized, air sealed and blown back to code. Quoted after a look in the attic.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 3999.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-Q-ATTICWHOLE\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_q_commercial\", \"t\": \"quote\", \"name\": \"Commercial and Multi-Unit Pest Program\", \"icon\": \"\ud83c\udfe2\", \"desc\": \"A restaurant, a rental portfolio\", \"full\": \"A restaurant, a rental portfolio, an apartment building or an office on a monthly program with the documentation a health inspector or a landlord needs. Quoted per property.\", \"section\": \"General Pests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 249.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-Q-COMMERCIAL\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_perimeter_ao\", \"t\": \"menu\", \"name\": \"Exterior perimeter barrier spray\", \"icon\": \"\ud83c\udfe1\", \"desc\": \"A residual barrier three feet up the foundation and three feet\", \"full\": \"A residual barrier three feet up the foundation and three feet out, around every door, window and penetration, webs swept while we are there.\", \"section\": \"General Pests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 79.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-AO-PERIMETER\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_interior_ao\", \"t\": \"menu\", \"name\": \"Interior crack and crevice treatment\", \"icon\": \"\ud83d\udecb\", \"desc\": \"Baseboards, under the sinks, behind the appliances\", \"full\": \"Baseboards, under the sinks, behind the appliances, the garage and the utility room treated inside.\", \"section\": \"General Pests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 69.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-AO-INTERIOR\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_webs_ao\", \"t\": \"menu\", \"name\": \"Web and nest sweep\", \"icon\": \"\ud83d\udd78\", \"desc\": \"Every web, egg sac and mud dauber nest swept off the eaves\", \"full\": \"Every web, egg sac and mud dauber nest swept off the eaves, soffits, light fixtures and porch ceilings.\", \"section\": \"General Pests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 49.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-AO-WEBS\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_granular_ao\", \"t\": \"menu\", \"name\": \"Yard granular treatment\", \"icon\": \"\ud83c\udf3f\", \"desc\": \"A granular insecticide spread across the lawn and beds\", \"full\": \"A granular insecticide spread across the lawn and beds for the ants, fleas, ticks and crickets that start outside.\", \"section\": \"General Pests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 79.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-AO-GRANULAR\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_fireant_ao\", \"t\": \"menu\", \"name\": \"Fire ant mound treatment\", \"icon\": \"\ud83d\udc1c\", \"desc\": \"Each mound drenched or baited\", \"full\": \"Each mound drenched or baited so the queen dies and the mound empties, per mound.\", \"section\": \"General Pests\", \"unit\": \"unit\", \"unit_label\": \"mound\", \"price\": 29.99, \"min_qty\": 1, \"max_qty\": 99, \"step\": 1, \"code\": \"PC-AO-FIREANT\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_drainfly_ao\", \"t\": \"menu\", \"name\": \"Drain fly and fruit fly treatment\", \"icon\": \"\ud83e\udeb0\", \"desc\": \"The breeding drains foamed with a bio-cleaner and the fruit fly\", \"full\": \"The breeding drains foamed with a bio-cleaner and the fruit fly sources found and treated.\", \"section\": \"General Pests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 69.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-AO-DRAINFLY\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_bait_station_ao\", \"t\": \"menu\", \"name\": \"Exterior rodent bait station\", \"icon\": \"\ud83d\udce6\", \"desc\": \"A locked, tamper-proof bait station placed and keyed along\", \"full\": \"A locked, tamper-proof bait station placed and keyed along the foundation, per station.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"unit\", \"unit_label\": \"station\", \"price\": 39.99, \"min_qty\": 1, \"max_qty\": 99, \"step\": 1, \"code\": \"PC-AO-BAITSTATION\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_traps_ao\", \"t\": \"menu\", \"name\": \"Interior trap set, up to six traps\", \"icon\": \"\ud83e\udea4\", \"desc\": \"Snap traps set in the attic, garage\", \"full\": \"Snap traps set in the attic, garage, under the sinks and along the runs, baited and placed where they actually travel.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 49.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-AO-TRAPS\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_seal_ao\", \"t\": \"menu\", \"name\": \"Entry point sealing\", \"icon\": \"\ud83e\uddf1\", \"desc\": \"A gap sealed with hardware cloth, copper mesh and sealant\", \"full\": \"A gap sealed with hardware cloth, copper mesh and sealant, per opening.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"unit\", \"unit_label\": \"opening\", \"price\": 34.99, \"min_qty\": 1, \"max_qty\": 99, \"step\": 1, \"code\": \"PC-AO-SEAL\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"se_where\", \"label\": \"Where\", \"options\": [\"Ground level or crawl space\", \"Roof line, ladder work\"], \"add\": {\"Roof line, ladder work\": 15}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_door_sweep_ao\", \"t\": \"menu\", \"name\": \"Door sweep for pest exclusion\", \"icon\": \"\ud83d\udeaa\", \"desc\": \"A brush or rubber sweep on an exterior or garage door\", \"full\": \"A brush or rubber sweep on an exterior or garage door so the gap under it stops letting mice and crickets in, per door.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"unit\", \"unit_label\": \"door\", \"price\": 39.99, \"min_qty\": 1, \"max_qty\": 99, \"step\": 1, \"code\": \"PC-AO-DOORSWEEP\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_vent_screen_ao\", \"t\": \"menu\", \"name\": \"Vent or weep hole screen\", \"icon\": \"\ud83d\udd32\", \"desc\": \"A stainless screen or weep hole cover fitted on a foundation\", \"full\": \"A stainless screen or weep hole cover fitted on a foundation vent, dryer vent, gable vent or weep hole, per vent.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"unit\", \"unit_label\": \"vent\", \"price\": 29.99, \"min_qty\": 1, \"max_qty\": 99, \"step\": 1, \"code\": \"PC-AO-VENTSCREEN\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_chimney_cap_ao\", \"t\": \"menu\", \"name\": \"Chimney cap install\", \"icon\": \"\ud83c\udfe0\", \"desc\": \"A stainless cap with a screen fitted to the flue so raccoons\", \"full\": \"A stainless cap with a screen fitted to the flue so raccoons, squirrels, birds and bats stay out of the chimney.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 249.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-AO-CHIMNEYCAP\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_attic_inspect_ao\", \"t\": \"menu\", \"name\": \"Attic and crawl space inspection\", \"icon\": \"\ud83d\udd26\", \"desc\": \"The attic and the crawl space checked for droppings, nesting\", \"full\": \"The attic and the crawl space checked for droppings, nesting, chewed wires and entry holes, with photos.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 59.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-AO-ATTICINSPECT\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_sanitize_ao\", \"t\": \"menu\", \"name\": \"Sanitizing and deodorizing fog\", \"icon\": \"\ud83e\uddeb\", \"desc\": \"An antimicrobial and deodorizer fogged through the attic\", \"full\": \"An antimicrobial and deodorizer fogged through the attic, crawl space or garage after rodents or an animal.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 129.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-AO-SANITIZE\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_wasp_knock_ao\", \"t\": \"menu\", \"name\": \"Reachable wasp nest knockdown\", \"icon\": \"\ud83d\udc1d\", \"desc\": \"A small exposed nest treated and knocked down while we are there\", \"full\": \"A small exposed nest treated and knocked down while we are there, per nest.\", \"section\": \"Mosquitoes & Stinging\", \"unit\": \"unit\", \"unit_label\": \"nest\", \"price\": 59.99, \"min_qty\": 1, \"max_qty\": 99, \"step\": 1, \"code\": \"PC-AO-WASPKNOCK\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_encase_ao\", \"t\": \"menu\", \"name\": \"Mattress and box spring encasement\", \"icon\": \"\ud83d\udecf\", \"desc\": \"A bed bug proof encasement fitted on the mattress and box spring\", \"full\": \"A bed bug proof encasement fitted on the mattress and box spring, per bed.\", \"section\": \"Bed Bugs & Fleas\", \"unit\": \"unit\", \"unit_label\": \"bed\", \"price\": 59.99, \"min_qty\": 1, \"max_qty\": 99, \"step\": 1, \"code\": \"PC-AO-ENCASE\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_flea_yard_ao\", \"t\": \"menu\", \"name\": \"Flea and tick yard treatment\", \"icon\": \"\ud83d\udc15\", \"desc\": \"The lawn, the shaded beds and the pet areas treated\", \"full\": \"The lawn, the shaded beds and the pet areas treated so the fleas and ticks outside do not ride back in.\", \"section\": \"Bed Bugs & Fleas\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 89.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-AO-FLEAYARD\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_termite_check_ao\", \"t\": \"menu\", \"name\": \"Termite bait station check and refresh\", \"icon\": \"\ud83e\udeb5\", \"desc\": \"Existing bait stations opened\", \"full\": \"Existing bait stations opened, checked for activity and refreshed while we are there.\", \"section\": \"Termites & Wood\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 69.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-AO-TERMITECHECK\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"pc_dead_small_ao\", \"t\": \"menu\", \"name\": \"Small dead animal removal, accessible\", \"icon\": \"\ud83e\uddf9\", \"desc\": \"A dead mouse, rat, bird or squirrel removed from an accessible\", \"full\": \"A dead mouse, rat, bird or squirrel removed from an accessible spot and the spot disinfected.\", \"section\": \"Rodents & Wildlife\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 99.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"PC-AO-DEADSMALL\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}], \"extras\": [], \"main\": [\"pc_general\", \"pc_plan\", \"pc_ants\", \"pc_roaches\", \"pc_rodents\", \"pc_termite_inspect\"], \"sections\": [\"General Pests\", \"Bed Bugs & Fleas\", \"Rodents & Wildlife\", \"Mosquitoes & Stinging\", \"Termites & Wood\"]};\n  var APP = '\/account', QUOTE = APP + '\/customer\/booking-assistant\/quote', CART = APP + '\/customer\/booking-assistant\/create-cart', ZIP = '70124';\n  var SQ_HOUSE = ['Up to 1,000 sq ft','1,001 - 2,000','2,001 - 3,000','3,001 - 4,000','4,001 - 5,000'], SQ_APT = ['Up to 1,000 sq ft','1,001 - 2,000','2,001 - 3,000'];\n  var I = {}, X = {};\n  D.items.forEach(function(o){ I[o.key] = o; }); (D.extras || []).forEach(function(a){ X[a.key] = a; });\n  var st = { sel: [], c: {}, ex: {}, all: true, inc: {}, desc: {} };\n  var q = { busy: false, res: [], groups: [], seq: 0, err: '' };\n  function $(id){ return document.getElementById(id); }\n  function esc(t){ return String(t == null ? '' : t).replace(\/[&<>\"]\/g, function(c){ return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c]; }); }\n  function money(n){ return '$' + Number(n).toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2}); }\n  function dur(h){ var m = Math.round((Number(h) || 0) * 60), dd = Math.floor(m \/ 480), r = m % 480, hh = Math.floor(r \/ 60), mm = r % 60, p = []; if (dd) p.push(dd + ' day' + (dd > 1 ? 's' : '')); if (hh) p.push(hh + ' hr'); if (mm) p.push(mm + ' min'); return p.join(' ') || '0 min'; }\n  function unitTxt(o){ if (o.unit === 'sqft') return '\/ sq ft'; if (o.unit === 'hour') return '\/ hour'; if (o.unit === 'unit' && o.unit_label) return '\/ ' + o.unit_label; return ''; }\n  function on(k){ return st.sel.indexOf(k) >= 0; }\n  function nOf(o){ return o.unit === 'sqft' ? 'sq ft' : (o.unit === 'hour' ? 'hour' : (o.unit_label || '')); }\n  function pl(o, n){ return n > 1 && (o.unit === 'unit' || o.unit === 'hour') && !\/(ft|s)$\/.test(nOf(o)) ? 's' : ''; }\n  \/\/ per service settings, created with its defaults the first time it is added\n  function cf(o){\n    if (st.c[o.key]) return st.c[o.key];\n    var c = {};\n    if (o.t === 'visit') c = { often: 'One Time', freq: 'Weekly', prop: 0, sq: 1, beds: 1, full: 1, half: 0, cleaners: 1, hours: 2 };\n    else if (o.t === 'legacy') (o.fields || []).forEach(function(f){ if (f.t === 'seg') c[f.n] = f.def != null ? f.def : f.opts[0]; else if (f.t === 'num') c[f.n] = f.def; else if (f.t === 'list') c[f.n] = f.def || 0; else if (f.t === 'items') c.items = f.items.map(function(_, i){ return i === 0 ? 1 : 0; }); });\n    else { c.qty = o.qdef || o.min_qty || 1; c.ans = {}; (o.questions || []).forEach(function(qq){ c.ans[qq.key] = qq.options[0]; }); if ((o.variants || []).length){ var dv = o.variants.filter(function(x){ return x.key === o.variant_default || x.label === o.variant_default; })[0]; c.variant = (dv || o.variants[0]).key; if (o.rows){ c.rows = {}; o.variants.forEach(function(x){ c.rows[x.key] = 0; }); } \/* HF-2026-10-10z (Chris): nothing is picked for the customer, every count starts at 0 *\/ } }\n    st.c[o.key] = c; return c;\n  }\n  function shown(o, f){ if (!f.when) return true; var v = cf(o); for (var k in f.when){ if (f.when[k].indexOf(v[k]) < 0) return false; } return true; }\n  function rowsSum(o){ var c = cf(o), n = 0; for (var k in c.rows) n += c.rows[k]; return n; }\n  \/\/ a service with counted rows needs at least one row above 0 before it can be priced\n  function empty(o){\n    if (o.t === 'legacy'){ var f = (o.fields || []).filter(function(x){ return x.t === 'items'; })[0]; return !!f && !cf(o).items.some(function(n){ return n > 0; }); }\n    if (o.rows) return rowsSum(o) <= 0;\n    return false;\n  }\n  function hintOf(o){\n    if (o.hint) return o.hint;\n    if (o.t === 'quote') return 'custom quote';\n    if ((o.variants || []).length){ var ps = o.variants.map(function(x){ return x.price; }).filter(function(x){ return x > 0; }); if (ps.length) return 'from ' + money(Math.min.apply(null, ps)) + (o.unit !== 'flat' ? ' ' + unitTxt(o) : ''); }\n    return o.price > 0 ? money(o.price) + (o.unit !== 'flat' ? ' ' + unitTxt(o) : '') : 'see price';\n  }\n  \/\/ ---- the options under a picked card (white, on the left) ----\n  function ob(k, name, val, opts){ return '<div class=\"os\">' + opts.map(function(x){ return '<button type=\"button\" data-k=\"' + k + '\" data-fs=\"' + esc(name) + '\" data-v=\"' + esc(x) + '\"' + (x === val ? ' class=\"on\"' : '') + '>' + esc(x) + '<\/button>'; }).join('') + '<\/div>'; }\n  function om(k, name, val, min, max){ return '<div class=\"om\"><button type=\"button\" data-k=\"' + k + '\" data-fn=\"' + esc(name) + '\" data-d=\"-1\"' + (val <= min ? ' disabled' : '') + ' aria-label=\"Less\">\u2212<\/button><b' + (val ? '' : ' class=\"z\"') + '>' + val + '<\/b><button type=\"button\" data-k=\"' + k + '\" data-fn=\"' + esc(name) + '\" data-d=\"1\"' + (val >= max ? ' disabled' : '') + ' aria-label=\"More\">+<\/button><\/div>'; }\n  function ost(k, name, disp, unit, lo, hi){ return '<div class=\"ost\"><div class=\"om\"><button type=\"button\" data-k=\"' + k + '\" data-fn=\"' + esc(name) + '\" data-d=\"-1\"' + (lo ? ' disabled' : '') + ' aria-label=\"Less\">\u2212<\/button><\/div><div class=\"ov\">' + esc(disp) + (unit ? '<small>' + esc(unit) + '<\/small>' : '') + '<\/div><div class=\"om\"><button type=\"button\" data-k=\"' + k + '\" data-fn=\"' + esc(name) + '\" data-d=\"1\"' + (hi ? ' disabled' : '') + ' aria-label=\"More\">+<\/button><\/div><\/div>'; }\n  function lbl(t){ return '<div class=\"ol\">' + esc(t) + '<\/div>'; }\n  function optsHTML(o){\n    var c = cf(o), k = o.key, h = '';\n    if (o.t === 'visit'){\n      if (o.recurring){ h += lbl('How often?') + ob(k, 'often', c.often, ['One Time', 'Recurring']); if (c.often === 'Recurring') h += lbl('How frequently?') + ob(k, 'freq', c.freq, ['Weekly', 'Bi-Weekly', 'Monthly']); }\n      if (o.hourly){ var mx = c.often === 'Recurring' ? 4 : 8; if (c.hours > mx) c.hours = mx;\n        h += lbl('How many cleaners?') + ob(k, 'cleaners', c.cleaners === 2 ? '2 Cleaners' : '1 Cleaner', ['1 Cleaner', '2 Cleaners']);\n        h += lbl('How many hours?') + ost(k, 'hours', c.hours, 'hr' + (c.hours > 1 ? 's' : ''), c.hours <= 1, c.hours >= mx);\n      } else { var sl = c.prop ? SQ_APT : SQ_HOUSE; if (c.sq > sl.length - 1) c.sq = sl.length - 1;\n        h += lbl('Type of property') + ob(k, 'prop', c.prop ? 'Apartment \/ Condo' : 'House \/ Townhouse', ['House \/ Townhouse', 'Apartment \/ Condo']);\n        h += lbl('Square feet') + ost(k, 'sq', sl[c.sq].replace(' sq ft', ''), 'sq ft', c.sq <= 0, c.sq >= sl.length - 1);\n        h += lbl('Bedrooms & bathrooms') + '<div class=\"orm\"><div>Bedrooms' + om(k, 'beds', c.beds, 1, 9) + '<\/div><div>Full Baths' + om(k, 'full', c.full, 1, 9) + '<\/div><div>Half Baths' + om(k, 'half', c.half, 0, 9) + '<\/div><\/div>';\n      }\n    } else if (o.t === 'legacy'){\n      (o.fields || []).forEach(function(f){\n        if (!shown(o, f)) return;\n        if (f.t === 'seg') h += lbl(f.label) + ob(k, f.n, c[f.n], f.opts);\n        else if (f.t === 'num') h += lbl(f.label) + ost(k, f.n, Number(c[f.n]).toLocaleString('en-US'), f.unit + (f.unit && c[f.n] > 1 && !\/ft$\/.test(f.unit) ? 's' : ''), c[f.n] <= f.min, c[f.n] >= f.max);\n        else if (f.t === 'list') h += lbl(f.label) + ost(k, f.n, f.vals[c[f.n]], f.unit, c[f.n] <= 0, c[f.n] >= f.vals.length - 1);\n        else if (f.t === 'items') h += lbl(f.label) + f.items.map(function(it, i){ return '<div class=\"orw\"><span>' + esc(it) + '<\/span>' + om(k, 'it:' + i, c.items[i], 0, 20) + '<\/div>'; }).join('');\n      });\n    } else if (o.t === 'menu'){\n      if (o.rows) h += lbl(o.variant_q || 'How many?') + o.variants.map(function(x){ return '<div class=\"orw\"><span>' + esc(x.label) + '<small>' + money(x.price) + ' each<\/small><\/span>' + om(k, 'row:' + x.key, c.rows[x.key] || 0, 0, o.max_qty || 20) + '<\/div>'; }).join('');\n      else {\n        if ((o.variants || []).length){ var cv = o.variants.filter(function(x){ return x.key === c.variant; })[0] || o.variants[0];\n          h += lbl(o.variant_q || 'Which one?') + '<div class=\"os\">' + o.variants.map(function(x){ return '<button type=\"button\" data-k=\"' + k + '\" data-var=\"' + esc(x.key) + '\"' + (x.key === cv.key ? ' class=\"on\"' : '') + '>' + esc(x.label) + '<\/button>'; }).join('') + '<\/div>'; }\n        if (o.unit !== 'flat'){ var lab = nOf(o) + pl(o, c.qty); h += lbl('How many?') + ost(k, 'qty', Number(c.qty).toLocaleString('en-US'), lab, c.qty <= o.min_qty, c.qty >= o.max_qty); }\n        (o.questions || []).forEach(function(qq){ h += lbl(qq.label) + '<div class=\"os\">' + qq.options.map(function(x){ var ad = (qq.add || {})[x]; return '<button type=\"button\" data-k=\"' + k + '\" data-q=\"' + esc(qq.key) + '\" data-v=\"' + esc(x) + '\"' + (c.ans[qq.key] === x ? ' class=\"on\"' : '') + '>' + esc(x) + (ad ? ' <small>+' + money(ad).replace('.00', '') + '<\/small>' : '') + '<\/button>'; }).join('') + '<\/div>'; });\n      }\n    }\n    if (empty(o)) h += '<p class=\"oh\">Add at least one to see your price.<\/p>';\n    if ((o.inc || []).length) h += '<button type=\"button\" class=\"oi\" data-k=\"' + k + '\" data-tog=\"inc\">What is included <span>' + (st.inc[k] ? '\u25b4' : '\u25be') + '<\/span><\/button>' + (st.inc[k] ? '<ul>' + o.inc.map(function(i){ return '<li>' + esc(i) + '<\/li>'; }).join('') + '<\/ul>' : '');\n    return h ? '<div class=\"hfc-opt\">' + h + '<\/div>' : '';\n  }\n  function cardHTML(o){\n    var s = on(o.key), op = s ? optsHTML(o) : '';\n    \/\/ HF-2026-10-10x (Chris): a picked card with options spans both columns and pushes the others down\n    return '<div class=\"hfc-cw' + (s ? ' on' : '') + (op ? ' wide' : '') + '\"><button type=\"button\" class=\"hfc-card' + (s ? ' on' : '') + '\" data-svc=\"' + o.key + '\" aria-pressed=\"' + (s ? 'true' : 'false') + '\"><span class=\"hfc-ic\">' + o.icon + '<\/span><span><h4>' + esc(o.name) + '<\/h4><p>' + esc(o.desc) + (o.desc ? ' \u00b7 ' : '') + hintOf(o) + '<\/p><\/span><span class=\"hfc-ck\">' + (s ? '\u2713' : '') + '<\/span><\/button>' + op + '<\/div>';\n  }\n  function hostVisit(){ for (var i = 0; i < st.sel.length; i++){ var o = I[st.sel[i]]; if (o.t === 'visit' && !o.hourly) return o; } return null; }\n  function renderLeft(){\n    $('hfcMain').innerHTML = D.main.map(function(k){ return cardHTML(I[k]); }).join('');\n    var rest = D.items.filter(function(o){ return D.main.indexOf(o.key) < 0; });\n    \/\/ HF-2026-10-10x (Chris): no numbered steps; \"Most popular\" on top, then every category\n    $('hfcAll').hidden = false;\n    $('hfcAll').innerHTML = D.sections.map(function(sec){\n      var it = rest.filter(function(o){ return o.section === sec; }); if (!it.length) return '';\n      return '<div class=\"hfc-cat\"><div class=\"hfc-stp\"><h3>' + esc(sec) + '<\/h3><\/div><div class=\"hfc-sv\">' + it.map(cardHTML).join('') + '<\/div><\/div>';\n    }).join('');\n    var mb = $('hfcMore'); if (mb) mb.hidden = true;\n    var s2 = $('hfcS2'); if (s2){ s2.hidden = !(D.extras || []).length;\n      if (!s2.hidden){ var hv = hostVisit();\n        $('hfcAo').innerHTML = D.extras.map(function(a){ return '<button type=\"button\" class=\"hfc-ao' + (st.ex[a.key] && hv ? ' on' : '') + '\" data-ex=\"' + a.key + '\"' + (hv ? '' : ' disabled') + '><span>' + esc(a.name) + '<\/span><b>' + money(a.price) + (a.unit !== 'flat' ? ' <small>' + unitTxt(a) + '<\/small>' : '') + '<\/b><\/button>'; }).join('');\n        var nt = $('hfcAoNote'); nt.hidden = !!hv; nt.textContent = 'These ride along with a home cleaning visit. Pick Whole Home, Deep Clean, Move In \/ Out or Airbnb above to add them.';\n        var am = $('hfcAoMore'); if (am) am.hidden = true; } }\n  }\n  \/\/ ---- engine calls: which services price together ----\n  function menuSel(o){ var c = cf(o), m = { key: o.key, qty: 1, variant: null, answers: {} };\n    if (o.rows){ m.qty = rowsSum(o); m.answers = { rows: o.variants.filter(function(x){ return c.rows[x.key] > 0; }).map(function(x){ return x.key + ':' + c.rows[x.key]; }).join(',') }; }\n    else { m.qty = o.unit === 'flat' ? 1 : c.qty; m.variant = (o.variants || []).length ? c.variant : null; for (var qk in (c.ans || {})) m.answers[qk] = c.ans[qk]; }\n    return m; }\n  function groups(){\n    var g = [], menus = [], hv = hostVisit();\n    st.sel.forEach(function(k){ var o = I[k]; if (o.t === 'menu' && !empty(o)) menus.push(o); });\n    if (hv) g.push({ k: 'visit', host: hv, aos: menus, ex: Object.keys(st.ex).filter(function(x){ return st.ex[x]; }) });\n    st.sel.forEach(function(k){ var o = I[k]; if (o.t === 'visit' && o.hourly) g.push({ k: 'visit', host: o, aos: [], ex: [] }); });\n    if (!hv && menus.length) g.push({ k: 'menu', host: menus[0], aos: menus.slice(1), ex: [] });\n    st.sel.forEach(function(k){ var o = I[k]; if (o.t === 'legacy' && !empty(o)) g.push({ k: 'legacy', host: o, aos: [], ex: [] }); });\n    return g;\n  }\n  function selection(gr){\n    var o = gr.host, c = cf(o), p = { service_type: D.st, zip: ZIP, zipcode: ZIP };\n    if (gr.k === 'visit'){\n      p.cleaningType = 'House Cleaning'; p.houseCleaningType = o.hct;\n      if (o.recurring){ p.recurring = c.often; if (c.often === 'Recurring') p.frequency = c.freq; } else p.recurring = 'One Time';\n      if (o.hourly){ p.cleaners = c.cleaners === 2 ? '2 Cleaners' : '1 Cleaner'; p.hours = c.hours + ' HR'; }\n      else { var sl = c.prop ? SQ_APT : SQ_HOUSE; p.propertyType = c.prop ? 'Apartment \/ Condo' : 'House \/ Townhouse'; p.sqft = sl[c.sq]; p.bedrooms = String(c.beds); p.fullBaths = String(c.full); p.halfBaths = String(c.half); }\n    } else if (gr.k === 'legacy'){\n      for (var k in o.sel) p[k] = o.sel[k];\n      (o.fields || []).forEach(function(f){\n        if (!shown(o, f)) return;\n        if (f.t === 'seg'){ var val = c[f.n]; p[f.p] = f.pv ? f.pv[val] : val; if (f.p2 && f.pv2 && f.pv2[val]) p[f.p2] = f.pv2[val]; }\n        else if (f.t === 'num') p[f.p] = String(c[f.n]);\n        else if (f.t === 'list') p[f.p] = f.vals[c[f.n]];\n        else if (f.t === 'items'){ var sel = {}, parts = []; f.items.forEach(function(it, i){ var n = c.items[i] || 0; if (n > 0){ sel[it] = n; parts.push(n + ' x ' + it); } }); p[f.pj] = JSON.stringify(sel); p[f.pt] = parts.join(', '); }\n      });\n    } else {\n      var m = menuSel(o); p.menu_json = JSON.stringify({ key: o.key, code: o.code, qty: m.qty, variant: m.variant, answers: m.answers, name: o.name, extras_only: false }); p.service_code = o.code;\n    }\n    var aos = gr.aos.map(menuSel).concat(gr.ex.map(function(x){ return { key: x, qty: 1 }; }));\n    if (aos.length) p.addons_json = JSON.stringify(aos);\n    return p;\n  }\n  function post(url, body, again){\n    var h = { 'Content-Type': 'application\/json', 'Accept': 'application\/json', 'X-Requested-With': 'XMLHttpRequest' };\n    var t = document.querySelector('meta[name=\"csrf-token\"]'); if (t) h['X-CSRF-TOKEN'] = t.getAttribute('content');\n    \/\/ a price answers in well under a second; one that hangs (about 1 in 60 through the load balancer) is cut at 6 s and\n    \/\/ tried again, twice at most, so the box never sits on \"\u2026\" (cart posts are never retried)\n    var quote = url === QUOTE, ac = (quote && window.AbortController) ? new AbortController() : null, tm = ac ? setTimeout(function(){ ac.abort(); }, 6000) : null;\n    return fetch(url, { method: 'POST', headers: h, credentials: 'same-origin', body: JSON.stringify(body), signal: ac ? ac.signal : undefined }).then(function(r){ clearTimeout(tm); if (!r.ok) throw new Error('HTTP ' + r.status); return r.json(); })\n      .catch(function(e){ clearTimeout(tm); if (quote && (again || 0) < 2) return post(url, body, (again || 0) + 1); throw e; });\n  }\n  var timer = null;\n  function reprice(){\n    q.busy = true; q.err = ''; renderBox(); clearTimeout(timer);\n    timer = setTimeout(function(){\n      var my = ++q.seq, gs = groups();\n      if (!gs.length){ q.busy = false; q.groups = []; q.res = []; renderBox(); return; }\n      Promise.all(gs.map(function(g){ return post(QUOTE, selection(g)); })).then(function(rs){ if (my !== q.seq) return; q.groups = gs; q.res = rs; q.busy = false; renderBox(); })\n        .catch(function(){ if (my !== q.seq) return; q.busy = false; q.groups = []; q.res = []; q.err = 'We could not load a price. Please try again.'; renderBox(); });\n    }, 220);\n  }\n  \/\/ ---- the navy box: only what was added ----\n  function subOf(o){\n    var c = cf(o), sl;\n    if (o.t === 'visit'){ if (o.hourly) return (c.cleaners === 2 ? '2 cleaners' : '1 cleaner') + ' \u00b7 ' + c.hours + ' hr' + (c.hours > 1 ? 's' : '') + (c.often === 'Recurring' ? ' \u00b7 ' + c.freq : '');\n      sl = c.prop ? SQ_APT : SQ_HOUSE; return (c.often === 'Recurring' ? c.freq : 'One time') + ' \u00b7 ' + sl[c.sq].replace(' sq ft', '') + ' sq ft \u00b7 ' + c.beds + ' bd \u00b7 ' + c.full + (c.half ? '.5' : '') + ' ba'; }\n    if (o.t === 'legacy'){ var out = [];\n      (o.fields || []).forEach(function(f){ if (!shown(o, f)) return;\n        if (f.t === 'items') f.items.forEach(function(it, i){ if (c.items[i] > 0) out.push(c.items[i] + ' \u00d7 ' + it); });\n        else if (f.t === 'num') out.push(Number(c[f.n]).toLocaleString('en-US') + ' ' + f.unit + (c[f.n] > 1 && f.unit && !\/ft$\/.test(f.unit) ? 's' : ''));\n        else if (f.t === 'list') out.push(f.vals[c[f.n]] + (f.unit ? ' ' + f.unit : ''));\n        else if (f.t === 'seg') out.push(c[f.n]); });\n      return out.join(' \u00b7 '); }\n    if (o.t === 'quote') return 'Homer builds your quote in chat';\n    if (o.rows) return o.variants.filter(function(x){ return c.rows[x.key] > 0; }).map(function(x){ return c.rows[x.key] + ' \u00d7 ' + x.label; }).join(', ');\n    var v = (o.variants || []).filter(function(x){ return x.key === c.variant; })[0], bits = [];\n    if (v) bits.push(v.label); if (o.unit !== 'flat') bits.push(Number(c.qty).toLocaleString('en-US') + ' ' + nOf(o) + pl(o, c.qty));\n    (o.questions || []).forEach(function(qq){ var a = (c.ans || {})[qq.key]; if (a && a !== qq.options[0]) bits.push(\/^(yes|no)$\/i.test(a) ? qq.label.replace(\/\\?$\/, '') + ': ' + a : a); });\n    return bits.join(' \u00b7 ');\n  }\n  function bst(k, fn, n, min, max){ return '<div class=\"hfc-bs\"><button type=\"button\" data-k=\"' + k + '\" data-fn=\"' + esc(fn) + '\" data-d=\"-1\"' + (n <= min ? ' disabled' : '') + ' aria-label=\"Less\">\u2212<\/button><b>' + Number(n).toLocaleString('en-US') + '<\/b><button type=\"button\" data-k=\"' + k + '\" data-fn=\"' + esc(fn) + '\" data-d=\"1\"' + (n >= max ? ' disabled' : '') + ' aria-label=\"More\">+<\/button><\/div>'; }\n  function xb(k){ return '<button type=\"button\" class=\"x\" data-rm=\"' + esc(k) + '\" aria-label=\"Remove\">\u00d7<\/button>'; }\n  function moreOf(o){ var t = o.full || ((o.inc || []).length ? '' : o.desc); if (!t && !(o.inc || []).length) return '';\n    return '<button type=\"button\" class=\"hfc-sm\" data-k=\"' + o.key + '\" data-tog=\"desc\">' + (st.desc[o.key] ? 'See less \u25b4' : 'See more \u25be') + '<\/button>' + (st.desc[o.key] ? '<div class=\"hfc-dsc\">' + (t ? '<p>' + esc(t) + '<\/p>' : '') + ((o.inc || []).length ? '<ul>' + o.inc.map(function(i){ return '<li>' + esc(i) + '<\/li>'; }).join('') + '<\/ul>' : '') + '<\/div>' : ''); }\n  \/\/ HF-2026-10-10x (Chris): every item is its own row with its amount (\u2212 n +) and price; \"See more\" opens the description\n  function groupHTML(o, price, pending){\n    var c = cf(o), P = function(v){ return v != null && !pending ? '<b>' + money(v) + '<\/b>' : '<b>&hellip;<\/b>'; }, h = '<div class=\"hfc-sg\">';\n    if (o.t === 'quote') return h + '<div class=\"hfc-ln\"><span>' + esc(o.name) + '<small>Homer builds your quote in chat<\/small><\/span><b class=\"q\">Custom quote<\/b>' + xb(o.key) + '<\/div>' + moreOf(o) + '<\/div>';\n    if (o.rows){\n      h += '<div class=\"hfc-sh\"><span>' + esc(o.name) + '<\/span>' + xb(o.key) + '<\/div>';\n      o.variants.forEach(function(x){ var n = c.rows[x.key] || 0; if (n <= 0) return;\n        h += '<div class=\"hfc-ln hfc-row\"><span>' + esc(x.label) + '<small>' + money(x.price) + ' each<\/small><\/span>' + bst(o.key, 'row:' + x.key, n, 0, o.max_qty || 20) + P(pending ? null : (function(v){ var nc = Math.round((v + 0.01) \/ 5) * 5 - 0.01; return (nc > 0 && Math.abs(nc - v) < 2.6) ? Math.round(nc * 100) \/ 100 : v; })(Math.round(x.price * n * 100) \/ 100)) + '<\/div>'; });\n      if (empty(o)) h += '<div class=\"hfc-ln hfc-row\"><span><small>Add at least one on the left<\/small><\/span><\/div>';\n    } else {\n      var stp = (o.t === 'menu' && o.unit !== 'flat') ? bst(o.key, 'qty', c.qty, o.min_qty, o.max_qty) : '';\n      h += '<div class=\"hfc-ln\"><span>' + esc(o.name) + '<small>' + esc(subOf(o)) + '<\/small><\/span>' + stp + P(price) + xb(o.key) + '<\/div>';\n    }\n    return h + moreOf(o) + '<\/div>';\n  }\n  function lineHTML(name, sub, price, k){ return '<div class=\"hfc-ln\"><span>' + esc(name) + (sub ? '<small>' + esc(sub) + '<\/small>' : '') + '<\/span>' + price + (k ? '<button type=\"button\" class=\"x\" data-rm=\"' + esc(k) + '\" aria-label=\"Remove\">\u00d7<\/button>' : '') + '<\/div>'; }\n  function renderBox(){\n    var h = '<div class=\"t\">Your services<\/div>', ok = true, total = 0, mins = 0, any = false, na = false, quotes = [];\n    var pending = q.busy || (q.groups.length !== groups().length);\n    if (!st.sel.length) h += '<p class=\"hfc-emp\">Pick one or more services on the left. Everything you add shows here with its price.<\/p>';\n    var lines = '';\n    var priced = {};\n    q.groups.forEach(function(g, i){ var r = q.res[i] || {};\n      if (!r.available){ na = true; ok = false; return; }\n      if (r.needs_quote || !(r.price > 0)){ ok = false; return; }\n      any = true; total += Number(r.price); mins += Number(r.duration) || 0;\n      var aol = r.addons || [], aoSum = 0; aol.forEach(function(l){ aoSum += Number(l.price) || 0; });\n      \/\/ HF-2026-10-11a: every line carries its own engine price and the total is their sum (no rounding on a line)\n      var base = Math.round((r.price - aoSum) * 100) \/ 100;\n      priced[g.host.key] = base;\n      aol.forEach(function(l){ priced[l.key] = Math.round(Number(l.price) * 100) \/ 100; });\n    });\n    st.sel.forEach(function(k){ var o = I[k]; if (o.t === 'quote') quotes.push(o); lines += groupHTML(o, priced[k], pending); });\n    Object.keys(st.ex).forEach(function(x){ if (st.ex[x] && hostVisit()) lines += lineHTML(X[x].name, 'With your home cleaning', priced[x] != null && !pending ? '<b>' + money(priced[x]) + '<\/b>' : '<b>&hellip;<\/b>', 'ex:' + x); });\n    if (lines) h += '<div class=\"hfc-lns\">' + lines + '<\/div>';\n    var onlyQ = st.sel.length && quotes.length === st.sel.length, canBook = !pending && any && ok && !q.err;\n    var ptxt = onlyQ ? 'Custom quote' : (!st.sel.length ? '$0.00' : (pending ? '&hellip;' : (na ? 'Not available yet' : (any ? money(total) : '&hellip;'))));\n    var btn = onlyQ ? 'Get My Quote' : 'Book It';\n    h += '<div class=\"hfc-foot\"><div><div class=\"hfc-price' + (na || onlyQ ? ' na' : '') + '\" id=\"hfcP\">' + ptxt + '<\/div><p>' + (canBook ? 'est. duration: ' + dur(mins) : (onlyQ ? 'Homer builds your quote in chat' : '')) + '<\/p><\/div><button type=\"button\" class=\"hfc-btn\" id=\"hfcBook\"' + (canBook || onlyQ ? '' : ' disabled') + '>' + btn + '<\/button><\/div>';\n    if (quotes.length && !onlyQ) h += '<div class=\"hfc-err\">' + esc(quotes.map(function(o){ return o.name; }).join(', ')) + ' ' + (quotes.length > 1 ? 'are' : 'is') + ' priced by custom quote. Book the rest, then ask Homer for the quote.<\/div>';\n    if (q.err) h += '<div class=\"hfc-err\">' + esc(q.err) + '<\/div>';\n    h += '<div class=\"hfc-ft\">Upfront price \u00b7 free cancellation up to 24 hours before service<\/div>';\n    $('hfcNb').innerHTML = h;\n    $('hfcBarP').innerHTML = ptxt;\n    $('hfcBarS').textContent = st.sel.length ? st.sel.length + ' service' + (st.sel.length > 1 ? 's' : '') : 'Pick a service';\n    $('hfcBarB').disabled = !(canBook || onlyQ); $('hfcBarB').textContent = btn;\n  }\n  function ask(text){\n    try { window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: 'hf_hero_select', hf_kind: 'query', hf_value: text }); } catch (e) {}\n    if (typeof window.hfOpenConcierge === 'function'){ window.hfOpenConcierge({ type: 'query', q: text, big: true }); return; }\n    window.location.href = APP + '\/customer\/ai-booking?embed=1&panel=1&full=1&q=' + encodeURIComponent(text);\n  }\n  function busyBtns(t){ [$('hfcBook'), $('hfcBarB')].forEach(function(b){ if (b){ b.disabled = true; b.textContent = t; } }); }\n  function book(){\n    var quotes = st.sel.filter(function(k){ return I[k].t === 'quote'; });\n    if (quotes.length && quotes.length === st.sel.length){ ask('I need a quote for ' + quotes.map(function(k){ return I[k].name; }).join(' and ')); return; }\n    var gs = q.groups, rs = q.res; if (!gs.length) return;\n    busyBtns('Adding to your cart\u2026');\n    try { window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: 'hf_card_book', hf_service: st.sel.map(function(k){ return I[k].name; }).join(', '), hf_zip: ZIP }); } catch (e) {}\n    var i = 0, last = null;\n    function fail(m){ q.err = m || 'We could not add this to your cart. Please try again.'; renderBox(); }\n    function next(){\n      if (i >= gs.length){ window.location.href = (last && last.redirect) || (APP + '\/customer\/services\/cart'); return; }\n      var g = gs[i], r = rs[i], p = selection(g);\n      p.price = r.price; p.duration = r.duration; p.provider_id = r.provider_id; p.last_category_id = r.last_category_id; p.sacf_id = r.sacf_id || null;\n      p.line_title = ((g.aos.length || g.ex.length) ? '' : r.summary) || g.host.name; \/\/ with extras on the line, each extra gets its own row, so the host line is just its own name p.append = i > 0 ? 1 : 0;\n      if (r.job_items && r.job_items.length) p.job_items = r.job_items;\n      if (r.addons && r.addons.length){ p.addons_json = JSON.stringify(r.addons); var tt = {}; r.addons.forEach(function(l){ if (l.code) tt[l.code] = l.name + ((Number(l.qty) || 1) > 1 ? ' \u00d7 ' + l.qty : ''); }); p.line_titles = JSON.stringify(tt); }\n      post(CART, p).then(function(d){\n        if (d && d.success){ last = d; i++; next(); return; }\n        if (d && d.code === 'quote_only'){ ask('I need a quote for ' + g.host.name); return; }\n        if (d && d.code === 'one_pro_per_booking'){ fail(g.host.name + ' is done by a different pro, so it books separately. Book the rest first, then add it.'); return; }\n        fail(d && d.message);\n      }).catch(function(){ fail(); });\n    }\n    next();\n  }\n  function toggle(k){\n    var o = I[k]; if (!o) return;\n    if (on(k)) st.sel.splice(st.sel.indexOf(k), 1);\n    else { if (o.t === 'visit') st.sel = st.sel.filter(function(x){ return I[x].t !== 'visit'; }); st.sel.push(k); cf(o); }\n    renderLeft(); reprice();\n  }\n  function onClick(e){\n    var t = e.target.closest ? e.target.closest('button') : null; if (!t || !$('hfc').contains(t)) return;\n    if (t.getAttribute('data-hq')){ ask(t.getAttribute('data-hq')); return; }\n    if (t.getAttribute('data-svc')){ toggle(t.getAttribute('data-svc')); return; }\n    var rm = t.getAttribute('data-rm');\n    if (rm){ if (rm.indexOf('ex:') === 0) st.ex[rm.slice(3)] = 0; else if (on(rm)) st.sel.splice(st.sel.indexOf(rm), 1); renderLeft(); reprice(); return; }\n    if (t.getAttribute('data-ex')){ var xk = t.getAttribute('data-ex'); st.ex[xk] = st.ex[xk] ? 0 : 1; renderLeft(); reprice(); return; }\n    if (t.id === 'hfcMore'){ st.all = !st.all; renderLeft(); if (!st.all) $('hfcS1').scrollIntoView({ behavior: 'smooth', block: 'start' }); return; }\n    if (t.id === 'hfcBook' || t.id === 'hfcBarB'){ book(); return; }\n    var o = I[t.getAttribute('data-k')]; if (!o) return; var c = cf(o);\n    if (t.getAttribute('data-tog') === 'inc'){ st.inc[o.key] = !st.inc[o.key]; renderLeft(); return; }\n    if (t.getAttribute('data-tog') === 'desc'){ st.desc[o.key] = !st.desc[o.key]; renderBox(); return; }\n    var fs = t.getAttribute('data-fs');\n    if (fs){ var val = t.getAttribute('data-v');\n      if (o.t === 'visit'){ if (fs === 'prop') c.prop = val === 'Apartment \/ Condo' ? 1 : 0; else if (fs === 'cleaners') c.cleaners = val === '2 Cleaners' ? 2 : 1; else c[fs] = val; }\n      else c[fs] = val;\n      renderLeft(); reprice(); return; }\n    if (t.getAttribute('data-var')){ c.variant = t.getAttribute('data-var'); renderLeft(); reprice(); return; }\n    if (t.getAttribute('data-q')){ c.ans[t.getAttribute('data-q')] = t.getAttribute('data-v'); renderLeft(); reprice(); return; }\n    var fn = t.getAttribute('data-fn'), d = parseInt(t.getAttribute('data-d'), 10); if (!fn) return;\n    if (o.t === 'visit'){\n      if (fn === 'beds' || fn === 'full') c[fn] = Math.max(1, Math.min(9, c[fn] + d)); else if (fn === 'half') c.half = Math.max(0, Math.min(9, c.half + d));\n      else if (fn === 'sq') c.sq = Math.max(0, c.sq + d); else if (fn === 'hours') c.hours = Math.max(1, Math.min(c.often === 'Recurring' ? 4 : 8, c.hours + d));\n    } else if (fn.indexOf('it:') === 0){ var ii = parseInt(fn.slice(3), 10); c.items[ii] = Math.max(0, Math.min(20, (c.items[ii] || 0) + d)); }\n    else if (fn.indexOf('row:') === 0){ var rk = fn.slice(4); c.rows[rk] = Math.max(0, Math.min(o.max_qty || 20, (c.rows[rk] || 0) + d));\n      if ($('hfcNb').contains(t) && rowsSum(o) <= 0 && on(o.key)) st.sel.splice(st.sel.indexOf(o.key), 1); } \/\/ the last row taken to 0 in the box takes the service off\n    else if (fn === 'qty'){ var sp = o.pstep || o.step || 1; c.qty = Math.max(o.min_qty, Math.min(o.max_qty, d > 0 ? Math.floor(c.qty \/ sp) * sp + sp : Math.ceil(c.qty \/ sp) * sp - sp)); }\n    else { var f = (o.fields || []).filter(function(x){ return x.n === fn; })[0]; if (!f) return;\n      if (f.t === 'num') c[fn] = Math.max(f.min, Math.min(f.max, c[fn] + d * f.step)); else if (f.t === 'list') c[fn] = Math.max(0, Math.min(f.vals.length - 1, c[fn] + d)); }\n    renderLeft(); reprice();\n  }\n  \/\/ HF-2026-10-10o (Chris): the booking box stays in view while the left side scrolls, never above the white section's\n  \/\/ top and never below the end of the selections (a WP wrapper's overflow breaks CSS sticky, so it is pinned by hand).\n  function pin(){\n    var col = $('hfcBox'), nb = $('hfcNb'); if (!col || !nb) return;\n    if (window.innerWidth <= 900){ nb.style.position = ''; nb.style.top = ''; nb.style.left = ''; nb.style.width = ''; return; }\n    var hh = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--hf-header-h'), 10) || 88, T = hh + 16;\n    var r = col.getBoundingClientRect(), h = nb.offsetHeight;\n    if (h + T + 16 > window.innerHeight) T = window.innerHeight - 16 - h;\n    if (r.top >= T || r.height <= h + 2){ nb.style.position = 'relative'; nb.style.top = '0px'; nb.style.left = ''; nb.style.width = ''; }\n    else if (r.bottom - h <= T){ nb.style.position = 'absolute'; nb.style.top = (r.height - h) + 'px'; nb.style.left = '0px'; nb.style.width = r.width + 'px'; }\n    else { nb.style.position = 'fixed'; nb.style.top = T + 'px'; nb.style.left = r.left + 'px'; nb.style.width = r.width + 'px'; }\n  }\n  var pinQ = false; function pinSoon(){ if (pinQ) return; pinQ = true; requestAnimationFrame(function(){ pinQ = false; pin(); }); }\n  \/\/ the pills stay one row: the last ones are hidden until the row fits the search bar's width\n  function fitPills(){ var p = document.querySelector('#hfc .hfc-pop'); if (!p) return; var bs = [].slice.call(p.children), w = p.clientWidth, gap = 8;\n    bs.forEach(function(b){ b.style.display = ''; });\n    for (var n = bs.length; n > 1; n--){ var t = 0; for (var i = 0; i < n; i++) t += bs[i].offsetWidth + (i ? gap : 0); if (t <= w) break; bs[n - 1].style.display = 'none'; } }\n  function boot(){\n    if (!$('hfc')) return;\n    fitPills(); window.addEventListener('resize', fitPills); if (document.fonts && document.fonts.ready) document.fonts.ready.then(fitPills);\n    window.addEventListener('scroll', pinSoon, { passive: true }); window.addEventListener('resize', pinSoon);\n    if (window.MutationObserver) new MutationObserver(pinSoon).observe($('hfcLay'), { childList: true, subtree: true });\n    document.addEventListener('click', onClick);\n    $('hfcSearch').addEventListener('submit', function(e){ e.preventDefault(); ask(($('hfcQ').value || '').replace(\/^\\s+|\\s+$\/g, '') || 'I need help with my home'); });\n    \/\/ HF-2026-10-10z (Chris): no service is pre-selected on any page; the customer picks\n    renderLeft(); reprice();\n  }\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', boot); else boot();\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7509952 e-con-full e-flex e-con e-parent\" data-id=\"7509952\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-aadaed2 elementor-widget elementor-widget-html\" data-id=\"aadaed2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- hf: cleaning cards grid retired 2026-07-16 - replaced by hero booking cell in container 464c961. Restore from wp option hf_cleaning_3435_backup_20260716b -->\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-eade1a6 e-con-full e-flex e-con e-parent\" data-id=\"eade1a6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2ebfeba elementor-widget elementor-widget-html\" data-id=\"2ebfeba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- hf: Pressure Washing + Trash Haul Away info sections retired 2026-07-16; services live in the hero tabs. Restore from wp option hf_cleaning_3435_backup_20260716_preTrim -->\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2adfbb7 e-con-full e-flex e-con e-parent\" data-id=\"2adfbb7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e818acb elementor-widget elementor-widget-html\" data-id=\"e818acb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>#hf-optimized-faqs{display:none!important}<\/style>\n<!-- cleaning-HIW-from-parent-671577f-2026-05-29 -->\n<style>\n.hf-svc-hiw{max-width:1200px;margin:0 auto;padding:42px 24px;font-family:'Inter',-apple-system,sans-serif;text-align:center}\n.hf-svc-hiw *{box-sizing:border-box}\n.hf-svc-hiw-label{font-size:26px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:#40C9F3;margin-bottom:12px}\n.hf-svc-hiw h2{font-size:clamp(28px,4vw,42px);font-weight:800;color:#2D3E50;margin:0 0 12px}\n.hf-svc-hiw-sub{font-size:17px;color:#6b7d93;max-width:560px;margin:0 auto 48px;line-height:1.6}\n.hf-svc-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;position:relative}\n.hf-svc-steps::before{content:'';position:absolute;top:36px;left:12%;right:12%;height:2px;background:linear-gradient(90deg,#2ED87A,#40C9F3);z-index:0}\n.hf-svc-step{position:relative;z-index:1}\n.hf-svc-step-num{width:72px;height:72px;border-radius:50%;background:#fff;border:2px solid #eef2f6;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-size:13px;font-weight:700;color:#fff;position:relative}\n.hf-svc-step-num-inner{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center}\n.hf-sn-1 .hf-svc-step-num-inner{background:#2ED87A}\n.hf-sn-2 .hf-svc-step-num-inner{background:#40C9F3}\n.hf-sn-3 .hf-svc-step-num-inner{background:#3D4F6F}\n.hf-sn-4 .hf-svc-step-num-inner{background:#2ED87A}\n.hf-svc-step-num svg{width:26px;height:26px;fill:#fff}\n.hf-svc-step h3{font-size:16px;font-weight:700;color:#2D3E50;margin:0 0 8px}\n.hf-svc-step p{font-size:13px;color:#6b7d93;line-height:1.5;margin:0}\n\n\n.hf-svc-trust2 img:hover{opacity:1}\n@media(max-width:768px){\n  \/* hf-svc-hiw-mobile-stack-2026-05-28: mirror home hf-hiw2 mobile stack layout *\/\n  \/* hf-svc-hiw-mobile-top-gap-2026-05-29: breathing room above HIW section under svc-grid *\/\n  .hf-svc-hiw{padding:64px 18px 28px}\n  .hf-svc-hiw-label{font-size:25px;letter-spacing:2px;margin-bottom:12px}\n  .hf-svc-hiw h2{font-size:26px;line-height:1.2;margin-bottom:10px}\n  .hf-svc-hiw-sub{font-size:14px;max-width:340px;margin:0 auto 32px}\n  .hf-svc-steps{grid-template-columns:1fr;gap:0;padding:0 0 0 6px;position:relative;margin-bottom:0}\n  .hf-svc-steps::before{display:block;top:27px;bottom:27px;left:31px;right:auto;width:2px;height:auto;background:linear-gradient(180deg,#2ED87A,#40C9F3,#3D4F6F);border-radius:2px}\n  .hf-svc-step{display:grid;grid-template-columns:64px 1fr;grid-template-rows:auto auto;column-gap:18px;row-gap:6px;align-items:start;text-align:left;padding-bottom:28px}\n  .hf-svc-step:last-child{padding-bottom:0}\n  .hf-svc-step-num{grid-column:1;grid-row:1 \/ span 2;width:54px;height:54px;margin:0;justify-self:start;margin-left:4px;box-shadow:0 4px 12px rgba(41,171,226,.18)}\n  .hf-svc-step-num-inner{width:42px;height:42px}\n  .hf-svc-step-num svg{width:20px;height:20px}\n  .hf-svc-step h3{grid-column:2;grid-row:1;font-size:16.5px;font-weight:700;color:#40C9F3;margin:0;padding-top:4px;line-height:1.25}\n  .hf-svc-step p{grid-column:2;grid-row:2;font-size:13.5px;color:#000;line-height:1.55;margin:0;padding-top:2px}\n}\n<\/style><div class=\"hf-svc-hiw\">\n  <div class=\"hf-svc-hiw-label\">HOW IT WORKS<\/div>\n  <h2>From Selection to Done in Just a Few Taps<\/h2>\n  <p class=\"hf-svc-hiw-sub\">No phone tag. No guessing games. One upfront price, hand-matched pros, and total peace of mind.<\/p>\n  <div class=\"hf-svc-steps\">\n    <div class=\"hf-svc-step hf-sn-1\">\n      <div class=\"hf-svc-step-num\"><div class=\"hf-svc-step-num-inner\"><svg viewBox=\"0 0 24 24\"><path d=\"M15.5 14h-.79l-.28-.27A6.471 6.471 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"><\/path><\/svg><\/div><\/div>\n      <h3>Select Your Service<\/h3>\n      <p>Pick your service, set the details, and see your real upfront price instantly.<\/p>\n    <\/div>\n    <div class=\"hf-svc-step hf-sn-2\">\n      <div class=\"hf-svc-step-num\"><div class=\"hf-svc-step-num-inner\"><svg viewBox=\"0 0 24 24\"><path d=\"M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z\"><\/path><\/svg><\/div><\/div>\n      <h3>Schedule The Job<\/h3>\n      <p>Select the day and time best for you and checkout with any of our secure payment options.<\/p>\n    <\/div>\n    <div class=\"hf-svc-step hf-sn-3\">\n      <div class=\"hf-svc-step-num\"><div class=\"hf-svc-step-num-inner\"><svg viewBox=\"0 0 24 24\"><path d=\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm-2 16l-4-4 1.41-1.41L10 14.17l6.59-6.59L18 9l-8 8z\"><\/path><\/svg><\/div><\/div>\n      <h3>Sit Back And Relax<\/h3>\n      <p>House Fly takes care of all pro-matching, scheduling, communication, and payments.<\/p>\n    <\/div>\n    \n  <\/div>\n  <\/div>\n\n<!-- cleaning-Common-Questions-from-parent-68f9d25-2026-05-29 -->\n<div class=\"hf-cq\">\n  <div class=\"hf-cq-head\">\n    <div class=\"hf-cq-eyebrow\">Common Questions<\/div>\n    <h2 class=\"hf-cq-title\">Ask Homer Anything<\/h2>\n    <p class=\"hf-cq-sub\">Select a question to start a chat with Homer.<\/p>\n  <\/div>\n  <div class=\"hf-cq-chips\">\n    <button type=\"button\" class=\"hf-cq-chip\" onclick=\"hfCqAsk(this, &quot;What is your cancellation policy?&quot;)\">\n      <span class=\"hf-cq-q\">What&rsquo;s the cancellation policy?<\/span>\n      <span class=\"hf-cq-arrow\">&#8599;<\/span>\n    <\/button>\n    <button type=\"button\" class=\"hf-cq-chip\" onclick=\"hfCqAsk(this, &quot;Can I book a same-day service?&quot;)\">\n      <span class=\"hf-cq-q\">Same-day booking?<\/span>\n      <span class=\"hf-cq-arrow\">&#8599;<\/span>\n    <\/button>\n    <button type=\"button\" class=\"hf-cq-chip\" onclick=\"hfCqAsk(this, &quot;What payment methods do you accept?&quot;)\">\n      <span class=\"hf-cq-q\">Payment methods?<\/span>\n      <span class=\"hf-cq-arrow\">&#8599;<\/span>\n    <\/button>\n  <\/div>\n<\/div>\n\n<style>\n\/* Match Simple-by-Design header proportions (.hf-hiw2-eyebrow\/.hf-hiw2-title\/.hf-hiw2-sub) *\/\n\/* hf-cq-bottom-gap-2026-05-29: separation from \"We're here to help\" section *\/\n.hf-cq { font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; max-width: 1140px; margin: 0 auto; padding: 60px 24px 56px; color: #000; box-sizing: border-box; }\n.hf-cq * { box-sizing: border-box; }\n.hf-cq-head { text-align: center; margin-bottom: 48px; }\n.hf-cq-eyebrow { font-size: 27.5px; font-weight: 800; letter-spacing: 2.5px; text-transform: uppercase; color: #29ABE2; margin: 0 0 14px; line-height: 1.1; font-family: inherit; }\n.hf-cq-title { font-size: 38px; font-weight: 800; color: #000; line-height: 1.18; margin: 0 0 14px; letter-spacing: -0.5px; font-family: inherit; }\n.hf-cq-sub { font-size: 16px; color: #000; max-width: 520px; margin: 0 auto; line-height: 1.6; font-family: inherit; }\n\n\/* Chips \u2014 no card wrapper, sit directly on the page background *\/\n.hf-cq-chips { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; max-width: 680px; margin: 0 auto; padding: 0 16px; }\n.hf-cq-chip { background: #F1F5F9; border: 1px solid #E2E8F0; border-radius: 99px; padding: 12px 20px; font-size: 14px; color: #1E293B; font-weight: 600; cursor: pointer; transition: all .15s; font-family: inherit; display: inline-flex; align-items: center; gap: 8px; }\n.hf-cq-chip:hover { background: #E0F2FE; border-color: #7DD3FC; color: #0C4A6E; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(64,201,243,0.18); }\n.hf-cq-chip:active { transform: translateY(0); }\n.hf-cq-chip.hf-cq-loading { opacity: 0.65; cursor: wait; }\n.hf-cq-arrow { color: #94A3B8; font-size: 12px; }\n.hf-cq-chip:hover .hf-cq-arrow { color: #29ABE2; }\n\n\/* \"View All FAQs \u2192\" Elementor button widget #0ce9e01 \u2014 turn link blue *\/\n.elementor-element-0ce9e01 .elementor-button,\n.elementor-element-0ce9e01 .elementor-button-text,\n.elementor-element-0ce9e01 .elementor-button .elementor-button-text { color: #29ABE2 !important; }\n.elementor-element-0ce9e01 .elementor-button:hover .elementor-button-text { color: #0891B2 !important; }\n\n\/* Hide snippet 3650's invisible-but-present accordion on homepage (was set earlier) *\/\nbody.home #hf-optimized-faqs, body.page-id-2229 #hf-optimized-faqs, body.page-id-538 #hf-optimized-faqs { display: none !important; }\n\n\/* Mobile \u2014 match SBD breakpoints *\/\n@media (max-width: 900px) {\n  .hf-cq { padding: 50px 20px 44px; }\n  .hf-cq-head { margin-bottom: 36px; }\n  .hf-cq-eyebrow { font-size: 25px; letter-spacing: 2px; margin-bottom: 12px; }\n  .hf-cq-sub { font-size: 14px; max-width: 340px; }\n}\n@media (max-width: 700px) {\n  .hf-cq { padding: 40px 18px 36px; }\n  .hf-cq-eyebrow { font-size: 22px; letter-spacing: 1.8px; }\n  .hf-cq-title { font-size: 28px; }\n  .hf-cq-chips { gap: 10px; }\n  .hf-cq-chip { padding: 10px 16px; font-size: 13px; }\n}\n<\/style>\n\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"How does House Fly work for booking home services?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"House Fly is a concierge home services platform serving the Greater New Orleans area. Chat with Homer, pick your date and time, and pay upfront. A local home services pro arrives and completes the work. Transparent pricing, instant booking, and a real rep manages the job from start to finish.\"}},{\"@type\":\"Question\",\"name\":\"Are there any hidden fees with House Fly?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. The service fee is built into the upfront price shown when you book, so there are no surprise charges at checkout or after service. The price you see is the price you pay. Payments are processed securely through Stripe with no extra processing fees added at checkout.\"}},{\"@type\":\"Question\",\"name\":\"What is House Fly's cancellation policy?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"You can cancel any House Fly booking for free up to 24 hours before the scheduled appointment and receive a full refund. Cancellations inside the 24-hour window may incur a small fee depending on the service. Reschedule any time by chatting with Homer or contacting House Fly support.\"}},{\"@type\":\"Question\",\"name\":\"Can I book same-day home services with House Fly?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. Most House Fly home services have same-day or next-day availability across the Greater New Orleans coverage area. Available time slots appear in real time when you book through Homer. Emergency services like plumbing leaks are often dispatched within a couple of hours of booking.\"}},{\"@type\":\"Question\",\"name\":\"What payment methods does House Fly accept?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"House Fly accepts all major credit cards, Apple Pay, and PayPal. All payments are processed securely through Stripe's PCI-compliant infrastructure. Your card is charged only when you confirm the booking. You can save a payment method to your account for one-tap rebooking on future services.\"}},{\"@type\":\"Question\",\"name\":\"How does House Fly choose its home services pros?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"House Fly hand-selects local home services pros through a diligence process that includes reviewing each pro's Google Business Profile, customer reviews, and operating history. We work only with pros that demonstrate a strong track record of quality work in their local area.\"}}]}<\/script>\n\n<script>\n(function(){\n  function getInput(){\n    var f = document.getElementById('hfCcFrame');\n    try { return f && f.contentDocument && f.contentDocument.querySelector('#hfAiSearchInput'); }\n    catch(e){ return null; }\n  }\n  function inject(q, btn, tries){\n    var input = getInput();\n    if (input) {\n      try {\n        input.value = q;\n        input.dispatchEvent(new Event('input', {bubbles:true}));\n        var form = input.form || document.getElementById('hfCcFrame').contentDocument.getElementById('hfAiSearchForm');\n        if (form) {\n          if (typeof form.requestSubmit === 'function') form.requestSubmit();\n          else form.dispatchEvent(new Event('submit', {bubbles:true, cancelable:true}));\n        }\n      } catch(e){}\n      if (btn) btn.classList.remove('hf-cq-loading');\n      return;\n    }\n    if (tries > 0) setTimeout(function(){ inject(q, btn, tries - 1); }, 300);\n    else if (btn) btn.classList.remove('hf-cq-loading');\n  }\n  window.hfCqAsk = function(btn, q){\n    if (btn && btn.classList) btn.classList.add('hf-cq-loading');\n    var launcher = document.getElementById('hfCcLauncher');\n    if (launcher) launcher.click();\n    setTimeout(function(){ inject(q, btn, 20); }, 400);\n  };\n})();\n<\/script>\n<!-- cleaning-Help-from-parent-7f6a459-2026-05-29 -->\n<style>\n.hf-contact{font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;width:100%;background:linear-gradient(180deg,#f8fbfd 0%,#f1f6fb 100%);padding:48px 20px;text-align:center}\n.hf-contact *{box-sizing:border-box;margin:0;padding:0}\n.hf-contact-inner{max-width:520px;margin:0 auto}\n.hf-contact-heading{font-size:30px;font-weight:800;color:#000;margin:0 0 10px;line-height:1.2;letter-spacing:-.3px}\n.hf-contact-sub{font-size:15px;color:#000;margin:0 auto 26px;max-width:340px;line-height:1.5}\n\n.hf-chat-cta{display:inline-flex;align-items:center;justify-content:center;gap:10px;background:#29ABE2;color:#fff;font-weight:700;font-size:16px;padding:16px 36px;border-radius:12px;border:0;cursor:pointer;text-decoration:none;box-shadow:0 10px 28px rgba(41,171,226,.32);font-family:inherit;line-height:1;transition:transform .2s,box-shadow .2s;position:relative;margin-bottom:24px}\n.hf-chat-cta{-webkit-tap-highlight-color:rgba(46,216,122,.3)}.hf-chat-cta:hover{transform:translateY(-2px);box-shadow:0 14px 32px rgba(46,216,122,.4);background:#2ED87A;color:#fff}.hf-chat-cta:active,.hf-chat-cta:focus,.hf-chat-cta:focus-visible{background:#29ABE2!important;color:#fff!important;outline:2px solid #29ABE2!important;outline-offset:2px;-webkit-tap-highlight-color:transparent}\/* hf-cta-no-red-2026-05-24 *\/\n.hf-chat-cta svg{width:20px;height:20px;fill:#fff}\n.hf-chat-cta-dot{position:absolute;top:13px;right:18px;width:8px;height:8px;border-radius:50%;background:#2ED87A;box-shadow:0 0 0 4px rgba(46,216,122,.25);animation:hfPulse 2s infinite}\n@keyframes hfPulse{0%,100%{box-shadow:0 0 0 4px rgba(46,216,122,.25)}50%{box-shadow:0 0 0 8px rgba(46,216,122,.10)}}\n\n.hf-contact-divider{display:flex;align-items:center;gap:12px;color:#8a9ab0;font-size:11px;letter-spacing:1.8px;text-transform:uppercase;font-weight:700;margin-bottom:18px}\n.hf-contact-divider::before,.hf-contact-divider::after{content:\"\";flex:1;height:1px;background:#d8e0ea}\n\n.hf-contact-links{display:flex;flex-direction:column;gap:10px}\n.hf-contact-link{display:flex;align-items:center;gap:14px;padding:16px 22px;border-radius:14px;color:#fff;text-decoration:none;transition:transform .2s,box-shadow .2s;font-size:15px;font-weight:600;line-height:1.2}\n.hf-contact-link:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(0,0,0,.18);color:#fff;text-decoration:none}\n.hf-contact-link .ic{width:36px;height:36px;border-radius:10px;background:rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center;flex-shrink:0}\n.hf-contact-link .ic svg{width:20px;height:20px;fill:#fff}\n.hf-contact-link .lbl{font-weight:700;font-size:15px;color:#fff}\n.hf-contact-link .inf{margin-left:auto;font-weight:700;font-size:15px;color:#fff;letter-spacing:.2px}\n\n.hf-cc-call{background:linear-gradient(135deg,#2ED87A 0%,#24b866 100%)}\n.hf-cc-text{background:linear-gradient(135deg,#40C9F3 0%,#2ba8d4 100%)}\n.hf-cc-email{background:linear-gradient(135deg,#3D4F6F 0%,#2f3e58 100%)}\n\n@media (max-width:600px){\n  .hf-contact{padding:40px 16px}\n  .hf-contact-heading{font-size:26px}\n  .hf-contact-sub{font-size:14px;margin-bottom:22px}\n  .hf-chat-cta{padding:15px 30px;font-size:15px;margin-bottom:20px}\n  .hf-contact-link{padding:14px 18px}\n  .hf-contact-link .lbl{font-size:14px}\n  .hf-contact-link .inf{font-size:14px}\n}\n@media (max-width:380px){\n  .hf-contact-heading{font-size:22px}\n  .hf-contact-link{padding:13px 14px;gap:10px}\n  .hf-contact-link .ic{width:32px;height:32px}\n  .hf-contact-link .ic svg{width:18px;height:18px}\n  .hf-contact-link .lbl{font-size:13px}\n  .hf-contact-link .inf{font-size:13px;letter-spacing:0}\n}\n\n@media (min-width: 768px) {\n  \/* hf-help-desktop-grid-2026-05-28: 3 square cards side-by-side on wide viewports *\/\n  .hf-contact-inner { max-width: 1000px; }\n  .hf-contact-links { flex-direction: row; gap: 20px; align-items: stretch; }\n  .hf-contact-link {\n    flex: 1 1 0;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    text-align: center;\n    padding: 36px 24px;\n    gap: 16px;\n    min-height: 230px;\n    border-radius: 20px;\n  }\n  .hf-contact-link .ic {\n    width: 64px;\n    height: 64px;\n    border-radius: 50%;\n  }\n  .hf-contact-link .ic svg { width: 28px; height: 28px; }\n  .hf-contact-link .lbl { font-size: 22px; font-weight: 800; }\n  .hf-contact-link .lbl::after { content: ' Us'; }\n  .hf-contact-link .inf { margin-left: 0; font-size: 15px; font-weight: 500; opacity: .95; letter-spacing: .2px; }\n}\n<\/style>\n<div class=\"hf-contact\">\n  <div class=\"hf-contact-inner\">\n    <h2 class=\"hf-contact-heading\">We're Here to Help<\/h2>\n    <p class=\"hf-contact-sub\">Reach out however works best for you.<\/p>\n\n    <button type=\"button\" class=\"hf-chat-cta\" onclick=\"var l=document.getElementById('hfCcLauncher');if(l){l.click();}\">\n      <svg viewBox=\"0 0 24 24\"><path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z\"\/><\/svg>\n      Chat with Homer\n      <span class=\"hf-chat-cta-dot\"><\/span>\n    <\/button>\n\n    <div class=\"hf-contact-divider\">Or Reach Us<\/div>\n\n    <div class=\"hf-contact-links\">\n      <a class=\"hf-contact-link hf-cc-call\" href=\"tel:5044207359\" data-wpel-link=\"internal\" rel=\"follow\">\n        <div class=\"ic\"><svg viewBox=\"0 0 24 24\"><path d=\"M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z\"\/><\/svg><\/div>\n        <span class=\"lbl\">Call<\/span>\n        <span class=\"inf\">504-420-7359<\/span>\n      <\/a>\n      <a class=\"hf-contact-link hf-cc-text\" href=\"sms:5044207359\" data-wpel-link=\"internal\" rel=\"follow\">\n        <div class=\"ic\"><svg viewBox=\"0 0 24 24\"><path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z\"\/><\/svg><\/div>\n        <span class=\"lbl\">Text<\/span>\n        <span class=\"inf\">504-420-7359<\/span>\n      <\/a>\n      <a class=\"hf-contact-link hf-cc-email\" href=\"mailto:help@housefly.com\">\n        <div class=\"ic\"><svg viewBox=\"0 0 24 24\"><path d=\"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z\"\/><\/svg><\/div>\n        <span class=\"lbl\">Email<\/span>\n        <span class=\"inf\">help@housefly.com<\/span>\n      <\/a>\n    <\/div>\n  <\/div>\n<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":0,"featured_media":0,"parent":538,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-5589","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.6 (Yoast SEO v28.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Pest Control Services | Book Local Pros | House Fly<\/title>\n<meta name=\"description\" content=\"Book Pest Control Services with House Fly. See your real upfront price for every service and book online in minutes.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/housefly.com\/es\/services\/pest-control\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pest Control\" \/>\n<meta property=\"og:description\" content=\"Book Pest Control Services with House Fly. See your real upfront price for every service and book online in minutes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/housefly.com\/es\/services\/pest-control\/\" \/>\n<meta property=\"og:site_name\" content=\"House Fly\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/houseflyapp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@houseflyapp\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Control de plagas | Reserva pros locales | House Fly","description":"Book Pest Control Services with House Fly. See your real upfront price for every service and book online in minutes.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/housefly.com\/es\/services\/pest-control\/","og_locale":"es_MX","og_type":"article","og_title":"Pest Control","og_description":"Book Pest Control Services with House Fly. See your real upfront price for every service and book online in minutes.","og_url":"https:\/\/housefly.com\/es\/services\/pest-control\/","og_site_name":"House Fly","article_publisher":"https:\/\/www.facebook.com\/houseflyapp","twitter_card":"summary_large_image","twitter_site":"@houseflyapp","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/housefly.com\/services\/pest-control\/","url":"https:\/\/housefly.com\/services\/pest-control\/","name":"Control de plagas | Reserva pros locales | House Fly","isPartOf":{"@id":"https:\/\/housefly.com\/#website"},"datePublished":"2026-10-11T02:38:36+00:00","description":"Book Pest Control Services with House Fly. See your real upfront price for every service and book online in minutes.","breadcrumb":{"@id":"https:\/\/housefly.com\/services\/pest-control\/#breadcrumb"},"inLanguage":"es-MX","potentialAction":[{"@type":"ReadAction","target":["https:\/\/housefly.com\/services\/pest-control\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/housefly.com\/services\/pest-control\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/housefly.com\/"},{"@type":"ListItem","position":2,"name":"Services","item":"https:\/\/housefly.com\/services\/"},{"@type":"ListItem","position":3,"name":"Pest Control"}]},{"@type":"WebSite","@id":"https:\/\/housefly.com\/#website","url":"https:\/\/housefly.com\/","name":"House Fly","description":"App M\u00f3vil de Servicios para el Hogar Bajo Demanda","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/housefly.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es-MX"}]}},"_links":{"self":[{"href":"https:\/\/housefly.com\/es\/wp-json\/wp\/v2\/pages\/5589","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/housefly.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/housefly.com\/es\/wp-json\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/housefly.com\/es\/wp-json\/wp\/v2\/comments?post=5589"}],"version-history":[{"count":0,"href":"https:\/\/housefly.com\/es\/wp-json\/wp\/v2\/pages\/5589\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/housefly.com\/es\/wp-json\/wp\/v2\/pages\/538"}],"wp:attachment":[{"href":"https:\/\/housefly.com\/es\/wp-json\/wp\/v2\/media?parent=5589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}