Soap & Water — Property Care Services :root { –bg: #ffffff; –fg: #111111; –muted: #6b6b6b; –border: #111111; –border-soft: rgba(17,17,17,0.12); } * { box-sizing: border-box; margin: 0; padding: 0; } html { scroll-behavior: smooth; } body { font-family: -apple-system, BlinkMacSystemFont, “Helvetica Neue”, Helvetica, Arial, sans-serif; background: var(–bg); color: var(–fg); line-height: 1.5; -webkit-font-smoothing: antialiased; } a { color: inherit; text-decoration: none; } .container { max-width: 1200px; margin: 0 auto; padding: 0 32px; } /* NAV */ nav { position: sticky; top: 0; z-index: 50; background: rgba(255,255,255,0.92); backdrop-filter: blur(10px); border-bottom: 1px solid var(–border); } .nav-inner { display: flex; justify-content: space-between; align-items: center; padding: 20px 32px; max-width: 1200px; margin: 0 auto; } .logo { display: inline-flex; align-items: center; color: #2a2a2a; font-weight: 900; font-size: 22px; letter-spacing: -0.04em; line-height: 1; } .nav-links { display: flex; gap: 32px; } .nav-links a { color: var(–fg); font-size: 14px; font-weight: 600; letter-spacing: 0.02em; text-transform: uppercase; border-bottom: 1px solid transparent; padding-bottom: 2px; transition: border-color 0.2s; } .nav-links a:hover, .nav-links a.active { border-bottom-color: var(–fg); } .btn { display: inline-block; padding: 14px 28px; background: var(–fg); color: var(–bg); font-size: 14px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; border: 1px solid var(–fg); transition: background 0.2s, color 0.2s; cursor: pointer; } .btn:hover { background: var(–bg); color: var(–fg); } .btn-outline { background: var(–bg); color: var(–fg); } .btn-outline:hover { background: var(–fg); color: var(–bg); } /* HERO */ .hero { padding: 140px 0 120px; } .badge { display: inline-flex; align-items: center; gap: 10px; padding: 8px 16px; border: 1px solid var(–fg); font-size: 12px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; margin-bottom: 48px; } .badge .dot { width: 8px; height: 8px; background: var(–fg); border-radius: 50%; } h1 { font-weight: 900; font-size: clamp(56px, 14vw, 180px); line-height: 0.9; letter-spacing: -0.05em; color: #2a2a2a; margin-bottom: 40px; } .hero p { font-size: clamp(18px, 2vw, 22px); color: var(–fg); max-width: 620px; margin-bottom: 48px; font-weight: 400; } .hero-buttons { display: flex; gap: 12px; flex-wrap: wrap; } /* SECTIONS */ section { padding: 120px 0; border-top: 1px solid var(–border); } .section-header { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 80px; flex-wrap: wrap; gap: 24px; } .section-label { font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; } h2 { font-size: clamp(48px, 8vw, 110px); letter-spacing: -0.04em; font-weight: 900; line-height: 0.95; } .section-intro { font-size: 18px; max-width: 480px; color: var(–fg); } /* SERVICES LIST (homepage) */ .services-list { display: flex; flex-direction: column; } .service-row { display: grid; grid-template-columns: 80px 1fr auto; align-items: center; gap: 32px; padding: 40px 0; border-top: 1px solid var(–border); transition: padding 0.3s; } .service-row:hover { padding-left: 16px; padding-right: 16px; } .service-row:last-child { border-bottom: 1px solid var(–border); } .service-num { font-size: 16px; font-weight: 700; } .service-row h3 { font-size: clamp(28px, 4vw, 48px); font-weight: 900; letter-spacing: -0.03em; line-height: 1; } .service-row .arrow { font-size: 28px; font-weight: 700; transition: transform 0.2s; } .service-row:hover .arrow { transform: translateX(8px); } @media (max-width: 768px) { .service-row { grid-template-columns: 40px 1fr; gap: 16px; } .service-row .arrow { display: none; } } /* WHY US */ .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 0; } .card { padding: 48px 32px 48px 0; border-top: 1px solid var(–border); } .card:not(:last-child) { border-right: 1px solid var(–border); padding-right: 32px; } .card-num { font-size: 14px; font-weight: 700; letter-spacing: 0.08em; margin-bottom: 32px; display: block; } .card h3 { font-size: 28px; margin-bottom: 16px; letter-spacing: -0.02em; font-weight: 900; line-height: 1.05; } .card p { color: var(–muted); font-size: 16px; } @media (max-width: 768px) { .card { padding: 32px 0; border-right: none !important; } } /* ABOUT */ .about-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: start; } .about-text { font-size: 20px; line-height: 1.5; } .about-text p { margin-bottom: 20px; } .about-stats { display: grid; grid-template-columns: repeat(2, 1fr); border-top: 1px solid var(–border); border-left: 1px solid var(–border); margin-top: 48px; } .stat { padding: 32px; border-right: 1px solid var(–border); border-bottom: 1px solid var(–border); } .stat .num { font-size: 56px; font-weight: 900; letter-spacing: -0.04em; display: block; line-height: 1; } .stat .label { font-size: 12px; text-transform: uppercase; letter-spacing: 0.1em; margin-top: 12px; font-weight: 700; } @media (max-width: 768px) { .about-grid { grid-template-columns: 1fr; gap: 40px; } } /* CONTACT */ .contact { padding: 160px 0; text-align: center; } .contact h2 { font-size: clamp(56px, 14vw, 200px); line-height: 0.9; margin-bottom: 48px; } .contact-buttons { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; } .email-link { font-size: clamp(28px, 4vw, 44px); font-weight: 900; letter-spacing: -0.02em; border-bottom: 2px solid var(–fg); margin-bottom: 48px; display: inline-block; transition: opacity 0.2s; } .email-link:hover { opacity: 0.6; } /* FOOTER */ footer { border-top: 1px solid var(–border); padding: 48px 0; } .footer-inner { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 24px; } .socials { display: flex; gap: 24px; } .socials a { font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; border-bottom: 1px solid transparent; padding-bottom: 2px; transition: border-color 0.2s; } .socials a:hover { border-bottom-color: var(–fg); } .copyright { font-size: 13px; font-weight: 600; letter-spacing: 0.04em; } @media (max-width: 640px) { .nav-links { display: none; } .hero { padding: 80px 0 60px; } section { padding: 80px 0; } .container { padding: 0 24px; } }
Booking now for the season

Soap & Water

Property care done right. From sparkling windows to exterior maintenance, we keep homes looking their best — inside and out.

Services.

A complete property care toolkit — one trusted team for windows, washing, rentals, and everything in between.

We’re a small, local team that treats every property like it’s our own. Reliable, insured, and easy to work with.

The difference.

01 / Trusted

Fully Insured

Licensed and insured for every job. Peace of mind built in from the first call.

02 / Reliable

On Time, Every Time

We show up when we say we will. Clear communication, no surprises.

03 / Thorough

Detail-Obsessed

We sweat the small stuff so your property looks its absolute best, every visit.

We are
Soap & Water.

We’re a local property care team built on the idea that every home deserves consistent, careful attention from a team you can trust.

Whether you own one home, manage a portfolio of properties, or simply want your windows to sparkle, we’re the team to call.

500+
Properties
3
Services
100%
Insured
5★
Rated