Featured Model Homes
All Model Homes
Featured Model Homes
The Tamarack4 bed · 2½ bath · 3,162 sq ft
The Whispering Pine3 bed · 2½ bath · 2,265 sq ft
The Magnolia3 bed · 2½ bath · 2,643 sq ft
All Model Homes
The Butternut3 bed · 2½ bath · 2,070 sq ft
The Hawthorn3 bed · 2½ bath · 1,930 sq ft
The Beechwood3 bed · 2 bath · 1,650 sq ft
The Juniper3–4 bed · 2 bath · 1,420 sq ft
The Hickory3 bed · 2½ bath · 2,412 sq ft
The Cypress3 bed · 2 bath · 1,875 sq ft
The Cypress II3 bed · 2 bath · 1,875 sq ft
The Linden3 bed · 2 bath · 1,915 sq ft
The Linden II3 bed · 2 bath · 1,915 sq ft
The Birchwood3 bed · 2 bath · 1,600 sq ft
The Birchwood II3 bed · 2 bath · 1,600 sq ft
The Willow3–4 bed · 3 bath · 2,850 sq ft
The Aspen3–4 bed · 2½ bath · 2,200 sq ft
The Sycamore3–4 bed · 2½ bath · 2,100 sq ft
View all model homes →
// data-endpoint: /lead-saver.php?tap=1 (static sites), /send-quote.php?tap=1 (a site whose .htaccess only lets its old
// handler run, e.g. Central Spring), /?rest_route=/rws/v1/tap (WordPress with the Lead Saver mu-plugin).
//
// Sends one small note when a real person taps a phone number (tel:), an email address (mailto:) or sends a form:
// kind, page, phone/tablet/desktop, where the visit came from, where on the page the link sits. Nothing else: no
// cookies, nothing stored in the browser, no form contents, no IDs. Robots are never counted (navigator.webdriver,
// untrusted events), and the server filters crawlers again. Never blocks the tap: the call or email opens as normal.
(function(){
'use strict';
var me=document.currentScript,ep=(me&&me.getAttribute('data-endpoint'))||'/lead-saver.php?tap=1';
if(navigator.webdriver||!navigator.sendBeacon)return;
function device(){
var coarse=window.matchMedia&&matchMedia('(pointer:coarse)').matches,w=Math.min(screen.width||innerWidth,innerWidth);
return coarse?(w<768?'phone':'tablet'):'desktop';
}
// Where this page view came from. With no cookies we only know the page the visitor is on: an inner page reached from
// the same site says "site" (how they first arrived isn't known), never a guess.
function source(){
var q=location.search,ref='';
if(/[?&]utm_source=(gbp|google_business|googlemybusiness|gmb)/i.test(q)||/[?&]utm_medium=(gbp|organic_gbp|listing)/i.test(q))return 'maps';
if(/[?&]utm_source=(chatgpt|openai|perplexity|copilot|gemini|claude)/i.test(q))return 'ai';
try{ref=document.referrer?new URL(document.referrer).hostname.toLowerCase():'';}catch(e){}
if(!ref)return 'direct';
if(ref===location.hostname.toLowerCase())return 'site';
if(/(^|\.)google\.[a-z.]+$/.test(ref))return /^maps\./.test(ref)||/(^|[?&/])maps/.test(document.referrer.replace(/^https?:\/\/[^/]+/,''))?'maps':'google';
if(/(^|\.)(chatgpt\.com|openai\.com|perplexity\.ai|copilot\.microsoft\.com|gemini\.google\.com|claude\.ai|you\.com|phind\.com)$/.test(ref))return 'ai';
if(/(^|\.)bing\.com$/.test(ref))return 'bing';
if(/(^|\.)(duckduckgo\.com|yahoo\.com|search\.brave\.com|ecosia\.org|aol\.com|ask\.com)$/.test(ref))return 'other-search';
if(/(^|\.)(facebook\.com|fb\.com|instagram\.com|tiktok\.com|x\.com|twitter\.com|nextdoor\.com|linkedin\.com|youtube\.com|pinterest\.com|reddit\.com)$/.test(ref))return 'social';
if(/(^|\.)(yelp\.com|bbb\.org|yellowpages\.com|angi\.com|homeadvisor\.com|thumbtack\.com|houzz\.com|mapquest\.com|carfax\.com|apple\.com)$/.test(ref))return 'listing';
return 'other-site';
}
var SRC=source(),DEV=device(),last={};
function spot(el){
if(el.closest('.callbar,.call-bar,.mobile-cta,.sticky-cta,[data-tap-spot="callbar"]'))return 'callbar';
var s=el.closest('[data-tap-spot]');if(s)return s.getAttribute('data-tap-spot');
if(el.closest('header'))return 'header';
if(el.closest('nav'))return 'nav';
if(el.closest('footer'))return 'footer';
if(el.closest('main'))return 'main';
return 'other';
}
function send(kind,el){
var key=kind+'|'+(el?spot(el):''),now=Date.now();
if(last[key]&&now-last[key]<10000)return; // one tap counted per link per 10 seconds (a double tap is one tap)
last[key]=now;
try{navigator.sendBeacon(ep,new Blob([JSON.stringify({k:kind,p:location.pathname,d:DEV,r:SRC,s:el?spot(el):'other'})],{type:'text/plain'}));}catch(e){}
}
document.addEventListener('click',function(e){
if(!e.isTrusted)return;
var a=e.target&&e.target.closest&&e.target.closest('a[href]');if(!a)return;
var h=(a.getAttribute('href')||'').trim().toLowerCase();
if(h.indexOf('tel:')===0)send('tel',a);else if(h.indexOf('mailto:')===0)send('mailto',a);
},true);
// Forms: a Lead Saver form counts when its lead is saved (its "lead-saver:sent" event). Any other form counts when a
// person sends it and the browser finds it complete. Search boxes and our own "RWS TEST" checks never count.
document.addEventListener('lead-saver:sent',function(e){var f=e.target;if(f&&!isTest(f))send('form',f);},true);
document.addEventListener('submit',function(e){
var f=e.target;if(!e.isTrusted||!f||f.hasAttribute('data-lead-saver')||isTest(f)||trapped(f))return;
if(f.getAttribute('role')==='search'||f.querySelector('input[type="search"]')||/search/i.test(f.className+' '+(f.id||'')+' '+(f.getAttribute('action')||'')))return;
if(f.checkValidity&&!f.checkValidity())return;
send('form',f);
},true);
// a hidden "trap" field (company, company_website...) that got filled in means a bot sent the form, not a person
function trapped(f){
var els=f.querySelectorAll('input[name]');
for(var i=0;i