{"id":3428,"date":"2026-03-06T01:24:35","date_gmt":"2026-03-06T01:24:35","guid":{"rendered":"https:\/\/housefly1stg.wpenginepowered.com\/?page_id=3428"},"modified":"2026-07-08T03:19:57","modified_gmt":"2026-07-08T03:19:57","slug":"home-inspection","status":"publish","type":"page","link":"https:\/\/housefly.com\/es\/services\/dallas\/home-inspection\/","title":{"rendered":"Inspecci\u00f3n de vivienda"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3428\" class=\"elementor elementor-3428\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e9aa025 e-con-full e-flex e-con e-parent\" data-id=\"e9aa025\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8442796 elementor-widget elementor-widget-html\" data-id=\"8442796\" 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\/wp-content\/uploads\/2026\/03\/hero-home-inspection-1-1536x864.webp\") 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\/wp-content\/uploads\/2026\/03\/hero-home-inspection-1-1536x864.webp\")}\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-e9aa025,\nbody [class*=\"elementor-\"] .elementor-element.elementor-element-e9aa025::before,\nbody [class*=\"elementor-\"] .elementor-element.elementor-element-e9aa025::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-e9aa025::before,\nbody [class*=\"elementor-\"] .elementor-element.elementor-element-e9aa025::after{display:none !important;background:transparent !important;content:none !important}\nbody [class*=\"elementor-\"] .elementor-element.elementor-element-8442796 .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-home-inspection-1-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-home-inspection-1-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\">Dallas Home Inspection<\/div><h1 class=\"hfc-h1\">Home Inspection in <span>Dallas<\/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=\"Home inspection\">Home Inspection<\/button><button type=\"button\" data-hq=\"Pre-listing inspection\">Pre-Listing<\/button><button type=\"button\" data-hq=\"Mold testing\">Mold<\/button><button type=\"button\" data-hq=\"Pool inspection\">Pool<\/button><button type=\"button\" data-hq=\"Re-inspection of repairs\">Re-Inspection<\/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<script id=\"hfc-js\" data-no-defer=\"1\" data-no-optimize=\"1\" data-no-minify=\"1\">\n(function(){\n  var D = {\"slug\": \"home-inspection\", \"st\": \"Home Inspection\", \"items\": [{\"qdef\": null, \"pstep\": null, \"key\": \"hi_prelisting\", \"t\": \"menu\", \"name\": \"Pre-Listing Seller Inspection\", \"icon\": \"\ud83e\ude9f\", \"desc\": \"The full inspection done before the house goes on the market\", \"full\": \"The full inspection done before the house goes on the market, so you fix or price the problems first and hand buyers a report; same scope as the buyer inspection.\", \"section\": \"Buying & Selling\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 349.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-PRELISTING\", \"variants\": [{\"key\": \"s\", \"label\": \"Up to 2,000 sq ft\", \"price\": 349.99}, {\"key\": \"m\", \"label\": \"2,001 to 3,500 sq ft\", \"price\": 449.99}, {\"key\": \"l\", \"label\": \"3,501 to 5,000 sq ft\", \"price\": 549.99}], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"pl_age\", \"label\": \"Property\", \"options\": [\"Built after 1975\", \"Built 1975 or earlier\"], \"add\": {\"Built 1975 or earlier\": 25}}, {\"key\": \"pl_report\", \"label\": \"Report\", \"options\": [\"Seller report you can share with buyers\", \"Report plus a repair cost estimate\"], \"add\": {\"Report plus a repair cost estimate\": 79}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_new_construction\", \"t\": \"menu\", \"name\": \"New Construction Phase Inspections\", \"icon\": \"\ud83c\udfd7\", \"desc\": \"Independent inspections while the builder is still on site\", \"full\": \"Independent inspections while the builder is still on site: the foundation before the pour, the framing and rough-ins before the drywall, and the final walkthrough before closing.\", \"section\": \"New Construction\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 299.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-NEWBUILD\", \"variants\": [{\"key\": \"pour\", \"label\": \"Pre-pour foundation\", \"price\": 249.99}, {\"key\": \"drywall\", \"label\": \"Pre-drywall: framing, rough-ins\", \"price\": 299.99}, {\"key\": \"final\", \"label\": \"Final walkthrough before closing\", \"price\": 349.99}, {\"key\": \"all\", \"label\": \"All three phases\", \"price\": 799.99}], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"nc_size\", \"label\": \"Home\", \"options\": [\"Up to 3,000 sq ft\", \"Over 3,000 sq ft\"], \"add\": {\"Over 3,000 sq ft\": 99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_warranty\", \"t\": \"menu\", \"name\": \"11-Month Builder Warranty Inspection\", \"icon\": \"\ud83d\udcc5\", \"desc\": \"A full inspection in the last month of the builder's one year\", \"full\": \"A full inspection in the last month of the builder's one year warranty, with a claim list of everything the builder still owes you.\", \"section\": \"New Construction\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 299.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-WARRANTY\", \"variants\": [{\"key\": \"s\", \"label\": \"Up to 2,500 sq ft\", \"price\": 299.99}, {\"key\": \"m\", \"label\": \"2,501 to 4,000 sq ft\", \"price\": 349.99}, {\"key\": \"l\", \"label\": \"Over 4,000 sq ft\", \"price\": 399.99}], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"wr_scan\", \"label\": \"Report\", \"options\": [\"Warranty claim report\", \"Report plus a thermal scan of every wall and ceiling\"], \"add\": {\"Report plus a thermal scan of every wall and ceiling\": 99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_reinspection\", \"t\": \"menu\", \"name\": \"Re-Inspection of Repairs\", \"icon\": \"\ud83d\udd01\", \"desc\": \"The inspector comes back to check the repairs the seller\", \"full\": \"The inspector comes back to check the repairs the seller or the builder agreed to, item by item against the report, with photos of each one done or not.\", \"section\": \"Buying & Selling\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 149.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-REINSPECT\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"ri_items\", \"label\": \"Items\", \"options\": [\"Up to 10 repair items\", \"More than 10 items\"], \"add\": {\"More than 10 items\": 49}}, {\"key\": \"ri_prior\", \"label\": \"Report\", \"options\": [\"House Fly did the original inspection\", \"Another company's report, items listed by you\"], \"add\": {\"Another company's report, items listed by you\": 49}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_manufactured\", \"t\": \"menu\", \"name\": \"Manufactured and Mobile Home Inspection\", \"icon\": \"\ud83d\ude9a\", \"desc\": \"A full inspection of a manufactured or mobile home including\", \"full\": \"A full inspection of a manufactured or mobile home including the piers, tie-downs, skirting, marriage line and the belly wrap under the floor.\", \"section\": \"Buying & Selling\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 299.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-MOBILE\", \"variants\": [{\"key\": \"single\", \"label\": \"Single-wide\", \"price\": 299.99}, {\"key\": \"double\", \"label\": \"Double-wide\", \"price\": 349.99}, {\"key\": \"triple\", \"label\": \"Triple-wide or a modular on a foundation\", \"price\": 399.99}], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"mh_found\", \"label\": \"Foundation\", \"options\": [\"Piers and tie-downs checked from the crawl\", \"HUD permanent foundation certification (engineer's letter)\"], \"add\": {\"HUD permanent foundation certification (engineer's letter)\": 199}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_roof\", \"t\": \"menu\", \"name\": \"Roof Inspection and Certification\", \"icon\": \"\ud83c\udfe0\", \"desc\": \"The roof walked or drone flown\", \"full\": \"The roof walked or drone flown: shingles, flashings, vents, gutters, the attic side for leaks, with a photo report and, if you need it, a certification letter for the insurer or lender.\", \"section\": \"Specialty Inspections\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 199.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-ROOF\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"rf_access\", \"label\": \"Roof\", \"options\": [\"One story or a walkable roof\", \"Two stories, steep or tile: drone and ladder\"], \"add\": {\"Two stories, steep or tile: drone and ladder\": 49}}, {\"key\": \"rf_cert\", \"label\": \"Report\", \"options\": [\"Condition report with photos\", \"Roof certification letter for the insurer or lender\"], \"add\": {\"Roof certification letter for the insurer or lender\": 79}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_foundation\", \"t\": \"menu\", \"name\": \"Foundation Elevation Survey\", \"icon\": \"\ud83d\udcd0\", \"desc\": \"A level survey with a grid of floor elevations across the whole\", \"full\": \"A level survey with a grid of floor elevations across the whole house and a drawing showing where the slab or the piers have moved, the report a structural engineer or a foundation company starts from.\", \"section\": \"Specialty Inspections\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 249.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-FOUNDATION\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"fe_size\", \"label\": \"Home\", \"options\": [\"Up to 2,500 sq ft\", \"Over 2,500 sq ft or a raised floor\"], \"add\": {\"Over 2,500 sq ft or a raised floor\": 99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_stucco\", \"t\": \"menu\", \"name\": \"Stucco and EIFS Moisture Inspection\", \"icon\": \"\ud83e\uddf1\", \"desc\": \"Every stucco or synthetic stucco wall checked for the details\", \"full\": \"Every stucco or synthetic stucco wall checked for the details that let water in, a moisture meter survey, and if you want certainty, probe testing with the holes sealed after.\", \"section\": \"Specialty Inspections\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 349.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-STUCCO\", \"variants\": [{\"key\": \"visual\", \"label\": \"Visual survey with a moisture meter\", \"price\": 349.99}, {\"key\": \"probe\", \"label\": \"Invasive probe testing, holes sealed\", \"price\": 749.99}], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"st_size\", \"label\": \"Home\", \"options\": [\"One story\", \"Two or more stories\"], \"add\": {\"Two or more stories\": 149}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_energy\", \"t\": \"menu\", \"name\": \"Home Energy Audit\", \"icon\": \"\u26a1\", \"desc\": \"A blower door test to measure air leakage\", \"full\": \"A blower door test to measure air leakage, a thermal camera pass over every wall and ceiling, the insulation and the ducts checked, and a report ranked by what saves the most.\", \"section\": \"Specialty Inspections\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 349.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-ENERGY\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"en_duct\", \"label\": \"Ducts\", \"options\": [\"Blower door and thermal scan\", \"Duct leakage test too\"], \"add\": {\"Duct leakage test too\": 99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_maintenance\", \"t\": \"menu\", \"name\": \"Annual Home Maintenance Inspection\", \"icon\": \"\ud83d\udee0\", \"desc\": \"A yearly check of the roof, attic, exterior, plumbing\", \"full\": \"A yearly check of the roof, attic, exterior, plumbing, electrical, HVAC, water heater and appliances with a checklist of what to fix now and what to watch, for owners, not buyers.\", \"section\": \"Owners & Rentals\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 249.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-MAINTENANCE\", \"variants\": [{\"key\": \"s\", \"label\": \"Up to 2,500 sq ft\", \"price\": 249.99}, {\"key\": \"m\", \"label\": \"2,501 to 4,000 sq ft\", \"price\": 299.99}, {\"key\": \"l\", \"label\": \"Over 4,000 sq ft\", \"price\": 349.99}], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"mn_plan\", \"label\": \"Report\", \"options\": [\"Maintenance checklist report\", \"With a seasonal maintenance plan and cost estimates\"], \"add\": {\"With a seasonal maintenance plan and cost estimates\": 49}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_walkthrough\", \"t\": \"menu\", \"name\": \"Walk-and-Talk Consultation\", \"icon\": \"\ud83d\udeb6\", \"desc\": \"An inspector walks the house with you before you offer\", \"full\": \"An inspector walks the house with you before you offer, points out the big ticket items and answers your questions on the spot; verbal, no written report, priced by the hour.\", \"section\": \"Buying & Selling\", \"unit\": \"unit\", \"unit_label\": \"hour\", \"price\": 149.99, \"min_qty\": 1, \"max_qty\": 99, \"step\": 1, \"code\": \"HI-WALKTHROUGH\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"wt_notes\", \"label\": \"Notes\", \"options\": [\"Verbal only\", \"A one page summary of what we saw\"], \"add\": {\"A one page summary of what we saw\": 49}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_rental\", \"t\": \"menu\", \"name\": \"Rental Move-In and Move-Out Condition Report\", \"icon\": \"\ud83d\udd11\", \"desc\": \"Every room, fixture and appliance photographed and rated\", \"full\": \"Every room, fixture and appliance photographed and rated at move-in or move-out so the deposit conversation is about facts; for landlords, managers and tenants.\", \"section\": \"Owners & Rentals\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 199.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-RENTAL\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"rt_size\", \"label\": \"Unit\", \"options\": [\"Up to 2 bedrooms\", \"3 bedrooms or more, or a house\"], \"add\": {\"3 bedrooms or more, or a house\": 49}}, {\"key\": \"rt_video\", \"label\": \"Report\", \"options\": [\"Photo condition report\", \"Photo report plus a video walkthrough\"], \"add\": {\"Photo report plus a video walkthrough\": 49}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_commercial\", \"t\": \"menu\", \"name\": \"Commercial Building Inspection\", \"icon\": \"\ud83c\udfe2\", \"desc\": \"An office, store, warehouse\", \"full\": \"An office, store, warehouse, restaurant or an apartment building over four units: a property condition assessment scoped to the building.\", \"section\": \"Commercial\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 1499.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-Q-COMMERCIAL\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_estate\", \"t\": \"menu\", \"name\": \"Estate and Luxury Home Over 5,000 Sq Ft\", \"icon\": \"\ud83c\udff0\", \"desc\": \"A home over the 5,000 sq ft the standard inspection covers\", \"full\": \"A home over the 5,000 sq ft the standard inspection covers, or one with guest houses, pools, elevators and outbuildings: a scoped inspection, sometimes two inspectors.\", \"section\": \"Buying & Selling\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 749.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-Q-ESTATE\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_structural\", \"t\": \"menu\", \"name\": \"Structural Engineer Evaluation and Letter\", \"icon\": \"\ud83c\udfd7\", \"desc\": \"A structural engineer looks at the cracks, sagging\", \"full\": \"A structural engineer looks at the cracks, sagging, settlement or a wall you want to remove and writes the stamped letter a lender, an insurer or a permit office needs.\", \"section\": \"Specialty Inspections\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 499.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-Q-STRUCTURAL\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_phase1\", \"t\": \"menu\", \"name\": \"Phase I Environmental Site Assessment\", \"icon\": \"\ud83c\udf0d\", \"desc\": \"The records search, site walk and interviews a lender requires\", \"full\": \"The records search, site walk and interviews a lender requires on a commercial purchase to rule out contamination, to the ASTM standard.\", \"section\": \"Commercial\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 1999.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-Q-PHASE1\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_home_insp\", \"t\": \"menu\", \"name\": \"Home Inspection\", \"icon\": \"\ud83d\udd0d\", \"desc\": \"A full home inspection with a written report\", \"full\": \"A full home inspection with a written report, priced by the home size.\", \"section\": \"Buying & Selling\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 419.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-HOME\", \"variants\": [{\"key\": \"z0\", \"label\": \"Up to 1,000\", \"price\": 419.99}, {\"key\": \"z1\", \"label\": \"1,001 to 1,500\", \"price\": 419.99}, {\"key\": \"z2\", \"label\": \"1,501 to 2,000\", \"price\": 449.99}, {\"key\": \"z3\", \"label\": \"2,001 to 2,500\", \"price\": 479.99}, {\"key\": \"z4\", \"label\": \"2,501 to 3,000\", \"price\": 509.99}, {\"key\": \"z5\", \"label\": \"3,001 to 3,500\", \"price\": 539.99}, {\"key\": \"z6\", \"label\": \"3,501 to 4,000\", \"price\": 599.99}, {\"key\": \"z7\", \"label\": \"4,001 to 4,500\", \"price\": 654.99}, {\"key\": \"z8\", \"label\": \"4,501 to 5,000\", \"price\": 714.99}], \"rows\": false, \"variant_q\": \"Home size (sq ft)\", \"variant_default\": \"1,501 to 2,000\", \"rank\": 50, \"questions\": [{\"key\": \"hi_raised\", \"label\": \"Raised foundation?\", \"options\": [\"No\", \"Yes\"], \"add\": {\"Yes\": 90}}, {\"key\": \"hi_multiFamily\", \"label\": \"Multi family?\", \"options\": [\"No\", \"2 units\", \"3 units\", \"4 units\"], \"add\": {\"2 units\": 120, \"3 units\": 240, \"4 units\": 355}}, {\"key\": \"hi_hvac\", \"label\": \"AC units\", \"options\": [\"1 AC unit\", \"2 AC units\", \"3 AC units\", \"4 AC units\"], \"add\": {\"2 AC units\": 60, \"3 AC units\": 120, \"4 AC units\": 180}}, {\"key\": \"hi_age\", \"label\": \"Home age\", \"options\": [\"Less than 50 years\", \"50 years or older\"], \"add\": {\"50 years or older\": 30}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_pool_spa\", \"t\": \"menu\", \"name\": \"Pool \/ Spa Inspection\", \"icon\": \"\ud83c\udfca\", \"desc\": \"Pool and spa equipment, surfaces and safety inspected\", \"full\": \"Pool and spa equipment, surfaces and safety inspected.\", \"section\": \"Specialty Inspections\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 149.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-POOLSPA\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_storage\", \"t\": \"menu\", \"name\": \"Detached Storage Area\", \"icon\": \"\ud83c\udfda\", \"desc\": \"Sheds and detached storage inspected\", \"full\": \"Sheds and detached storage inspected.\", \"section\": \"Specialty Inspections\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 179.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-STORAGE\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_mold_air\", \"t\": \"menu\", \"name\": \"Mold \/ Indoor Air Quality\", \"icon\": \"\ud83c\udf2b\", \"desc\": \"Mold and indoor air sampled and lab tested\", \"full\": \"Mold and indoor air sampled and lab tested.\", \"section\": \"Environmental Tests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 474.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-MOLDAIR\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_asbestos\", \"t\": \"menu\", \"name\": \"Asbestos Testing\", \"icon\": \"\ud83e\uddea\", \"desc\": \"Suspect materials sampled and lab tested for asbestos\", \"full\": \"Suspect materials sampled and lab tested for asbestos.\", \"section\": \"Environmental Tests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 354.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-ASBESTOS\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_thermal\", \"t\": \"menu\", \"name\": \"Thermal Imaging\", \"icon\": \"\ud83c\udf21\", \"desc\": \"An infrared scan for hidden leaks\", \"full\": \"An infrared scan for hidden leaks, missing insulation and heat loss.\", \"section\": \"Specialty Inspections\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 354.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-THERMAL\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_radon_ao\", \"t\": \"menu\", \"name\": \"Radon test\", \"icon\": \"\u2622\", \"desc\": \"A continuous radon monitor set on the lowest livable level\", \"full\": \"A continuous radon monitor set on the lowest livable level at the visit and picked up 48 hours later, run to the EPA protocol, results e-mailed the same day it is collected.\", \"section\": \"Environmental Tests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 149.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-AO-RADON\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"rd_type\", \"label\": \"Test\", \"options\": [\"48-hour continuous monitor, results at pickup\", \"Long-term 90-day test kit, mailed to the lab\"], \"add\": {\"Long-term 90-day test kit, mailed to the lab\": 49}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_termite_ao\", \"t\": \"menu\", \"name\": \"Termite and wood-destroying insect inspection\", \"icon\": \"\ud83d\udc1c\", \"desc\": \"A wood-destroying insect inspection of the structure, crawlspace\", \"full\": \"A wood-destroying insect inspection of the structure, crawlspace, attic and exterior for termites, carpenter ants, beetles and old damage, with the form your lender asks for.\", \"section\": \"Insurance & Reports\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 99.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-AO-TERMITE\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"wdi_form\", \"label\": \"Report\", \"options\": [\"Findings in the inspection report\", \"Official NPMA-33 \/ state WDI form for the lender\"], \"add\": {\"Official NPMA-33 \/ state WDI form for the lender\": 29}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_sewer_ao\", \"t\": \"menu\", \"name\": \"Sewer scope camera inspection\", \"icon\": \"\ud83d\udcf9\", \"desc\": \"A camera pushed from the cleanout to the city main or the septic\", \"full\": \"A camera pushed from the cleanout to the city main or the septic tank to find roots, bellies, offsets and breaks in the sewer line, with the video and a locate of any problem spot.\", \"section\": \"Systems\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 199.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-AO-SEWER\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"sw_access\", \"label\": \"Access\", \"options\": [\"A cleanout outside or in the basement\", \"No cleanout: through a roof vent or a pulled toilet\"], \"add\": {\"No cleanout: through a roof vent or a pulled toilet\": 79}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_water_ao\", \"t\": \"menu\", \"name\": \"Water quality test\", \"icon\": \"\ud83d\udca7\", \"desc\": \"Water drawn at the tap and sent to a lab for bacteria\", \"full\": \"Water drawn at the tap and sent to a lab for bacteria, nitrates and lead, results in a few days; the full well panel most lenders want is the second option.\", \"section\": \"Environmental Tests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 149.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-AO-WATER\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"wq_panel\", \"label\": \"Panel\", \"options\": [\"Basic: bacteria, nitrates and lead\", \"Full FHA \/ VA well water panel\"], \"add\": {\"Full FHA \/ VA well water panel\": 99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_well_ao\", \"t\": \"menu\", \"name\": \"Well flow and equipment inspection\", \"icon\": \"\ud83d\udeb0\", \"desc\": \"The well pump, pressure tank, switch\", \"full\": \"The well pump, pressure tank, switch, wiring and wellhead checked and a timed flow test run to measure yield and recovery.\", \"section\": \"Systems\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 199.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-AO-WELL\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"wl_type\", \"label\": \"Well\", \"options\": [\"One well, pressure tank in the house\", \"A pump house or a shared well\"], \"add\": {\"A pump house or a shared well\": 49}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_septic_ao\", \"t\": \"menu\", \"name\": \"Septic system inspection\", \"icon\": \"\ud83e\udea3\", \"desc\": \"The tank located and opened, liquid levels\", \"full\": \"The tank located and opened, liquid levels, baffles and the outlet checked, the drain field walked and probed, and a hydraulic load test run to see the system take water.\", \"section\": \"Systems\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 349.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-AO-SEPTIC\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"sp_lids\", \"label\": \"Lids\", \"options\": [\"Risers or lids at grade\", \"Lids buried: dug up and reburied\"], \"add\": {\"Lids buried: dug up and reburied\": 99}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_lead_ao\", \"t\": \"menu\", \"name\": \"Lead paint testing\", \"icon\": \"\ud83e\uddea\", \"desc\": \"Painted surfaces in a pre-1978 home tested for lead\", \"full\": \"Painted surfaces in a pre-1978 home tested for lead, either swab samples of the suspect trim, windows and doors sent to the lab or a full XRF survey of every painted surface.\", \"section\": \"Environmental Tests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 249.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-AO-LEAD\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"ld_scope\", \"label\": \"Scope\", \"options\": [\"Swab samples of suspect surfaces, up to 6\", \"Full XRF survey of every painted surface\"], \"add\": {\"Full XRF survey of every painted surface\": 249}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_chimney_ao\", \"t\": \"menu\", \"name\": \"Chimney level 2 camera inspection\", \"icon\": \"\ud83c\udfe0\", \"desc\": \"A camera run the length of the flue plus the firebox, damper\", \"full\": \"A camera run the length of the flue plus the firebox, damper, smoke chamber, crown and cap, the level 2 inspection a sale or an insurer asks for.\", \"section\": \"Systems\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 199.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-AO-CHIMNEY\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"ch_flues\", \"label\": \"Flues\", \"options\": [\"One flue\", \"Two or more flues\"], \"add\": {\"Two or more flues\": 79}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_drone_ao\", \"t\": \"menu\", \"name\": \"Drone roof survey\", \"icon\": \"\ud83d\udef8\", \"desc\": \"A drone flight over every slope of the roof with high resolution\", \"full\": \"A drone flight over every slope of the roof with high resolution photos of the shingles, flashings, vents and chimney, added to the report when the roof is too steep or high to walk.\", \"section\": \"Insurance & Reports\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 99.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-AO-DRONE\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"dr_roof\", \"label\": \"Roof\", \"options\": [\"One story or a walkable roof\", \"Two stories, steep or tile\"], \"add\": {\"Two stories, steep or tile\": 49}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_wind_ao\", \"t\": \"menu\", \"name\": \"Wind mitigation inspection\", \"icon\": \"\ud83c\udf2c\", \"desc\": \"The roof shape, deck attachment, roof to wall connection\", \"full\": \"The roof shape, deck attachment, roof to wall connection, water barrier and opening protection documented on the state wind mitigation form so the insurer applies the discount.\", \"section\": \"Insurance & Reports\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 99.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-AO-WINDMIT\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_4point_ao\", \"t\": \"menu\", \"name\": \"4-point insurance inspection\", \"icon\": \"\ud83d\udd22\", \"desc\": \"The roof, electrical, plumbing and HVAC systems documented\", \"full\": \"The roof, electrical, plumbing and HVAC systems documented with photos and ages on the carrier's 4-point form for a new policy or a renewal on an older home.\", \"section\": \"Insurance & Reports\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 99.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-AO-4POINT\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": [{\"key\": \"fp_form\", \"label\": \"Form\", \"options\": [\"Standard carrier 4-point form\", \"A roof certification form too\"], \"add\": {\"A roof certification form too\": 49}}]}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_sprinkler_ao\", \"t\": \"menu\", \"name\": \"Irrigation and sprinkler system check\", \"icon\": \"\ud83c\udf31\", \"desc\": \"Every zone run from the controller, heads, valves\", \"full\": \"Every zone run from the controller, heads, valves, leaks and the backflow preventer checked and the coverage noted, so a broken system does not surprise you after closing.\", \"section\": \"Systems\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 79.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-AO-SPRINKLER\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_gas_ao\", \"t\": \"menu\", \"name\": \"Gas leak and carbon monoxide test\", \"icon\": \"\ud83d\udd25\", \"desc\": \"A combustible gas detector run over every fitting\", \"full\": \"A combustible gas detector run over every fitting, valve and appliance connection and a CO reading taken at every gas appliance while it runs.\", \"section\": \"Environmental Tests\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 79.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-AO-GAS\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_sample_ao\", \"t\": \"menu\", \"name\": \"Extra lab samples\", \"icon\": \"\ud83d\udd2c\", \"desc\": \"Additional mold, asbestos or lead samples beyond the ones\", \"full\": \"Additional mold, asbestos or lead samples beyond the ones included in the test, each bagged, logged and sent to the lab with the chain of custody.\", \"section\": \"Environmental Tests\", \"unit\": \"unit\", \"unit_label\": \"sample\", \"price\": 49.99, \"min_qty\": 1, \"max_qty\": 99, \"step\": 1, \"code\": \"HI-AO-SAMPLE\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}, {\"qdef\": null, \"pstep\": null, \"key\": \"hi_estimate_ao\", \"t\": \"menu\", \"name\": \"Repair cost estimate report\", \"icon\": \"\ud83d\udccb\", \"desc\": \"A line by line cost estimate for every defect in the inspection\", \"full\": \"A line by line cost estimate for every defect in the inspection report, local contractor pricing, delivered with the report so you can negotiate with numbers.\", \"section\": \"Insurance & Reports\", \"unit\": \"flat\", \"unit_label\": \"\", \"price\": 79.99, \"min_qty\": 1, \"max_qty\": 1, \"step\": 1, \"code\": \"HI-AO-ESTIMATE\", \"variants\": [], \"rows\": false, \"variant_q\": \"\", \"variant_default\": \"\", \"rank\": 50, \"questions\": []}], \"extras\": [], \"main\": [\"hi_home_insp\", \"hi_prelisting\", \"hi_pool_spa\", \"hi_mold_air\", \"hi_reinspection\", \"hi_thermal\"], \"sections\": [\"Buying & Selling\", \"New Construction\", \"Specialty Inspections\", \"Owners & Rentals\", \"Commercial\", \"Environmental Tests\", \"Insurance & Reports\", \"Systems\"]};\n  var APP = '\/account', QUOTE = APP + '\/customer\/booking-assistant\/quote', CART = APP + '\/customer\/booking-assistant\/create-cart', ZIP = '75201';\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-5c34e4c e-con-full e-flex e-con e-parent\" data-id=\"5c34e4c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7e6cfcf elementor-widget elementor-widget-html\" data-id=\"7e6cfcf\" 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=\"hf-city-local-css\">.hf-city-local{background:#fff;padding:64px 24px 24px}.hf-city-local .in{max-width:880px;margin:0 auto}.hf-city-local h2{font-family:Inter,-apple-system,sans-serif;font-size:34px;line-height:1.2;font-weight:800;color:#0b172a;margin:0 0 16px;letter-spacing:-.4px}.hf-city-local p{font-family:Inter,-apple-system,sans-serif;font-size:18px;line-height:1.65;color:#475569;margin:0 0 14px}@media(max-width:767px){.hf-city-local{padding:44px 18px 12px}.hf-city-local h2{font-size:26px}.hf-city-local p{font-size:16px}}<\/style><section class=\"hf-city-local\" data-city=\"dallas\"><div class=\"in\"><h2>Home Inspection in Dallas<\/h2><p>Foundation movement in clay soil, hail worn roofs and busy relocation seasons make a careful inspection a must before buying in Dallas. A home inspection walks the structure, roof, electric, plumbing and HVAC, with a full report the same week.<\/p><p>Add a sewer scope, a pool and spa inspection or a termite inspection on the same visit, each with its own price. Inspections cover the metroplex, from Garland to Grand Prairie.<\/p><\/div><\/section><script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@type\": \"Service\", \"name\": \"Home Inspection in Dallas\", \"serviceType\": \"Home Inspection\", \"url\": \"https:\/\/housefly.com\/services\/dallas\/home-inspection\/\", \"provider\": {\"@type\": \"Organization\", \"name\": \"House Fly\", \"url\": \"https:\/\/housefly.com\/\"}, \"areaServed\": {\"@type\": \"City\", \"name\": \"Dallas\", \"containedInPlace\": {\"@type\": \"State\", \"name\": \"Texas\"}}, \"description\": \"Foundation movement in clay soil, hail worn roofs and busy relocation seasons make a careful inspection a must before buying in Dallas. A home inspection walks the structure, roof, electric, plumbing and HVAC, with a full report the same week.\"}<\/script>\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-bbe8ce5 e-con-full e-flex e-con e-parent\" data-id=\"bbe8ce5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5e82f4a elementor-widget elementor-widget-html\" data-id=\"5e82f4a\" 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<!-- homeinspection-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<!-- homeinspection-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 available nationwide, anywhere in the United States. 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, and we are available nationwide, anywhere in the United States. 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<!-- homeinspection-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":"<p>DALLAS HOME INSPECTION Trusted Home Inspectionin Dallas Verified pros, upfront pricing, and instant booking with no surprises 5.0 on Google A+ Better Business Bureau Free cancellation Home Inspection Services in Dallas Thorough home inspections across the Dallas-Fort Worth area. Get upfront pricing from verified inspectors and book instantly with House Fly. Buying or selling a [&hellip;]<\/p>\n","protected":false},"author":15,"featured_media":0,"parent":3422,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-3428","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.7 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Home Inspection in Dallas | Upfront Prices | House Fly<\/title>\n<meta name=\"description\" content=\"Book home inspection in Dallas, TX with House Fly. Pre purchase inspections with foundation, roof, pool and sewer checks. See your upfront price 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\/dallas\/home-inspection\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Home Inspection\" \/>\n<meta property=\"og:description\" content=\"Book home inspection in Dallas, TX with House Fly. Pre purchase inspections with foundation, roof, pool and sewer checks. See your upfront price and book online in minutes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/housefly.com\/es\/services\/dallas\/home-inspection\/\" \/>\n<meta property=\"og:site_name\" content=\"House Fly\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/houseflyapp\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-08T03:19:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/housefly.com\/wp-content\/uploads\/2025\/01\/housefly-social-share.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@houseflyapp\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Home Inspection in Dallas | Upfront Prices | House Fly","description":"Book home inspection in Dallas, TX with House Fly. Pre purchase inspections with foundation, roof, pool and sewer checks. See your upfront price 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\/dallas\/home-inspection\/","og_locale":"es_MX","og_type":"article","og_title":"Home Inspection","og_description":"Book home inspection in Dallas, TX with House Fly. Pre purchase inspections with foundation, roof, pool and sewer checks. See your upfront price and book online in minutes.","og_url":"https:\/\/housefly.com\/es\/services\/dallas\/home-inspection\/","og_site_name":"House Fly","article_publisher":"https:\/\/www.facebook.com\/houseflyapp","article_modified_time":"2026-07-08T03:19:57+00:00","og_image":[{"url":"https:\/\/housefly.com\/wp-content\/uploads\/2025\/01\/housefly-social-share.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_site":"@houseflyapp","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/housefly.com\/services\/dallas\/home-inspection\/","url":"https:\/\/housefly.com\/services\/dallas\/home-inspection\/","name":"Home Inspection in Dallas | Upfront Prices | House Fly","isPartOf":{"@id":"https:\/\/housefly.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/housefly.com\/services\/dallas\/home-inspection\/#primaryimage"},"image":{"@id":"https:\/\/housefly.com\/services\/dallas\/home-inspection\/#primaryimage"},"thumbnailUrl":"https:\/\/housefly.com\/wp-content\/uploads\/2024\/05\/Frame-1000010553-19.png","datePublished":"2026-03-06T01:24:35+00:00","dateModified":"2026-07-08T03:19:57+00:00","description":"Book home inspection in Dallas, TX with House Fly. Pre purchase inspections with foundation, roof, pool and sewer checks. See your upfront price and book online in minutes.","breadcrumb":{"@id":"https:\/\/housefly.com\/services\/dallas\/home-inspection\/#breadcrumb"},"inLanguage":"es-MX","potentialAction":[{"@type":"ReadAction","target":["https:\/\/housefly.com\/services\/dallas\/home-inspection\/"]}]},{"@type":"ImageObject","inLanguage":"es-MX","@id":"https:\/\/housefly.com\/services\/dallas\/home-inspection\/#primaryimage","url":"https:\/\/housefly.com\/wp-content\/uploads\/2024\/05\/Frame-1000010553-19.png","contentUrl":"https:\/\/housefly.com\/wp-content\/uploads\/2024\/05\/Frame-1000010553-19.png"},{"@type":"BreadcrumbList","@id":"https:\/\/housefly.com\/services\/dallas\/home-inspection\/#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":"Dallas Home Services","item":"https:\/\/housefly.com\/services\/dallas\/"},{"@type":"ListItem","position":4,"name":"Home Inspection"}]},{"@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\/3428","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"}],"author":[{"embeddable":true,"href":"https:\/\/housefly.com\/es\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/housefly.com\/es\/wp-json\/wp\/v2\/comments?post=3428"}],"version-history":[{"count":0,"href":"https:\/\/housefly.com\/es\/wp-json\/wp\/v2\/pages\/3428\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/housefly.com\/es\/wp-json\/wp\/v2\/pages\/3422"}],"wp:attachment":[{"href":"https:\/\/housefly.com\/es\/wp-json\/wp\/v2\/media?parent=3428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}