1import{k as ce,r as n,h as de,j as e,H as me,i as he,a as fe,L as G,F as xe,N as ge,o as E,bv as _,s as ue}from"./index-CbvCveKN.js";const z={usd:49,cad:69},g=z.usd,ke=/^America\/(Vancouver|Edmonton|Calgary|Regina|Winnipeg|Toronto|Montreal|Halifax|St_Johns|Moncton|Whitehorse|Yellowknife|Iqaluit|Dawson|Creston|Thunder_Bay|Nipigon|Rainy_River|Swift_Current|Glace_Bay|Goose_Bay|Blanc-Sablon|Atikokan|Fort_Nelson|Inuvik|Cambridge_Bay|Resolute|Rankin_Inlet|Pangnirtung)$/,be=()=>{try{const r=localStorage.getItem("ek-currency");if(r==="usd"||r==="cad")return r}catch{}const i=Intl.DateTimeFormat().resolvedOptions().timeZone||"",a=navigator.language||"";return ke.test(i)||/-CA$/i.test(a)?"cad":"usd"},$=25,ve="cubic-bezier(.2,.7,.2,1)",u="https://estimatekit.com",R=[{id:"servicetitan",label:"ServiceTitan",base:300,perUser:50},{id:"housecall",label:"Housecall Pro",base:169,perUser:40},{id:"jobber",label:"Jobber",base:129,perUser:29},{id:"spreadsheets",label:"Spreadsheets",base:0,perUser:0}],K=[{id:"1",label:"Just me",techs:1},{id:"3",label:"2 to 5",techs:3},{id:"7",label:"6 or more",techs:7}],ye=[{name:"Estimates",note:"branded, good / better / best",status:"UNLIMITED"},{name:"Invoices",note:"one click from any estimate",status:"UNLIMITED"},{name:"Customers",note:"full history, notes, equipment",status:"UNLIMITED"},{name:"Technicians",note:`up to ${$}, no per-seat pricing`,status:"INCLUDED"},{name:"Job scheduling",note:"calendar and dispatch",status:"INCLUDED"},{name:"Online card payments",note:"into your own Stripe account, no EstimateKit fee",status:"INCLUDED"},{name:"Payment tracking",note:"deposits, balances, partial payments",status:"INCLUDED"},{name:"Payment reminders",note:"automatic",status:"INCLUDED"},{name:"QuickBooks Online sync",note:"customers, invoices and payments",status:"INCLUDED"},{name:"Email delivery",note:"estimates and invoices, tracked",status:"INCLUDED"},{name:"Revenue dashboard",status:"INCLUDED"},{name:"Customer import",note:"CSV, five minutes",status:"INCLUDED"},{name:"Support from a human",note:"usually the same day",status:"INCLUDED"},{name:"Data export",note:"yours, any time",status:"INCLUDED"}],W=i=>[{question:"Is there really no contract?",answer:"None. Pay month to month, cancel anytime from your account settings. No cancellation fees, no questions asked."},{question:"What happens after the free trial?",answer:`You pick up at $${i}/month. We never charge without asking, so if you do nothing, your account simply pauses and your data stays put.`},{question:"Do I pay more when I add technicians?",answer:`No. $${i} covers your whole crew, up to ${$} users, with owner, admin and technician roles. There is no per-seat price.`},{question:"Are payment processing fees extra?",answer:"EstimateKit adds none. If you connect Stripe, customers pay invoices by card from the link and the money goes to your own Stripe account at Stripe's standard rate (2.9% + CA$0.30 per card payment in Canada, no monthly fee). Checks, cash and e-transfers you record yourself cost nothing."},{question:"What happens to my data if I cancel?",answer:"It stays yours. Export customers, estimates and invoices any time from settings. We keep your account for 30 days after cancelling in case you change your mind, then delete it."}],we=` 2.ek-pp{--ground:#07090d;--text:#e6ebf2;--t2:#8b97a8;--t3:#6b7788;--t4:#4f5b6c;--t5:#2f3947;--bar:#1a212c;--hair:#ffffff12;--accent:#f26a1b; 3 background:var(--ground);color:var(--text);position:relative;overflow:hidden;-webkit-font-smoothing:antialiased} 4.ek-pp .bg-grid{position:absolute;left:0;right:0;top:0;height:1400px;background-image:linear-gradient(#ffffff08 1px,transparent 1px),linear-gradient(90deg,#ffffff08 1px,transparent 1px);background-size:80px 80px;-webkit-mask-image:radial-gradient(ellipse 60% 45% at 50% 30%,#000 20%,transparent 100%);mask-image:radial-gradient(ellipse 60% 45% at 50% 30%,#000 20%,transparent 100%);pointer-events:none;animation:pp-drift 18s linear infinite} 5.ek-pp .bg-glow{position:absolute;top:-260px;left:50%;transform:translateX(-50%);width:1000px;height:700px;background:radial-gradient(ellipse at center,#f26a1b2a,transparent 65%);pointer-events:none;animation:pp-breathe 7s ease-in-out infinite} 6.ek-pp .wrap{position:relative;max-width:1040px;margin:0 auto;padding:128px 32px 0;display:flex;flex-direction:column;gap:128px} 7.ek-pp section{scroll-margin-top:96px} 8.ek-pp section + section{padding-top:96px;border-top:1px solid var(--hair)} 9.ek-pp .lbl{font-size:12px;letter-spacing:.08em;color:var(--accent)} 10.ek-pp .h{font-size:40px;font-weight:600;letter-spacing:-.03em;line-height:1.05;margin:20px 0 0;text-wrap:balance}
11.ek-pp .h span{display:block} 12.ek-pp .h .l2{color:var(--t3)} 13.ek-pp .grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:80px;align-items:start} 14.ek-pp .grid2.wide{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)} 15.ek-pp .grid2.center{align-items:center} 16.ek-pp .body{font-size:16px;line-height:1.55;color:var(--t2);max-width:400px;margin:0;text-wrap:pretty} 17.ek-pp .pill{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:10px;height:54px;padding:0 28px;border-radius:999px;background:var(--accent);color:#fff;font-size:15px;font-weight:600;box-shadow:0 0 40px #f26a1b55;border:0;cursor:pointer;font-family:inherit;text-decoration:none;transition:transform .2s} 18.ek-pp .pill:hover{transform:translateY(-1px);color:#fff} 19.ek-pp .cur{display:inline-flex;gap:2px;margin-top:14px;padding:3px;border-radius:999px;background:#ffffff0f;border:1px solid #ffffff1a} 20.ek-pp .cur-btn{border:0;background:transparent;color:#ffffff99;font-size:11px;letter-spacing:.08em;padding:5px 12px;border-radius:999px;cursor:pointer;transition:background .15s,color .15s} 21.ek-pp .cur-btn.on{background:#fff;color:#0f1523} 22.ek-pp .cur-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px} 23.ek-pp .pill:disabled{opacity:.7;transform:none;cursor:default} 24.ek-pp .pill .sheen{position:absolute;top:0;bottom:0;left:0;width:40%;background:linear-gradient(90deg,transparent,#ffffff55,transparent);transform:translateX(-120%) skewX(-20deg);pointer-events:none} 25.ek-pp .pill .sheen.go{animation:pp-shimmer 2.4s ease-in-out infinite} 26.ek-pp .pill > span{position:relative} 27.ek-pp .ringwrap{position:relative;display:inline-block;align-self:flex-start} 28.ek-pp .ring{position:absolute;inset:0;border-radius:999px;border:1px solid var(--accent);opacity:0;pointer-events:none} 29.ek-pp .ring.go{animation:pp-ring 2.4s ease-out infinite} 30.ek-pp .ghost{display:inline-flex;align-items:center;justify-content:center;height:48px;padding:0 24px;border-radius:999px;border:1px solid #ffffff22;color:var(--text);font-size:14px;font-weight:500;text-decoration:none;transition:border-color .2s} 31.ek-pp .ghost:hover{border-color:#ffffff55;color:var(--text)} 32.ek-pp .fine{font-size:12.5px;color:var(--t4)} 33.ek-pp .fine i,.ek-pp .meta i,.ek-pp .sure i{font-style:normal;color:var(--t5);margin:0 8px} 34/* hero */ 35.ek-pp .hero-left{display:flex;flex-direction:column;gap:32px} 36.ek-pp .hero-right{display:flex;flex-direction:column;gap:28px} 37.ek-pp .price-row{display:flex;align-items:baseline;gap:12px} 38.ek-pp .price{font-size:clamp(88px,11vw,136px);font-weight:500;letter-spacing:-.05em;line-height:.9;color:#fff;font-variant-numeric:tabular-nums} 39.ek-pp .price.glow{animation:pp-glow 4s ease-in-out infinite} 40.ek-pp .per{font-size:18px;color:var(--t3)} 41.ek-pp .meta{font-size:13px;color:var(--t3)} 42.ek-pp .strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)} 43.ek-pp .strip > div{padding:20px 20px;border-right:1px solid var(--hair)} 44.ek-pp .strip > div:first-child{padding-left:0} 45.ek-pp .strip > div:last-child{border-right:0;padding-right:0} 46.ek-pp .strip b{display:block;font-size:22px;font-weight:400;letter-spacing:-.02em;line-height:1} 47.ek-pp .strip small{display:block;margin-top:8px;font-size:12.5px;color:var(--t2)} 48/* calculator */ 49.ek-pp .chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px} 50.ek-pp .chip{padding:9px 16px;min-height:40px;border-radius:999px;font-size:14px;cursor:pointer;transition:all .25s;border:1px solid #ffffff1f;background:transparent;color:var(--t2);font-family:inherit} 51.ek-pp .chip:hover{border-color:#ffffff40;color:var(--text)} 52.ek-pp .chip.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600} 53.ek-pp .chip:focus-visible,.ek-pp .faq-btn:focus-visible{outline:2px solid #f26a1b66;outline-offset:3px} 54.ek-pp .flabel{font-size:11px;letter-spacing:.08em;color:var(--t3)} 55.ek-pp .calc-right{display:flex;flex-direction:column;gap:22px} 56.ek-pp .bar-row{display:grid;grid-template-columns:120px 1fr;gap:20px;align-items:center} 57.ek-pp .bar-row .name{font-size:13px;color:var(--t2)} 58.ek-pp .bar-track{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;min-width:0} 59.ek-pp .bar{height:30px;border-radius:3px;background:var(--bar);transition:width .6s cubic-bezier(.2,.8,.2,1);min-width:6px} 60.ek-pp .bar.ours{background:var(--accent);box-shadow:0 0 24px #f26a1b55} 61.ek-pp .bar-val{font-size:14px;white-space:nowrap} 62.ek-pp .savings{padding-top:22px;border-top:1px solid var(--hair)} 63.ek-pp .savings .lbl{display:block} 64.ek-pp .big{font-size:64px;letter-spacing:-.04em;line-height:1;margin-top:12px;font-variant-numeric:tabular-nums;transition:opacity .3s} 65.ek-pp .note{font-size:13.5px;color:var(--t2);margin:12px 0 0;max-width:420px;line-height:1.5} 66/* ledger */ 67.ek-pp .sticky{position:sticky;top:96px;display:flex;flex-direction:column;gap:24px} 68.ek-pp .ledger{display:flex;flex-direction:column} 69.ek-pp .lhead{display:flex;justify-content:space-between;padding-bottom:14px;font-size:11px;letter-spacing:.08em;color:var(--t4)} 70.ek-pp .lhead b{font-weight:400;color:var(--accent)} 71.ek-pp .lrow{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:baseline;padding:15px 0;border-top:1px solid var(--hair)} 72.ek-pp .lrow .n{font-size:15.5px;font-weight:500} 73.ek-pp .lrow .n small{font-size:13px;color:var(--t4);font-weight:400;margin-left:10px} 74.ek-pp .lrow .s{font-size:11px;letter-spacing:.08em;white-space:nowrap;color:var(--t4)} 75.ek-pp .lrow .s.hot{color:var(--accent)} 76.ek-pp .lclose{border-top:1px solid var(--hair)} 77/* proof */ 78.ek-pp .avatars{display:flex;align-items:center;gap:14px;margin-top:8px} 79.ek-pp .stack{display:flex} 80.ek-pp .stack span{width:32px;height:32px;border-radius:50%;border:1px solid var(--accent);background:var(--ground);
80display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:500;color:var(--accent);margin-left:-8px} 81.ek-pp .stack span:first-child{margin-left:0} 82.ek-pp .stars{font-size:13px;color:var(--accent);letter-spacing:1px} 83.ek-pp .stars small{color:var(--t2);letter-spacing:0;margin-left:8px;font-size:13px} 84.ek-pp .quote{font-size:26px;font-weight:500;line-height:1.35;letter-spacing:-.02em;text-wrap:pretty;margin:0} 85.ek-pp .quote i{font-style:normal;color:var(--accent)} 86.ek-pp .outcome{display:grid;grid-template-columns:auto auto 1fr;gap:24px;align-items:end;padding-top:24px;margin-top:28px;border-top:1px solid var(--hair)} 87.ek-pp .olabel{font-size:11px;letter-spacing:.08em;color:var(--t4);white-space:nowrap} 88.ek-pp .olabel.after{color:var(--accent)} 89.ek-pp .oval{font-size:28px;letter-spacing:-.02em;line-height:1;margin-top:8px;white-space:nowrap} 90.ek-pp .oval.before{color:var(--t3);text-decoration:line-through} 91.ek-pp .oval.after{color:#fff} 92.ek-pp .arrow{font-size:22px;color:var(--t4);padding-bottom:4px} 93.ek-pp .attr{font-size:13px;color:var(--t2);margin-top:20px} 94/* faq */ 95.ek-pp .faq{display:flex;flex-direction:column} 96.ek-pp .faq-item{border-top:1px solid var(--hair);position:relative} 97.ek-pp .faq-bar{position:absolute;top:-1px;left:0;height:1px;background:var(--accent);box-shadow:0 0 12px var(--accent);transition:width .5s cubic-bezier(.2,.8,.2,1);width:0} 98.ek-pp .faq-item.open .faq-bar{width:100%} 99.ek-pp .faq-btn{display:grid;grid-template-columns:1fr 24px;gap:16px;align-items:baseline;padding:20px 0;cursor:pointer;width:100%;text-align:left;background:none;border:0;color:inherit;font:inherit;-webkit-tap-highlight-color:transparent} 100.ek-pp .faq-q{font-size:17px;font-weight:600;line-height:1.3} 101.ek-pp .faq-plus{font-size:20px;line-height:1;color:var(--t4);text-align:right;transition:transform .4s cubic-bezier(.2,.8,.2,1),color .3s;display:block} 102.ek-pp .faq-item.open .faq-plus{color:var(--accent);transform:rotate(45deg)} 103.ek-pp .faq-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s cubic-bezier(.2,.8,.2,1)} 104.ek-pp .faq-item.open .faq-panel{grid-template-rows:1fr} 105.ek-pp .faq-panel > div{overflow:hidden} 106.ek-pp .faq-a{padding:0 40px 24px 0;font-size:15px;line-height:1.6;color:var(--t2);margin:0;opacity:0;transform:translateY(6px);transition:opacity .4s ease .1s,transform .4s ease .1s} 107.ek-pp .faq-item.open .faq-a{opacity:1;transform:none} 108.ek-pp .faq-close{border-top:1px solid var(--hair)} 109/* close */ 110.ek-pp .close{position:relative;padding:112px 0 120px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:28px} 111.ek-pp .close .glow2{position:absolute;bottom:-300px;left:50%;transform:translateX(-50%);width:1100px;height:600px;background:radial-gradient(ellipse at center,#f26a1b30,transparent 65%);pointer-events:none} 112.ek-pp .close h2{font-size:clamp(40px,5.5vw,68px);font-weight:600;letter-spacing:-.04em;line-height:1;margin:0;max-width:900px;text-wrap:balance} 113.ek-pp .close h2 span{display:block} 114.ek-pp .close h2 .l1{color:var(--t3)} 115.ek-pp .ctas{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:8px} 116.ek-pp .pill.lg{height:56px;box-shadow:0 0 50px #f26a1b66;font-size:15.5px} 117.ek-pp .g{position:relative;width:22px;height:22px;border-radius:50%;background:#fff;display:inline-flex;align-items:center;justify-content:center;flex:none} 118.ek-pp .ghost.lg{height:56px;padding:0 28px;font-size:15.5px} 119.ek-pp .sure{font-size:13px;color:var(--t3)} 120.ek-pp .foot{position:relative;font-size:11.5px;color:var(--t5);max-width:560px;line-height:1.5;margin-top:24px} 121@keyframes pp-rise{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}} 122@keyframes pp-fade{from{opacity:0}to{opacity:1}} 123@keyframes pp-drift{from{background-position:0 0,0 0}to{background-position:80px 80px,80px 80px}} 124@keyframes pp-breathe{0%,100%{opacity:.6;transform:translateX(-50%) scale(1)}50%{opacity:1;transform:translateX(-50%) scale(1.12)}} 125@keyframes pp-glow{0%,100%{text-shadow:0 0 30px #f26a1b44}50%{text-shadow:0 0 70px #f26a1baa}} 126@keyframes pp-shimmer{from{transform:translateX(-120%) skewX(-20deg)}to{transform:translateX(320%) skewX(-20deg)}}
127@keyframes pp-ring{from{transform:scale(1);opacity:.6}to{transform:scale(1.5);opacity:0}} 128@media (max-width:900px){ 129 .ek-pp .wrap{padding:104px 20px 0;gap:88px} 130 .ek-pp section + section{padding-top:64px} 131 .ek-pp .grid2,.ek-pp .grid2.wide{grid-template-columns:1fr;gap:40px} 132 .ek-pp .h{font-size:32px} 133 .ek-pp .price{font-size:88px} 134 .ek-pp .sticky{position:static} 135 .ek-pp .strip > div{padding:16px 12px} 136 .ek-pp .strip > div:first-child{padding-left:0} 137 .ek-pp .bar-row{grid-template-columns:96px 1fr;gap:12px} 138 .ek-pp .big{font-size:52px} 139 .ek-pp .quote{font-size:21px} 140 .ek-pp .oval{font-size:22px} 141 .ek-pp .ctas{flex-direction:column;align-items:stretch;width:100%} 142 .ek-pp .ctas .pill,.ek-pp .ctas .ghost{width:100%} 143 .ek-pp .close{padding:80px 0 88px} 144} 145@media (max-width:480px){ 146 .ek-pp .strip{grid-template-columns:1fr} 147 .ek-pp .strip > div{border-right:0;border-top:1px solid var(--hair);padding:14px 0} 148 .ek-pp .strip > div:first-child{border-top:0} 149 .ek-pp .price{font-size:76px} 150} 151@media (prefers-reduced-motion:reduce){ 152 .ek-pp .bg-grid,.ek-pp .bg-glow,.ek-pp .price,.ek-pp .sheen,.ek-pp .ring{animation:none!important} 153} 154`,je=()=>{const[i,a]=n.useState(!1);return n.useEffect(()=>{const r=window.matchMedia("(prefers-reduced-motion: reduce)");a(r.matches);const l=p=>a(p.matches);return r.addEventListener("change",l),()=>r.removeEventListener("change",l)},[]),i},y=(i=.15)=>{const a=n.useRef(null),[r,l]=n.useState(!1);return n.useEffect(()=>{const p=a.current;if(!p)return;const c=new IntersectionObserver(([d])=>{d.isIntersecting&&(l(!0),c.disconnect())},{threshold:i});return c.observe(p),()=>c.disconnect()},[i]),[a,r]},s=(i,a,r,l="pp-rise",p=.9)=>a?{}:i?{animation:`${l} ${p}s ${ve} ${r}s both`}:{opacity:0},Ne=i=>1-Math.pow(1-i,4),C=i=>`$${Math.round(i).toLocaleString("en-US")}`,Ee=()=>e.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 48 48","aria-hidden":!0,children:[e.jsx("path",{fill:"#EA4335",d:"M24 9.5c3.5 0 6.6 1.2 9.1 3.6l6.8-6.8C35.8 2.4 30.3 0 24 0 14.6 0 6.5 5.4 2.6 13.2l7.9 6.1C12.4 13.6 17.7 9.5 24 9.5z"}),e.jsx("path",{fill:"#4285F4",d:"M46.5 24.5c0-1.6-.1-3.1-.4-4.5H24v9h12.7c-.6 3-2.2 5.5-4.7 7.2l7.6 5.9c4.4-4.1 6.9-10.1 6.9-17.6z"}),e.jsx("path",{fill:"#FBBC05",d:"M10.5 28.7A14.6 14.6 0 0 1 9.5 24c0-1.6.3-3.2.8-4.7l-7.9-6.1A24 24 0 0 0 0 24c0 3.9.9 7.5 2.6 10.8l7.9-6.1z"}),e.jsx("path",{fill:"#34A853",d:"M24 48c6.3 0 11.7-2.1 15.6-5.7l-7.6-5.9c-2.1 1.4-4.8 2.3-8 2.3-6.3 0-11.6-4.1-13.5-9.9l-7.9 6.1C6.5 42.6 14.6 48 24 48z"})]}),S=({num:i,title:a,l1:r,l2:l,go:p,reduced:c,children:d})=>e.jsxs("div",{children:[e.jsxs("div",{className:"lbl ek-mono",style:s(p,c,0,"pp-fade",.8),children:[i," â ",a]}),e.jsxs("h2",{className:"h",children:[e.jsx("span",{style:s(p,c,.1),children:r}),e.jsx("span",{className:"l2",style:s(p,c,.3),children:l})]}),d]});function Se(){var H;const i=ce(),a=je(),[r,l]=n.useState(!1),[p,c]=n.useState(!1),[d,F]=n.useState(!1),[k,O]=n.useState("usd");n.useEffect(()=>{O(be())},[]);const h=z[k],L=n.useRef(h);L.current=h;const Y=t=>{O(t);try{localStorage.setItem("ek-currency",t)}catch{}},[X,I]=n.useState(g),[q,M]=n.useState(!1);n.useEffect(()=>{if(F(!0),a){M(!0);return}I(400);let t=0;const m=window.setTimeout(()=>{const o=performance.now();t=window.setInterval(()=>{const B=Math.min(1,(performance.now()-o)/1400);I(Math.round(400+(L.current-400)*Ne(B))),B>=1&&window.clearInterval(t)},32)},700),x=window.setTimeout(()=>M(!0),2400);return()=>{window.clearTimeout(m),window.clearTimeout(x),window.clearInterval(t)}},[a]);const w=q&&!a;n.useEffect(()=>{q&&I(h)},[h,q]);const[V,j]=y(),[J,N]=y(),[Q,T]=y(),[Z,P]=y(),[ee,b]=y(),[A,te]=n.useState("servicetitan"),[D,ae]=n.useState("3"),v=R.find(t=>t.id===A)??R[0],U=((H=K.find(t=>t.id===D))==null?void 0:H.techs)??3,f=v.base?v.base+v.perUser*(U-1):0,se=Math.max(0,(f-g)*12),ie=f>0?Math.max(8,g/f*100):100,[ne,re]=n.useState(0),oe=async()=>{if(!ge())try{l(!0);const{data:{session:t}}=await E.auth.getSession();if(!t){i("/signup");return}try{const{data:o}=await E.functions.invoke("check-subscription",{headers:{Authorization:`Bearer ${t.access_token}`}});if((o==null?void 0:o.subscription_status)==="active"||(o==null?void 0:o.subscription_status)==="trialing"){_.info("You already have an active subscription"),i("/dashboard");return}}catch(o){console.error("Error checking subscription:",o)}await E.functions.invoke("ensure-provisioned",{headers:{Authorization:`Bearer ${t.access_token}`}});const{data:m,error:x}=await E.functions.invoke("create-checkout",{headers:{Authorization:`Bearer ${t.access_token}`},body:{currency:k}});if(x)throw x;m!=null&&m.url&&(window.location.href=m.url)}catch(t){console.error("Checkout error:",t),_.error(t instanceof Error?t.message:"Failed to start checkout")}finally{l(!1)}}
154,pe=async()=>{c(!0),await ue("/dashboard")&&(c(!1),window.location.assign("/signup"))},le=[{"@context":"https://schema.org","@type":"Product",name:"EstimateKit",description:"HVAC business software: estimates, customers, jobs, invoicing and payment tracking for one flat price.",brand:{"@type":"Brand",name:"EstimateKit"},image:[`${u}/og-image.png`],offers:[{"@type":"Offer",price:String(z.usd),priceCurrency:"USD",url:`${u}/pricing`,availability:"https://schema.org/InStock",priceValidUntil:"2027-12-31"},{"@type":"Offer",price:String(z.cad),priceCurrency:"CAD",url:`${u}/pricing`,availability:"https://schema.org/InStock",priceValidUntil:"2027-12-31"}]},de(W(g))];return e.jsxs("div",{className:"ek-onest ek-pp min-h-screen",children:[e.jsxs(me,{children:[e.jsx("title",{children:"Pricing: $49/Month, Everything Included | EstimateKit"}),e.jsx("meta",{name:"description",content:"One plan for HVAC contractors: $49/month for unlimited estimates, invoices and customers, up to 25 team members, jobs, deposits and maintenance plans. 14-day free trial."}),e.jsx("link",{rel:"canonical",href:`${u}/pricing`}),e.jsx("meta",{property:"og:type",content:"website"}),e.jsx("meta",{property:"og:title",content:"EstimateKit Pricing: $49/Month, Everything Included"}),e.jsx("meta",{property:"og:description",content:"One plan. No tiers, no per-user fees. 14-day free trial, no credit card."}),e.jsx("meta",{property:"og:url",content:`${u}/pricing`}),e.jsx("meta",{property:"og:image",content:`${u}/og-image.png`}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),e.jsx("meta",{name:"twitter:title",content:"EstimateKit Pricing: $49/Month, Everything Included"}),e.jsx("meta",{name:"twitter:description",content:"One plan. No tiers, no per-user fees. 14-day free trial, no credit card."}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(he(le))})]}),e.jsx("style",{dangerouslySetInnerHTML:{__html:we}}),e.jsx("div",{className:"bg-grid","aria-hidden":!0}),e.jsx("div",{className:"bg-glow","aria-hidden":!0}),e.jsx(fe,{}),e.jsxs("main",{className:"wrap",children:[e.jsxs("section",{"aria-label":"Pricing",className:"grid2 center",id:"plan",children:[e.jsxs("div",{className:"hero-left",children:[e.jsxs("div",{children:[e.jsx("div",{className:"lbl ek-mono",style:s(d,a,0,"pp-fade",.8),children:"01 â PRICING"}),e.jsxs("h1",{className:"h",style:{fontSize:"clamp(40px,4.6vw,56px)"},children:[e.jsx("span",{style:s(d,a,.1),children:"One plan."}),e.jsx("span",{className:"l2",style:s(d,a,.3),children:"Everything included."})]})]}),e.jsx("p",{className:"body",style:s(d,a,.5),children:"No tiers. No upsells. No per-user fees. Every feature, every technician, every estimate, for one flat price."}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:12,...s(d,a,.7)},children:[e.jsxs("span",{className:"ringwrap",children:[e.jsx("span",{className:`ring${w?" go":""}`,"aria-hidden":!0}),e.jsxs("button",{type:"button",className:"pill",onClick:oe,disabled:r,children:[e.jsx("span",{className:`sheen${w?" go":""}`,"aria-hidden":!0}),e.jsx("span",{children:r?"One momentâ¦":"Start 14-day free trial â"})]})]}),e.jsxs("div",{className:"fine",children:["No credit card",e.jsx("i",{children:"·"}),"Setup in 5 minutes",e.jsx("i",{children:"·"}),"Cancel anytime"]})]})]}),e.jsxs("div",{className:"hero-right",style:s(d,a,.6,"pp-rise",1),children:[e.jsxs("div",{children:[e.jsxs("div",{className:"price-row",children:[e.jsxs("div",{className:`price ek-mono${w?" glow":""}`,"aria-label":`$${h} ${k.toUpperCase()} per month`,children:["$",X]}),e.jsx("div",{className:"per ek-mono",children:"/ month"})]}),e.jsxs("div",{className:"meta",style:{marginTop:18},children:["Billed monthly",e.jsx("i",{children:"·"}),"Up to ",$," users",e.jsx("i",{children:"·"}),e.jsxs("span",{className:"ek-mono",children:["$",(h*12/365).toFixed(2)," / day"]})]}),e.jsx("div",{className:"cur",role:"group","aria-label":"Currency",children:["usd","cad"].map(t=>e.jsx("button",{type:"button",className:`cur-btn ek-mono${k===t?" on":""}`,"aria-pressed":k===t,onClick:()=>Y(t),children:t.toUpperCase()},t))})]}),e.jsxs("div",{className:"strip",children:[e.jsxs("div",{children:[e.jsx("b",{className:"ek-mono",children:"â"}),e.jsx("small",{children:"estimates & invoices"})]}),e.jsxs("div",{children:[e.jsx("b",{className:"ek-mono",children:$}),e.jsx("small",{children:"technicians, no per-seat fees"})]}),e.jsxs("div",{children:[e.jsx("b",{className:"ek-mono",children:"0"}),e.jsx("small",{children:"contracts or setup fees"})]})]})]})]}),e.jsxs("section",{ref:V,"aria-label":"What you'd save",className:"grid2",id:"savings",children:[e.jsxs("div",{children:[e.jsx(S,{num:"02",title:"WHAT YOU'D SAVE",l1:"See your number.",l2:"Two taps.",go:j,reduced:a}),e.jsxs("div",{style:{marginTop:32,...s(j,a,.45)},children:[e.jsx("div",{className:"flabel ek-mono",children:"WHAT YOU USE TODAY"}),e.jsx("div",{className:"chips",role:"radiogroup","aria-label":"What you use today",children:R.map(t=>e.jsx("button",{type:"button",role:"radio","aria-checked":A===t.id,className:`chip${A===t.id?" on":""}`,onClick:()=>te(t.id),children:t.label},t.id))})]}),e.jsxs("div",{style:{marginTop:28,...s(j,a,.6)},children:[e.jsx("div",{className:"flabel ek-mono",children:"TECHNICIANS ON THE TOOL"}),e.jsx("div",{className:"chips",role:"radiogroup","aria-label":"Technicians on the tool",children:K.map(t=>e.jsx("button",{type:"button",role:"radio","aria-checked":D===t.id,className:`chip${D===t.id?" on":""}`,onClick:()=>ae(t.id),children:t.label},t.id))})]})]}),e.jsxs("div",{className:"calc-right",style:s(j,a,.5,"pp-rise",1),"aria-live":"polite",children:[e.jsxs("div",{className:"bar-row",children:[e.jsx("div",{className:"name",children:v.label}),e.jsxs("div",{className:"bar-track",children:[e.jsx("div",{className:"bar",style:{width:f>0?"100%":"8%"}}),e.jsx("span",{className:"bar-val ek-mono",children:f>0?`${C(f)}/mo`:"Your time"})]})]}),e.jsxs("div",{className:"bar-row",children:[e.jsx("div",{className:"name",children:"EstimateKit"}),e.jsxs("div",{className:"bar-track",children:[e.jsx("div",{className:"bar ours",style:{width:`${ie}%`}}),e.jsxs("span",{className:"bar-val ek-mono",children:["$",g,"/mo"]})]})]}),e.jsxs("div",{className:"savings",children:[e.jsx("span",{className:"lbl ek-mono",children:"BACK IN YOUR POCKET, PER YEAR"}),e.jsx("div",{className:"big ek-mono",children:f>0?C(se):"Hours"}),e.jsx("p",{className:"note",children:f>0?`${v.label} at about ${C(f)} a month for ${U===1?"one person":`${U} technicians`}, against ${C(g)} flat. Published starting prices; your quote may differ.`:"Contractors tell us an estimate takes about 45 minutes by hand and 5 in EstimateKit. At a few estimates a week, that is most of a working day back every month."})]})]})]}),e.jsxs("section",{ref:J,"aria-label":"What's included",className:"grid2 wide",id:"included",children:[e.jsxs("div",{className:"sticky",children:[e.jsx(S,{num:"03",title:"WHAT'S INCLUDED",l1:"All of it.",l2:"There is no other tier.",go:N,reduced:a}
154),e.jsx("p",{className:"body",style:{fontSize:15,...s(N,a,.45)},children:"Other tools gate the features you need behind the plan you can't afford. We don't sell plans."}),e.jsx("div",{style:s(N,a,.6),children:e.jsx(G,{to:"/servicetitan-alternative",className:"ghost",children:"Compare to ServiceTitan â"})})]}),e.jsxs("div",{className:"ledger",style:s(N,a,.5,"pp-rise",1),children:[e.jsxs("div",{className:"lhead ek-mono",children:[e.jsx("span",{children:"FEATURE"}),e.jsxs("b",{children:["$",h," PLAN"]})]}),ye.map(t=>e.jsxs("div",{className:"lrow",children:[e.jsxs("div",{className:"n",children:[t.name,t.note?e.jsx("small",{children:t.note}):null]}),e.jsx("div",{className:`s ek-mono${t.status==="UNLIMITED"?" hot":""}`,children:t.status})]},t.name)),e.jsx("div",{className:"lclose"})]})]}),e.jsxs("section",{ref:Q,"aria-label":"Who switched",className:"grid2 wide",id:"proof",children:[e.jsxs("div",{children:[e.jsx(S,{num:"04",title:"WHO SWITCHED",l1:"100+ crews.",l2:"Same math.",go:T,reduced:a}),e.jsxs("div",{className:"avatars",style:{marginTop:24,...s(T,a,.45)},children:[e.jsxs("div",{className:"stack","aria-hidden":!0,children:[e.jsx("span",{className:"ek-mono",children:"MR"}),e.jsx("span",{className:"ek-mono",children:"JT"}),e.jsx("span",{className:"ek-mono",children:"DK"})]}),e.jsxs("div",{className:"stars","aria-label":"Five-star reviews",children:["â
â
â
â
â
",e.jsx("small",{children:"HVAC owners across the US"})]})]})]}),e.jsxs("div",{style:s(T,a,.5,"pp-rise",1),children:[e.jsxs("blockquote",{className:"quote",children:[e.jsx("i",{className:"ek-mono",children:"â"}),"I was paying $300 a month for ServiceTitan and using maybe 20% of it. EstimateKit does everything I actually need for $49. Took me 10 minutes to set up.",e.jsx("i",{className:"ek-mono",children:"â"})]}),e.jsxs("div",{className:"outcome",children:[e.jsxs("div",{children:[e.jsx("div",{className:"olabel ek-mono",children:"SERVICETITAN"}),e.jsx("div",{className:"oval before ek-mono",children:"$300/mo"})]}),e.jsx("div",{className:"arrow ek-mono","aria-hidden":!0,children:"â"}),e.jsxs("div",{children:[e.jsx("div",{className:"olabel after ek-mono",children:"ESTIMATEKIT"}),e.jsx("div",{className:"oval after ek-mono",children:"$49/mo"})]})]}),e.jsx("div",{className:"attr",children:"Mike R. · Owner, MR Heating and Cooling · Phoenix, AZ"})]})]}),e.jsxs("section",{ref:Z,"aria-label":"Pricing questions",className:"grid2 wide",id:"faq",children:[e.jsx(S,{num:"05",title:"BEFORE YOU ASK",l1:"The fine print.",l2:"There isn't much.",go:P,reduced:a}),e.jsxs("div",{className:"faq",style:s(P,a,.5,"pp-rise",1),children:[W(h).map((t,m)=>{const x=ne===m,o=`pricing-faq-${m}`;return e.jsxs("div",{className:`faq-item${x?" open":""}`,children:[e.jsx("div",{className:"faq-bar","aria-hidden":!0}),e.jsx("h3",{style:{margin:0},children:e.jsxs("button",{type:"button",className:"faq-btn",id:`${o}-b`,"aria-expanded":x,"aria-controls":`${o}-p`,onClick:()=>re(x?null:m),children:[e.jsx("span",{className:"faq-q",children:t.question}),e.jsx("span",{className:"faq-plus ek-mono","aria-hidden":!0,children:"+"})]})}),e.jsx("div",{className:"faq-panel",role:"region",id:`${o}-p`,"aria-labelledby":`${o}-b`,children:e.jsx("div",{children:e.jsx("p",{className:"faq-a",children:t.answer})})})]},t.question)}),e.jsx("div",{className:"faq-close"})]})]}),e.jsxs("section",{ref:ee,"aria-label":"Get started",className:"close",id:"start",children:[e.jsx("div",{className:"glow2","aria-hidden":!0}),e.jsx("div",{className:"lbl ek-mono",style:s(b,a,0,"pp-fade",.8),children:"06 â START"}),e.jsxs("h2",{children:[e.jsx("span",{className:"l1",style:s(b,a,.1),children:"Fourteen days free."}),e.jsxs("span",{style:s(b,a,.3),children:["Then $",h,". That's the whole page."]})]}),e.jsxs("div",{className:"ctas",style:s(b,a,.5),children:[e.jsxs("button",{type:"button",className:"pill lg",onClick:pe,disabled:p,children:[e.jsx("span",{className:`sheen${w?" go":""}`,"aria-hidden":!0}),e.jsx("span",{className:"g","aria-hidden":!0,children:e.jsx(Ee,{})}),e.jsx("span",{children:p?"Opening Googleâ¦":"Sign up with Google"})]}),e.jsx(G,{to:"/signup",className:"ghost lg",children:"Start with email"})]}),e.jsxs("div",{className:"sure",style:s(b,a,.7,"pp-fade",1),children:["No credit card",e.jsx("i",{children:"·"}),"Cancel anytime",e.jsx("i",{children:"·"}),"Keep your data if you leave"]}),e.jsx("p",{className:"foot",children:"Competitor prices are published starting points and vary by plan and crew size. Savings estimates are illustrative. ServiceTitan, Housecall Pro and Jobber are trademarks of their respective owners; EstimateKit is not affiliated with them."})]})]}),e.jsx(xe,{})]})}
154export{Se as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.