commit bc9dea03fdabc7a596fdd3591df4701b2867b3ae Author: Brian Smith Date: Fri Sep 11 19:54:29 2026 -0700 feat: initial release for AV Yard Pro (avyardpro.com) AI Pilots client with location pages and Cloudflare Pages setup diff --git a/.agents/AGENTS.md b/.agents/AGENTS.md new file mode 100644 index 0000000..571d7bc --- /dev/null +++ b/.agents/AGENTS.md @@ -0,0 +1,14 @@ +# AV Yard Pro - AI Pilots Client Rules + +## Gitea Mandatory Requirement +- **CRITICAL MANDATE**: We DO NOT use GitHub. ALL repos are on Gitea at `git.aipilots.site`. +- Never push to GitHub. Never reference GitHub remotes. +- Remote URL: `https://git.aipilots.site/Mediusa/AV-Yard-Pro-AI-Pilots-Client.git` + +## Strict White-Label Boundary: AI Pilots vs Entelico +- **CRITICAL MANDATE**: This is an **AI Pilots** client. +- Never leak Entelico branding to AI Pilots clients. +- Sender address and agency branding MUST always be AI Pilots (`hello@aipilots.site`). +- Domain: `avyardpro.com` / `www.avyardpro.com` +- Client Business: Next Gen Landscaping & Yardwork (AV Yard Pro) +- Cloudflare Pages Project: `avyardpro` diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e16c8a1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +*.log +node_modules/ +.env* diff --git a/acton-landscaping.html b/acton-landscaping.html new file mode 100644 index 0000000..a935e16 --- /dev/null +++ b/acton-landscaping.html @@ -0,0 +1,516 @@ + + + + + + Acton & Agua Dulce Landscaping, Fire Clearance & Weed Abatement | Next Gen + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + +

+ Acton & Agua Dulce Landscaping,
+ Fire Defensible Space & Brush Clearance +

+

+ Nestled in the Sierra Pelona foothills, Acton and Agua Dulce properties require rigorous 100-foot fire clearance to satisfy LA County Fire Department mandates. Next Gen delivers hand-tool brush management, ladder-fuel tree limbing, and steep hillside weed whacking where tractors cannot go. +

+
+ + + + Direct Call: (661) 581-7278 + +
+
+
+ + +
+
+
+ + +
+

+ Strict LA County VHFHSZ Compliance on Hillside & Canyon Parcels +

+

+ Acton and Agua Dulce are designated by Cal Fire and the LA County Fire Department as Very High Fire Hazard Severity Zones (VHFHSZ). Wildfire embers traveling down Soledad Canyon can ignite dry sagebrush, wild buckwheat, and Russian thistle in seconds. Property owners face mandatory 100-foot defensible perimeter requirements around all structures. +

+

+ Because of steep canyon topography, rocky boulders, and loose granite scree, tractors cannot safely operate on most Acton parcels without serious rollover risk, destruction of native root beds, or catastrophic slope erosion. Next Gen uses agile, hand-operated equipment: heavy commercial trimmers fitted with brush blades, commercial walk-behind mowers for flat pads, pole saws for canopy elevation, and dump trailers for prompt green waste removal. +

+ + +

+ Acton & Agua Dulce Corridors We Protect: +

+ +
+
+ +
+
Crown Valley & Soledad Canyon Corridors
+

100-foot defensible space perimeters, Zone 1 (0–30 ft ember-resistant zone) clearings, deadwood extraction, and high-wind tumbleweed hauling.

+
+
+ +
+ +
+
Agua Dulce & Vasquez Rocks Foothills
+

Hand-trimming brush around massive natural rock outcrops, equestrian arena perimeters, and decomposed granite driveway maintenance.

+
+
+ +
+ +
+
Aliso Canyon & Mountain View Acreage
+

Steep slope weed whacking, elimination of ladder fuels (pruning tree limbs 6 feet above ground), and fire break creation along property borders.

+
+
+ +
+ +
+
Acton Village & Hubbard Road Estates
+

Residential yard cleanups, custom drought-tolerant desert plantings, synthetic turf installations, and automated low-flow irrigation retrofits.

+
+
+
+ + +

+ Popular Services for Acton & Agua Dulce Properties: +

+ +
+
+ Acton fire clearance +

VHFHSZ Fire Defensible Space

+

100-ft clearance guaranteed to pass LA County Fire Department inspection.

+ View Weed Scope → +
+ +
+ Acton ladder fuel tree pruning +

Ladder Fuel & Tree Trimming

+

Limb up low branches 6 feet off ground to stop ground fires climbing into tree canopies.

+ View Tree Scope → +
+
+ + +

+ Frequently Asked Questions: Acton & Agua Dulce +

+
+
+ What are the LA County 100-foot fire clearance requirements? +
+ LA County Fire Code requires two primary zones: Zone 1 (0 to 30 feet from any structure) must be aggressively cleared of all combustible vegetation, dead leaves, and roof debris. Zone 2 (30 to 100 feet) requires thinning native brush by at least 50% and scalping all annual dry grasses down to 2–3 inches. Next Gen ensures complete compliance. +
+
+
+ Can your crews safely work on steep canyon slopes? +
+ Yes. Hillside weed whacking is our core specialty. Our technicians use harness-assisted trimmers, heavy-duty brush cutters, and hand clearing techniques on slopes where tractors cannot legally or physically travel. +
+
+
+ Do you haul green waste out of Acton and Agua Dulce? +
+ Yes. We never leave cut brush on slopes to dry out into fuel piles. All trimmings, limbs, and tumbleweeds are loaded into our dump trailers and hauled directly off your property. +
+
+
+
+ + + + +
+
+
+ + +
+
+
+

Protect Your Canyon Property Today

+

+ Wildfire clearance deadlines are strictly enforced in Acton and Agua Dulce. Ensure your 100-foot defensible perimeter passes inspection. +

+
+ + + + Call (661) 581-7278 + +
+
+
+
+
+ + + + + + + + + + +
+ +
+ +
+ + + diff --git a/app.js b/app.js new file mode 100644 index 0000000..e1ad4a9 --- /dev/null +++ b/app.js @@ -0,0 +1,349 @@ +/** + * NEXT GEN LANDSCAPING & YARD CARE + * Core Interactive Logic & Calculator Engine + */ + +document.addEventListener('DOMContentLoaded', () => { + // 1. Current Year in Footer + const yearSpan = document.getElementById('current-year'); + if (yearSpan) { + yearSpan.textContent = new Date().getFullYear(); + } + + // 2. Mobile Navigation Toggle + const mobileToggle = document.getElementById('mobile-toggle'); + const mobileDrawer = document.getElementById('mobile-drawer'); + const mobileLinks = document.querySelectorAll('.mobile-link'); + + if (mobileToggle && mobileDrawer) { + mobileToggle.addEventListener('click', () => { + mobileDrawer.classList.toggle('open'); + }); + + mobileLinks.forEach(link => { + link.addEventListener('click', () => { + mobileDrawer.classList.remove('open'); + }); + }); + } + + // 3. Native Modal Management + const quoteDialog = document.getElementById('quote-dialog'); + const modalCloseBtn = document.getElementById('modal-close'); + const openQuoteButtons = document.querySelectorAll('.open-quote-btn'); + const quoteForm = document.getElementById('quote-form'); + const serviceSelect = document.getElementById('lead-service'); + const notesTextarea = document.getElementById('lead-notes'); + const toast = document.getElementById('toast'); + + // Open Modal function + const openModal = (initialScope = null, initialNotes = null) => { + if (!quoteDialog) return; + + if (initialScope && serviceSelect) { + for (let i = 0; i < serviceSelect.options.length; i++) { + if (serviceSelect.options[i].text.toLowerCase().includes(initialScope.toLowerCase()) || + serviceSelect.options[i].value.toLowerCase().includes(initialScope.toLowerCase())) { + serviceSelect.selectedIndex = i; + break; + } + } + } + + if (initialNotes && notesTextarea) { + notesTextarea.value = initialNotes; + } + + quoteDialog.showModal(); + }; + + openQuoteButtons.forEach(btn => { + btn.addEventListener('click', (e) => { + const scope = btn.getAttribute('data-scope'); + openModal(scope); + }); + }); + + if (modalCloseBtn) { + modalCloseBtn.addEventListener('click', () => { + quoteDialog.close(); + }); + } + + // Click outside to close native dialog + if (quoteDialog) { + quoteDialog.addEventListener('click', (e) => { + const rect = quoteDialog.getBoundingClientRect(); + const isInDialog = ( + rect.top <= e.clientY && + e.clientY <= rect.top + rect.height && + rect.left <= e.clientX && + e.clientX <= rect.left + rect.width + ); + if (!isInDialog) { + quoteDialog.close(); + } + }); + } + + // Handle Modal Quote Form Submission + if (quoteForm) { + quoteForm.addEventListener('submit', (e) => { + e.preventDefault(); + + const name = document.getElementById('lead-name')?.value || ''; + const phone = document.getElementById('lead-phone')?.value || ''; + const address = document.getElementById('lead-address')?.value || ''; + const service = document.getElementById('lead-service')?.value || 'Yard Cleanup'; + const notes = document.getElementById('lead-notes')?.value || ''; + + const leadData = { + id: 'NG-' + Date.now().toString(36).toUpperCase(), + source: 'modal_dialog', + name, + phone, + address, + service, + notes, + submittedAt: new Date().toISOString() + }; + + try { + const existing = JSON.parse(localStorage.getItem('nextgen_leads') || '[]'); + existing.unshift(leadData); + localStorage.setItem('nextgen_leads', JSON.stringify(existing)); + } catch (err) { + console.error('Storage error:', err); + } + + // Close dialog + quoteDialog.close(); + + // Show Toast Notification + if (toast) { + toast.classList.add('show'); + setTimeout(() => { + toast.classList.remove('show'); + }, 6000); + } + + // Reset Form + quoteForm.reset(); + }); + } + + // Handle Dedicated Contact Page Form Submission + const contactForm = document.getElementById('contact-form'); + const contactSuccessBox = document.getElementById('contact-success-box'); + const contactSmsLink = document.getElementById('contact-sms-link'); + const contactLeadIdSpan = document.getElementById('contact-lead-id'); + + if (contactForm) { + contactForm.addEventListener('submit', (e) => { + e.preventDefault(); + + const name = document.getElementById('contact-name')?.value || ''; + const phone = document.getElementById('contact-phone')?.value || ''; + const address = document.getElementById('contact-address')?.value || ''; + const service = document.getElementById('contact-service')?.value || 'Yard Cleanup'; + const urgency = document.getElementById('contact-urgency')?.value || 'Flexible'; + const size = document.getElementById('contact-size')?.value || 'Standard'; + const notes = document.getElementById('contact-notes')?.value || ''; + + const leadId = 'NG-' + Date.now().toString(36).toUpperCase(); + const leadData = { + id: leadId, + source: 'contact_page', + name, + phone, + address, + service, + urgency, + size, + notes, + submittedAt: new Date().toISOString() + }; + + try { + const existing = JSON.parse(localStorage.getItem('nextgen_leads') || '[]'); + existing.unshift(leadData); + localStorage.setItem('nextgen_leads', JSON.stringify(existing)); + } catch (err) { + console.error('Storage error:', err); + } + + // Update UI to success state + contactForm.style.display = 'none'; + if (contactLeadIdSpan) { + contactLeadIdSpan.textContent = leadId; + } + if (contactSuccessBox) { + contactSuccessBox.classList.add('show'); + } + + // Build instant mobile SMS follow-up link + if (contactSmsLink) { + const textMessage = `Hi Next Gen! My name is ${name} at ${address}. I submitted quote request #${leadId} for ${service} (${size}). Please let me know your availability!`; + contactSmsLink.href = `sms:6615817278?body=${encodeURIComponent(textMessage)}`; + } + + // Trigger Toast + if (toast) { + toast.classList.add('show'); + setTimeout(() => toast.classList.remove('show'), 6000); + } + }); + } + + // ========================================================================== + // 4. INTERACTIVE YARD COST ESTIMATOR LOGIC + // ========================================================================== + const priceDisplay = document.getElementById('calc-price-display'); + const timeDisplay = document.getElementById('calc-time-display'); + const calcBookBtn = document.getElementById('calc-book-btn'); + + // Base pricing matrix [Min, Max] + const serviceRates = { + 'cleanup': { base: [350, 550], time: 'Same Day (3 - 5 Hours)' }, + 'fire-abatement': { base: [450, 800], time: 'Same Day (4 - 6 Hours)' }, + 'turf': { base: [2200, 4800], time: '2 - 3 Days' }, + 'rockscape': { base: [1800, 3900], time: '2 - 4 Days' }, + 'trees': { base: [400, 950], time: 'Same Day (3 - 6 Hours)' }, + 'maintenance': { base: [180, 320], time: 'Routine (1.5 - 2.5 Hours)' } + }; + + const sizeMultipliers = { + 'small': 0.75, + 'medium': 1.0, + 'large': 1.8, + 'acreage': 3.2 + }; + + const conditionMultipliers = { + 'mild': 0.85, + 'heavy': 1.15, + 'severe': 1.55 + }; + + function updateEstimate() { + const selectedService = document.querySelector('input[name="calc-service"]:checked')?.value || 'cleanup'; + const selectedSize = document.querySelector('input[name="calc-size"]:checked')?.value || 'medium'; + const selectedCondition = document.querySelector('input[name="calc-condition"]:checked')?.value || 'heavy'; + + const serviceData = serviceRates[selectedService] || serviceRates['cleanup']; + const sizeMult = sizeMultipliers[selectedSize] || 1.0; + const condMult = conditionMultipliers[selectedCondition] || 1.0; + + let minPrice = Math.round((serviceData.base[0] * sizeMult * condMult) / 25) * 25; + let maxPrice = Math.round((serviceData.base[1] * sizeMult * condMult) / 25) * 25; + + if (priceDisplay) { + priceDisplay.textContent = `$${minPrice.toLocaleString()} – $${maxPrice.toLocaleString()}`; + } + + if (timeDisplay) { + let timeText = serviceData.time; + if (selectedSize === 'acreage' && !timeText.includes('Days')) { + timeText = '1 - 2 Days (Full Crew)'; + } + timeDisplay.textContent = timeText; + } + } + + // Listen to all calculator radio buttons + const calcInputs = document.querySelectorAll('input[name="calc-service"], input[name="calc-size"], input[name="calc-condition"]'); + calcInputs.forEach(input => { + input.addEventListener('change', updateEstimate); + }); + + // Calculate Initial Estimate + updateEstimate(); + + // Book with current estimate scope + if (calcBookBtn) { + calcBookBtn.addEventListener('click', () => { + const selectedServiceEl = document.querySelector('input[name="calc-service"]:checked'); + const selectedSizeEl = document.querySelector('input[name="calc-size"]:checked'); + const selectedConditionEl = document.querySelector('input[name="calc-condition"]:checked'); + + const serviceTitle = selectedServiceEl?.closest('.calc-option')?.querySelector('.calc-option-title')?.textContent || 'Yardwork'; + const sizeTitle = selectedSizeEl?.closest('.calc-option')?.querySelector('.calc-option-title')?.textContent || 'Medium Lot'; + const conditionTitle = selectedConditionEl?.closest('.calc-option')?.querySelector('.calc-option-title')?.textContent || 'Heavy Overgrowth'; + const currentPrice = priceDisplay?.textContent || ''; + + const notes = `Calculator Estimate Scope: ${serviceTitle} | Property: ${sizeTitle} | Condition: ${conditionTitle} | Estimated Range: ${currentPrice}`; + openModal(serviceTitle, notes); + }); + } + + // ========================================================================== + // 5. INTERACTIVE BEFORE & AFTER SLIDER + // ========================================================================== + const baContainer = document.getElementById('ba-slider'); + const baLayer = document.getElementById('ba-layer'); + const baHandle = document.getElementById('ba-handle'); + + if (baContainer && baLayer && baHandle) { + let isDragging = false; + + const setSliderPosition = (x) => { + const rect = baContainer.getBoundingClientRect(); + let pos = ((x - rect.left) / rect.width) * 100; + pos = Math.max(0, Math.min(100, pos)); // clamp 0 - 100 + + baContainer.style.setProperty('--slider-pos', `${pos}%`); + }; + + // Mouse events + baContainer.addEventListener('mousedown', (e) => { + isDragging = true; + setSliderPosition(e.clientX); + }); + + window.addEventListener('mousemove', (e) => { + if (!isDragging) return; + setSliderPosition(e.clientX); + }); + + window.addEventListener('mouseup', () => { + isDragging = false; + }); + + // Touch events for mobile/tablet + baContainer.addEventListener('touchstart', (e) => { + isDragging = true; + if (e.touches.length > 0) { + setSliderPosition(e.touches[0].clientX); + } + }, { passive: true }); + + window.addEventListener('touchmove', (e) => { + if (!isDragging || e.touches.length === 0) return; + setSliderPosition(e.touches[0].clientX); + }, { passive: true }); + + window.addEventListener('touchend', () => { + isDragging = false; + }); + } + + // 6. Smooth Scroll Header Offset + document.querySelectorAll('a[href^="#"]').forEach(anchor => { + anchor.addEventListener('click', function (e) { + const href = this.getAttribute('href'); + if (href === '#' || !href.startsWith('#')) return; + + const target = document.querySelector(href); + if (target) { + e.preventDefault(); + const headerHeight = document.querySelector('.site-header')?.offsetHeight || 80; + const targetPos = target.getBoundingClientRect().top + window.pageYOffset - headerHeight; + + window.scrollTo({ + top: targetPos, + behavior: 'smooth' + }); + } + }); + }); +}); diff --git a/contact.html b/contact.html new file mode 100644 index 0000000..e8ab258 --- /dev/null +++ b/contact.html @@ -0,0 +1,540 @@ + + + + + + Contact Next Gen Landscaping | Antelope Valley Yard Care & Cleanups + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +

+ Contact Next Gen +

+

+ Have an overgrown yard, dry tumbleweeds, or a county weed abatement deadline? Contact our Antelope Valley crew directly by phone, text photo, or submit your property details below for a fast, honest estimate. +

+
+
+ + +
+
+
+ + +
+ + +
+
+ +
+
+

Call Our Team Direct

+

Speak directly with a local crew lead about scheduling, pricing, and emergency cleanups.

+ + (661) 581-7278 → + +
+
+ + +
+
+ +
+
+

Text Photos for Instant Estimate

+

Snap 2–3 photos of your front or back yard and text them with your cross streets for a rapid quote.

+ + Text Photos: (661) 581-7278 → + +
+
+ + +
+
+ +
+
+

Email Inquiries

+

For official documentation, HOA letters, or detailed site proposals.

+ + info@avyardpro.com → + +
+
+ + +
+
+ +
+
+

Service Hours & Dispatch

+

Monday – Friday: 6:30 AM – 7:00 PM

+

Saturday: 7:00 AM – 6:00 PM

+

Sunday: On-call for windstorm & fire emergencies

+
+
+ + +
+
+ +
+
+

Residential Care Guarantee

+

We work with commercial-grade mowers, string trimmers, rakes, and haul trailers—never destructive heavy tractors. Your fences, underground pipes, and walls are 100% safe.

+
+
+ +
+ + +
+
+ Free On-Site Assessment +

Request Your Free Quote

+

Fill out your project details below. Our team logs every submission and responds within 15 minutes during work hours.

+
+ + +
+
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ +
+ + +
+ + + +
+ Prefer text messaging? Text photos directly to (661) 581-7278 +
+
+ + +
+
+ +
+

Quote Request Dispatched!

+

+ Thank you! Your quote request has been logged under Reference ID: #NG-LEAD. +

+

+ A Next Gen team member will review your property details and call or text you back within 15 minutes. +

+ + + Speed Up: Text Quote Directly to Crew + +
+ +
+ +
+
+
+ + +
+
+
+ +

Common Questions About Quotes & Estimates

+
+ +
+
+ How fast can someone come out to inspect my yard? +
+ We offer same-day or 24-hour on-site assessments throughout Palmdale, Lancaster, Quartz Hill, and Acton. If you text photos of your yard to (661) 581-7278, we can frequently give you an immediate ballpark quote within 30 minutes. +
+
+ +
+ Do I have to be home for the yard estimate? +
+ No! As long as side gates are unlocked and dogs are secured inside, our crew can walk the perimeter, assess weed density and haul volume, and call or text you the written estimate immediately. +
+
+ +
+ Do you charge for quotes? +
+ Zero charge. All on-site assessments, phone estimates, and photo quotes in the Antelope Valley are 100% free with no obligation. +
+
+ +
+ What payment methods do you accept? +
+ We accept Cash, Major Credit/Debit Cards, Zelle, Venmo, and local checks upon complete job satisfaction. +
+
+
+
+
+ + +
+
+
+

Ready To Reclaim Your High Desert Yard?

+

+ Don't let windblown tumbleweeds and fire hazards take over. Call Next Gen today for immediate, friendly yard care. +

+ +
+
+
+
+ + + + + + + + + + +
+
+ +
+
+
Request Dispatched!
+
A Next Gen Antelope Valley team member will reach out shortly.
+
+
+ + +
+
+ + + Call + + + + Text Photo + + +
+
+ + + + diff --git a/images/after.jpg b/images/after.jpg new file mode 100644 index 0000000..68acf7e Binary files /dev/null and b/images/after.jpg differ diff --git a/images/before.jpg b/images/before.jpg new file mode 100644 index 0000000..7c9eb10 Binary files /dev/null and b/images/before.jpg differ diff --git a/images/fire-clearance.jpg b/images/fire-clearance.jpg new file mode 100644 index 0000000..f773f94 Binary files /dev/null and b/images/fire-clearance.jpg differ diff --git a/images/hero.jpg b/images/hero.jpg new file mode 100644 index 0000000..3784629 Binary files /dev/null and b/images/hero.jpg differ diff --git a/images/rockscape.jpg b/images/rockscape.jpg new file mode 100644 index 0000000..855e835 Binary files /dev/null and b/images/rockscape.jpg differ diff --git a/images/service-irrigation.jpg b/images/service-irrigation.jpg new file mode 100644 index 0000000..bd3d2ee Binary files /dev/null and b/images/service-irrigation.jpg differ diff --git a/images/service-tree-trimming.jpg b/images/service-tree-trimming.jpg new file mode 100644 index 0000000..d6a9233 Binary files /dev/null and b/images/service-tree-trimming.jpg differ diff --git a/images/service-tumbleweed.jpg b/images/service-tumbleweed.jpg new file mode 100644 index 0000000..70a523d Binary files /dev/null and b/images/service-tumbleweed.jpg differ diff --git a/images/service-turf.jpg b/images/service-turf.jpg new file mode 100644 index 0000000..bd084e4 Binary files /dev/null and b/images/service-turf.jpg differ diff --git a/images/service-weed-abatement.jpg b/images/service-weed-abatement.jpg new file mode 100644 index 0000000..3cd4145 Binary files /dev/null and b/images/service-weed-abatement.jpg differ diff --git a/images/service-xeriscape.jpg b/images/service-xeriscape.jpg new file mode 100644 index 0000000..d5cda76 Binary files /dev/null and b/images/service-xeriscape.jpg differ diff --git a/images/turf-after.jpg b/images/turf-after.jpg new file mode 100644 index 0000000..b3ea2d0 Binary files /dev/null and b/images/turf-after.jpg differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..f66d840 --- /dev/null +++ b/index.html @@ -0,0 +1,1275 @@ + + + + + + NEXT GEN LANDSCAPING | High Desert Yard Work & Weed Abatement Antelope Valley + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + Antelope Valley High-Desert Yard Specialists + +
+

+ Rugged Desert.
+ Precision Lawns.
+ Zero Compromise. +

+

+ Tumbleweeds, unkempt desert brush, or high water bills? Next Gen transforms harsh Antelope Valley properties into pristine, fire-safe showpieces. Fast turnarounds across Palmdale, Lancaster, Quartz Hill, and surrounding desert communities. +

+ + +
+
+
NG
+
QH
+
PD
+
LC
+
+
+ + + 4.9 / 5.0 Star Rated (180+ Local Reviews) + + 100% County Fire Clearance Guarantee • Licensed & Insured +
+
+
+ +
+
+ Pristine residential landscaping in Antelope Valley with mountain view at sunset +
+
+
+ + + + + + + + + + + +
+
+

High-Desert Rated Turf

+

110°F Heat & Wind Resilient

+
+
+ +
+
+
+
+
+ + +
+
+
+
+
+ + + + + + + +
+
+
850+
+
AV Yards Restored
+
+
+
+
+ + + + +
+
+
100%
+
County Fire Code Pass
+
+
+
+
+ + + +
+
+
48h
+
Emergency Storm Cleanups
+
+
+
+
+ + + +
+
+
75%
+
Avg Water Bill Savings
+
+
+
+
+
+ + +
+
+
+ +

Transparent Pricing for High Desert Yards

+

+ Customize your property parameters below. Get an immediate ballpark estimate tailored for Antelope Valley parcel sizes, soil types, and fire safety codes. +

+
+ +
+
+ +
+ +
+
+ 1 + Select Primary Service Needed +
+
+ + + + + + +
+
+ + +
+
+ 2 + Select Yard or Parcel Footprint +
+
+ + + + +
+
+ + +
+
+ 3 + Yard Condition / Growth Severity +
+
+ + + +
+
+
+ + +
+
+ Estimated Price Range +
+
$450 – $750
+
*All-inclusive: labor, equipment, disposal & hauling.
+
+
+ +
    +
  • + + Completion: Same Day (3 - 5 Hours) +
  • +
  • + + Debris Disposal: Commercial Haul Included +
  • +
  • + + Fire Code: County Defensible Space Compliant +
  • +
+ + +

+ Free in-person confirmation walkthrough before any work begins. +

+
+
+
+
+
+ + +
+
+
+ +

See the Same-Day Cleanup

+

+ Slide the divider to see the exact same property before and after our crew arrived: waist-high weeds, tumbleweeds, and yard trash completely cleared down to clean, raked, fire-safe ground. +

+
+ +
+
+ + After professional yard cleanup in Antelope Valley: weeds and tumbleweeds removed, clean raked ground + AFTER: CLEANED YARD + + +
+ Before yard cleanup: overgrown tumbleweeds, weeds, and dry brush + BEFORE: OVERGROWN +
+ + +
+ + +
+ + + + +
+
+
+
+ + + Drag the neon divider or tap anywhere to compare before & after + + +
+ + +
+
+
+ +
+ Same-Day Crew Turnaround +
+
+
+ +
+ 100% Hand-Raked Ground Finish +
+
+
+ +
+ Fenceline & Pipe Safe (No Heavy Tractors) +
+
+
+ +
+ Full Trailer Haul-Away Included +
+
+
+
+ + +
+
+
+ +

Beyond Cleanouts: Custom Desert Living

+

+ Explore drought-tolerant xeriscaping, decorative river rockscapes, and synthetic turf installations engineered to withstand 105°F+ High Desert heat and heavy seasonal winds. +

+
+ + +
+
+ + +
+
+
+ +

Complete Yard & Landscaping Services

+

+ We don't do cookie-cutter coastal landscaping. Our equipment, crews, and materials are engineered for High Desert caliche soil, seasonal windstorms, and California drought restrictions. +

+
+ +
+ +
+
+ LA County Weed Abatement Fire Clearance in Palmdale CA +
+ + + + +
+ Fire Defensible +
+
+

LA County Weed Abatement

+

+ Stay ahead of LA County and Kern County fire inspection notices. We cut, weed whack, rake, and clear properties to meet strict 100-foot defensible space requirements before deadlines hit. +

+
    +
  • + + 100-Foot Fire Defensible Perimeter +
  • +
  • + + High-Power Weed Whacking, Mowing & Raking +
  • +
  • + + Guaranteed County Inspection Sign-Off +
  • +
+ +
+
+ + +
+
+ Tumbleweed removal and dump trailer hauling in Antelope Valley +
+ + + + + +
+ Windstorm Haul +
+
+

Tumbleweed & Windstorm Hauling

+

+ When the Antelope Valley 60mph winds blow, tumbleweeds stack to the roofline against your fences and sheds. We eradicate the piles and haul everything to the transfer station. +

+
    +
  • + + Fence Line & Rooftop Tumbleweed Removal +
  • +
  • + + High-Capacity Hauling & Dump Trailers +
  • +
  • + + Property Trash-Out & Lot Cleans +
  • +
+ +
+
+ + +
+
+ Synthetic turf and putting green installation in Palmdale CA +
+ + + + + +
+ 15-Yr Warranty +
+
+

Artificial Turf & Putting Greens

+

+ Enjoy an emerald green yard year-round without paying astronomical water rates. We install commercial-grade, anti-microbial turf with specialized heat-deflecting cooling infill. +

+
    +
  • + + UV-Stabilized (No Fade In Desert Sun) +
  • +
  • + + Pet-Friendly with Rapid Drainage Base +
  • +
  • + + Custom Backyard Putting Greens +
  • +
+ +
+
+ + +
+
+ Desert xeriscaping with decomposed granite and boulders in Quartz Hill CA +
+ + + + + + + +
+ 85% Water Saved +
+
+

Desert Xeriscape & Rockscaping

+

+ Stunning architectural landscaping engineered to thrive in the High Desert. We blend decomposed granite, California gold river rock, decorative boulders, and water-wise agaves. +

+
    +
  • + + Decomposed Granite & Crushed Stone +
  • +
  • + + Heavy-Duty Commercial Weed Barrier Fabric +
  • +
  • + + Architectural Desert Boulders & Succulents +
  • +
+ +
+
+ + +
+
+ Tree trimming and palm skinning in Lancaster CA +
+ + + + + +
+ Canopy Safe +
+
+

Tree Trimming & Palm Pruning

+

+ High winds in Palmdale and Lancaster topple untrimmed trees and dead palm fronds. We thin tree canopies for wind passage, skin palms, and grind dangerous stumps safely. +

+
    +
  • + + Wind Mitigation Canopy Thinning +
  • +
  • + + Palm Frond Skinning & Seed Removal +
  • +
  • + + Complete Stump Grinding & Root Extraction +
  • +
+ +
+
+ + +
+
+ Smart drip irrigation system and manifold repair in Palmdale CA +
+ + + + +
+ Leak Detection +
+
+

Smart Irrigation & Drip Repair

+

+ Desert soil requires dialed-in watering. Leaky valves or broken lines skyrocket your utility bill. We diagnose underground leaks, replace cracked manifolds, and tune drip systems. +

+
    +
  • + + Subsurface Drip Line Conversions +
  • +
  • + + Smart Wi-Fi Weather-Sensing Controllers +
  • +
  • + + Anti-Siphon Valve & Backflow Replacement +
  • +
+ +
+
+
+
+
+ + +
+ +
+ + +
+
+
+ +

What High Desert Homeowners Say

+

+ Don't just take our word for it. Here is how Next Gen has helped neighbors in Palmdale, Lancaster, and Quartz Hill regain control of their properties. +

+
+ +
+
+
+
+ + + + + +
+

+ "We received a weed abatement violation notice from LA County Fire with a 2-week deadline. Next Gen showed up the next morning with commercial weed trimmers and had our full half-acre cleared, raked, and hauled into their trailer before sundown. The inspector signed off with zero issues. Lifesavers!" +

+
+
+
DM
+
+

David M.

+ West Lancaster, CA • Half-Acre Lot +
+
+
+ +
+
+
+ + + + + +
+

+ "After the winter windstorms, our backyard had tumbleweeds literally stacked 8 feet high against our vinyl fence. These guys had the proper heavy-duty trailers and cleared everything in 3 hours. Super polite, fair pricing, and they left the yard spotless." +

+
+
+
SR
+
+

Stephanie R.

+ Quartz Hill, CA • Tumbleweed Cleanout +
+
+
+ +
+
+
+ + + + + +
+

+ "We ditched our dead grass for artificial turf and desert rockscape. Our water bill dropped by over $220/month in the summer, and our dogs love the turf. The green is so vibrant and stays cool even when Palmdale hits 104 degrees. Highly recommend!" +

+
+
+
JR
+
+

Jason & Maria R.

+ Rancho Vista, Palmdale • Turf & Rockscape +
+
+
+
+
+
+ + +
+
+
+ +

Frequently Asked Questions

+

+ Everything you need to know about our Antelope Valley yard care, county weed deadlines, and pricing. +

+
+ +
+
+ What are the LA County and Kern County weed abatement deadlines? +
+ In the Antelope Valley, LA County Agricultural Commissioner and Fire Department inspections typically begin in mid-to-late spring and enforce 100-foot defensible space clearance around structures and 10-foot road buffers. Failure to clear can result in county-enforced contractor billing and heavy penalty fees. Next Gen guarantees work that passes county inspection on the first visit. +
+
+ +
+ How does artificial turf hold up in high Antelope Valley summer heat? +
+ We exclusively install UV-stabilized commercial turf with special cooling infill designed to withstand 110°F+ desert temperatures without melting, fading, or discoloring. It also includes an engineered perforated backing that drains quickly during rare desert cloudbursts and prevents pet odor buildup. +
+
+ +
+ Do you haul away the debris, or do I need to rent a dumpster? +
+ We handle 100% of the hauling. Our fleet is equipped with high-capacity dump trailers and commercial trucks. All tumbleweeds, tree clippings, dead brush, and yard trash are loaded and legally disposed of at authorized local green-waste facilities in Palmdale and Lancaster. +
+
+ +
+ Can I get an estimate by texting photos of my yard? +
+ Yes! You can text photos and your address directly to (661) 581-7278. We can often provide a same-hour ballpark estimate, followed by a quick in-person verification before any tools touch the ground. +
+
+ +
+ What equipment do you use for yard cleanups and weed clearing? +
+ We use commercial-grade walk-behind mowers, high-powered gas weed trimmers/whackers, heavy-duty landscape rakes, blowers, and our haul truck & trailer. We specialize in residential yards, standard lots, and parcels up to a half-acre—getting directly up against fences, walls, and corners that heavy machinery and tractors can't reach. +
+
+
+
+
+ + +
+
+
+

Ready To Reclaim Your High Desert Yard?

+

+ Don't let windblown tumbleweeds and fire hazards take over. Get an honest, zero-pressure quote from the local Next Gen team that knows Antelope Valley soil inside and out. +

+
+ + + + Direct Call (661) 581-7278 + +
+
+
+
+
+ + + + + + + + + + + + + +
+
+ + + Call + + + + Text Photo + + +
+
+ + + + diff --git a/lancaster-landscaping.html b/lancaster-landscaping.html new file mode 100644 index 0000000..a862802 --- /dev/null +++ b/lancaster-landscaping.html @@ -0,0 +1,512 @@ + + + + + + Lancaster Landscaping, Weed Abatement & Yard Care | Next Gen Landscaping + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + +

+ Lancaster Landscaping, Weed Abatement
+ & Residential Yard Care +

+

+ From West Lancaster residential estates along Ave K and L to open-wind East Lancaster parcels, Next Gen delivers precision yard care, LA County fire clearance, windstorm tumbleweed removal, and drought-proof synthetic turf built for the High Desert. +

+
+ + + + Direct Call: (661) 581-7278 + +
+
+
+ + +
+
+
+ + +
+

+ Built for Lancaster's Fierce Wind Corridors & Caliche Hardpan +

+

+ Lancaster sits squarely in the Antelope Valley wind corridor. Each spring and fall, 40 to 60 mph desert gusts blow thousands of tumbleweeds across open fields into residential chain link fences, backyards, and side yards. When combined with blistering summer temperatures and rock-hard caliche soil, standard yard crews struggle to maintain clean properties. +

+

+ Next Gen Landscaping provides surgical, residential yard care in Lancaster. We never bring massive industrial tractors that tear up curbs, crack shallow sprinkler pipes, or destroy boundary fences. Instead, our crew uses high-powered commercial string trimmers, nimble walk-behind mowers, heavy rakes, and commercial dump trailers to haul away debris completely. +

+ + +

+ Lancaster Neighborhoods We Serve Daily: +

+ +
+
+ +
+
West Lancaster & Avenue K / Avenue L (93536)
+

Upscale tract home yard transformations, premium pet-friendly artificial turf, modern desert xeriscape with crushed granite and basalt rock, and smart WiFi sprinkler controller setups.

+
+
+ +
+ +
+
East Lancaster & Challenger Way (93535)
+

Heavy tumbleweed cleanouts along block walls and fence lines, perimeter weed abatement for LA County compliance, and prompt green waste dump trailer haul-away.

+
+
+ +
+ +
+
Desert View Highlands & 10th-20th West (93534)
+

Complete property cleanup, overgrown tree limb trimming, stump reduction, low-maintenance gravel beds, and drip irrigation line repairs.

+
+
+ +
+ +
+
Fox Field & North Lancaster Corridors (93536)
+

Perimeter defensible space clearing, mustard and Russian thistle whacking down to 2 inches, and parcel cleanouts before county fire inspector visits.

+
+
+
+ + +

+ Popular Services for Lancaster Homeowners: +

+ +
+
+ Lancaster fire weed abatement +

Fire Weed Abatement

+

LA County compliance guaranteed. Scalped down to 2-3 inches to satisfy county weed inspectors.

+ View Weed Scope → +
+ +
+ Lancaster tumbleweed removal +

Tumbleweed Hauling

+

Clear 6-foot drifts off fences, patios, and AC units. Dump trailer disposal included.

+ View Tumbleweed Scope → +
+
+ + +

+ Frequently Asked Questions: Lancaster Yard Care +

+
+
+ What are the LA County weed clearance rules for Lancaster? +
+ Lancaster properties fall under the jurisdiction of the LA County Agricultural Commissioner and LA County Fire Department. All dry weeds, wild oats, and Russian thistle must be cleared by late spring (typically May 1 to June 1) to eliminate fire corridors. Next Gen inspects and cuts your lot to meet strict compliance specifications. +
+
+
+ How fast can you clear tumbleweeds after a Lancaster windstorm? +
+ We maintain dedicated storm cleanup slots. During high wind events, we typically dispatch within 24 to 48 hours to clear stacked tumbleweeds from fence lines, gates, and side yards before they dry out and pose an immediate wildfire hazard. +
+
+
+ Do you use heavy tractors on residential Lancaster lots? +
+ No. We intentionally use precision commercial walk-behind equipment, heavy trimmers, and rakes. Tractors easily crush sprinkler valves, crack decorative concrete borders, and leave deep ruts in High Desert caliche soil. Our crew ensures clean, damage-free hand precision. +
+
+
+
+ + + + +
+
+
+ + +
+
+
+

Ready For A Clean Lancaster Property?

+

+ Whether facing an LA County weed notice or needing windstorm tumbleweed drifts cleared, Next Gen is ready to deploy. +

+
+ + + + Call (661) 581-7278 + +
+
+
+
+
+ + + + + + + + + + + + +
+ + + diff --git a/palmdale-landscaping.html b/palmdale-landscaping.html new file mode 100644 index 0000000..51cdcc9 --- /dev/null +++ b/palmdale-landscaping.html @@ -0,0 +1,512 @@ + + + + + + Palmdale Landscaping, Weed Abatement & Yard Care | Next Gen Landscaping + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + +

+ Palmdale Landscaping, Weed Abatement
+ & Residential Yard Care +

+

+ From Anaverde hillsides and Rancho Vista golf estates to East Palmdale acreage, Next Gen delivers precision yard care, LA County fire clearance, windstorm tumbleweed removal, and drought-proof synthetic turf designed for High Desert living. +

+
+ + + + Direct Call: (661) 581-7278 + +
+
+
+ + +
+
+
+ + +
+

+ Engineered for Palmdale's Caliche Soil & Desert Winds +

+

+ Palmdale's climate is notoriously demanding on residential yards. With summer temperatures topping 105°F, seasonal 50mph windstorms barreling down from the Sierra Pelona mountains, and dense subterranean caliche hardpan, typical coastal landscaping methods fail quickly. +

+

+ Next Gen Landscaping specializes in High Desert residential properties. We do not use oversized farm tractors that crack your concrete curbs, damage underground sprinkler lines, or gouge your fencing. Instead, our crew deploys commercial-grade walk-behind mowers, heavy-duty string trimmers, landscape rakes, and high-capacity dump trailers to achieve clean, surgical results right up to your property line. +

+ + +

+ Palmdale Neighborhoods We Serve Daily: +

+ +
+
+ +
+
Rancho Vista & Golf Course Estates (93551)
+

Custom drought-tolerant xeriscaping, decomposed granite walkways, premium artificial turf installations, and low-flow drip irrigation conversions.

+
+
+ +
+ +
+
Anaverde & Godde Hill Foothills (93551)
+

LA County 100-foot fire clearance, hillside brush management, defensible space perimeters, and wind-mitigation tree canopy thinning.

+
+
+ +
+ +
+
East Palmdale & 47th St East (93552)
+

Massive windblown tumbleweed cleanouts, fence line clearing, trailer haul-away to Palmdale landfill, and residential parcel maintenance.

+
+
+ +
+ +
+
Desert Sands & 20th St East (93550)
+

Complete property trash-outs, seasonal overgrowth clearing, sprinkler manifold diagnosis, and California native plant installations.

+
+
+
+ + +

+ Popular Services for Palmdale Homeowners: +

+ +
+
+ Palmdale fire clearance +

Fire Weed Abatement

+

LA County compliance guaranteed. Avoid municipal fines and forced clearance bills.

+ View Weed Scope → +
+ +
+ Palmdale tumbleweed removal +

Tumbleweed Hauling

+

Clear fence-line and roofline piles after Palmdale windstorms. Dump trailer included.

+ View Tumbleweed Scope → +
+
+ + +

+ Frequently Asked Questions: Palmdale Yard Care +

+
+
+ When are the weed abatement deadlines in Palmdale? +
+ LA County Agricultural Commissioner and Fire Department weed abatement deadlines for Palmdale typically require all parcels to be cleared by May 1st to June 1st. If properties fail inspection, the county clears them at municipal surcharge rates. Next Gen provides guaranteed inspection sign-off. +
+
+
+ Can you work in Anaverde and hillside Palmdale properties? +
+ Yes! Our commercial string trimmers and hand crews excel on Anaverde slopes and Godde Hill terrain where tractors cannot safely operate without creating rollover risks or damaging retaining walls. +
+
+
+ Do you haul green waste to the Palmdale Landfill? +
+ Yes. Every cleanup package includes complete loading into our high-sided dump trailers and transportation directly to the local transfer station. We never leave bags or piles on your curb. +
+
+
+
+ + + + +
+
+
+ + +
+
+
+

Ready For A Clean Palmdale Property?

+

+ Whether facing an LA County weed deadline or needing windblown tumbleweeds hauled off your fence, Next Gen is ready to deploy. +

+
+ + + + Call (661) 581-7278 + +
+
+
+
+
+ + + + + + + + + + + + +
+ + + diff --git a/quartz-hill-landscaping.html b/quartz-hill-landscaping.html new file mode 100644 index 0000000..204a525 --- /dev/null +++ b/quartz-hill-landscaping.html @@ -0,0 +1,511 @@ + + + + + + Quartz Hill Landscaping, Yard Care & Weed Clearing | Next Gen Landscaping + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + +

+ Quartz Hill Landscaping, Yard Care
+ & Fire Hazard Weed Abatement +

+

+ Specializing in Quartz Hill's custom ranch parcels, equestrian fence-lines, and upscale residences. Next Gen provides precision weed clearing, drought-proof synthetic turf, decomposed granite pathways, and water-saving desert rockscaping. +

+
+ + + + Direct Call: (661) 581-7278 + +
+
+
+ + +
+
+
+ + +
+

+ Custom Yard Care Without Heavy Tractor Ground Damage +

+

+ Quartz Hill is one of the most distinctive communities in the Antelope Valley. With its sprawling half-acre to multi-acre ranch properties, custom equestrian fencing, and mature almond and pepper trees, property maintenance requires a delicate touch. +

+

+ Many general weed companies bring heavy agricultural tractors onto residential Quartz Hill parcels. These heavy machines compact root zones around heritage trees, crack decorative pavers, crush shallow PVC irrigation manifolds, and gouge pipe-rail fences. Next Gen uses zero heavy tractors. We deploy commercial-grade walk-behind mowers, high-torque string trimmers, hand rakes, and clean dump trailers to trim right against your fence posts and border walls without a scratch. +

+ + +

+ Quartz Hill Areas & Property Types We Service: +

+ +
+
+ +
+
Avenue M Corridor & Custom Estates
+

Architectural desert xeriscaping, decomposed granite walkways, premium evergreen artificial turf lawns, and low-voltage landscape lighting conduit runs.

+
+
+ +
+ +
+
50th St West to 70th St West Ranch Parcels
+

Hand-precision weed whacking along 3-rail vinyl and steel pipe horse fencing, barn perimeter fire breaks, and full tumbleweed removal.

+
+
+ +
+ +
+
Lane Park & Foothill Borders
+

LA County 100-foot defensible space compliance, hillside brush clearing, dead branch thinning, and trailer haul-away to green waste centers.

+
+
+ +
+ +
+
Quartz Hill High School Residential Enclave
+

Seasonal lawn mowing and scalping, tree canopy elevation, sprinkler valve replacement, and routine monthly cleanup visits.

+
+
+
+ + +

+ Popular Services for Quartz Hill Homeowners: +

+ +
+
+ Quartz Hill artificial turf +

Synthetic Turf & Putting Greens

+

Commercial-grade turf with 15-year UV resistance. Zero water bills, zero mud for pets.

+ View Turf Scope → +
+ +
+ Quartz Hill desert xeriscape +

Desert Xeriscape & Rock

+

Golden decomposed granite, desert river rock, weed barrier, and native drought plants.

+ View Xeriscape Scope → +
+
+ + +

+ Frequently Asked Questions: Quartz Hill Yard Care +

+
+
+ Can you clear weeds along horse fences without scratching pipe rails? +
+ Yes, absolutely. This is one of the main reasons Quartz Hill ranch owners choose Next Gen. Because we do not run heavy tractors near fence lines, our operators use heavy commercial string trimmers with flexible line right up to vinyl posts and steel pipe rails without nicking or bending materials. +
+
+
+ Do you service half-acre and 1-acre residential parcels? +
+ Yes. Half-acre and one-acre parcels are our sweet spot. Our high-output commercial walk-behind mowers and trimmers cover ground swiftly, and our heavy-duty dump trailers haul off all green waste in a single visit. +
+
+
+ What is the best drought-tolerant solution for Quartz Hill soils? +
+ Quartz Hill has rich decomposed granite subsoil that drains quickly. We recommend compacting 2 to 3 inches of California Gold decomposed granite over commercial weed membrane, paired with native succulents, agave, desert sage, and localized drip emitters. +
+
+
+
+ + + + +
+
+
+ + +
+
+
+

Elevate Your Quartz Hill Property

+

+ From custom drought-tolerant transformations to clean fence-line weed clearing, experience the Next Gen difference. +

+
+ + + + Call (661) 581-7278 + +
+
+
+
+
+ + + + + + + + + + + + +
+ + + diff --git a/rosamond-landscaping.html b/rosamond-landscaping.html new file mode 100644 index 0000000..601f5fc --- /dev/null +++ b/rosamond-landscaping.html @@ -0,0 +1,516 @@ + + + + + + Rosamond & Mojave Landscaping, Weed Abatement & Tumbleweed Removal | Next Gen + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + +

+ Rosamond & Mojave Landscaping,
+ Weed Abatement & Tumbleweed Removal +

+

+ On the Kern County side of the High Desert, open-desert windstorms blast millions of tumbleweeds across Rosamond and Mojave properties. Next Gen delivers guaranteed Kern County fire clearance, complete tumbleweed extraction, drought-hardy rockscaping, and clean trailer haul-offs. +

+
+ + + + Direct Call: (661) 581-7278 + +
+
+
+ + +
+
+
+ + +
+

+ Built for Kern County Wind Plains & Sandy High Desert Soil +

+

+ Rosamond and Mojave sit at the gateway to the western Mojave Desert. With open BLM land and Edwards Air Force Base surrounding the community, unimpeded wind sweeps across the valley floor, stacking tumbleweeds up to 8 feet high against residential fences, garage doors, and air conditioning units. +

+

+ Kern County Fire Department enforces its own strict fire hazard abatement deadlines. Landlords and homeowners with overgrown Russian thistle or dry brush face steep administrative penalties. Next Gen uses hand precision and agile commercial gear—no massive farm tractors that sink into loose sandy soil, create dust storms, or tear up underground irrigation. We clear right up to your property line, load our dump trailers, and haul everything away. +

+ + +

+ Rosamond & Mojave Areas We Service: +

+ +
+
+ +
+
Rosamond Proper & Diamond Street Corridors
+

Residential property trash-outs, tumbleweed removal off vinyl and chain-link fences, desert decomposed granite installation, and lawn scalping.

+
+
+ +
+ +
+
Willow Springs & West Rosamond Ranches
+

Kern County fire break clearing, horse property perimeter weed trimming, barnyard defensible space, and tumbleweed removal.

+
+
+ +
+ +
+
Tropico Gold Camp & Desert Foothills
+

Hillside brush whacking, rock outcropping clearance, dead shrub removal, and low-maintenance desert xeriscaping.

+
+
+ +
+ +
+
Mojave & Highway 14 North Residential Parcels
+

Windstorm tumbleweed hauling, dry grass scalping down to 2 inches, and emergency property clearance before Kern County inspections.

+
+
+
+ + +

+ Popular Services for Rosamond Homeowners: +

+ +
+
+ Rosamond tumbleweed removal +

Tumbleweed Haul-Away

+

Clear fence-line and patio blow-ins from desert windstorms. Dump trailer disposal included.

+ View Tumbleweed Scope → +
+ +
+ Rosamond Kern County weed abatement +

Kern County Fire Clearance

+

Guaranteed inspection sign-off. Avoid county forced abatement penalties and bills.

+ View Weed Scope → +
+
+ + +

+ Frequently Asked Questions: Rosamond & Mojave Yard Care +

+
+
+ What are the Kern County Fire Department weed abatement deadlines? +
+ Kern County Fire Department requires all residential and vacant parcels in the Rosamond and Mojave jurisdiction to have all hazardous dry weeds, Russian thistle, and brush cleared by late spring (typically May). Parcels must maintain a firebreak to mineral earth around structures. Next Gen guarantees inspection clearance. +
+
+
+ How do you remove tumbleweeds stacked against Rosamond fences? +
+ We use heavy pitchforks and leather protective gear to compress and load tumbleweeds into our high-capacity dump trailers. We never burn on-site or leave piles to blow back into your neighbors' yards. +
+
+
+ Do you service solar-adjacent or open ranch lots in Rosamond? +
+ Yes. We frequently service residential acreage, ranch parcels, and properties bordering open desert land in Willow Springs and West Rosamond. Our equipment is fast, agile, and leaves zero ruts. +
+
+
+
+ + + + +
+
+
+ + +
+
+
+

Ready For A Clean Rosamond Property?

+

+ Whether clearing massive windblown tumbleweeds or meeting Kern County fire clearance standards, Next Gen is ready to deploy. +

+
+ + + + Call (661) 581-7278 + +
+
+
+
+
+ + + + + + + + + + + + +
+ + + diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..ba4f97c --- /dev/null +++ b/styles.css @@ -0,0 +1,2553 @@ +/* ========================================================================== + NEXT GEN LANDSCAPING & YARD CARE - CORE DESIGN SYSTEM + Theme: Clean Modern Light Mode with Pitch Black & Electric Neon Green Branding + High-Contrast, Crisp, Commercial High Desert Landscaping Aesthetic + ========================================================================== */ + +:root { + /* Color Palette - Light Mode Foundation */ + --bg-pitch: #f8faf9; + --bg-surface: #ffffff; + --bg-card: #ffffff; + --bg-card-hover: #f2fbf5; + --bg-glass: rgba(255, 255, 255, 0.88); + --bg-glass-strong: rgba(255, 255, 255, 0.96); + --bg-subtle: #f1f5f3; + + /* Black & Obsidian Contrast Anchors */ + --brand-black: #080c09; + --brand-charcoal: #121a14; + --brand-dark-surface: #0e1610; + + /* Neon & Electric Green Accents */ + --neon-green: #00C853; + --neon-lime: #00E676; + --neon-electric: #10f576; + --neon-dark: #008f39; + --neon-text-shade: #00873d; + --neon-glow: rgba(0, 200, 83, 0.28); + --neon-glow-soft: rgba(0, 200, 83, 0.12); + --neon-glow-strong: rgba(0, 230, 118, 0.5); + + /* Neutrals & Typography */ + --text-primary: #0a0f0d; + --text-secondary: #475569; + --text-muted: #64748b; + --text-dark: #060a07; + --text-light: #f8faf8; + + /* Borders & Dividers */ + --border-subtle: #e2e8f0; + --border-card: #e5eae7; + --border-neon: #00C853; + --border-neon-bright: #00E676; + --border-dark: #cbd5e1; + + /* Typography */ + --font-heading: 'Outfit', -apple-system, BlinkMacSystemFont, sans-serif; + --font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; + + /* Shadows */ + --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.04); + --shadow-md: 0 8px 24px rgba(0, 0, 0, 0.06); + --shadow-card: 0 12px 32px rgba(10, 25, 15, 0.07); + --shadow-neon-sm: 0 0 14px rgba(0, 200, 83, 0.22); + --shadow-neon-md: 0 0 26px rgba(0, 200, 83, 0.35); + + /* Transitions */ + --transition-fast: 0.2s cubic-bezier(0.16, 1, 0.3, 1); + --transition-smooth: 0.35s cubic-bezier(0.16, 1, 0.3, 1); + --transition-bounce: 0.5s cubic-bezier(0.34, 1.56, 0.64, 1); + + /* Layout */ + --max-width: 1240px; + --header-height: 76px; + --radius-sm: 8px; + --radius-md: 14px; + --radius-lg: 20px; + --radius-full: 9999px; +} + +/* Reset & Base */ +*, *::before, *::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html { + scroll-behavior: smooth; + color-scheme: light; + font-size: 16px; +} + +body { + font-family: var(--font-body); + background-color: var(--bg-pitch); + color: var(--text-primary); + line-height: 1.65; + overflow-x: hidden; + position: relative; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Subtle Clean Pattern Background */ +body::before { + content: ''; + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + background-image: + radial-gradient(circle at 10% 10%, rgba(0, 200, 83, 0.04) 0%, transparent 40%), + radial-gradient(circle at 90% 80%, rgba(0, 230, 118, 0.03) 0%, transparent 45%), + linear-gradient(to right, rgba(0, 0, 0, 0.02) 1px, transparent 1px), + linear-gradient(to bottom, rgba(0, 0, 0, 0.02) 1px, transparent 1px); + background-size: 100% 100%, 100% 100%, 40px 40px, 40px 40px; + pointer-events: none; + z-index: -1; +} + +/* Typography Helpers */ +h1, h2, h3, h4, h5, h6 { + font-family: var(--font-heading); + color: var(--text-primary); + font-weight: 700; + line-height: 1.2; +} + +p { + color: var(--text-secondary); +} + +a { + color: inherit; + text-decoration: none; + transition: var(--transition-fast); +} + +img { + max-width: 100%; + height: auto; + display: block; +} + +.container { + width: 100%; + max-width: var(--max-width); + margin-left: auto; + margin-right: auto; + padding-left: 24px; + padding-right: 24px; +} + +/* Neon Text & Highlight Utilities */ +.neon-text { + color: var(--neon-text-shade); + font-weight: 800; + background: linear-gradient(135deg, #007032 0%, #00b84c 60%, #00e676 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + display: inline-block; +} + +.neon-border { + border: 1px solid var(--border-neon); + box-shadow: var(--shadow-neon-sm); +} + +.badge { + display: inline-flex; + align-items: center; + gap: 8px; + padding: 6px 16px; + border-radius: var(--radius-full); + font-family: var(--font-heading); + font-size: 0.82rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.06em; + background: #ffffff; + border: 1.5px solid rgba(0, 200, 83, 0.45); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04), 0 0 12px rgba(0, 200, 83, 0.12); + color: var(--neon-text-shade); +} + +.badge-dot { + width: 8px; + height: 8px; + border-radius: 50%; + background-color: var(--neon-green); + box-shadow: 0 0 8px var(--neon-green); + animation: pulse-dot 2s infinite; +} + +@keyframes pulse-dot { + 0%, 100% { opacity: 1; transform: scale(1); } + 50% { opacity: 0.5; transform: scale(0.85); } +} + +/* ========================================================================== + SVG VECTOR ICONS SYSTEM + ========================================================================== */ +.icon-svg { + display: inline-block; + vertical-align: middle; + stroke: currentColor; + fill: none; +} + +.logo-symbol svg { + width: 24px; + height: 24px; + stroke: #080c09; + fill: none; +} + +.card-icon svg { + width: 24px; + height: 24px; + stroke: var(--neon-green); + fill: none; +} + +.stat-icon svg { + width: 26px; + height: 26px; + stroke: var(--neon-text-shade); + fill: none; +} + +.service-icon-box svg { + width: 30px; + height: 30px; + stroke: var(--neon-text-shade); + fill: none; + transition: transform var(--transition-fast); +} + +.service-card:hover .service-icon-box svg { + transform: scale(1.12); + stroke: var(--neon-green); +} + +.area-icon svg { + width: 22px; + height: 22px; + stroke: var(--neon-text-shade); + fill: none; + flex-shrink: 0; +} + +.review-stars { + display: flex; + gap: 4px; + margin-bottom: 16px; +} + +.review-stars svg { + width: 18px; + height: 18px; + fill: #f59e0b; + stroke: #f59e0b; +} + +.ba-handle svg { + width: 24px; + height: 24px; + stroke: #080c09; + fill: none; +} + +.mobile-bar-btn svg { + width: 20px; + height: 20px; + stroke: currentColor; + fill: none; +} + +/* ========================================================================== + BUTTONS + ========================================================================== */ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 10px; + font-family: var(--font-heading); + font-weight: 700; + font-size: 0.98rem; + padding: 14px 28px; + border-radius: var(--radius-md); + border: 1px solid transparent; + cursor: pointer; + transition: all var(--transition-smooth); + text-align: center; + white-space: nowrap; +} + +.btn-primary { + background: var(--neon-lime); + color: #080c09; + box-shadow: 0 4px 18px rgba(0, 230, 118, 0.45); + font-weight: 800; +} + +.btn-primary:hover { + background: #25ff89; + box-shadow: 0 6px 26px rgba(0, 230, 118, 0.65); + transform: translateY(-2px); +} + +.btn-secondary { + background: #ffffff; + color: var(--text-primary); + border: 1.5px solid #cbd5e1; + box-shadow: var(--shadow-sm); +} + +.btn-secondary:hover { + background: #f0fdf4; + border-color: var(--neon-green); + color: var(--neon-text-shade); + transform: translateY(-2px); + box-shadow: 0 4px 15px rgba(0, 200, 83, 0.2); +} + +.btn-ghost { + background: transparent; + color: var(--text-secondary); + border: 1px solid var(--border-subtle); +} + +.btn-ghost:hover { + background: rgba(0, 0, 0, 0.04); + color: var(--text-primary); +} + +.btn-lg { + padding: 18px 36px; + font-size: 1.08rem; +} + +.btn-sm { + padding: 8px 16px; + font-size: 0.85rem; + border-radius: var(--radius-sm); +} + +/* ========================================================================== + ALERT TOP BANNER + ========================================================================== */ +.announcement-bar { + background: #080d0a; + border-bottom: 2px solid var(--neon-green); + padding: 10px 16px; + font-size: 0.85rem; + text-align: center; + position: relative; + z-index: 101; + color: #ffffff; +} + +.announcement-content { + display: flex; + align-items: center; + justify-content: center; + flex-wrap: wrap; + gap: 12px; +} + +.announcement-tag { + background: var(--neon-lime); + color: #060806; + font-weight: 800; + font-size: 0.72rem; + padding: 3px 8px; + border-radius: var(--radius-sm); + letter-spacing: 0.05em; + text-transform: uppercase; + display: inline-flex; + align-items: center; +} + +.announcement-link { + color: var(--neon-lime); + font-weight: 700; + text-decoration: underline; + text-underline-offset: 3px; +} + +/* ========================================================================== + NAVIGATION + ========================================================================== */ +.site-header { + position: sticky; + top: 0; + width: 100%; + background: var(--bg-glass-strong); + backdrop-filter: blur(16px); + -webkit-backdrop-filter: blur(16px); + border-bottom: 1px solid var(--border-subtle); + z-index: 100; + height: var(--header-height); + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.03); +} + +.header-inner, .header-container { + display: flex; + align-items: center; + justify-content: space-between; + height: 100%; + gap: 16px; + flex-wrap: nowrap; +} + +.brand-logo { + display: flex; + align-items: center; + gap: 12px; + flex-shrink: 0; + white-space: nowrap; + text-decoration: none; +} + +.logo-symbol { + width: 44px; + height: 44px; + background: var(--neon-lime); + border: 1.5px solid var(--neon-green); + border-radius: var(--radius-md); + display: flex; + align-items: center; + justify-content: center; + box-shadow: 0 0 16px rgba(0, 230, 118, 0.4); + flex-shrink: 0; +} + +.logo-text { + display: flex; + flex-direction: column; + white-space: nowrap; +} + +.brand-name { + font-size: 1.35rem; + font-weight: 900; + letter-spacing: 0.02em; + color: var(--brand-black); + line-height: 1.1; + white-space: nowrap; +} + +.brand-name span { + color: var(--neon-text-shade); + background: linear-gradient(135deg, #007a37 0%, #00c853 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.brand-tagline { + font-size: 0.68rem; + font-weight: 700; + letter-spacing: 0.12em; + color: var(--text-muted); + text-transform: uppercase; + white-space: nowrap; +} + +.nav-desktop { + display: flex; + align-items: center; + gap: 20px; + flex-shrink: 0; +} + +.nav-link { + font-size: 0.9rem; + font-weight: 600; + color: var(--text-secondary); + position: relative; + padding: 6px 0; + white-space: nowrap !important; + text-decoration: none; +} + +.nav-link:hover, .nav-link.active { + color: var(--neon-text-shade); +} + +.nav-link::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + width: 0%; + height: 2px; + background: var(--neon-green); + transition: width var(--transition-fast); +} + +.nav-link:hover::after { + width: 100%; +} + +.header-cta-group { + display: flex; + align-items: center; + gap: 12px; + flex-shrink: 0 !important; + white-space: nowrap !important; +} + +.phone-direct { + display: inline-flex; + align-items: center; + gap: 8px; + color: var(--text-primary); + font-weight: 700; + font-size: 0.9rem; + padding: 8px 14px; + border-radius: var(--radius-sm); + background: #ffffff; + border: 1px solid var(--border-subtle); + box-shadow: var(--shadow-sm); + white-space: nowrap !important; + flex-shrink: 0 !important; + text-decoration: none; +} + +.phone-direct span, +.phone-direct .phone-text { + white-space: nowrap !important; + display: inline-block; +} + +.phone-direct:hover { + border-color: var(--neon-green); + color: var(--neon-text-shade); +} + +.mobile-menu-btn { + display: none; + background: #ffffff; + border: 1.5px solid var(--border-subtle); + border-radius: var(--radius-sm); + color: var(--brand-black); + width: 44px; + height: 44px; + cursor: pointer; + flex-shrink: 0 !important; + align-items: center; + justify-content: center; + transition: all var(--transition-fast); +} + +.mobile-menu-btn:hover { + border-color: var(--neon-green); + color: var(--neon-text-shade); + box-shadow: 0 0 10px rgba(0, 200, 83, 0.2); +} + +/* Mobile Navigation Drawer */ +.mobile-nav-drawer { + display: none; + position: absolute; + top: 100%; + left: 0; + width: 100%; + background: #ffffff; + border-bottom: 3px solid var(--neon-green); + padding: 24px; + box-shadow: 0 16px 36px rgba(0, 0, 0, 0.12); + flex-direction: column; + gap: 16px; + z-index: 999; +} + +.mobile-nav-drawer.open { + display: flex; + animation: slideDownDrawer 0.22s cubic-bezier(0.16, 1, 0.3, 1) forwards; +} + +@keyframes slideDownDrawer { + from { + opacity: 0; + transform: translateY(-6px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.mobile-nav-drawer .nav-link { + font-size: 1.05rem; + padding: 10px 0; + border-bottom: 1px solid var(--border-subtle); +} + +/* ========================================================================== + HERO SECTION + ========================================================================== */ +.hero-section { + position: relative; + padding: 80px 0 100px; + overflow: hidden; + background: radial-gradient(1100px circle at 85% 15%, rgba(0, 230, 118, 0.14) 0%, transparent 60%), + linear-gradient(180deg, #e3f5ea 0%, #ebf7f0 50%, #f4fbf7 100%); + border-bottom: 2px solid #c8e6d3; +} + +.hero-grid { + display: grid; + grid-template-columns: 1.1fr 0.9fr; + align-items: center; + gap: 50px; +} + +.hero-content { + position: relative; + z-index: 2; +} + +.hero-badge-row { + margin-bottom: 20px; +} + +.hero-title { + font-size: clamp(2.4rem, 4.8vw, 3.8rem); + font-weight: 900; + line-height: 1.08; + letter-spacing: -0.02em; + margin-bottom: 24px; + text-transform: uppercase; + color: var(--brand-black); +} + +.hero-subtitle { + font-size: 1.12rem; + line-height: 1.7; + color: var(--text-secondary); + margin-bottom: 34px; + max-width: 580px; +} + +.hero-actions { + display: flex; + flex-wrap: wrap; + gap: 16px; + margin-bottom: 36px; +} + +.hero-trust-bar { + display: flex; + align-items: center; + gap: 16px; + padding-top: 20px; + border-top: 1px solid var(--border-subtle); +} + +.avatar-stack { + display: flex; + align-items: center; +} + +.avatar-stack-item { + width: 38px; + height: 38px; + border-radius: 50%; + border: 2px solid #ffffff; + margin-left: -10px; + background: #0d1e13; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.8rem; + color: var(--neon-lime); + font-weight: 700; + box-shadow: var(--shadow-sm); +} + +.avatar-stack-item:first-child { + margin-left: 0; +} + +.trust-text { + font-size: 0.88rem; + color: var(--text-secondary); + line-height: 1.35; +} + +.trust-text strong { + color: var(--brand-black); + display: block; +} + +.hero-visual { + position: relative; +} + +.hero-image-wrapper { + position: relative; + border-radius: var(--radius-lg); + overflow: hidden; + border: 1.5px solid #d1fae5; + box-shadow: 0 16px 40px rgba(10, 25, 15, 0.12); +} + +.hero-image-wrapper img { + width: 100%; + height: 480px; + object-fit: cover; + transition: transform 0.8s ease; +} + +.hero-image-wrapper:hover img { + transform: scale(1.03); +} + +/* Floating Badges on Hero Image */ +.floating-glass-card { + position: absolute; + bottom: 24px; + left: 24px; + right: 24px; + background: rgba(255, 255, 255, 0.94); + backdrop-filter: blur(16px); + -webkit-backdrop-filter: blur(16px); + border: 1.5px solid var(--border-neon); + border-radius: var(--radius-md); + padding: 16px 20px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + box-shadow: 0 12px 30px rgba(0, 0, 0, 0.15); +} + +.card-stat-group { + display: flex; + align-items: center; + gap: 12px; +} + +.card-icon { + width: 42px; + height: 42px; + border-radius: 10px; + background: rgba(0, 200, 83, 0.12); + border: 1px solid rgba(0, 200, 83, 0.3); + display: flex; + align-items: center; + justify-content: center; + color: var(--neon-text-shade); +} + +.card-stat-text h4 { + font-size: 1.05rem; + color: var(--brand-black); +} + +.card-stat-text p { + font-size: 0.8rem; + color: var(--neon-text-shade); + font-weight: 700; +} + +/* ========================================================================== + STATS TICKER SECTION (High Contrast Obsidian Band) + ========================================================================== */ +.stats-ticker-section { + padding: 34px 0; + background: #080d0a; + border-top: 2.5px solid var(--neon-lime); + border-bottom: 2.5px solid var(--neon-lime); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.18); + color: #ffffff; +} + +.stats-grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 24px; +} + +.stat-item { + display: flex; + align-items: center; + gap: 16px; + padding: 10px 16px; +} + +.stats-ticker-section .stat-icon { + width: 50px; + height: 50px; + border-radius: var(--radius-md); + background: rgba(0, 230, 118, 0.12); + border: 1.5px solid rgba(0, 230, 118, 0.4); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} + +.stats-ticker-section .stat-icon svg { + stroke: var(--neon-lime); +} + +.stats-ticker-section .stat-num { + font-family: var(--font-heading); + font-size: 2rem; + font-weight: 900; + color: #ffffff; + line-height: 1.1; +} + +.stats-ticker-section .stat-num span { + color: var(--neon-lime); +} + +.stats-ticker-section .stat-label { + font-size: 0.82rem; + color: #94a3b8; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.04em; +} + +/* ========================================================================== + SECTION COMMON STYLES & DISTINCT SECTION BACKGROUND PALETTES + ========================================================================== */ +.section { + padding: 100px 0; + position: relative; +} + +/* 1. Calculator Section: Crisp Tech Ice & Slate Tone */ +section#calculator { + background: linear-gradient(180deg, #e8f0f6 0%, #dce7f0 100%); + border-bottom: 2px solid #cad8e5; + box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.02); +} + +/* 2. Before & After Section: High Desert Sand & Warm Earth Tone */ +section#transformation { + background: linear-gradient(180deg, #f4eee2 0%, #eae1ce 100%); + border-bottom: 2px solid #ddcfb8; + box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.02); +} + +/* 3. Core Services Section: Fresh Vibrant Spring Turf & Lawn Green */ +section#services { + background: linear-gradient(180deg, #dfefe4 0%, #cee6d5 100%); + border-bottom: 2px solid #b4dcbe; + box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.02); +} + +/* 4. Service Areas Section: Architectural Cool High Desert Slate */ +section#areas { + background: linear-gradient(180deg, #eaeff5 0%, #dde4ec 100%); + border-bottom: 2px solid #c8d3df; + box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.02); +} + +/* 5. Customer Reviews Section: Warm Mojave Amber & Sand Dune Pearl */ +section#reviews { + background: linear-gradient(180deg, #f8f1e2 0%, #efe4ce 100%); + border-bottom: 2px solid #e1d0b5; + box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.02); +} + +/* 6. FAQ Accordion Section: Crisp Celadon Mist & Soft Mountain Sage */ +section#faq { + background: linear-gradient(180deg, #e7f1eb 0%, #d7e8de 100%); + border-bottom: 2px solid #bedbcd; + box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.02); +} + +.section-header { + text-align: center; + max-width: 720px; + margin: 0 auto 60px; +} + +.section-tag { + margin-bottom: 16px; +} + +.section-title { + font-size: clamp(2rem, 3.4vw, 2.8rem); + font-weight: 900; + letter-spacing: -0.01em; + margin-bottom: 18px; + color: var(--brand-black); +} + +.section-description { + font-size: 1.05rem; + color: var(--text-secondary); + line-height: 1.7; +} + +/* ========================================================================== + INTERACTIVE YARD ESTIMATOR / CALCULATOR + ========================================================================== */ +.calculator-card { + background: #ffffff; + border: 1.5px solid var(--border-card); + border-radius: var(--radius-lg); + padding: 44px; + box-shadow: var(--shadow-card); + position: relative; + overflow: hidden; +} + +.calculator-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: linear-gradient(90deg, transparent, var(--neon-green), transparent); +} + +.calculator-layout { + display: grid; + grid-template-columns: 1.25fr 0.75fr; + gap: 44px; + align-items: start; +} + +.calc-step { + margin-bottom: 30px; +} + +.calc-step-label { + display: flex; + align-items: center; + gap: 10px; + font-family: var(--font-heading); + font-size: 1.08rem; + font-weight: 700; + color: var(--brand-black); + margin-bottom: 16px; +} + +.calc-step-num { + width: 26px; + height: 26px; + border-radius: 50%; + background: var(--neon-lime); + color: #060806; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.85rem; + font-weight: 800; +} + +.calc-grid-options { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); + gap: 12px; +} + +.calc-option { + position: relative; + cursor: pointer; +} + +.calc-option input[type="radio"] { + position: absolute; + opacity: 0; + pointer-events: none; +} + +.calc-option-content { + background: #fbfdfc; + border: 1.5px solid #e2e8f0; + border-radius: var(--radius-md); + padding: 16px 14px; + display: flex; + flex-direction: column; + gap: 6px; + transition: all var(--transition-fast); + height: 100%; +} + +.calc-option-title { + font-size: 0.95rem; + font-weight: 700; + color: var(--brand-black); +} + +.calc-option-desc { + font-size: 0.78rem; + color: var(--text-muted); +} + +.calc-option:hover .calc-option-content { + border-color: rgba(0, 200, 83, 0.5); + background: #f0fdf4; +} + +.calc-option input[type="radio"]:checked + .calc-option-content { + background: #edfcf2; + border: 2px solid var(--neon-green); + box-shadow: 0 4px 15px rgba(0, 200, 83, 0.18); +} + +.calc-option input[type="radio"]:checked + .calc-option-content .calc-option-title { + color: var(--neon-text-shade); +} + +/* Calculator Output Panel - High Contrast Dark Obsidian Inside Light Mode */ +.calc-result-panel { + background: #0a110c; + border: 1.5px solid var(--neon-green); + border-radius: var(--radius-md); + padding: 32px 28px; + position: sticky; + top: 100px; + box-shadow: 0 12px 35px rgba(0, 0, 0, 0.25); + color: #ffffff; +} + +.result-header { + border-bottom: 1px solid rgba(255, 255, 255, 0.12); + padding-bottom: 18px; + margin-bottom: 22px; +} + +.result-header span { + font-size: 0.82rem; + color: var(--neon-lime); + text-transform: uppercase; + letter-spacing: 0.06em; + font-weight: 700; +} + +.result-price-box { + margin-top: 8px; +} + +.price-range-value { + font-family: var(--font-heading); + font-size: 2.5rem; + font-weight: 900; + color: #ffffff; + line-height: 1.1; +} + +.price-range-value span { + color: var(--neon-lime); +} + +.price-note { + font-size: 0.78rem; + color: #a7b8ad; + margin-top: 4px; +} + +.estimate-details { + list-style: none; + margin-bottom: 26px; + display: flex; + flex-direction: column; + gap: 12px; +} + +.estimate-details li { + display: flex; + align-items: center; + gap: 10px; + font-size: 0.88rem; + color: #d1d5db; +} + +.estimate-details li svg { + color: var(--neon-lime); + flex-shrink: 0; +} + +.estimate-details li strong { + color: #ffffff; +} + +/* ========================================================================== + INTERACTIVE BEFORE & AFTER SLIDER (Clip-Path Powered) + ========================================================================== */ +.before-after-container { + max-width: 980px; + margin: 0 auto; + position: relative; + border-radius: var(--radius-lg); + overflow: hidden; + border: 2.5px solid var(--neon-green); + box-shadow: 0 16px 45px rgba(0, 0, 0, 0.15); + user-select: none; + -webkit-user-select: none; + touch-action: pan-y; + --slider-pos: 50%; +} + +.ba-slider-wrapper { + position: relative; + width: 100%; + aspect-ratio: 16 / 9; + background: #000; + overflow: hidden; +} + +.ba-image { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + object-fit: cover; + pointer-events: none; +} + +.ba-before-layer { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + clip-path: inset(0 calc(100% - var(--slider-pos)) 0 0); + z-index: 2; + pointer-events: none; +} + +.ba-divider-line { + position: absolute; + top: 0; + bottom: 0; + left: var(--slider-pos); + width: 3px; + background: var(--neon-lime); + box-shadow: 0 0 16px var(--neon-lime), 0 0 30px rgba(0, 230, 118, 0.8); + z-index: 8; + transform: translateX(-50%); + pointer-events: none; +} + +.ba-badge { + position: absolute; + top: 18px; + padding: 6px 14px; + font-family: var(--font-heading); + font-weight: 800; + font-size: 0.82rem; + letter-spacing: 0.08em; + border-radius: var(--radius-sm); + z-index: 5; + text-transform: uppercase; + white-space: nowrap; + pointer-events: none; + user-select: none; +} + +.ba-badge-before { + left: 20px; + background: rgba(220, 38, 38, 0.92); + color: #fff; + border: 1px solid rgba(255, 255, 255, 0.4); + box-shadow: var(--shadow-sm); +} + +.ba-badge-after { + right: 20px; + background: #080c09; + color: var(--neon-lime); + border: 1.5px solid var(--neon-lime); + box-shadow: 0 0 15px rgba(0, 230, 118, 0.4); +} + +.ba-handle { + position: absolute; + top: 50%; + left: var(--slider-pos); + transform: translate(-50%, -50%); + width: 52px; + height: 52px; + border-radius: 50%; + background: var(--neon-lime); + border: 3px solid #080c09; + box-shadow: 0 0 25px rgba(0, 230, 118, 0.6), 0 6px 20px rgba(0,0,0,0.35); + cursor: ew-resize; + z-index: 10; + display: flex; + align-items: center; + justify-content: center; + transition: transform 0.1s ease; +} + +.ba-handle:hover, .ba-handle:active { + transform: translate(-50%, -50%) scale(1.1); +} + +.ba-hint { + text-align: center; + margin-top: 18px; + font-size: 0.92rem; + color: var(--text-secondary); + font-weight: 600; +} + +/* Secondary Before/After Mini Showcase Cards */ +.mini-showcase-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); + gap: 28px; + max-width: 860px; + margin: 50px auto 0; +} + +.showcase-card { + background: #ffffff; + border: 1.5px solid var(--border-card); + border-radius: var(--radius-md); + overflow: hidden; + box-shadow: var(--shadow-sm); + transition: all var(--transition-smooth); +} + +.showcase-card:hover { + border-color: var(--neon-green); + transform: translateY(-4px); + box-shadow: var(--shadow-card); +} + +.showcase-img-box { + height: 200px; + position: relative; + overflow: hidden; +} + +.showcase-img-box img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 0.6s ease; +} + +.showcase-card:hover .showcase-img-box img { + transform: scale(1.05); +} + +.showcase-tag { + position: absolute; + top: 12px; + left: 12px; + background: rgba(8, 12, 9, 0.88); + backdrop-filter: blur(8px); + border: 1px solid var(--neon-green); + color: var(--neon-lime); + font-size: 0.72rem; + font-weight: 800; + padding: 4px 10px; + border-radius: var(--radius-sm); +} + +.showcase-content { + padding: 20px; +} + +.showcase-content h4 { + font-size: 1.12rem; + margin-bottom: 8px; + color: var(--brand-black); +} + +.showcase-content p { + font-size: 0.88rem; + color: var(--text-secondary); + line-height: 1.5; +} + +.showcase-stats { + display: flex; + justify-content: space-between; + margin-top: 14px; + padding-top: 12px; + border-top: 1px solid var(--border-subtle); + font-size: 0.82rem; +} + +.showcase-stat strong { + color: var(--neon-text-shade); +} + +/* ========================================================================== + SERVICES GRID + ========================================================================== */ +.services-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); + gap: 32px; +} + +.service-card { + background: #ffffff; + border: 1.5px solid var(--border-card); + border-radius: var(--radius-lg); + overflow: hidden; + position: relative; + transition: all var(--transition-smooth); + display: flex; + flex-direction: column; + justify-content: space-between; + box-shadow: var(--shadow-sm); +} + +.service-card:hover { + transform: translateY(-8px); + background: #ffffff; + border-color: var(--neon-green); + box-shadow: 0 20px 40px rgba(0, 200, 83, 0.16), var(--shadow-card); +} + +.service-img-box { + position: relative; + width: 100%; + height: 210px; + overflow: hidden; + background: #080c09; +} + +.service-img-box img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1); + display: block; +} + +.service-card:hover .service-img-box img { + transform: scale(1.06); +} + +.service-tag { + position: absolute; + top: 14px; + right: 14px; + background: rgba(8, 12, 9, 0.88); + color: var(--neon-lime); + border: 1px solid var(--neon-green); + font-family: var(--font-heading); + font-size: 0.72rem; + font-weight: 800; + letter-spacing: 0.06em; + padding: 4px 11px; + border-radius: var(--radius-full); + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); + text-transform: uppercase; + z-index: 3; +} + +.service-icon-badge { + position: absolute; + top: 14px; + left: 14px; + width: 44px; + height: 44px; + border-radius: var(--radius-md); + background: rgba(255, 255, 255, 0.95); + border: 1.5px solid var(--neon-green); + box-shadow: 0 4px 14px rgba(0, 0, 0, 0.15), 0 0 12px rgba(0, 230, 118, 0.3); + display: flex; + align-items: center; + justify-content: center; + z-index: 3; + color: var(--neon-text-shade); + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); + transition: transform var(--transition-fast); +} + +.service-card:hover .service-icon-badge { + transform: scale(1.08) rotate(3deg); + border-color: var(--neon-lime); + background: #ffffff; +} + +.service-icon-badge svg { + width: 22px; + height: 22px; +} + +.service-content { + padding: 24px 26px 26px 26px; + display: flex; + flex-direction: column; + flex: 1; + justify-content: space-between; +} + +.service-content h3 { + font-size: 1.32rem; + margin-bottom: 12px; + color: var(--brand-black); + line-height: 1.25; +} + +.service-content p { + font-size: 0.92rem; + color: var(--text-secondary); + line-height: 1.6; + margin-bottom: 18px; +} + +.service-feature-list { + list-style: none; + display: flex; + flex-direction: column; + gap: 9px; + margin-bottom: 22px; +} + +.service-feature-list li { + display: flex; + align-items: center; + gap: 9px; + font-size: 0.88rem; + color: var(--text-secondary); +} + +.service-feature-list li svg { + color: var(--neon-green); + flex-shrink: 0; +} + +.service-card-footer { + margin-top: auto; + padding-top: 14px; +} + +.service-btn-link { + display: inline-flex; + align-items: center; + gap: 8px; + color: var(--neon-text-shade); + font-family: var(--font-heading); + font-size: 0.92rem; + font-weight: 700; + transition: gap var(--transition-fast); +} + +.service-btn-link:hover { + gap: 12px; +} + +/* ========================================================================== + SERVICE AREAS SECTION + ========================================================================== */ +.area-pills-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + gap: 16px; + margin-bottom: 40px; +} + +.area-pill { + background: #ffffff; + border: 1.5px solid var(--border-card); + border-radius: var(--radius-md); + padding: 18px 20px; + display: flex; + align-items: center; + gap: 14px; + box-shadow: var(--shadow-sm); + transition: all var(--transition-fast); + text-decoration: none; + cursor: pointer; +} + +.area-pill:hover { + border-color: var(--neon-green); + background: #f0fdf4; + transform: translateY(-2px); + box-shadow: 0 6px 18px rgba(0, 200, 83, 0.15); +} + +.area-pill h4 { + font-size: 1.05rem; + color: var(--brand-black); + margin-bottom: 2px; + display: flex; + align-items: center; + justify-content: space-between; +} + +.area-pill span { + font-size: 0.78rem; + color: var(--text-muted); +} + +.area-banner-box { + background: #0a100c; + border: 1.5px solid var(--neon-green); + border-radius: var(--radius-lg); + padding: 36px 40px; + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + gap: 24px; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); + color: #ffffff; +} + +.area-banner-text h3 { + font-size: 1.4rem; + margin-bottom: 6px; + color: #ffffff; +} + +.area-banner-text p { + color: #d1d5db; +} + +/* ========================================================================== + TESTIMONIALS / REVIEWS + ========================================================================== */ +.testimonials-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 28px; +} + +.review-card { + background: #ffffff; + border: 1.5px solid var(--border-card); + border-radius: var(--radius-lg); + padding: 32px 28px; + display: flex; + flex-direction: column; + justify-content: space-between; + box-shadow: var(--shadow-sm); + transition: all var(--transition-smooth); +} + +.review-card:hover { + border-color: var(--neon-green); + transform: translateY(-4px); + box-shadow: var(--shadow-card); +} + +.review-quote { + font-size: 0.95rem; + line-height: 1.65; + color: var(--text-secondary); + margin-bottom: 24px; + font-style: italic; +} + +.review-author { + display: flex; + align-items: center; + gap: 14px; + border-top: 1px solid var(--border-subtle); + padding-top: 16px; +} + +.author-avatar { + width: 44px; + height: 44px; + border-radius: 50%; + background: #e6f9ed; + border: 1.5px solid var(--neon-green); + display: flex; + align-items: center; + justify-content: center; + font-weight: 800; + color: var(--neon-text-shade); + font-family: var(--font-heading); +} + +.author-info h4 { + font-size: 0.98rem; + color: var(--brand-black); + margin-bottom: 2px; +} + +.author-info span { + font-size: 0.8rem; + color: var(--neon-text-shade); + font-weight: 700; +} + +/* ========================================================================== + FAQ ACCORDION (Details & Summary) + ========================================================================== */ +.faq-accordion-wrapper { + max-width: 820px; + margin: 0 auto; + display: flex; + flex-direction: column; + gap: 16px; +} + +details.faq-item { + background: #ffffff; + border: 1.5px solid var(--border-card); + border-radius: var(--radius-md); + overflow: hidden; + box-shadow: var(--shadow-sm); + transition: all var(--transition-fast); +} + +details.faq-item:hover { + border-color: rgba(0, 200, 83, 0.4); +} + +details.faq-item[open] { + border-color: var(--neon-green); + box-shadow: 0 4px 20px rgba(0, 200, 83, 0.12); +} + +summary.faq-question { + padding: 22px 24px; + font-family: var(--font-heading); + font-size: 1.08rem; + font-weight: 700; + color: var(--brand-black); + cursor: pointer; + display: flex; + align-items: center; + justify-content: space-between; + list-style: none; + user-select: none; +} + +summary.faq-question::-webkit-details-marker { + display: none; +} + +summary.faq-question::after { + content: '+'; + font-size: 1.5rem; + color: var(--neon-green); + font-weight: 700; + transition: transform 0.25s ease; +} + +details.faq-item[open] summary.faq-question::after { + content: '−'; + transform: rotate(180deg); +} + +.faq-answer { + padding: 0 24px 22px; + font-size: 0.95rem; + color: var(--text-secondary); + line-height: 1.65; + border-top: 1px solid var(--border-subtle); + padding-top: 16px; +} + +/* ========================================================================== + FINAL HIGH-IMPACT CTA BANNER (Obsidian Contrast Anchor) + ========================================================================== */ +.cta-banner-section { + padding: 80px 0; + position: relative; +} + +.cta-banner-card { + background: #080d0a; + border: 2px solid var(--neon-green); + border-radius: var(--radius-lg); + padding: 60px 40px; + text-align: center; + position: relative; + overflow: hidden; + box-shadow: 0 16px 50px rgba(0, 0, 0, 0.25); + color: #ffffff; +} + +.cta-banner-card h2 { + font-size: clamp(2.2rem, 4vw, 3.2rem); + font-weight: 900; + margin-bottom: 20px; + color: #ffffff; +} + +.cta-banner-card p { + font-size: 1.15rem; + max-width: 680px; + margin: 0 auto 34px; + color: #d1d5db; +} + +.cta-banner-actions { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 18px; +} + +/* ========================================================================== + FOOTER (Deep Obsidian Brand Base) + ========================================================================== */ +.site-footer { + background: #060907; + border-top: 3px solid var(--neon-green); + padding: 70px 0 30px; + position: relative; + color: #ffffff; +} + +.footer-top { + display: grid; + grid-template-columns: 1.5fr 1fr 1fr 1fr; + gap: 40px; + margin-bottom: 50px; +} + +.footer-brand p { + margin-top: 16px; + font-size: 0.9rem; + max-width: 320px; + color: #94a3b8; +} + +.footer-brand .brand-name { + color: #ffffff; +} + +.footer-heading { + font-family: var(--font-heading); + font-size: 1.05rem; + font-weight: 700; + color: #ffffff; + margin-bottom: 20px; + position: relative; +} + +.footer-heading::after { + content: ''; + position: absolute; + bottom: -6px; + left: 0; + width: 24px; + height: 2px; + background: var(--neon-lime); +} + +.footer-links { + list-style: none; + display: flex; + flex-direction: column; + gap: 10px; +} + +.footer-links a { + font-size: 0.88rem; + color: #cbd5e1; +} + +.footer-links a:hover { + color: var(--neon-lime); + padding-left: 4px; +} + +.footer-bottom { + padding-top: 24px; + border-top: 1px solid rgba(255, 255, 255, 0.1); + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: 16px; + font-size: 0.82rem; + color: #94a3b8; +} + +/* ========================================================================== + NATIVE MODAL DIALOG + ========================================================================== */ +dialog#quote-dialog { + border: none; + background: transparent; + padding: 0; + max-width: 580px; + width: 90vw; + margin: auto; + border-radius: var(--radius-lg); + box-shadow: 0 25px 60px rgba(0, 0, 0, 0.45); +} + +dialog#quote-dialog::backdrop { + background: rgba(10, 20, 14, 0.65); + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); +} + +.modal-content { + background: #ffffff; + border: 2px solid var(--neon-green); + box-shadow: 0 12px 40px rgba(0, 0, 0, 0.2); + border-radius: var(--radius-lg); + padding: 36px; + position: relative; + overflow: hidden; +} + +.modal-close-btn { + position: absolute; + top: 18px; + right: 18px; + width: 36px; + height: 36px; + border-radius: 50%; + background: #f1f5f9; + border: 1px solid #cbd5e1; + color: var(--text-secondary); + font-size: 1.2rem; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: all var(--transition-fast); +} + +.modal-close-btn:hover { + color: #080c09; + border-color: var(--neon-green); + background: #f0fdf4; +} + +.modal-header { + margin-bottom: 24px; +} + +.modal-header h3 { + font-size: 1.6rem; + color: var(--brand-black); + margin-bottom: 6px; +} + +.modal-header p { + font-size: 0.9rem; + color: var(--text-secondary); +} + +.form-group { + margin-bottom: 18px; +} + +.form-group label { + display: block; + font-family: var(--font-heading); + font-size: 0.86rem; + font-weight: 700; + color: var(--brand-black); + margin-bottom: 6px; +} + +.form-row { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 14px; +} + +.form-control { + width: 100%; + background: #f8fafc; + border: 1.5px solid #cbd5e1; + border-radius: var(--radius-sm); + padding: 12px 14px; + color: var(--text-primary); + font-family: var(--font-body); + font-size: 0.94rem; + transition: all var(--transition-fast); +} + +.form-control:focus { + outline: none; + border-color: var(--neon-green); + box-shadow: 0 0 10px rgba(0, 200, 83, 0.25); + background: #ffffff; +} + +.form-control::placeholder { + color: var(--text-muted); +} + +textarea.form-control { + resize: vertical; + min-height: 80px; +} + +/* ========================================================================== + TOAST NOTIFICATION + ========================================================================== */ +.toast-notification { + position: fixed; + bottom: 30px; + right: 30px; + background: #080d0a; + border: 2px solid var(--neon-lime); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35); + border-radius: var(--radius-md); + padding: 16px 22px; + display: flex; + align-items: center; + gap: 14px; + color: #fff; + z-index: 999; + transform: translateY(120px); + opacity: 0; + transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1); + pointer-events: none; +} + +.toast-notification.show { + transform: translateY(0); + opacity: 1; + pointer-events: auto; +} + +.toast-icon { + width: 32px; + height: 32px; + border-radius: 50%; + background: var(--neon-lime); + color: #060806; + display: flex; + align-items: center; + justify-content: center; + font-weight: 900; + flex-shrink: 0; +} + +/* ========================================================================== + MOBILE STICKY ACTION BAR + ========================================================================== */ +.mobile-sticky-bar { + display: none; + position: fixed; + bottom: 0; + left: 0; + width: 100%; + background: rgba(255, 255, 255, 0.97); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border-top: 1.5px solid var(--neon-green); + padding: 10px 16px; + z-index: 95; + box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.1); +} + +.mobile-sticky-inner { + display: grid; + grid-template-columns: 1fr 1fr 1.2fr; + gap: 8px; +} + +.mobile-bar-btn { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 4px; + padding: 8px 6px; + font-size: 0.75rem; + font-weight: 700; + border-radius: var(--radius-sm); + text-align: center; +} + +.mobile-bar-call { + background: #f1f5f9; + border: 1px solid #cbd5e1; + color: var(--brand-black); +} + +.mobile-bar-text { + background: #f0fdf4; + border: 1.5px solid var(--neon-green); + color: var(--neon-text-shade); +} + +.mobile-bar-quote { + background: var(--neon-lime); + color: #060806; + box-shadow: 0 2px 10px rgba(0, 230, 118, 0.4); +} + +/* ========================================================================== + RESPONSIVE BREAKPOINTS (iPad, Tablet & Mobile) + ========================================================================== */ +/* Tablet & iPad Breakpoint: Catches all iPads (Landscape & Portrait: 768px - 1200px) */ +@media (max-width: 1200px) { + .nav-desktop { + display: none !important; + } + + .mobile-menu-btn { + display: flex !important; + } + + .phone-direct { + display: inline-flex !important; + padding: 8px 12px; + font-size: 0.88rem; + white-space: nowrap !important; + flex-shrink: 0 !important; + } + + .header-cta-group { + gap: 10px; + } + + .header-cta-group .open-quote-btn { + padding: 9px 16px; + font-size: 0.88rem; + white-space: nowrap !important; + flex-shrink: 0 !important; + } +} + +@media (max-width: 1024px) { + .hero-grid { + grid-template-columns: 1fr; + gap: 40px; + } + + .hero-image-wrapper img { + height: 380px; + } + + .calculator-layout { + grid-template-columns: 1fr; + gap: 32px; + } + + .calc-result-panel { + position: static; + } + + .testimonials-grid, + .mini-showcase-grid { + grid-template-columns: 1fr; + } + + .stats-grid { + grid-template-columns: repeat(2, 1fr); + } + + .footer-top { + grid-template-columns: 1fr 1fr; + } +} + +/* iPad Portrait (768px - 860px) */ +@media (max-width: 860px) { + .container { + padding-left: 18px; + padding-right: 18px; + } + + .brand-name { + font-size: 1.22rem; + } + + .brand-tagline { + font-size: 0.62rem; + letter-spacing: 0.08em; + } + + .phone-direct { + padding: 8px 10px; + font-size: 0.82rem; + } + + .header-cta-group .open-quote-btn { + padding: 8px 12px; + font-size: 0.82rem; + } + + .header-cta-group { + gap: 8px; + } +} + +/* Smartphone / Handheld Breakpoint (<= 640px) */ +@media (max-width: 640px) { + .container { + padding-left: 14px; + padding-right: 14px; + } + + .header-cta-group { + gap: 8px; + } + + .header-cta-group .phone-direct { + display: none !important; + } + + .brand-tagline { + display: none; + } + + .brand-name { + font-size: 1.1rem; + } + + .logo-symbol { + width: 36px; + height: 36px; + } + + .mobile-menu-btn { + width: 38px; + height: 38px; + padding: 6px; + } + + .header-cta-group .open-quote-btn { + padding: 7px 11px; + font-size: 0.78rem; + } + + .mobile-sticky-bar { + display: block; + } + + body { + padding-bottom: 72px; /* offset for bottom sticky bar */ + } + + .stats-grid { + grid-template-columns: 1fr; + gap: 16px; + } + + .calculator-card { + padding: 24px 18px; + } + + .services-grid { + grid-template-columns: 1fr; + } + + .footer-top { + grid-template-columns: 1fr; + } + + .form-row { + grid-template-columns: 1fr; + } + + .announcement-bar { + font-size: 0.78rem; + } + + .hero-actions { + flex-direction: column; + width: 100%; + } + + .hero-actions .btn { + width: 100%; + } + + /* Before / After Slider Badge Collision Prevention */ + .ba-badge { + top: 10px; + padding: 4px 9px; + font-size: 0.7rem; + letter-spacing: 0.05em; + } + + .ba-badge-before { + left: 10px; + } + + .ba-badge-after { + right: 10px; + } + + .ba-badge .badge-text-sub { + display: none; + } + + .ba-handle { + width: 44px; + height: 44px; + } +} + +/* ========================================================================== + YARD CLEANUP SECTION & FEATURED PROJECTS SECTION (2-SECTION SPLIT) + ========================================================================== */ +.ba-trust-strip { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 16px; + margin-top: 36px; + max-width: 1000px; + margin-left: auto; + margin-right: auto; +} + +.ba-trust-item { + background: #ffffff; + border: 1.5px solid var(--border-card); + border-radius: var(--radius-md); + padding: 16px 14px; + display: flex; + align-items: center; + gap: 12px; + box-shadow: var(--shadow-sm); +} + +.ba-trust-icon { + width: 38px; + height: 38px; + border-radius: var(--radius-sm); + background: rgba(0, 200, 83, 0.1); + border: 1px solid rgba(0, 200, 83, 0.3); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + color: var(--neon-text-shade); +} + +.ba-trust-item span { + font-size: 0.86rem; + font-weight: 700; + color: var(--brand-black); + line-height: 1.35; +} + +/* Featured Projects Section */ +section#projects { + background: linear-gradient(180deg, #edf5f0 0%, #e2ece5 100%); + border-bottom: 2px solid #cad8cf; + box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.02); +} + +.featured-projects-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 32px; + max-width: 1060px; + margin: 0 auto; +} + +@media (max-width: 860px) { + .ba-trust-strip { + grid-template-columns: repeat(2, 1fr); + } + + .featured-projects-grid { + grid-template-columns: 1fr; + } +} + +@media (max-width: 480px) { + .ba-trust-strip { + grid-template-columns: 1fr; + } +} + + +/* ========================================================================== + SUBPAGE HEADER, BREADCRUMBS & INNER HEROES + ========================================================================== */ +.subpage-hero { + position: relative; + padding: 60px 0 80px; + background: radial-gradient(1000px circle at 80% 20%, rgba(0, 230, 118, 0.12) 0%, transparent 60%), + linear-gradient(180deg, #e3f5ea 0%, #edf8f2 50%, #f4fbf7 100%); + border-bottom: 2px solid #c8e6d3; +} + +.breadcrumbs { + display: flex; + align-items: center; + gap: 8px; + font-size: 0.86rem; + color: var(--text-secondary); + margin-bottom: 20px; + font-weight: 600; +} + +.breadcrumbs a { + color: var(--text-primary); + text-decoration: none; + transition: color var(--transition-fast); +} + +.breadcrumbs a:hover { + color: var(--neon-text-shade); +} + +.breadcrumbs span.separator { + color: var(--text-muted); +} + +.subpage-title { + font-size: clamp(2.2rem, 4.2vw, 3.4rem); + font-weight: 900; + line-height: 1.1; + letter-spacing: -0.02em; + color: var(--brand-black); + margin-bottom: 20px; + text-transform: uppercase; +} + +.subpage-subtitle { + font-size: 1.15rem; + line-height: 1.68; + color: var(--text-secondary); + max-width: 780px; + margin-bottom: 32px; +} + +/* ========================================================================== + CONTACT PAGE LAYOUT & FORM SUBMISSIONS + ========================================================================== */ +.contact-section { + padding: 80px 0; + background: linear-gradient(180deg, #eaeff5 0%, #dde4ec 100%); +} + +.contact-grid { + display: grid; + grid-template-columns: 1fr 1.35fr; + gap: 40px; + align-items: start; +} + +.contact-info-panel { + display: flex; + flex-direction: column; + gap: 20px; +} + +.contact-card { + background: #ffffff; + border: 1.5px solid var(--border-card); + border-radius: var(--radius-md); + padding: 24px; + box-shadow: var(--shadow-sm); + display: flex; + align-items: flex-start; + gap: 16px; + transition: all var(--transition-fast); +} + +.contact-card:hover { + border-color: var(--neon-green); + transform: translateY(-2px); + box-shadow: var(--shadow-card); +} + +.contact-card-icon { + width: 48px; + height: 48px; + border-radius: var(--radius-sm); + background: rgba(0, 200, 83, 0.1); + border: 1.5px solid rgba(0, 200, 83, 0.35); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} + +.contact-card-icon svg { + stroke: var(--neon-text-shade); +} + +.contact-card-content h4 { + font-size: 1.05rem; + font-weight: 800; + color: var(--brand-black); + margin-bottom: 4px; +} + +.contact-card-content p { + font-size: 0.88rem; + color: var(--text-secondary); + line-height: 1.5; + margin-bottom: 8px; +} + +.contact-card-link { + display: inline-flex; + align-items: center; + gap: 6px; + font-family: var(--font-heading); + font-size: 0.95rem; + font-weight: 800; + color: var(--neon-text-shade); + text-decoration: none; +} + +.contact-form-panel { + background: #ffffff; + border: 1.5px solid var(--border-card); + border-radius: var(--radius-lg); + padding: 40px; + box-shadow: var(--shadow-card); + position: relative; + overflow: hidden; +} + +.contact-form-panel::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: linear-gradient(90deg, transparent, var(--neon-green), transparent); +} + +.contact-form-header { + margin-bottom: 28px; +} + +.contact-form-header h3 { + font-size: 1.6rem; + font-weight: 900; + color: var(--brand-black); + margin-bottom: 8px; +} + +.contact-form-header p { + font-size: 0.94rem; + color: var(--text-secondary); + line-height: 1.5; +} + +.form-submission-success { + display: none; + background: #f0fdf4; + border: 2px solid var(--neon-green); + border-radius: var(--radius-md); + padding: 28px; + text-align: center; + animation: fadeIn 0.4s ease; +} + +.form-submission-success.show { + display: block; +} + +.success-icon-box { + width: 60px; + height: 60px; + border-radius: 50%; + background: var(--neon-green); + color: #060a08; + display: flex; + align-items: center; + justify-content: center; + margin: 0 auto 16px; +} + +/* ========================================================================== + SERVICE DETAIL PAGES (SCOPE, PRICING & TRUST) + ========================================================================== */ +.service-content-section { + padding: 80px 0; +} + +.service-content-grid { + display: grid; + grid-template-columns: 1.3fr 0.7fr; + gap: 50px; +} + +.service-scope-list { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 16px; + margin: 30px 0; +} + +.service-scope-item { + background: #ffffff; + border: 1.5px solid var(--border-card); + border-radius: var(--radius-md); + padding: 18px; + display: flex; + align-items: flex-start; + gap: 12px; + box-shadow: var(--shadow-sm); +} + +.service-scope-item svg { + color: var(--neon-green); + flex-shrink: 0; + margin-top: 2px; +} + +.service-scope-item h5 { + font-size: 0.96rem; + font-weight: 800; + color: var(--brand-black); + margin-bottom: 4px; +} + +.service-scope-item p { + font-size: 0.82rem; + color: var(--text-secondary); + line-height: 1.4; +} + +.service-sidebar { + display: flex; + flex-direction: column; + gap: 24px; +} + +.service-sidebar-card { + background: #ffffff; + border: 1.5px solid var(--border-card); + border-radius: var(--radius-md); + padding: 28px; + box-shadow: var(--shadow-sm); +} + +.service-sidebar-card h4 { + font-size: 1.15rem; + font-weight: 800; + color: var(--brand-black); + margin-bottom: 12px; +} + +@media (max-width: 1024px) { + .contact-grid { + grid-template-columns: 1fr; + } + + .service-content-grid { + grid-template-columns: 1fr; + } +} + +@media (max-width: 640px) { + .contact-form-panel { + padding: 26px 18px; + } + + .service-scope-list { + grid-template-columns: 1fr; + } +} + diff --git a/tumbleweed-removal.html b/tumbleweed-removal.html new file mode 100644 index 0000000..699b310 --- /dev/null +++ b/tumbleweed-removal.html @@ -0,0 +1,446 @@ + + + + + + Tumbleweed Removal & Windstorm Yard Cleanouts Antelope Valley | Next Gen + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + +

+ Tumbleweed Removal &
+ Yard Cleanouts +

+

+ High Desert winds blowing Russian thistle and tumbleweeds over your fence? We pitchfork, bag, crush, and haul away truckloads of tumbleweeds and yard clutter in a single visit. +

+
+ + + + Call Dispatch: (661) 581-7278 + +
+
+
+ + +
+
+
+ +
+

+ Fast Relief from Windblown Desert Tumbleweeds +

+

+ In Palmdale and Lancaster, seasonal winds often push thousands of prickly tumbleweeds into backyards, stacking them roof-high against fences, blocking patios, and creating severe fire danger right next to your home. +

+

+ Trying to crush and bag tumbleweeds by hand with ordinary city trash cans is agonizing and can take weeks. Next Gen arrives with dedicated high-capacity haul trailers, heavy pitchforks, canvas tarps, and commercial blowers to clear your yard in just a few hours. +

+ +

+ Our Tumbleweed Cleanup Process: +

+ +
+
+ +
+
Fenceline Extraction
+

Carefully untangling and pulling tumbleweed walls away from wooden, vinyl, and chain-link fences without damaging posts.

+
+
+ +
+ +
+
Side Yard & Patio Clearing
+

Clearing blocked side gates, HVAC units, storage sheds, and dog runs where tumbleweeds wedge and trap rodents.

+
+
+ +
+ +
+
Stalk & Root Whacking
+

Trimming down the prickly green tumbleweed roots and ground stalks so they don't resprout after the next rain.

+
+
+ +
+ +
+
Thorough Fine Raking
+

Raking up all the small broken thistle needles, seeds, and dry sticks down to smooth, clean desert soil.

+
+
+ +
+ +
+
Compacted Trailer Haul-Away
+

We compress and load everything directly into our commercial trailer. Zero bags or debris left on your curb.

+
+
+ +
+ +
+
Disposal Fees Included
+

Transparent flat pricing with all dump and green-waste transfer station fees 100% included.

+
+
+
+ + +
+

Tumbleweed FAQs

+
+
+ How many tumbleweeds can you haul in one trip? +
+ Our trailers are equipped with high utility walls and heavy-duty compression tarps. We can haul up to 15 to 20 cubic yards of compressed tumbleweeds in a single trip, enough to clear even severely impacted residential properties. +
+
+
+ Can you remove tumbleweeds without damaging my vinyl fence? +
+ Yes! Heavy machinery will crack vinyl and warp wood. Our crew manually works down the pile with pitchforks and leather gloves to safely liberate your fence without scratching or snapping panels. +
+
+
+
+ +
+ + +
+
+

Service Snapshot

+
    +
  • + Typical Time: + 2 – 4 Hours (Same Day) +
  • +
  • + Includes: + Labor, Raking, Haul & Dump Fees +
  • +
  • + Urgency: + 24-Hr Windstorm Dispatch +
  • +
+ + + Call (661) 581-7278 + +
+ +
+

Text A Photo Of The Pile

+

+ Take a quick photo showing how high the tumbleweeds are piled against your fence. We'll text back a firm quote immediately. +

+ + + Text Photo to (661) 581-7278 + +
+
+ +
+
+
+ + +
+
+
+

Get Rid Of The Tumbleweeds Today

+

+ Don't let dry thistles sit against your fence another day. Let Next Gen clear and haul them away today. +

+ +
+
+
+
+ + + + + + + + + + +
+
+ +
+
+
Request Dispatched!
+
A Next Gen Antelope Valley team member will reach out shortly.
+
+
+ + +
+
+ + + Call + + + + Text Photo + + +
+
+ + + + diff --git a/weed-abatement.html b/weed-abatement.html new file mode 100644 index 0000000..92aa9b7 --- /dev/null +++ b/weed-abatement.html @@ -0,0 +1,455 @@ + + + + + + LA County Weed Abatement Palmdale & Lancaster | Next Gen Landscaping + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + +

+ LA County Fire Hazard
+ Weed Abatement +

+

+ Don't let County Agricultural Commissioner or Fire Department violation notices turn into thousand-dollar penalties. Next Gen clears, cuts, rakes, and hauls weeds down to fire-safe ground across Palmdale, Lancaster, and Quartz Hill. +

+
+ + + + Call Dispatch: (661) 581-7278 + +
+
+
+ + +
+
+
+ + +
+

+ Comprehensive Defensible Space Without Property Damage +

+

+ Every spring and summer, the Antelope Valley experiences explosive growth of desert mustard, Russian thistle, and cheatgrass. Once dried by High Desert heat and 40mph wind gusts, these weeds become extreme fire hazards that ignite in seconds. +

+

+ Unlike large agricultural contractors who bring heavy tractors that chew up sprinklers, damage wooden fences, and gouge dirt driveways, Next Gen uses high-powered commercial string trimmers, commercial mowers, and hard-tooth rakes. We cut right down to the ground along fencelines, corners, and property lines with surgical precision. +

+ +

+ What Our Fire Clearance Service Includes: +

+ +
+
+ +
+
100-Ft Defensible Perimeter
+

Full clearance around all residential structures, garages, sheds, and propane tanks as mandated by county code.

+
+
+ +
+ +
+
Fence & Property Line Clearing
+

Weed whacking directly against chain link, vinyl, and wood fencing where dry weeds pile up and catch fire.

+
+
+ +
+ +
+
Road & Driveway Fire Breaks
+

10-foot cleared buffers along access roads, easements, and dirt driveways for emergency vehicle access.

+
+
+ +
+ +
+
Hard Raking & Clean Ground Finish
+

We don't just scalp weeds and leave dry flammable chaff. We rake the surface clean to stop fire propagation.

+
+
+ +
+ +
+
Complete Trailer Haul-Away
+

All cut tumbleweeds, dry stalks, and organic waste are loaded directly into our haul trailers and taken to licensed facilities.

+
+
+ +
+ +
+
Photo Proof for County Inspector
+

We provide high-resolution timestamped photos of the cleared property so you can submit verification immediately.

+
+
+
+ + +
+

Weed Abatement FAQs

+
+
+ What happens if I miss the county weed clearance deadline? +
+ If you miss the deadline, the county sends third-party contractors to clear the lot and bills you through property tax assessments at heavily inflated rates (often $1,200 to $2,500+) plus mandatory administrative citation fees. Hiring Next Gen beforehand saves you hundreds of dollars and guarantees an inspection pass. +
+
+
+ Do you use tractors or heavy machinery? +
+ No. We use commercial walk-behind mowers, commercial-grade string trimmers, and rakes. This protects residential sprinkler heads, underground PVC pipes, and fences that tractors routinely destroy. +
+
+
+
+ +
+ + +
+
+

Service Snapshot

+
    +
  • + Typical Time: + Same Day (3 - 6 Hours) +
  • +
  • + Equipment: + Commercial Trimmers, Mowers, Rakes, Haul Trailer +
  • +
  • + Guarantee: + 100% County Sign-Off +
  • +
  • + Coverage: + Palmdale, Lancaster, Quartz Hill, Acton, Rosamond +
  • +
+ + + Call (661) 581-7278 + +
+ +
+

Text Photos For Faster Quote

+

+ Take 2 to 3 photos of the weed height and your property lines. We will text you back an exact quote within 30 minutes. +

+ + + Text Photos to (661) 581-7278 + +
+
+ +
+
+
+ + +
+
+
+

Pass Your County Fire Inspection Guaranteed

+

+ Call Next Gen today for fast, affordable, zero-stress weed abatement. +

+ +
+
+
+
+ + + + + + + + + + +
+
+ +
+
+
Request Dispatched!
+
A Next Gen Antelope Valley team member will reach out shortly.
+
+
+ + +
+
+ + + Call + + + + Text Photo + + +
+
+ + + +