skip to main content
  • Page CSS: /* Target your specific template structure - gap fix */ #main.container, .container, .row, .col-xs-12, .com-content-article.item-page { margin-top: 0 !important; padding-top: 0 !important; } body { margin: 0 !important; padding: 0 !important; } .com-content-article.item-page { margin-top: -15px !important; } /* ===== ULTRA-TARGETED fix - only hero text ===== */ html, body { overflow-x: hidden !important; margin: 0; padding: 0; } /* Remove template containers but NOT affecting header/footer */ .item-page .mrx, .com-content-article .mrx, .page-content .mrx { overflow-x: visible !important; max-width: none !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important; text-align: initial !important; } /* LASER-FOCUSED hero text centering with absolute maximum specificity */ html body .mrx .mrx-hero .mrx-container .hero-copy, html body .mrx .mrx-hero .mrx-container .hero-copy h1, html body .mrx .mrx-hero .mrx-container .hero-copy p { text-align: center !important; margin-left: auto !important; margin-right: auto !important; display: block !important; width: 100% !important; } /* Force the hero container to center its contents */ html body .mrx .mrx-hero .mrx-container { display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important; text-align: center !important; } /* Ensure hero-copy capsule is centered */ html body .mrx .mrx-hero .hero-copy { text-align: center !important; margin: 0 auto !important; display: inline-block !important; } /* Keep other sections centered (these were working) */ .mrx .mrx-band-soft, .mrx .mrx-band-soft .mrx-container, .mrx .mrx-band-soft .mrx-lead, .mrx .mrx-band-soft p { text-align: center !important; } .mrx .mrx-band-teal h2.mrx-white, .mrx .mrx-band-pine h2.mrx-white { text-align: center !important; } .mrx .mrx-cta, .mrx .mrx-cta .mrx-container, .mrx .mrx-cta h2, .mrx .mrx-cta p { text-align: center !important; } .mrx #contact, .mrx #contact .mrx-container, .mrx #contact h2, .mrx #contact .mrx-lead, .mrx #contact p { text-align: center !important; } .mrx .mrx-center, .mrx .mrx-center h2, .mrx .mrx-center p { text-align: center !important; } .mrx .mrx-buttons { display: flex !important; justify-content: center !important; text-align: center !important; } /* Exception for left-aligned sections */ .mrx .mrx-leftalign, .mrx .mrx-leftalign * { text-align: left !important; } /* Exception for service grid content which should be left-aligned within cards */ .mrx .mrx-service-grid .mrx-card, .mrx .mrx-service-grid .mrx-card *, .mrx .mrx-service-grid .mrx-card h3, .mrx .mrx-service-grid .mrx-card p, .mrx .mrx-service-grid .mrx-card ul, .mrx .mrx-service-grid .mrx-card li { text-align: left !important; } /* Exception for FAQ content */ .mrx .mrx-faq .faq-body, .mrx .mrx-faq .faq-body *, .mrx .mrx-faq summary { text-align: left !important; } /* Exception for checklist items */ .mrx .mrx-check, .mrx .mrx-check li { text-align: left !important; } /* ===== Scoped to .mrx to avoid template collisions ===== */ .mrx:where(*){ box-sizing:border-box } .mrx{ inline-size:100%; overflow-x:clip; width: 100%; position: relative; } .mrx img{ max-width:100%; height:auto; display:block } .mrx{ --brand:#2fb673; --ink:#0b2a2e; --bg-1:#0B2A2E; --bg-2:#0D3D46; --bg-3:#0F5C64; --soft:#f5fbf9; --maxw:1140px; --padY:clamp(20px,4vw,44px); --padX:clamp(14px,2.6vw,26px); --radius:18px; --shadow:0 10px 24px rgba(0,0,0,.12); /* HERO IMAGE (absolute path for Joomla) */ --hero-image:url('/images/apchero-vacation-rental-cleaning.jpg'); /* Focal + spacing */ --hero-pos-y:40%; --hero-pad-min:110px; --hero-pad-vw:16vw; --hero-pad-max:220px; /* Hero text capsule tones */ --hero-chip-bg: linear-gradient(180deg, rgba(0,0,0,.32), rgba(0,0,0,.18)); --hero-chip-shadow: 0 8px 26px rgba(0,0,0,.35), 0 2px 8px rgba(0,0,0,.25); } @media (max-width:640px){ .mrx{ --hero-pos-y:46% } } /* ===== Layout ===== */ .mrx .mrx-container{ max-width:var(--maxw); margin:0 auto; padding:0 var(--padX) } .mrx .mrx-section{ padding:var(--padY) 0 } /* ENHANCED full-bleed (stronger method for Joomla) */ .mrx .mrx-fullbleed{ position:relative; width: 100vw !important; left: 50% !important; right: 50% !important; margin-left: -50vw !important; margin-right: -50vw !important; padding-left: 0 !important; padding-right: 0 !important; } /* Ensure container inside full-bleed works */ .mrx .mrx-fullbleed .mrx-container { max-width: var(--maxw); margin: 0 auto; padding: 0 var(--padX); width: 100%; } /* ===== HERO (parallax; iOS fallback) ===== */ .mrx .mrx-hero{ color:#fff; text-align:center; background: var(--hero-image) center var(--hero-pos-y)/cover fixed; padding:clamp(var(--hero-pad-min), var(--hero-pad-vw), var(--hero-pad-max)) 0; } @supports (-webkit-touch-callout:none){ .mrx .mrx-hero{ background: var(--hero-image) center var(--hero-pos-y)/cover no-repeat; } } /* ===== Hero text capsule ===== */ .mrx .hero-copy{ display:inline-block; background: var(--hero-chip-bg); border-radius: 14px; box-shadow: var(--hero-chip-shadow); padding: clamp(14px, 2.4vw, 20px) clamp(16px, 3vw, 28px); backdrop-filter: saturate(110%) blur(0.25px); max-width:min(92vw, 980px); } .mrx .mrx-hero h1{ margin:0; color:#f6fbf9; text-transform:uppercase; text-align:center; letter-spacing:.04em; font-weight:800; line-height:1.08; white-space:normal; text-wrap:balance; font-size:clamp(24px,3.2vw,40px); text-shadow: 0 3px 18px rgba(0,0,0,.65), 0 2px 6px rgba(0,0,0,.45); overflow-wrap:anywhere; word-break:normal; hyphens:auto; -webkit-hyphens:auto; } .mrx .mrx-hero p{ margin:.6rem auto 0; max-width:860px; font-size:clamp(16px,1.6vw,19px); line-height:1.55; color:#ffffff; text-wrap:pretty; text-shadow: 0 2px 12px rgba(0,0,0,.55), 0 1px 4px rgba(0,0,0,.35); overflow-wrap:break-word; hyphens:auto; -webkit-hyphens:auto; } /* ===== Bands & text ===== */ .mrx .mrx-band-teal{ background:linear-gradient(180deg,var(--bg-1),var(--bg-2)); color:#eaf4f5 } .mrx .mrx-band-pine{ background:linear-gradient(180deg,var(--bg-2),var(--bg-3)); color:#eaf4f5 } .mrx .mrx-band-soft{ background:var(--soft); color:var(--ink) } .mrx h2{ margin:0 0 10px; text-align:center; overflow-wrap:anywhere } .mrx .mrx-center{ text-align:center } .mrx .mrx-center h2{ text-align:center } .mrx .mrx-center p{ text-align:center } .mrx .mrx-lead{ text-wrap:pretty; hyphens:auto; -webkit-hyphens:auto; font-size:clamp(18px,1.8vw,19px); line-height:1.55; letter-spacing:-0.005em; color:#1f2937; margin:0 auto; max-width:860px; text-align:center; overflow-wrap:break-word; } .mrx .mrx-white{ color:#fff !important } /* Force center alignment ONLY for sections that should be centered */ .mrx .mrx-band-soft { text-align:center } .mrx .mrx-band-teal h2.mrx-white { text-align:center !important } .mrx .mrx-band-pine h2.mrx-white { text-align:center !important } .mrx .mrx-cta { text-align:center } .mrx #contact { text-align:center } /* ===== Cards + buttons ===== */ .mrx .mrx-card{ background:#fff; border-radius:var(--radius); box-shadow:var(--shadow); padding:clamp(16px,2.8vw,24px); } .mrx .mrx-buttons{ display:flex; flex-wrap:wrap; gap:12px; justify-content:center } .mrx .mrx-btn{ background:var(--brand); color:#fff; text-decoration:none; padding:12px 18px; border-radius:999px; display:inline-block; font-weight:700; line-height:1.1; white-space:nowrap; } /* ===== Split: text left, visual right ===== */ .mrx .mrx-split{ display:grid; gap:clamp(14px,3vw,24px); grid-template-columns:1.05fr .95fr; max-width:1100px; margin:0 auto; align-items:stretch; } @media (max-width:980px){ .mrx .mrx-split{ grid-template-columns:1fr; } } .mrx .mrx-image{ width:100%; aspect-ratio:4/3; height:auto; min-height:clamp(260px,32vw,420px); overflow:hidden; border-radius:var(--radius); background:#e5f6f1; border:2px dashed rgba(15,92,100,.35); display:grid; place-items:center; color:#0F5C64; justify-self:end; } .mrx .mrx-image>img{ width:100%; height:100%; object-fit:cover; object-position:center 45%; display:block } /* ===== Map container ===== */ .mrx .mrx-map{ width:100%; aspect-ratio:4/3; min-height:clamp(260px,32vw,420px); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); background:#e5f6f1; justify-self:end; } .mrx .mrx-map iframe{ width:100%; height:100%; border:0; display:block } /* ===== Left-align block behavior ===== */ .mrx .mrx-leftalign h2{ text-align:left } .mrx .mrx-leftalign .mrx-split{ align-items:stretch; justify-items:stretch } .mrx .mrx-leftalign .text{ text-align:left; justify-self:start; align-self:stretch; display:flex; flex-direction:column; justify-content:center; gap:10px; } .mrx .mrx-leftalign .text h2{ margin:0 0 10px } .mrx .mrx-leftalign .text p, .mrx .mrx-leftalign .text li{ overflow-wrap:break-word; hyphens:auto } .mrx .mrx-leftalign .mrx-image, .mrx .mrx-leftalign .mrx-map{ justify-self:end } @media (max-width:980px){ .mrx .mrx-leftalign .mrx-split{ grid-template-columns:1fr; row-gap:16px } .mrx .mrx-leftalign .text{ align-self:stretch; justify-self:stretch; width:100% } .mrx .mrx-leftalign .mrx-image, .mrx .mrx-leftalign .mrx-map{ justify-self:stretch } } /* ===== Checklists ===== */ .mrx .mrx-check{ list-style:none; padding:0; margin:10px 0 0; max-width:760px } .mrx .mrx-check li{ position:relative; padding-left:28px; margin:8px 0; text-align:left; overflow-wrap:break-word } .mrx .mrx-check li::before{ content:"✓"; position:absolute; left:0; top:0; line-height:1; font-weight:700 } /* ===== Services as boxes (FIXED MOBILE GRID) ===== */ .mrx .mrx-service-grid{ display:grid; gap:16px; grid-template-columns:1fr; /* Mobile first: single column */ max-width:1100px; margin:0 auto; } /* Tablet breakpoint */ @media (min-width:600px){ .mrx .mrx-service-grid{ grid-template-columns:repeat(2, 1fr); } } /* Desktop breakpoint */ @media (min-width:900px){ .mrx .mrx-service-grid{ grid-template-columns:repeat(3, 1fr); } } .mrx .mrx-service-grid .mrx-card{ color:var(--ink) } .mrx .mrx-service-grid .mrx-card *{ color:var(--ink) } .mrx .mrx-service-grid .mrx-card h3{ margin-top:0; font-size:1.14rem; font-weight:800; letter-spacing:.01em; line-height:1.2; overflow-wrap:anywhere; } .mrx .mrx-service-grid .mrx-card p, .mrx .mrx-service-grid .mrx-card ul{ margin:0 0 .8rem 0; line-height:1.6 } .mrx .mrx-service-grid .mrx-card ul{ padding-left:1.1rem } .mrx .mrx-service-grid .mrx-card li{ margin:.35rem 0 } /* ===== FAQ ===== */ .mrx .mrx-faq{ margin-top:12px } .mrx .mrx-faq details{ background:#ffffff; border-radius:12px; box-shadow:var(--shadow); margin:.75rem 0; overflow:hidden } .mrx .mrx-faq summary{ cursor:pointer; list-style:none; padding:1rem 1.1rem; position:relative; font-weight:700; color:#0F5C64; white-space:normal; overflow-wrap:anywhere; } .mrx .mrx-faq summary::-webkit-details-marker{ display:none } .mrx .mrx-faq summary::after{ content:"+"; position:absolute; right:1rem; top:50%; transform:translateY(-50%); font-weight:700 } .mrx .mrx-faq details[open] summary::after{ content:"–" } .mrx .mrx-faq .faq-body{ padding:0 1.1rem 1rem 1.1rem; color:#0B2A2E } /* ===== CTA band — a touch roomier ===== */ .mrx .mrx-cta{ padding: calc(var(--padY) * 1.35) 0; } /* ===== Hover nicety ===== */ @media (hover:hover){ .mrx .mrx-btn:hover{ filter:brightness(1.05) } } /* ===== MOBILE/TABLET TYPO WRAP TUNING ===== */ /* Very small phones */ @media (max-width:380px){ .mrx .mrx-hero h1{ font-size:clamp(22px, 7.2vw, 28px); line-height:1.1 } .mrx .mrx-hero p{ font-size:15px } .mrx .mrx-btn{ padding:11px 14px; font-size:15px } .mrx .mrx-buttons{ flex-direction:column; align-items:center } } /* iPad-ish widths (portrait & landscape) */ @media (min-width:768px) and (max-width:1024px){ .mrx .mrx-hero h1{ font-size:clamp(28px, 3vw, 36px) } .mrx .mrx-hero p{ font-size:clamp(16px,1.4vw,18px) } .mrx .mrx-split{ gap:clamp(16px,2.4vw,22px) } }

In Asheville's competitive vacation rental market, cleanliness isn't just appreciated—it's expected. Since 2012, Asheville Pristine Clean has provided eco-friendly, thorough cleaning services that help property owners maintain 5-star reviews while protecting their investments.

Elevate Your Guest Experience with Pristine, Non-Toxic Cleaning

Our specialized vacation rental cleaning services combine attention to detail with environmentally responsible practices. We understand that your property's cleanliness directly impacts your ratings, booking frequency, and ultimately, your revenue.

Our Comprehensive Vacation Rental Cleaning Services

Between-Guest Turnover Cleaning

  • Complete bathroom sanitization with eco-friendly products
  • Kitchen deep cleaning, including inside appliances and cabinets
  • Fresh bed making with careful attention to presentation
  • Thorough vacuuming with HEPA-filtered equipment
  • Streak-free window and mirror cleaning
  • Restocking amenities and arranging welcome materials

We prioritize quick response times to accommodate same-day bookings.

Deep Cleaning for Vacation Properties

  • Upholstery and carpet cleaning to remove deep-set allergens
  • Ceiling fan and light fixture dusting
  • Baseboards and trim detailing
  • Refrigerator deep cleaning
  • Oven and microwave degreasing
  • Window treatment cleaning

Helps maintain property condition and prevents buildup of guest-noticed issues.

Sustainable Cleaning Practices for Mountain Properties

  • Pollen and dust management during peak seasons
  • Natural solutions for local pest prevention
  • Eco-friendly mold and mildew treatments for humid conditions
  • Special attention to outdoor living spaces
  • Green cleaning solutions for mountain well water systems

Preserves both your property and Asheville's natural environment.

Areas We Serve for Vacation Rental Cleaning

  • Downtown Asheville
  • Biltmore Village
  • West Asheville
  • North Asheville
  • Montford Historic District
  • River Arts District
  • Black Mountain
  • Weaverville
  • Hendersonville
  • Candler
  • Woodfin
  • Arden
  • All locations within a 25-minute radius of our Patton Avenue office

Frequently Asked Questions

How quickly can you turn around a property between guests?

We prioritize vacation rental turnovers and can typically complete a standard cleaning in 2–4 hours, depending on property size. With advance notice, we can accommodate same-day turnovers to maximize your booking potential.

Do you provide linens and supplies, or just cleaning services?

We focus exclusively on cleaning services. However, we're happy to make beds with your linens and restock supplies you provide. We can recommend excellent local linen services if needed.

How do you handle property access for cleanings?

We work with lockboxes, keypad entries, property management companies, or other secure access methods according to your preference. All team members are thoroughly vetted and trained in security protocols.

What if something is damaged or missing after a guest stay?

During our cleaning process, we conduct a basic inventory check of major items and report any damages or missing items we notice. This helps you address issues promptly with departing guests.

Do you charge more for vacation rental cleaning than residential cleaning?

Vacation rental cleaning typically requires more intensive work than regular residential cleaning due to the thorough turnover requirements. We provide competitive pricing based on property size, features, and specific requirements. Contact us for a customized quote.

How do you handle cleaning supplies and restocking amenities?

We bring all necessary cleaning supplies and equipment. For guest amenities, we can either use supplies you provide or, for an additional fee, manage inventory and restocking of basic items.

Experience the Difference with Asheville Pristine Clean

Since 2012, we've helped Asheville vacation rental owners maintain pristine properties while staying true to our environmental values. Our commitment to non-toxic cleaning, local expertise, and exceptional service has made us a trusted partner throughout Western North Carolina.

Ready to elevate your guest experience?