1import{a as e,r as t}from"./utils-KNdIxHLD.js";import{r as n}from"./useRouter-cqa85HvV.js";import{t as r}from"./link-BCAXn4Xn.js";import{d as i,f as a,l as o}from"./photo-variants-D3twpW_O.js";import{t as s}from"./star-Ct92LdI0.js";import{G as c,P as l,Q as u,nt as d,q as f,rt as p,z as m}from"./index-AsIGSPc5.js";import{t as h}from"./PhotoImg-WYEnfK3t.js";import{t as g}from"./EstimateForm-DzMcwQDQ.js";var _=e(n(),1),v=t();function y({value:e,prefix:t=``,suffix:n=``,duration:r=1600}){let i=(0,_.useRef)(null),[a,o]=(0,_.useState)(e);return(0,_.useEffect)(()=>{let t=i.current;if(!t)return;if(window.matchMedia(`(prefers-reduced-motion: reduce)`).matches||typeof IntersectionObserver>`u`){o(e);return}o(0);let n=0,a=new IntersectionObserver(t=>{if(!t[0]?.isIntersecting)return;a.disconnect();let i=performance.now(),s=t=>{let a=Math.min((t-i)/r,1),c=1-(1-a)**3;o(Math.round(e*c)),a<1&&(n=requestAnimationFrame(s))};n=requestAnimationFrame(s)},{threshold:.4});return a.observe(t),()=>{a.disconnect(),cancelAnimationFrame(n)}},[e,r]),(0,v.jsxs)(`span`,{ref:i,children:[t,a,n]})}var b=[{n:`01`,title:`Water Damage Restoration`,line:`Extraction and structural drying, day or night.`,to:`/water-damage-restoration`,photo:`studsAirMover`},{n:`02`,title:`Mold Inspection & Remediation`,line:`TDLR-licensed containment and removal.`,to:`/mold-remediation`,photo:`containmentSpray`},{n:`03`,title:`Air Duct Cleaning & Sanitizing`,line:`RIA-certified whole-system hygiene.`,to:`/air-duct-cleaning`,photo:`ductDirty`},{n:`04`,title:`Carpet & Area Rug Cleaning`,line:`Deep extraction and fine fabric care.`,to:`/carpet-floor-cleaning`,photo:`stockCarpet`},{n:`05`,title:`Odor & Dead Animal Removal`,line:`Source removed, not covered up.`,to:`/odor-removal`,photo:`stockOdor`},{n:`06`,title:`HVAC Plenum & UV Light`,line:`Plenums cleaned, UV-C air treatment installed.`,to:`/hvac-plenum-cleaning`,photo:`ductInterior`}],x=[{n:`01`,title:`We document everything`,line:`Moisture readings, photos and scope written for the adjuster.`},{n:`02`,title:`We bill your carrier direct`,line:`You handle the deductible. We handle the paperwork.`},{n:`03`,title:`We advocate for you`,line:`Your interests, not the insurance company's.`}],S=[{to:`/commercial-water-damage-restoration`,label:`Commercial Water Damage`},{to:`/commercial-mold-remediation`,label:`Commercial Mold Remediation`},{to:`/commercial-air-duct-cleaning`,label:`Commercial Air Ducts`},{to:`/commercial-kitchen-vent-hood-cleaning`,label:`Kitchen Vent Hoods`}],C=c.slice(0,3);function w(){return(0,v.jsx)(`div`,{className:`flex gap-1 text-primary`,"aria-label":`5 star review`,children:Array.from({length:5}).map((e,t)=>(0,v.jsx)(s,{className:`size-4 fill-current`,"aria-hidden":`true`},t))})}function T(){let e=i(`/`),t=a(e.hero??`fleet`),n=o.hoodClean,c=o.crew;return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)(`section`,{className:`hero-grid hero-grid-home bg-primary pt-[88px] text-white`,children:[(0,v.jsxs)(`div`,{className:`hero-copy`,children:[(0,v.jsxs)(`h1`,{className:`hero-h1`,children:[(0,v.jsx)(`span`,{className:`chip-skew chip-skew-red w-fit px-4 py-1.5 font-sans text-[0.7rem] font-bold not-italic leading-normal tracking-[0.24em] text-white`,children:`Water Damage, Mold & Duct Cleaning · San Antonio`}),(0,v.jsx)(`span`,{className:`mt-7 block`,children:`We're on our way.`})]}),(0,v.jsx)(`p`,{className:`mt-6 text-[clamp(1rem,1.3vw,1.25rem)] font-medium text-white`,children:`Water damage. Mold. Air ducts. Handled since 1991.`}),(0,v.jsx)(`p`,{className:`mt-4 max-w-md text-onblue`,children:`Family-owned, TDLR-licensed and IICRC certified. We answer 24/7/365 and roll from our Basse Rd shop â most emergencies met within two hours.`}),(0,v.jsxs)(`div`,{className:`mt-9 flex flex-wrap gap-4`,children:[(0,v.jsx)(l,{asChild:!0,variant:`emergency`,size:`xl`,children:(0,v.jsxs)(`a`,{href:p,children:[(0,v.jsx)(m,{}),` Call `,d]})}),(0,v.jsx)(l,{asChild:!0,variant:`onDark`,size:`xl`,children:(0,v.jsx)(r,{to:`/`,hash:`estimate`,children:`Get a Free Estimate`})})]}),(0,v.jsxs)(`ul`,{className:`mt-10 flex flex-wrap gap-x-6 gap-y-2 text-[0.78rem] font-bold uppercase tracking-[0.12em] text-onblue`,children:[(0,v.jsx)(`li`,{children:`Family owned since 1991`}),(0,v.jsx)(`li`,{children:`TDLR licensed`}),(0,v.jsx)(`li`,{children:`IICRC certified`}),(0,v.jsx)(`li`,{children:`Hablamos Español`})]})]}),(0,v.jsx)(`div`,{className:`hero-media`,children:(0,v.jsx)(`div`,{className:`hero-skew`,children:(0,v.jsxs)(`div`,{className:`hero-unskew`,children:[(0,v.jsx)(h,{src:t.src,alt:t.alt,priority:!0,sizes:`(min-width: 1024px) 55vw, 100vw`,className:`hero-zoom`,style:{objectPosition:e.heroPosition??`50% 40%`}}),(0,v.jsx)(`span`,{className:`hero-tint`,"aria-hidden":`true`})]})})})]}),(0,v.jsx)(`section`,{className:`bg-charcoal text-white`,children:(0,v.jsxs)(`div`,{className:`container-page grid grid-cols-2 gap-8 py-10 md:h-[120px] md:grid-cols-4 md:items-center md:py-0`,children:[(0,v.jsx)(E,{label:`Years in San Antonio`,children:(0,v.jsx)(y,{value:35,suffix:`+`})}),(0,v.jsx)(E,{label:`Answered, every day`,children:`24/7`}),(0,v.jsx)(E,{label:`Emergency arrival`,children:`2hr`}),(0,v.jsx)(E,{label:`On military bases since`,children:(0,v.jsx)(`span`,{className:`normal-case`,children:`1990s`})})]})}),(0,v.jsx)(`section`,{className:`border-b border-border bg-white`,children:(0,v.jsxs)(`div`,{className:`container-page grid gap-4 py-6 md:grid-cols-2 xl:grid-cols-3`,children:[(0,v.jsxs)(r,{to:`/special-offers`,className:`flex items-center justify-between gap-4 border-l-4 border-emergency bg-secondary px-5 py-4 hover:bg-secondary/70`,children:[(0,v.jsxs)(`span`,{children:[(0,v.jsx)(`span`,{className:`type-display block text-[0.7rem] tracking-[0.2em] text-emergency`,children:`Ask about it`}),(0,v.jsx)(`span`,{className:`mt-1 block text-lg font-bold text-charcoal`,children:`Whole-House Allergy Treatment`})]}),(0,v.jsx)(`span`,{className:`whitespace-nowrap text-sm font-bold uppercase tracking-[0.12em] text-primary`,children:`Details â`})]}),(0,v.jsxs)(`a`,{href:u,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center justify-between gap-4 border-l-4 border-primary bg-secondary px-5 py-4 hover:bg-secondary/70`,children:[(0,v.jsxs)(`span`,{children:[(0,v.jsx)(`span`,{className:`type-display block text-[0.7rem] tracking-[0.2em] text-primary`,children:`Financing available`}),(0,v.jsx)(`span`,{className:`mt-1 block text-lg font-bold text-charcoal`,children:`Click here to apply`})]}),(0,v.jsx)(`span`,{className:`whitespace-nowrap text-sm font-bold uppercase tracking-[0.12em] text-primary`,children:`Apply â`})]}),(0,v.jsxs)(r,{to:`/special-offers`,className:`flex items-center justify-between gap-4 border-l-4 border-emergency bg-secondary px-5 py-4 hover:bg-secondary/70`,children:[(0,v.jsxs)(`span`,{children:[(0,v.jsx)(`span`,{className:`type-display block text-[0.7rem] tracking-[0.2em] text-emergency`,children:`Military discount`}),(0,v.jsx)(`span`,{className:`mt-1 block text-sm font-semibold leading-relaxed text-charcoal`,children:`10% off all services for active and retired military. Mention it on your first call and show your ID.`})]}),(0,v.jsx)(`span`,{className:`whitespace-nowrap text-sm font-bold uppercase tracking-[0.12em] text-primary`,children:`Details â`})]})]})}),(0,v.jsx)(`section`,{className:`bg-white py-20 sm:py-28`,children:(0,v.jsxs)(`div`,{className:`container-page`,children:[(0,v.jsxs)(`div`,{className:`flex flex-wrap items-end justify-between gap-4`,children:[(0,v.jsx)(`h2`,{className:`text-4xl sm:text-5xl`,children:`Six ways we show up.`}),(0,v.jsx)(r,{to:`/commercial`,className:`text-sm font-bold uppercase tracking-[0.12em] text-emergency hover:underline`,children:`All 21 services â`})]}),(0,v.jsx)(`div`,{className:`mt-12 grid gap-6 sm:grid-cols-2 lg:grid-cols-3`,children:b.map(e=>{let t=a(e.photo);return(0,v.jsxs)(r,{to:e.to,className:`group relative isolate block h-[420px] overflow-hidden bg-primary text-white`,children:[(0,v.jsx)(h,{src:t.src,alt:t.alt,sizes:`(min-width: 1024px) 33vw, (min-width: 640px) 50vw, 100vw`,className:`absolute inset-0 size-full object-cover transition-transform duration-500 group-hover:scale-[1.04]`}),(0,v.jsx)(`span`,{className:`photo-label-fade absolute inset-0`,"aria-hidden":`true`}),(0,v.jsx)(`span`,{className:`chip-skew chip-skew-red absolute left-6 top-6 px-3 py-1 text-[0.7rem] font-bold tracking-[0.2em] text-white`,children:e.n}),(0,v.jsxs)(`div`,{className:`absolute inset-x-0 bottom-0 p-7`,children:[(0,v.jsx)(`h3`,{className:`type-display mt-2 text-2xl text-white`,children:e.title}),(0,v.jsx)(`p`,{className:`mt-2 max-w-xs text-sm text-ondark`,children:e.line})]})]},e.to)})})]})}),(0,v.jsx)(`section`,{className:`bg-emergency text-white`,children:(0,v.jsxs)(`div`,{className:`container-page grid gap-12 py-20 lg:grid-cols-[1fr_1.2fr]`,children:[(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`h2`,{className:`text-[clamp(2rem,3vw,3rem)]`,children:`We work your claim.`}),(0,v.jsx)(`p`,{className:`mt-5 max-w-sm text-white/90`,children:`Insurance work is most of what we do. We document, bill and advocate so you can get back to normal.`})]}),(0,v.jsx)(`ul`,{className:`space-y-6`,children:x.map(e=>(0,v.jsxs)(`li`,{className:`flex gap-6 border-t border-white/30 pt-6`,children:[(0,v.jsx)(`span`,{className:`type-display text-3xl text-white/60`,children:e.n}),(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`h3`,{className:`text-lg font-bold text-white`,children:e.title}),(0,v.jsx)(`p`,{className:`mt-1 text-sm text-white/85`,children:e.line})]})]},e.n))})]})}),(0,v.jsx)(`section`,{className:`bg-charcoal text-white`,children:(0,v.jsxs)(`div`,{className:`grid lg:grid-cols-2`,children:[(0,v.jsx)(`div`,{className:`relative min-h-[380px]`,children:(0,v.jsx)(h,{src:n.src,alt:n.alt,sizes:`(min-width: 1024px) 50vw, 100vw`,className:`absolute inset-0 size-full object-cover`})}),(0,v.jsxs)(`div`,{className:`px-5 py-16 md:px-14`,children:[(0,v.jsx)(`p`,{className:`type-display text-xs tracking-[0.2em] text-emergency`,children:`Commercial`}),(0,v.jsx)(`h2`,{className:`mt-4 text-4xl sm:text-5xl`,children:`Facilities that can't shut down.`}),(0,v.jsx)(`p`,{className:`mt-5 max-w-md text-ondark`,children:`Sc
1hools, hotels, medical, military and retail. After-hours crews, documentation and direct carrier billing.`}),(0,v.jsx)(`ul`,{className:`mt-8 flex flex-wrap gap-2`,children:f.slice(0,8).map(e=>(0,v.jsx)(`li`,{className:`chip-skew chip-skew-white px-3 py-1.5 text-xs font-bold uppercase tracking-[0.1em] text-charcoal`,children:e},e))}),(0,v.jsx)(`ul`,{className:`mt-8 grid gap-2 sm:grid-cols-2`,children:S.map(e=>(0,v.jsx)(`li`,{children:(0,v.jsxs)(r,{to:e.to,className:`text-sm font-bold text-white underline-offset-4 hover:text-cyan hover:underline`,children:[e.label,` â`]})},e.to))}),(0,v.jsx)(l,{asChild:!0,variant:`onDark`,size:`lg`,className:`mt-9`,children:(0,v.jsx)(r,{to:`/commercial`,children:`See commercial services`})})]})]})}),(0,v.jsx)(`section`,{className:`bg-secondary py-20 sm:py-28`,children:(0,v.jsxs)(`div`,{className:`container-page`,children:[(0,v.jsxs)(`div`,{className:`flex flex-wrap items-end justify-between gap-4`,children:[(0,v.jsx)(`h2`,{className:`text-4xl sm:text-5xl`,children:`What neighbors say.`}),(0,v.jsxs)(`p`,{className:`flex items-center gap-2 text-sm font-bold uppercase tracking-[0.1em] text-primary`,children:[(0,v.jsx)(s,{className:`size-4 fill-emergency text-emergency`}),`4.4`,` · `,31,` Google reviews`]})]}),(0,v.jsx)(`div`,{className:`mt-12 grid gap-6 md:grid-cols-3`,children:C.map(e=>(0,v.jsxs)(`blockquote`,{className:`border-t-4 border-primary bg-white p-8 text-sm leading-relaxed text-charcoal`,children:[(0,v.jsx)(w,{}),(0,v.jsx)(`p`,{className:`mt-4`,children:e.text}),(0,v.jsx)(`footer`,{className:`mt-6 text-xs font-bold uppercase tracking-[0.12em] text-muted-foreground`,children:`Verified Google review`})]},e.id))}),(0,v.jsx)(`div`,{className:`mt-10`,children:(0,v.jsx)(r,{to:`/reviews`,className:`text-sm font-bold uppercase tracking-[0.12em] text-emergency hover:underline`,children:`Read all reviews â`})})]})}),(0,v.jsx)(`section`,{className:`bg-charcoal text-white`,children:(0,v.jsxs)(`div`,{className:`grid lg:grid-cols-2`,children:[(0,v.jsxs)(`div`,{className:`split-copy-left order-2 px-5 py-16 md:px-14 lg:order-1 lg:py-24`,children:[(0,v.jsx)(`p`,{className:`type-display text-xs tracking-[0.2em] text-emergency`,children:`Who shows up`}),(0,v.jsx)(`h2`,{className:`mt-4 text-4xl sm:text-5xl`,children:`The people who answer are the people who come.`}),(0,v.jsx)(`p`,{className:`mt-5 max-w-md text-[17px] text-ondark`,children:`No call center â the people who answer the phone are the people on the truck. Alex Nero has run Fresh Air since 1991. GM Chris Moreno started as a technician and has 30 years in the field. The crew in this photo is the crew at your door.`}),(0,v.jsxs)(`div`,{className:`mt-9 flex flex-wrap gap-4`,children:[(0,v.jsx)(l,{asChild:!0,variant:`emergency`,size:`lg`,children:(0,v.jsxs)(`a`,{href:p,children:[(0,v.jsx)(m,{}),` Call `,d]})}),(0,v.jsx)(r,{to:`/about`,hash:`team`,className:`inline-flex items-center text-sm font-bold uppercase tracking-[0.12em] text-cyan hover:underline`,children:`Meet the team â`})]})]}),(0,v.jsx)(`div`,{className:`relative order-1 min-h-[360px] lg:order-2 lg:min-h-[560px]`,children:(0,v.jsx)(h,{src:c.src,alt:c.alt,sizes:`(min-width: 1024px) 50vw, 100vw`,className:`absolute inset-0 size-full object-cover`,style:{objectPosition:`50% 30%`}})})]})}),(0,v.jsx)(`section`,{className:`bg-primary text-white`,children:(0,v.jsxs)(`div`,{className:`container-page grid items-start gap-12 py-20 sm:py-24 lg:grid-cols-2`,children:[(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`h2`,{className:`text-[clamp(2rem,3vw,3rem)]`,children:`Tell us what happened.`}),(0,v.jsx)(`p`,{className:`mt-5 max-w-md text-onblue`,children:`Send the details and we'll call you back â or skip the form and call now. Someone answers 24/7/365.`}),(0,v.jsx)(l,{asChild:!0,variant:`emergency`,size:`xl`,className:`mt-8`,children:(0,v.jsxs)(`a`,{href:p,children:[(0,v.jsx)(m,{}),` Call `,d]})}),(0,v.jsx)(`p`,{className:`mt-8 text-xs font-bold uppercase tracking-[0.12em] text-onblue`,children:`2418 Basse Rd, San Antonio, TX 78213 · Hablamos Español`})]}),(0,v.jsx)(g,{})]})})]})}function E({label:e,children:t}){return(0,v.jsxs)(`div`,{className:`flex flex-col gap-1 md:flex-row md:items-baseline md:gap-3`,children:[(0,v.jsx)(`span`,{className:`type-display text-4xl text-white sm:text-5xl`,children:t}),(0,v.jsx)(`span`,{className:`text-xs font-bold uppercase leading-tight tracking-[0.12em] text-ondark`,children:e})]})}
1export{T as component};
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.