Sample Page

T<!DOCTYPE html>

<html lang=”en”>

<head>

  <meta charset=”UTF-8″ />

  <meta name=”viewport” content=”width=device-width, initial-scale=1.0″ />

  <!– ═══════════════════════════════════════════════════

       PRIMARY SEO META TAGS

  ═══════════════════════════════════════════════════ –>

  <title>Pressure Washing Des Moines IA | Window & Gutter Cleaning | Every Nook and Cranny</title>

  <meta name=”description” content=”Des Moines’ #1 exterior cleaning company. Professional pressure washing, window cleaning, and gutter cleaning for homes in Des Moines, Ankeny, West Des Moines, Urbandale & Waukee. Free estimates. Call today!” />

  <meta name=”keywords” content=”pressure washing Des Moines IA, window cleaning Des Moines Iowa, gutter cleaning Des Moines, exterior house cleaning Des Moines, power washing Des Moines, soft wash Des Moines, house washing Des Moines Iowa, gutter cleaning Ankeny IA, window washing West Des Moines, pressure washing Urbandale, exterior cleaning Waukee Iowa” />

  <meta name=”robots” content=”index, follow” />

  <meta name=”author” content=”Every Nook and Cranny” />

  <link rel=”canonical” href=”https://www.everynookandcranny.org/” />

  <!– ═══════════════════════════════════════════════════

       GEO / LOCAL SEO TAGS

  ═══════════════════════════════════════════════════ –>

  <meta name=”geo.region” content=”US-IA” />

  <meta name=”geo.placename” content=”Des Moines, Iowa” />

  <meta name=”geo.position” content=”41.5868;-93.6250″ />

  <meta name=”ICBM” content=”41.5868, -93.6250″ />

  <!– ═══════════════════════════════════════════════════

       OPEN GRAPH (Social Sharing)

  ═══════════════════════════════════════════════════ –>

  <meta property=”og:type” content=”website” />

  <meta property=”og:url” content=”https://www.everynookandcranny.org/” />

  <meta property=”og:title” content=”Every Nook and Cranny | Des Moines Pressure Washing & Exterior Cleaning” />

  <meta property=”og:description” content=”Top-rated exterior cleaning in Des Moines, IA. Pressure washing, window cleaning, gutter cleaning. Serving Des Moines metro since 2010. Free estimates!” />

  <meta property=”og:image” content=”https://www.everynookandcranny.org/og-image.jpg” />

  <meta property=”og:locale” content=”en_US” />

  <meta property=”og:site_name” content=”Every Nook and Cranny” />

  <!– ═══════════════════════════════════════════════════

       TWITTER CARD

  ═══════════════════════════════════════════════════ –>

  <meta name=”twitter:card” content=”summary_large_image” />

  <meta name=”twitter:title” content=”Every Nook and Cranny | Des Moines Exterior Cleaning” />

  <meta name=”twitter:description” content=”Professional pressure washing, window & gutter cleaning in Des Moines, IA. Free estimates.” />

  <!– ═══════════════════════════════════════════════════

       LOCAL BUSINESS SCHEMA (JSON-LD)

  ═══════════════════════════════════════════════════ –>

  <script type=”application/ld+json”>

  {

    “@context”: “https://schema.org”,

    “@type”: “LocalBusiness”,

    “@id”: “https://www.everynookandcranny.org/#business”,

    “name”: “Every Nook and Cranny”,

    “description”: “Professional exterior house cleaning services in Des Moines, Iowa including pressure washing, window cleaning, and gutter cleaning.”,

    “url”: “https://www.everynookandcranny.org”,

    “telephone”: “+1-515-555-0199”,

    “email”: “info@everynookandcranny.org”,

    “foundingDate”: “2010”,

    “priceRange”: “$$”,

    “currenciesAccepted”: “USD”,

    “paymentAccepted”: “Cash, Credit Card, Check”,

    “image”: “https://www.everynookandcranny.org/logo.png”,

    “logo”: “https://www.everynookandcranny.org/logo.png”,

    “address”: {

      “@type”: “PostalAddress”,

      “streetAddress”: “2400 Ingersoll Ave”,

      “addressLocality”: “Des Moines”,

      “addressRegion”: “IA”,

      “postalCode”: “50312”,

      “addressCountry”: “US”

    },

    “geo”: {

      “@type”: “GeoCoordinates”,

      “latitude”: 41.5868,

      “longitude”: -93.6250

    },

    “areaServed”: [

      {“@type”: “City”, “name”: “Des Moines”, “sameAs”: “https://www.wikidata.org/wiki/Q41427”},

      {“@type”: “City”, “name”: “Ankeny”},

      {“@type”: “City”, “name”: “West Des Moines”},

      {“@type”: “City”, “name”: “Urbandale”},

      {“@type”: “City”, “name”: “Waukee”},

      {“@type”: “City”, “name”: “Johnston”},

      {“@type”: “City”, “name”: “Clive”},

      {“@type”: “City”, “name”: “Altoona”},

      {“@type”: “City”, “name”: “Norwalk”}

    ],

    “hasOfferCatalog”: {

      “@type”: “OfferCatalog”,

      “name”: “Exterior Cleaning Services”,

      “itemListElement”: [

        {

          “@type”: “Offer”,

          “itemOffered”: {

            “@type”: “Service”,

            “name”: “Pressure Washing Des Moines”,

            “description”: “Professional pressure and soft washing for driveways, siding, decks, patios and fences in Des Moines, Iowa.”

          }

        },

        {

          “@type”: “Offer”,

          “itemOffered”: {

            “@type”: “Service”,

            “name”: “Window Cleaning Des Moines”,

            “description”: “Interior and exterior window washing services for homes and businesses across the Des Moines metro.”

          }

        },

        {

          “@type”: “Offer”,

          “itemOffered”: {

            “@type”: “Service”,

            “name”: “Gutter Cleaning Des Moines”,

            “description”: “Full gutter cleaning, flushing, and inspection services in Des Moines and surrounding Iowa communities.”

          }

        }

      ]

    },

    “openingHoursSpecification”: [

      {

        “@type”: “OpeningHoursSpecification”,

        “dayOfWeek”: [“Monday”,”Tuesday”,”Wednesday”,”Thursday”,”Friday”],

        “opens”: “07:00”,

        “closes”: “18:00”

      },

      {

        “@type”: “OpeningHoursSpecification”,

        “dayOfWeek”: “Saturday”,

        “opens”: “08:00”,

        “closes”: “16:00”

      }

    ],

    “aggregateRating”: {

      “@type”: “AggregateRating”,

      “ratingValue”: “4.9”,

      “reviewCount”: “312”,

      “bestRating”: “5”

    },

    “review”: [

      {

        “@type”: “Review”,

        “reviewRating”: {“@type”: “Rating”, “ratingValue”: “5”},

        “author”: {“@type”: “Person”, “name”: “Michelle T.”},

        “reviewBody”: “Every Nook and Cranny transformed our home’s exterior! The pressure washing removed years of grime from our siding and driveway. Best exterior cleaning service in Des Moines!”

      },

      {

        “@type”: “Review”,

        “reviewRating”: {“@type”: “Rating”, “ratingValue”: “5”},

        “author”: {“@type”: “Person”, “name”: “Dave K.”},

        “reviewBody”: “Used them for gutter cleaning in Ankeny. On time, professional, and my gutters are completely clear. Will use again every fall!”

      }

    ]

  }

  </script>

  <!– Service Schema –>

  <script type=”application/ld+json”>

  {

    “@context”: “https://schema.org”,

    “@type”: “Service”,

    “name”: “Exterior House Cleaning Des Moines Iowa”,

    “provider”: {“@id”: “https://www.everynookandcranny.org/#business”},

    “serviceType”: “Exterior House Cleaning”,

    “areaServed”: {“@type”: “State”, “name”: “Iowa”},

    “hasOfferCatalog”: {

      “@type”: “OfferCatalog”,

      “name”: “Des Moines Exterior Cleaning Services”

    }

  }

  </script>

  <!– FAQ Schema –>

  <script type=”application/ld+json”>

  {

    “@context”: “https://schema.org”,

    “@type”: “FAQPage”,

    “mainEntity”: [

      {

        “@type”: “Question”,

        “name”: “How much does pressure washing cost in Des Moines, Iowa?”,

        “acceptedAnswer”: {

          “@type”: “Answer”,

          “text”: “Pressure washing costs in Des Moines typically range from $150–$400 for a standard home depending on size and surface. Driveways start at $100, full house washes from $200. We offer free no-obligation estimates.”

        }

      },

      {

        “@type”: “Question”,

        “name”: “How often should gutters be cleaned in Des Moines?”,

        “acceptedAnswer”: {

          “@type”: “Answer”,

          “text”: “We recommend cleaning gutters at least twice a year in Des Moines — once in spring after storms and once in late fall after leaves drop. Homes near trees may need cleaning 3–4 times annually.”

        }

      },

      {

        “@type”: “Question”,

        “name”: “Do you offer window cleaning services in Ankeny and West Des Moines?”,

        “acceptedAnswer”: {

          “@type”: “Answer”,

          “text”: “Yes! We serve the entire Des Moines metro including Ankeny, West Des Moines, Urbandale, Waukee, Johnston, Clive, Altoona, and Norwalk. Contact us for service in your area.”

        }

      },

      {

        “@type”: “Question”,

        “name”: “What is soft washing versus pressure washing?”,

        “acceptedAnswer”: {

          “@type”: “Answer”,

          “text”: “Pressure washing uses high-pressure water for hard surfaces like concrete driveways and brick. Soft washing uses lower pressure with cleaning solutions for delicate surfaces like vinyl siding, stucco, and roofs. We use the right method for each surface to prevent damage.”

        }

      }

    ]

  }

  </script>

  <!– Breadcrumb Schema –>

  <script type=”application/ld+json”>

  {

    “@context”: “https://schema.org”,

    “@type”: “BreadcrumbList”,

    “itemListElement”: [

      {“@type”: “ListItem”, “position”: 1, “name”: “Home”, “item”: “https://www.everynookandcranny.org/”},

      {“@type”: “ListItem”, “position”: 2, “name”: “Pressure Washing Des Moines”, “item”: “https://www.everynookandcranny.org/pressure-washing/”},

      {“@type”: “ListItem”, “position”: 3, “name”: “Window Cleaning Des Moines”, “item”: “https://www.everynookandcranny.org/window-cleaning/”},

      {“@type”: “ListItem”, “position”: 4, “name”: “Gutter Cleaning Des Moines”, “item”: “https://www.everynookandcranny.org/gutter-cleaning/”}

    ]

  }

  </script>

  <!– Google Fonts –>

  <link rel=”preconnect” href=”https://fonts.googleapis.com” />

  <link rel=”preconnect” href=”https://fonts.gstatic.com” crossorigin />

  <link href=”https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Inter:wght@300;400;500;600;700&display=swap” rel=”stylesheet” />

  <style>

    /* ─── TOKENS ─────────────────────────────────────────── */

    :root {

      –navy:      #0A1628;

      –navy-mid:  #112244;

      –sky:       #4A9FD4;

      –aqua:      #00C2FF;

      –aqua-glow: rgba(0,194,255,0.18);

      –white:     #FFFFFF;

      –gray-light:#F0F4F8;

      –gray-mid:  #CBD5E1;

      –gray-dark: #64748B;

      –text:      #1E293B;

      –green:     #22C55E;

      –font-display: ‘Bebas Neue’, sans-serif;

      –font-body:    ‘Inter’, sans-serif;

      –radius:    8px;

      –shadow:    0 4px 24px rgba(0,0,0,0.10);

      –shadow-lg: 0 12px 48px rgba(0,0,0,0.18);

    }

    /* ─── RESET ──────────────────────────────────────────── */

    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

    html { scroll-behavior: smooth; }

    body { font-family: var(–font-body); color: var(–text); background: var(–white); overflow-x: hidden; }

    img { max-width: 100%; display: block; }

    a { text-decoration: none; color: inherit; }

    ul { list-style: none; }

    /* ─── STICKY NAV ─────────────────────────────────────── */

    nav {

      position: fixed; top: 0; left: 0; right: 0; z-index: 999;

      background: rgba(10,22,40,0.96);

      backdrop-filter: blur(10px);

      border-bottom: 1px solid rgba(0,194,255,0.15);

      padding: 0 5%;

      height: 66px;

      display: flex; align-items: center; justify-content: space-between;

    }

    .nav-logo {

      font-family: var(–font-display);

      font-size: 1.7rem;

      letter-spacing: 2px;

      color: var(–white);

    }

    .nav-logo span { color: var(–aqua); }

    .nav-links { display: flex; gap: 2rem; align-items: center; }

    .nav-links a {

      color: var(–gray-mid);

      font-size: 0.85rem;

      font-weight: 500;

      text-transform: uppercase;

      letter-spacing: 1px;

      transition: color .2s;

    }

    .nav-links a:hover { color: var(–aqua); }

    .nav-cta {

      background: var(–aqua);

      color: var(–navy) !important;

      font-weight: 700 !important;

      padding: 0.5rem 1.2rem;

      border-radius: 4px;

      transition: background .2s, transform .15s !important;

    }

    .nav-cta:hover { background: #33cfff !important; transform: translateY(-1px); }

    .nav-phone { color: var(–aqua) !important; font-weight: 700 !important; font-size: 0.9rem !important; }

    /* ─── HERO ───────────────────────────────────────────── */

    .hero {

      position: relative;

      min-height: 100vh;

      background: linear-gradient(135deg, var(–navy) 0%, #0d2040 55%, #0e2d52 100%);

      display: flex; align-items: center;

      padding: 100px 5% 60px;

      overflow: hidden;

    }

    /* Water spray animation — the site’s signature */

    .water-canvas {

      position: absolute; inset: 0; pointer-events: none; overflow: hidden;

    }

    .spray-line {

      position: absolute;

      width: 2px;

      background: linear-gradient(to bottom, transparent, var(–aqua), transparent);

      opacity: 0;

      animation: spray 3s ease-in-out infinite;

      border-radius: 2px;

    }

    .spray-line:nth-child(1)  { left: 62%; height: 120px; animation-delay: 0s;    animation-duration: 2.8s; }

    .spray-line:nth-child(2)  { left: 65%; height: 80px;  animation-delay: 0.3s;  animation-duration: 3.1s; }

    .spray-line:nth-child(3)  { left: 68%; height: 140px; animation-delay: 0.6s;  animation-duration: 2.5s; }

    .spray-line:nth-child(4)  { left: 71%; height: 90px;  animation-delay: 0.9s;  animation-duration: 3.3s; }

    .spray-line:nth-child(5)  { left: 74%; height: 110px; animation-delay: 1.2s;  animation-duration: 2.7s; }

    .spray-line:nth-child(6)  { left: 59%; height: 70px;  animation-delay: 1.5s;  animation-duration: 3.0s; }

    .spray-line:nth-child(7)  { left: 77%; height: 100px; animation-delay: 1.8s;  animation-duration: 2.9s; }

    .spray-line:nth-child(8)  { left: 56%; height: 130px; animation-delay: 2.1s;  animation-duration: 3.2s; }

    .spray-line:nth-child(9)  { left: 80%; height: 85px;  animation-delay: 0.4s;  animation-duration: 2.6s; }

    .spray-line:nth-child(10) { left: 53%; height: 95px;  animation-delay: 1.1s;  animation-duration: 3.4s; }

    @keyframes spray {

      0%   { opacity: 0; transform: translateY(-60px) scaleX(1); }

      20%  { opacity: 0.7; }

      80%  { opacity: 0.4; }

      100% { opacity: 0; transform: translateY(100vh) scaleX(0.5); }

    }

    /* Mist glow blob */

    .hero-glow {

      position: absolute;

      right: 8%;

      top: 20%;

      width: 500px; height: 500px;

      background: radial-gradient(circle, rgba(0,194,255,0.12) 0%, transparent 70%);

      border-radius: 50%;

      animation: glowPulse 4s ease-in-out infinite alternate;

    }

    @keyframes glowPulse {

      from { transform: scale(1); opacity: 0.7; }

      to   { transform: scale(1.15); opacity: 1; }

    }

    .hero-content {

      position: relative; z-index: 2;

      max-width: 620px;

    }

    .hero-eyebrow {

      display: inline-flex; align-items: center; gap: 8px;

      background: rgba(0,194,255,0.12);

      border: 1px solid rgba(0,194,255,0.3);

      color: var(–aqua);

      font-size: 0.75rem;

      font-weight: 600;

      letter-spacing: 2px;

      text-transform: uppercase;

      padding: 6px 14px;

      border-radius: 20px;

      margin-bottom: 1.5rem;

    }

    .hero-eyebrow::before {

      content: ”;

      width: 6px; height: 6px;

      background: var(–aqua);

      border-radius: 50%;

      animation: blink 1.4s ease-in-out infinite;

    }

    @keyframes blink { 0%,100%{opacity:1} 50%{opacity:0.2} }

    .hero h1 {

      font-family: var(–font-display);

      font-size: clamp(3rem, 7vw, 5.5rem);

      line-height: 0.95;

      color: var(–white);

      letter-spacing: 2px;

      margin-bottom: 1.5rem;

    }

    .hero h1 .accent { color: var(–aqua); }

    .hero h1 .block { display: block; }

    .hero-sub {

      font-size: 1.1rem;

      color: #94A3B8;

      line-height: 1.7;

      max-width: 500px;

      margin-bottom: 2.5rem;

    }

    .hero-sub strong { color: var(–white); }

    .hero-actions { display: flex; gap: 1rem; flex-wrap: wrap; align-items: center; }

    .btn-primary {

      display: inline-flex; align-items: center; gap: 8px;

      background: var(–aqua);

      color: var(–navy);

      font-weight: 700;

      font-size: 0.95rem;

      padding: 0.9rem 2rem;

      border-radius: var(–radius);

      transition: transform .2s, box-shadow .2s;

      box-shadow: 0 0 24px rgba(0,194,255,0.4);

    }

    .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 0 36px rgba(0,194,255,0.6); }

    .btn-secondary {

      display: inline-flex; align-items: center; gap: 8px;

      background: transparent;

      color: var(–white);

      font-weight: 600;

      font-size: 0.95rem;

      padding: 0.9rem 2rem;

      border-radius: var(–radius);

      border: 1px solid rgba(255,255,255,0.25);

      transition: border-color .2s, background .2s;

    }

    .btn-secondary:hover { border-color: var(–aqua); background: rgba(0,194,255,0.06); }

    .hero-trust {

      margin-top: 3rem;

      display: flex; gap: 2rem; flex-wrap: wrap;

    }

    .trust-badge {

      display: flex; align-items: center; gap: 8px;

      color: #94A3B8;

      font-size: 0.82rem;

      font-weight: 500;

    }

    .trust-badge .icon { color: var(–green); font-size: 1rem; }

    /* Hero diagonal clip */

    .hero::after {

      content: ”;

      position: absolute;

      bottom: -2px; left: 0; right: 0;

      height: 80px;

      background: var(–white);

      clip-path: polygon(0 100%, 100% 0, 100% 100%);

    }

    /* ─── SECTION COMMONS ────────────────────────────────── */

    section { padding: 80px 5%; }

    .section-eyebrow {

      font-size: 0.75rem;

      font-weight: 700;

      letter-spacing: 3px;

      text-transform: uppercase;

      color: var(–sky);

      margin-bottom: 0.75rem;

    }

    .section-title {

      font-family: var(–font-display);

      font-size: clamp(2rem, 4vw, 3rem);

      color: var(–navy);

      letter-spacing: 1px;

      margin-bottom: 1rem;

    }

    .section-sub {

      color: var(–gray-dark);

      font-size: 1rem;

      line-height: 1.7;

      max-width: 600px;

    }

    .section-header { margin-bottom: 3rem; }

    .center { text-align: center; }

    .center .section-sub { margin: 0 auto; }

    /* ─── STATS BAR ──────────────────────────────────────── */

    .stats-bar {

      background: var(–navy);

      padding: 40px 5%;

      display: grid;

      grid-template-columns: repeat(4, 1fr);

      gap: 1rem;

      text-align: center;

    }

    .stat-item { padding: 1rem; }

    .stat-number {

      font-family: var(–font-display);

      font-size: 3rem;

      color: var(–aqua);

      letter-spacing: 2px;

      line-height: 1;

    }

    .stat-label {

      color: #94A3B8;

      font-size: 0.8rem;

      text-transform: uppercase;

      letter-spacing: 1.5px;

      margin-top: 0.4rem;

    }

    /* ─── SERVICES ───────────────────────────────────────── */

    .services { background: var(–gray-light); }

    .services-grid {

      display: grid;

      grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));

      gap: 1.5rem;

    }

    .service-card {

      background: var(–white);

      border-radius: 12px;

      overflow: hidden;

      box-shadow: var(–shadow);

      transition: transform .25s, box-shadow .25s;

      display: flex; flex-direction: column;

    }

    .service-card:hover { transform: translateY(-5px); box-shadow: var(–shadow-lg); }

    .service-card-header {

      padding: 2rem 2rem 1.5rem;

      background: linear-gradient(135deg, var(–navy) 0%, var(–navy-mid) 100%);

      position: relative;

      overflow: hidden;

    }

    .service-card-header::after {

      content: ”;

      position: absolute;

      bottom: -20px; right: -20px;

      width: 80px; height: 80px;

      background: rgba(0,194,255,0.08);

      border-radius: 50%;

    }

    .service-icon {

      font-size: 2.5rem;

      margin-bottom: 1rem;

      display: block;

    }

    .service-card h2 {

      font-family: var(–font-display);

      font-size: 1.6rem;

      color: var(–white);

      letter-spacing: 1px;

      margin-bottom: 0.25rem;

    }

    .service-city-tag {

      font-size: 0.72rem;

      color: var(–aqua);

      text-transform: uppercase;

      letter-spacing: 2px;

      font-weight: 600;

    }

    .service-card-body { padding: 1.5rem 2rem 2rem; flex: 1; display: flex; flex-direction: column; }

    .service-card-body p {

      color: var(–gray-dark);

      font-size: 0.92rem;

      line-height: 1.7;

      margin-bottom: 1.25rem;

    }

    .service-features {

      flex: 1;

      display: flex; flex-direction: column; gap: 0.6rem;

      margin-bottom: 1.5rem;

    }

    .feature-item {

      display: flex; align-items: flex-start; gap: 8px;

      font-size: 0.85rem;

      color: var(–text);

    }

    .feature-item::before {

      content: ‘✓’;

      color: var(–green);

      font-weight: 700;

      flex-shrink: 0;

      margin-top: 1px;

    }

    .service-price {

      font-size: 0.8rem;

      color: var(–gray-dark);

      border-top: 1px solid var(–gray-light);

      padding-top: 1rem;

      margin-bottom: 1rem;

    }

    .service-price strong { color: var(–navy); font-size: 1rem; }

    .btn-service {

      display: inline-flex; align-items: center; justify-content: center; gap: 6px;

      background: var(–navy);

      color: var(–white);

      font-weight: 600;

      font-size: 0.85rem;

      padding: 0.75rem 1.5rem;

      border-radius: var(–radius);

      transition: background .2s;

      text-align: center;

    }

    .btn-service:hover { background: var(–sky); }

    /* ─── WHY US ──────────────────────────────────────────── */

    .why-us {

      background: var(–white);

      display: grid;

      grid-template-columns: 1fr 1fr;

      gap: 5rem;

      align-items: center;

    }

    .why-visual {

      position: relative;

    }

    .why-card-stack {

      display: flex; flex-direction: column; gap: 1rem;

    }

    .why-pill {

      background: var(–navy);

      border-radius: 10px;

      padding: 1.25rem 1.5rem;

      display: flex; align-items: center; gap: 1rem;

      border-left: 4px solid var(–aqua);

      transition: transform .2s;

    }

    .why-pill:hover { transform: translateX(5px); }

    .why-pill-icon { font-size: 1.5rem; flex-shrink: 0; }

    .why-pill-text h4 {

      color: var(–white);

      font-size: 0.9rem;

      font-weight: 600;

      margin-bottom: 0.2rem;

    }

    .why-pill-text p {

      color: #94A3B8;

      font-size: 0.78rem;

      line-height: 1.5;

    }

    .why-rating-badge {

      position: absolute;

      top: -20px; right: -10px;

      background: var(–green);

      color: var(–white);

      font-family: var(–font-display);

      font-size: 1.1rem;

      letter-spacing: 1px;

      padding: 0.6rem 1rem;

      border-radius: 8px;

      box-shadow: var(–shadow);

    }

    .why-content .section-sub { margin-bottom: 2rem; }

    .why-points { display: flex; flex-direction: column; gap: 1.25rem; }

    .why-point {

      display: flex; align-items: flex-start; gap: 1rem;

    }

    .why-num {

      font-family: var(–font-display);

      font-size: 2.5rem;

      color: var(–aqua);

      line-height: 1;

      flex-shrink: 0;

      width: 50px;

      opacity: 0.4;

    }

    .why-point h3 {

      font-size: 0.95rem;

      font-weight: 700;

      color: var(–navy);

      margin-bottom: 0.25rem;

    }

    .why-point p {

      font-size: 0.87rem;

      color: var(–gray-dark);

      line-height: 1.6;

    }

    /* ─── SERVICE AREAS ──────────────────────────────────── */

    .service-areas {

      background: var(–navy);

      text-align: center;

    }

    .service-areas .section-title { color: var(–white); }

    .service-areas .section-sub { color: #94A3B8; margin: 0 auto 3rem; }

    .areas-grid {

      display: flex; flex-wrap: wrap;

      justify-content: center;

      gap: 0.75rem;

      max-width: 800px;

      margin: 0 auto 2.5rem;

    }

    .area-chip {

      background: rgba(0,194,255,0.1);

      border: 1px solid rgba(0,194,255,0.25);

      color: var(–gray-mid);

      font-size: 0.82rem;

      font-weight: 500;

      padding: 8px 18px;

      border-radius: 20px;

      transition: background .2s, color .2s, border-color .2s;

      cursor: default;

    }

    .area-chip:hover { background: rgba(0,194,255,0.2); color: var(–white); border-color: var(–aqua); }

    .area-chip.primary { background: rgba(0,194,255,0.18); color: var(–aqua); border-color: rgba(0,194,255,0.4); }

    /* ─── REVIEWS ────────────────────────────────────────── */

    .reviews { background: var(–gray-light); }

    .reviews-grid {

      display: grid;

      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));

      gap: 1.5rem;

    }

    .review-card {

      background: var(–white);

      border-radius: 12px;

      padding: 1.75rem;

      box-shadow: var(–shadow);

      position: relative;

    }

    .review-stars {

      color: #FBBF24;

      font-size: 1rem;

      letter-spacing: 2px;

      margin-bottom: 1rem;

    }

    .review-text {

      font-size: 0.9rem;

      color: var(–gray-dark);

      line-height: 1.7;

      font-style: italic;

      margin-bottom: 1.25rem;

    }

    .reviewer {

      display: flex; align-items: center; gap: 0.75rem;

    }

    .reviewer-avatar {

      width: 40px; height: 40px;

      border-radius: 50%;

      background: linear-gradient(135deg, var(–sky), var(–aqua));

      display: flex; align-items: center; justify-content: center;

      color: var(–white);

      font-weight: 700;

      font-size: 0.9rem;

      flex-shrink: 0;

    }

    .reviewer-name { font-weight: 600; font-size: 0.87rem; color: var(–navy); }

    .reviewer-location { font-size: 0.75rem; color: var(–gray-dark); }

    .review-source {

      position: absolute;

      top: 1.25rem; right: 1.25rem;

      font-size: 0.7rem;

      color: var(–gray-mid);

      text-transform: uppercase;

      letter-spacing: 1px;

    }

    /* ─── FAQ ────────────────────────────────────────────── */

    .faq { background: var(–white); }

    .faq-grid {

      display: grid;

      grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));

      gap: 1.25rem;

      max-width: 1000px;

      margin: 0 auto;

    }

    .faq-item {

      border: 1px solid var(–gray-light);

      border-radius: var(–radius);

      overflow: hidden;

    }

    .faq-q {

      padding: 1.25rem 1.5rem;

      font-weight: 600;

      font-size: 0.92rem;

      color: var(–navy);

      cursor: pointer;

      display: flex; justify-content: space-between; align-items: center; gap: 1rem;

      background: var(–gray-light);

      user-select: none;

    }

    .faq-q:hover { background: #e4ecf4; }

    .faq-toggle { color: var(–sky); font-size: 1.2rem; flex-shrink: 0; transition: transform .2s; }

    .faq-a {

      padding: 0 1.5rem;

      max-height: 0;

      overflow: hidden;

      transition: max-height .3s ease, padding .3s ease;

    }

    .faq-a p {

      font-size: 0.87rem;

      color: var(–gray-dark);

      line-height: 1.7;

      padding: 1.25rem 0;

    }

    .faq-item.open .faq-a { max-height: 200px; }

    .faq-item.open .faq-toggle { transform: rotate(45deg); }

    /* ─── CTA BAND ───────────────────────────────────────── */

    .cta-band {

      background: linear-gradient(135deg, var(–navy) 0%, #0d2648 100%);

      text-align: center;

      padding: 80px 5%;

      position: relative;

      overflow: hidden;

    }

    .cta-band::before {

      content: ”;

      position: absolute;

      top: -100px; left: 50%;

      transform: translateX(-50%);

      width: 600px; height: 600px;

      background: radial-gradient(circle, rgba(0,194,255,0.08) 0%, transparent 70%);

    }

    .cta-band h2 {

      font-family: var(–font-display);

      font-size: clamp(2rem, 4vw, 3.2rem);

      color: var(–white);

      letter-spacing: 2px;

      margin-bottom: 1rem;

      position: relative;

    }

    .cta-band p {

      color: #94A3B8;

      font-size: 1rem;

      max-width: 500px;

      margin: 0 auto 2.5rem;

      line-height: 1.7;

      position: relative;

    }

    .cta-actions { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; position: relative; }

    .btn-phone {

      display: inline-flex; align-items: center; gap: 8px;

      background: var(–green);

      color: var(–white);

      font-weight: 700;

      font-size: 1.1rem;

      padding: 1rem 2.5rem;

      border-radius: var(–radius);

      box-shadow: 0 0 24px rgba(34,197,94,0.4);

      transition: transform .2s, box-shadow .2s;

    }

    .btn-phone:hover { transform: translateY(-2px); box-shadow: 0 0 36px rgba(34,197,94,0.6); }

    /* ─── FOOTER ─────────────────────────────────────────── */

    footer {

      background: #060d1a;

      color: #94A3B8;

      padding: 60px 5% 30px;

    }

    .footer-grid {

      display: grid;

      grid-template-columns: 2fr 1fr 1fr 1fr;

      gap: 3rem;

      margin-bottom: 3rem;

    }

    .footer-brand .nav-logo { font-size: 1.5rem; margin-bottom: 1rem; display: block; }

    .footer-brand p { font-size: 0.82rem; line-height: 1.7; color: #64748B; max-width: 280px; }

    .footer-col h4 {

      color: var(–white);

      font-size: 0.8rem;

      font-weight: 700;

      text-transform: uppercase;

      letter-spacing: 2px;

      margin-bottom: 1.25rem;

    }

    .footer-col ul { display: flex; flex-direction: column; gap: 0.6rem; }

    .footer-col ul li a {

      font-size: 0.82rem;

      color: #64748B;

      transition: color .2s;

    }

    .footer-col ul li a:hover { color: var(–aqua); }

    .footer-bottom {

      border-top: 1px solid #0f1e35;

      padding-top: 1.5rem;

      display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem;

      font-size: 0.75rem;

      color: #334155;

    }

    .footer-bottom-links { display: flex; gap: 1.5rem; }

    .footer-bottom-links a { color: #334155; transition: color .2s; }

    .footer-bottom-links a:hover { color: var(–aqua); }

    .footer-contact { display: flex; flex-direction: column; gap: 0.5rem; }

    .footer-contact a { font-size: 0.82rem; color: #64748B; transition: color .2s; }

    .footer-contact a:hover { color: var(–aqua); }

    /* ─── MOBILE ─────────────────────────────────────────── */

    @media (max-width: 900px) {

      .nav-links { display: none; }

      .stats-bar { grid-template-columns: repeat(2, 1fr); }

      .why-us { grid-template-columns: 1fr; gap: 3rem; }

      .faq-grid { grid-template-columns: 1fr; }

      .footer-grid { grid-template-columns: 1fr 1fr; gap: 2rem; }

    }

    @media (max-width: 600px) {

      .stats-bar { grid-template-columns: 1fr 1fr; }

      .footer-grid { grid-template-columns: 1fr; }

      .hero h1 { font-size: 2.8rem; }

    }

  </style>

</head>

<body>

  <!– ═══════════════════════════ NAV ══════════════════════ –>

  <nav aria-label=”Main navigation”>

    <div class=”nav-logo”>EVERY NOOK <span>&amp;</span> CRANNY</div>

    <div class=”nav-links”>

      <a href=”#services”>Services</a>

      <a href=”#why-us”>About</a>

      <a href=”#service-areas”>Service Areas</a>

      <a href=”#reviews”>Reviews</a>

      <a href=”#faq”>FAQ</a>

      <a href=”tel:5155550199″ class=”nav-phone”>☎ (515) 555-0199</a>

      <a href=”#contact” class=”nav-cta”>Free Estimate</a>

    </div>

  </nav>

  <!– ═══════════════════════════ HERO ═════════════════════ –>

  <header class=”hero” role=”banner”>

    <div class=”water-canvas” aria-hidden=”true”>

      <div class=”spray-line”></div>

      <div class=”spray-line”></div>

      <div class=”spray-line”></div>

      <div class=”spray-line”></div>

      <div class=”spray-line”></div>

      <div class=”spray-line”></div>

      <div class=”spray-line”></div>

      <div class=”spray-line”></div>

      <div class=”spray-line”></div>

      <div class=”spray-line”></div>

      <div class=”hero-glow”></div>

    </div>

    <div class=”hero-content”>

      <div class=”hero-eyebrow”>Des Moines, Iowa’s Top-Rated Exterior Cleaners</div>

      <h1>

        <span class=”block”>DES MOINES'</span>

        <span class=”block accent”>EXTERIOR</span>

        <span class=”block”>CLEANING PROS</span>

      </h1>

      <p class=”hero-sub”>

        Professional <strong>pressure washing</strong>, <strong>window cleaning</strong>, and

        <strong>gutter cleaning</strong> for homes across Des Moines, Ankeny, West Des Moines,

        Urbandale, and Waukee. Fully insured. Satisfaction guaranteed.

      </p>

      <div class=”hero-actions”>

        <a href=”tel:5155550199″ class=”btn-primary”>

          ☎ Call (515) 555-0199

        </a>

        <a href=”#contact” class=”btn-secondary”>

          Get a Free Quote →

        </a>

      </div>

      <div class=”hero-trust”>

        <div class=”trust-badge”><span class=”icon”>✓</span> 4.9★ — 312 Google Reviews</div>

        <div class=”trust-badge”><span class=”icon”>✓</span> Licensed & Insured in Iowa</div>

        <div class=”trust-badge”><span class=”icon”>✓</span> Serving DSM Since 2010</div>

        <div class=”trust-badge”><span class=”icon”>✓</span> Same-Week Availability</div>

      </div>

    </div>

  </header>

  <!– ═══════════════════════════ STATS ════════════════════ –>

  <div class=”stats-bar” aria-label=”Company statistics”>

    <div class=”stat-item”>

      <div class=”stat-number”>5,400+</div>

      <div class=”stat-label”>Des Moines Homes Cleaned</div>

    </div>

    <div class=”stat-item”>

      <div class=”stat-number”>4.9★</div>

      <div class=”stat-label”>Average Google Rating</div>

    </div>

    <div class=”stat-item”>

      <div class=”stat-number”>15+</div>

      <div class=”stat-label”>Years in Iowa</div>

    </div>

    <div class=”stat-item”>

      <div class=”stat-number”>100%</div>

      <div class=”stat-label”>Satisfaction Guarantee</div>

    </div>

  </div>

  <!– ═══════════════════════════ SERVICES ═════════════════ –>

  <section class=”services” id=”services” aria-labelledby=”services-title”>

    <div class=”section-header center”>

      <p class=”section-eyebrow”>What We Do</p>

      <h2 class=”section-title” id=”services-title”>Exterior Cleaning Services in Des Moines</h2>

      <p class=”section-sub”>

        We use professional-grade equipment and Iowa-safe cleaning solutions to restore your home’s

        curb appeal — without damage to your property.

      </p>

    </div>

    <div class=”services-grid”>

      <!– PRESSURE WASHING –>

      <article class=”service-card” itemscope itemtype=”https://schema.org/Service”>

        <div class=”service-card-header”>

          <span class=”service-icon”>🔫</span>

          <h2 itemprop=”name”>Pressure Washing</h2>

          <span class=”service-city-tag”>Des Moines, IA</span>

        </div>

        <div class=”service-card-body”>

          <p itemprop=”description”>

            Our <strong>pressure washing and soft wash services in Des Moines</strong> blast away

            dirt, mildew, algae, and grime from driveways, siding, decks, patios, fences, and

            more. We choose the right pressure for every surface.

          </p>

          <ul class=”service-features” aria-label=”Pressure washing services”>

            <li class=”feature-item”>Concrete driveways &amp; sidewalks</li>

            <li class=”feature-item”>House siding (vinyl, brick, stucco, wood)</li>

            <li class=”feature-item”>Decks, patios &amp; pool surrounds</li>

            <li class=”feature-item”>Fences, retaining walls &amp; steps</li>

            <li class=”feature-item”>Soft wash for roofs &amp; delicate surfaces</li>

            <li class=”feature-item”>Commercial driveways &amp; storefronts</li>

          </ul>

          <div class=”service-price”>Starting from <strong>$150</strong> · Free estimates</div>

          <a href=”tel:5155550199″ class=”btn-service”>Book Pressure Washing →</a>

        </div>

      </article>

      <!– WINDOW WASHING –>

      <article class=”service-card” itemscope itemtype=”https://schema.org/Service”>

        <div class=”service-card-header”>

          <span class=”service-icon”>🪟</span>

          <h2 itemprop=”name”>Window Cleaning</h2>

          <span class=”service-city-tag”>Des Moines Metro</span>

        </div>

        <div class=”service-card-body”>

          <p itemprop=”description”>

            Crystal-clear results from Des Moines’ most trusted <strong>window washing company</strong>.

            We clean interior and exterior windows, tracks, screens, and sills — streak-free, every time.

          </p>

          <ul class=”service-features” aria-label=”Window cleaning services”>

            <li class=”feature-item”>Interior &amp; exterior window washing</li>

            <li class=”feature-item”>Screen cleaning &amp; track detail</li>

            <li class=”feature-item”>Hard water stain removal</li>

            <li class=”feature-item”>Storm windows &amp; skylights</li>

            <li class=”feature-item”>Solar panel cleaning</li>

            <li class=”feature-item”>Commercial storefronts &amp; offices</li>

          </ul>

          <div class=”service-price”>Starting from <strong>$120</strong> · Free estimates</div>

          <a href=”tel:5155550199″ class=”btn-service”>Book Window Cleaning →</a>

        </div>

      </article>

      <!– GUTTER CLEANING –>

      <article class=”service-card” itemscope itemtype=”https://schema.org/Service”>

        <div class=”service-card-header”>

          <span class=”service-icon”>🏠</span>

          <h2 itemprop=”name”>Gutter Cleaning</h2>

          <span class=”service-city-tag”>Greater Des Moines</span>

        </div>

        <div class=”service-card-body”>

          <p itemprop=”description”>

            Protect your home from water damage with professional <strong>gutter cleaning in Des Moines</strong>.

            We remove debris, flush downspouts, and inspect for damage — keeping your gutters

            flowing through every Iowa storm season.

          </p>

          <ul class=”service-features” aria-label=”Gutter cleaning services”>

            <li class=”feature-item”>Full gutter debris removal</li>

            <li class=”feature-item”>Downspout flushing &amp; clearing</li>

            <li class=”feature-item”>Gutter condition inspection report</li>

            <li class=”feature-item”>Gutter guard installation available</li>

            <li class=”feature-item”>Before &amp; after photos provided</li>

            <li class=”feature-item”>Spring and fall cleanout packages</li>

          </ul>

          <div class=”service-price”>Starting from <strong>$125</strong> · Free estimates</div>

          <a href=”tel:5155550199″ class=”btn-service”>Book Gutter Cleaning →</a>

        </div>

      </article>

    </div>

  </section>

  <!– ═══════════════════════════ WHY US ═══════════════════ –>

  <section class=”why-us” id=”why-us” aria-labelledby=”why-title”>

    <div class=”why-visual”>

      <div class=”why-rating-badge” aria-label=”4.9 star rating on Google”>⭐ 4.9 Google Rating</div>

      <div class=”why-card-stack”>

        <div class=”why-pill”>

          <span class=”why-pill-icon”>🛡️</span>

          <div class=”why-pill-text”>

            <h4>Fully Licensed &amp; Insured</h4>

            <p>Iowa contractor license #IC-2924. $2M general liability. You’re protected.</p>

          </div>

        </div>

        <div class=”why-pill”>

          <span class=”why-pill-icon”>⚡</span>

          <div class=”why-pill-text”>

            <h4>Professional Equipment</h4>

            <p>4,000 PSI commercial pressure washers and pure water window systems.</p>

          </div>

        </div>

        <div class=”why-pill”>

          <span class=”why-pill-icon”>🌿</span>

          <div class=”why-pill-text”>

            <h4>Eco-Safe Cleaning Solutions</h4>

            <p>Biodegradable soaps — safe for Iowa plants, pets, and groundwater.</p>

          </div>

        </div>

        <div class=”why-pill”>

          <span class=”why-pill-icon”>📸</span>

          <div class=”why-pill-text”>

            <h4>Photo Documentation</h4>

            <p>We send before and after photos so you can see the difference yourself.</p>

          </div>

        </div>

        <div class=”why-pill”>

          <span class=”why-pill-icon”>🤝</span>

          <div class=”why-pill-text”>

            <h4>Satisfaction Guarantee</h4>

            <p>Not happy? We’ll return and make it right — no questions asked.</p>

          </div>

        </div>

      </div>

    </div>

    <div class=”why-content”>

      <p class=”section-eyebrow”>Why Des Moines Chooses Us</p>

      <h2 class=”section-title” id=”why-title”>The Every Nook and Cranny Standard</h2>

      <p class=”section-sub”>

        Since 2010, Des Moines homeowners have trusted Every Nook and Cranny for exterior cleaning

        that actually lasts. Here’s what sets us apart from every pressure washer with a pickup truck.

      </p>

      <div class=”why-points”>

        <div class=”why-point”>

          <div class=”why-num”>01</div>

          <div>

            <h3>We protect your property first</h3>

            <p>Before we touch a surface, we assess it. The wrong pressure can damage siding, strip paint, or etch concrete. We always match method to material.</p>

          </div>

        </div>

        <div class=”why-point”>

          <div class=”why-num”>02</div>

          <div>

            <h3>Transparent, itemized quotes</h3>

            <p>No surprise add-ons. We walk your property, explain exactly what we’ll do, and deliver a written quote — free of charge.</p>

          </div>

        </div>

        <div class=”why-point”>

          <div class=”why-num”>03</div>

          <div>

            <h3>On time, every time</h3>

            <p>We know your time is valuable. Every Nook and Cranny crews arrive in the window we promise — and we call ahead when we’re 30 minutes out.</p>

          </div>

        </div>

        <div class=”why-point”>

          <div class=”why-num”>04</div>

          <div>

            <h3>Local Des Moines team</h3>

            <p>We’re your neighbors — not a national franchise. Every crew member is W-2 trained staff, background-checked, and proud to work in the Des Moines community.</p>

          </div>

        </div>

      </div>

    </div>

  </section>

  <!– ═══════════════════════════ SERVICE AREAS ════════════ –>

  <section class=”service-areas” id=”service-areas” aria-labelledby=”areas-title”>

    <p class=”section-eyebrow”>Coverage Map</p>

    <h2 class=”section-title” id=”areas-title”>Serving the Entire Des Moines Metro</h2>

    <p class=”section-sub”>

      We cover all communities across Polk County and beyond. If you’re in the Des Moines area,

      we’re coming to you.

    </p>

    <div class=”areas-grid”>

      <span class=”area-chip primary”>Des Moines</span>

      <span class=”area-chip primary”>Ankeny</span>

      <span class=”area-chip primary”>West Des Moines</span>

      <span class=”area-chip primary”>Urbandale</span>

      <span class=”area-chip primary”>Waukee</span>

      <span class=”area-chip”>Johnston</span>

      <span class=”area-chip”>Clive</span>

      <span class=”area-chip”>Altoona</span>

      <span class=”area-chip”>Pleasant Hill</span>

      <span class=”area-chip”>Norwalk</span>

      <span class=”area-chip”>Bondurant</span>

      <span class=”area-chip”>Grimes</span>

      <span class=”area-chip”>Windsor Heights</span>

      <span class=”area-chip”>Carlisle</span>

      <span class=”area-chip”>Indianola</span>

      <span class=”area-chip”>Ames (50-mile radius)</span>

    </div>

    <a href=”tel:5155550199″ class=”btn-primary” style=”margin:0 auto;”>Call to Confirm Your Area</a>

  </section>

  <!– ═══════════════════════════ REVIEWS ══════════════════ –>

  <section class=”reviews” id=”reviews” aria-labelledby=”reviews-title”>

    <div class=”section-header center”>

      <p class=”section-eyebrow”>Google Reviews</p>

      <h2 class=”section-title” id=”reviews-title”>What Des Moines Homeowners Are Saying</h2>

      <p class=”section-sub”>4.9 stars across 312 verified Google reviews. Real customers, real results.</p>

    </div>

    <div class=”reviews-grid”>

      <div class=”review-card” itemscope itemtype=”https://schema.org/Review”>

        <div class=”review-source”>Google ⭐</div>

        <div class=”review-stars”>★★★★★</div>

        <p class=”review-text” itemprop=”reviewBody”>

          “Every Nook and Cranny pressure washed our entire driveway and back patio in Ankeny — the difference

          was night and day. 15 years of Iowa weather and oil stains completely gone. Hired them on a

          Tuesday, they were here Thursday. Can’t recommend enough.”

        </p>

        <div class=”reviewer”>

          <div class=”reviewer-avatar”>MT</div>

          <div>

            <div class=”reviewer-name”>Michelle T.</div>

            <div class=”reviewer-location”>Ankeny, IA · Verified Customer</div>

          </div>

        </div>

      </div>

      <div class=”review-card” itemscope itemtype=”https://schema.org/Review”>

        <div class=”review-source”>Google ⭐</div>

        <div class=”review-stars”>★★★★★</div>

        <p class=”review-text” itemprop=”reviewBody”>

          “Called for gutter cleaning in West Des Moines before the fall rains hit. They came out,

          cleared everything, sent photos of clogged downspouts before and after flushing. Professional,

          fast, and very reasonably priced. Signing up for their annual plan.”

        </p>

        <div class=”reviewer”>

          <div class=”reviewer-avatar”>DK</div>

          <div>

            <div class=”reviewer-name”>Dave K.</div>

            <div class=”reviewer-location”>West Des Moines, IA · Verified Customer</div>

          </div>

        </div>

      </div>

      <div class=”review-card” itemscope itemtype=”https://schema.org/Review”>

        <div class=”review-source”>Google ⭐</div>

        <div class=”review-stars”>★★★★★</div>

        <p class=”review-text” itemprop=”reviewBody”>

          “I’ve used three different window cleaning companies in Des Moines over the years. Every Nook and Cranny

          is by far the best. My windows look brand new, they even got the hard water stains off our

          south-facing windows that others said were permanent. Worth every penny.”

        </p>

        <div class=”reviewer”>

          <div class=”reviewer-avatar”>SR</div>

          <div>

            <div class=”reviewer-name”>Sarah R.</div>

            <div class=”reviewer-location”>Urbandale, IA · Verified Customer</div>

          </div>

        </div>

      </div>

      <div class=”review-card” itemscope itemtype=”https://schema.org/Review”>

        <div class=”review-source”>Google ⭐</div>

        <div class=”review-stars”>★★★★★</div>

        <p class=”review-text” itemprop=”reviewBody”>

          “Hired them to clean our siding, driveway, and windows before we listed our house in Waukee.

          Real estate agent said the curb appeal was incredible. House sold in 4 days over asking. The

          Every Nook and Cranny crew literally helped us sell our home.”

        </p>

        <div class=”reviewer”>

          <div class=”reviewer-avatar”>JB</div>

          <div>

            <div class=”reviewer-name”>Jim &amp; Brenda H.</div>

            <div class=”reviewer-location”>Waukee, IA · Verified Customer</div>

          </div>

        </div>

      </div>

      <div class=”review-card” itemscope itemtype=”https://schema.org/Review”>

        <div class=”review-source”>Google ⭐</div>

        <div class=”review-stars”>★★★★★</div>

        <p class=”review-text” itemprop=”reviewBody”>

          “Used Every Nook and Cranny for a spring cleaning package — pressure wash, gutters, and windows

          all in one day. The crew was professional, careful around my landscaping, and left the

          property spotless. This is now an annual tradition at our house.”

        </p>

        <div class=”reviewer”>

          <div class=”reviewer-avatar”>LM</div>

          <div>

            <div class=”reviewer-name”>Linda M.</div>

            <div class=”reviewer-location”>Johnston, IA · Verified Customer</div>

          </div>

        </div>

      </div>

      <div class=”review-card” itemscope itemtype=”https://schema.org/Review”>

        <div class=”review-source”>Google ⭐</div>

        <div class=”review-stars”>★★★★★</div>

        <p class=”review-text” itemprop=”reviewBody”>

          “My neighbor referred me after seeing what Every Nook and Cranny did to his driveway. Had them do

          my whole exterior — brick, deck, windows — in Des Moines. Completely transformed my home’s

          appearance. On time, thorough, and the price matched the quote. No surprises.”

        </p>

        <div class=”reviewer”>

          <div class=”reviewer-avatar”>TC</div>

          <div>

            <div class=”reviewer-name”>Tom C.</div>

            <div class=”reviewer-location”>Des Moines, IA · Verified Customer</div>

          </div>

        </div>

      </div>

    </div>

  </section>

  <!– ═══════════════════════════ FAQ ══════════════════════ –>

  <section class=”faq” id=”faq” aria-labelledby=”faq-title”>

    <div class=”section-header center”>

      <p class=”section-eyebrow”>Common Questions</p>

      <h2 class=”section-title” id=”faq-title”>Frequently Asked Questions</h2>

      <p class=”section-sub”>Everything you want to know about exterior cleaning in Des Moines, Iowa.</p>

    </div>

    <div class=”faq-grid”>

      <div class=”faq-item” itemscope itemtype=”https://schema.org/Question”>

        <div class=”faq-q” tabindex=”0″ role=”button” aria-expanded=”false”>

          <span itemprop=”name”>How much does pressure washing cost in Des Moines?</span>

          <span class=”faq-toggle” aria-hidden=”true”>+</span>

        </div>

        <div class=”faq-a” itemscope itemtype=”https://schema.org/Answer”>

          <p itemprop=”text”>

            Pressure washing in Des Moines typically starts at $100 for a single driveway and $150–$400

            for a full home exterior depending on size. We always provide free, no-obligation estimates

            before any work begins. Call (515) 555-0199 for a same-day quote.

          </p>

        </div>

      </div>

      <div class=”faq-item” itemscope itemtype=”https://schema.org/Question”>

        <div class=”faq-q” tabindex=”0″ role=”button” aria-expanded=”false”>

          <span itemprop=”name”>How often should I clean my gutters in Iowa?</span>

          <span class=”faq-toggle” aria-hidden=”true”>+</span>

        </div>

        <div class=”faq-a” itemscope itemtype=”https://schema.org/Answer”>

          <p itemprop=”text”>

            Most Des Moines homes benefit from gutter cleaning twice a year — spring (after storm season)

            and fall (after leaf drop). Homes with mature oak or maple trees nearby may need 3–4 cleanings

            per year to prevent overflow and fascia damage.

          </p>

        </div>

      </div>

      <div class=”faq-item” itemscope itemtype=”https://schema.org/Question”>

        <div class=”faq-q” tabindex=”0″ role=”button” aria-expanded=”false”>

          <span itemprop=”name”>What is the difference between pressure washing and soft washing?</span>

          <span class=”faq-toggle” aria-hidden=”true”>+</span>

        </div>

        <div class=”faq-a” itemscope itemtype=”https://schema.org/Answer”>

          <p itemprop=”text”>

            Pressure washing uses high-pressure water — ideal for hard surfaces like concrete, brick, and

            pavers. Soft washing uses lower pressure combined with biodegradable cleaning solutions to

            safely clean vinyl siding, wood, stucco, and roofs without damage. We choose the right method

            for each surface.

          </p>

        </div>

      </div>

      <div class=”faq-item” itemscope itemtype=”https://schema.org/Question”>

        <div class=”faq-q” tabindex=”0″ role=”button” aria-expanded=”false”>

          <span itemprop=”name”>Do you serve Ankeny, Waukee, and West Des Moines?</span>

          <span class=”faq-toggle” aria-hidden=”true”>+</span>

        </div>

        <div class=”faq-a” itemscope itemtype=”https://schema.org/Answer”>

          <p itemprop=”text”>

            Yes! We serve the full Des Moines metro including Ankeny, West Des Moines, Waukee, Urbandale,

            Johnston, Clive, Altoona, Bondurant, Norwalk, Grimes, and more. If you’re in Polk County or

            surrounding areas, we’ve got you covered.

          </p>

        </div>

      </div>

      <div class=”faq-item” itemscope itemtype=”https://schema.org/Question”>

        <div class=”faq-q” tabindex=”0″ role=”button” aria-expanded=”false”>

          <span itemprop=”name”>Are your cleaning products safe for pets and plants?</span>

          <span class=”faq-toggle” aria-hidden=”true”>+</span>

        </div>

        <div class=”faq-a” itemscope itemtype=”https://schema.org/Answer”>

          <p itemprop=”text”>

            Absolutely. We use biodegradable, EPA-compliant cleaning solutions that are safe for your lawn,

            garden beds, pets, and Iowa waterways once diluted. We also pre-wet and rinse landscaping before

            and after any chemical application as a standard precaution.

          </p>

        </div>

      </div>

      <div class=”faq-item” itemscope itemtype=”https://schema.org/Question”>

        <div class=”faq-q” tabindex=”0″ role=”button” aria-expanded=”false”>

          <span itemprop=”name”>How do I prepare my home before your crew arrives?</span>

          <span class=”faq-toggle” aria-hidden=”true”>+</span>

        </div>

        <div class=”faq-a” itemscope itemtype=”https://schema.org/Answer”>

          <p itemprop=”text”>

            For pressure washing, close all windows and doors and move patio furniture and potted plants

            away from the work area. For gutter cleaning, we just need vehicle access around the perimeter.

            For window cleaning, clear any items from window sills inside. We’ll handle the rest.

          </p>

        </div>

      </div>

    </div>

  </section>

  <!– ═══════════════════════════ CTA BAND ═════════════════ –>

  <section class=”cta-band” id=”contact” aria-labelledby=”cta-title”>

    <h2 id=”cta-title”>Ready for a Cleaner Home in Des Moines?</h2>

    <p>

      Get your free, no-obligation estimate today. We’re available Mon–Fri 7am–6pm

      and Saturday 8am–4pm throughout the Des Moines metro.

    </p>

    <div class=”cta-actions”>

      <a href=”tel:5155550199″ class=”btn-phone”>

        ☎ (515) 555-0199 — Call Now

      </a>

      <a href=”mailto:info@everynookandcranny.org” class=”btn-secondary” style=”color:#fff; border-color:rgba(255,255,255,0.25);”>

        ✉ Email for a Quote

      </a>

    </div>

  </section>

  <!– ═══════════════════════════ FOOTER ═══════════════════ –>

  <footer aria-label=”Site footer”>

    <div class=”footer-grid”>

      <div class=”footer-brand”>

        <span class=”nav-logo”>EVERY NOOK <span>&amp;</span> CRANNY</span>

        <p>

          Des Moines’ most trusted exterior cleaning company since 2010. Serving homeowners

          across the entire Des Moines metro with professional pressure washing, window cleaning,

          and gutter cleaning.

        </p>

        <div class=”footer-contact” style=”margin-top:1.25rem;”>

          <a href=”tel:5155550199″>☎ (515) 555-0199</a>

          <a href=”mailto:info@everynookandcranny.org”>✉ info@everynookandcranny.org</a>

          <a href=”#”>📍 2400 Ingersoll Ave, Des Moines, IA 50312</a>

        </div>

      </div>

      <div class=”footer-col”>

        <h4>Services</h4>

        <ul>

          <li><a href=”#services”>Pressure Washing Des Moines</a></li>

          <li><a href=”#services”>Soft Wash House Cleaning</a></li>

          <li><a href=”#services”>Window Cleaning Des Moines</a></li>

          <li><a href=”#services”>Gutter Cleaning Des Moines</a></li>

          <li><a href=”#services”>Deck &amp; Patio Cleaning</a></li>

          <li><a href=”#services”>Driveway Cleaning</a></li>

        </ul>

      </div>

      <div class=”footer-col”>

        <h4>Service Areas</h4>

        <ul>

          <li><a href=”#service-areas”>Des Moines, IA</a></li>

          <li><a href=”#service-areas”>Ankeny, IA</a></li>

          <li><a href=”#service-areas”>West Des Moines, IA</a></li>

          <li><a href=”#service-areas”>Urbandale, IA</a></li>

          <li><a href=”#service-areas”>Waukee, IA</a></li>

          <li><a href=”#service-areas”>Johnston, IA</a></li>

        </ul>

      </div>

      <div class=”footer-col”>

        <h4>Company</h4>

        <ul>

          <li><a href=”#why-us”>About Us</a></li>

          <li><a href=”#reviews”>Customer Reviews</a></li>

          <li><a href=”#faq”>FAQ</a></li>

          <li><a href=”#contact”>Get a Free Estimate</a></li>

          <li><a href=”#”>Privacy Policy</a></li>

          <li><a href=”#”>Terms of Service</a></li>

        </ul>

      </div>

    </div>

    <div class=”footer-bottom”>

      <span>© 2025 Every Nook and Cranny · Des Moines, Iowa · All Rights Reserved</span>

      <div class=”footer-bottom-links”>

        <a href=”#”>Privacy</a>

        <a href=”#”>Terms</a>

        <a href=”#”>Sitemap</a>

      </div>

    </div>

  </footer>

  <!– ═══════════════════════════ SCRIPTS ══════════════════ –>

  <script>

    // FAQ accordion

    document.querySelectorAll(‘.faq-q’).forEach(btn => {

      btn.addEventListener(‘click’, () => {

        const item = btn.closest(‘.faq-item’);

        const isOpen = item.classList.contains(‘open’);

        document.querySelectorAll(‘.faq-item’).forEach(i => i.classList.remove(‘open’));

        if (!isOpen) item.classList.add(‘open’);

        btn.setAttribute(‘aria-expanded’, !isOpen);

      });

      btn.addEventListener(‘keydown’, e => {

        if (e.key === ‘Enter’ || e.key === ‘ ‘) { e.preventDefault(); btn.click(); }

      });

    });

    // Smooth nav highlight on scroll

    const sections = document.querySelectorAll(‘section[id], header[id]’);

    const navLinks = document.querySelectorAll(‘.nav-links a[href^=”#”]’);

    const observer = new IntersectionObserver(entries => {

      entries.forEach(entry => {

        if (entry.isIntersecting) {

          navLinks.forEach(l => l.classList.remove(‘active’));

          const active = document.querySelector(`.nav-links a[href=”#${entry.target.id}”]`);

          if (active) active.classList.add(‘active’);

        }

      });

    }, { rootMargin: ‘-40% 0px -55% 0px’ });

    sections.forEach(s => observer.observe(s));

    // Animated stat counters

    function animateCount(el, target, suffix = ”) {

      const duration = 1800;

      const start = performance.now();

      const isDecimal = target.toString().includes(‘.’);

      const num = parseFloat(target);

      const update = now => {

        const elapsed = now – start;

        const progress = Math.min(elapsed / duration, 1);

        const eased = 1 – Math.pow(1 – progress, 3);

        const current = num * eased;

        el.textContent = (isDecimal ? current.toFixed(1) : Math.floor(current).toLocaleString()) + suffix;

        if (progress < 1) requestAnimationFrame(update);

      };

      requestAnimationFrame(update);

    }

    const statsObserver = new IntersectionObserver(entries => {

      entries.forEach(entry => {

        if (entry.isIntersecting) {

          const items = [

            { el: document.querySelectorAll(‘.stat-number’)[0], val: 5400, suffix: ‘+’ },

            { el: document.querySelectorAll(‘.stat-number’)[1], val: 4.9, suffix: ‘★’ },

            { el: document.querySelectorAll(‘.stat-number’)[2], val: 15, suffix: ‘+’ },

            { el: document.querySelectorAll(‘.stat-number’)[3], val: 100, suffix: ‘%’ },

          ];

          items.forEach(({ el, val, suffix }) => { if (el) animateCount(el, val, suffix); });

          statsObserver.disconnect();

        }

      });

    }, { threshold: 0.3 });

    const statsBar = document.querySelector(‘.stats-bar’);

    if (statsBar) statsObserver.observe(statsBar);

  </script>

</body>

</html>