<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Accessible Homes Colorado</title>
<meta name="description" content="Find homes in Colorado that are truly accessible — verified, not just labeled. Weekly listings, real specs, and a growing directory of accessible life in Colorado.">
<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=Fraunces:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400;1,500&family=Karla:wght@400;500;600;700&family=JetBrains+Mono:wght@500;600&display=swap" rel="stylesheet">
<style>
:root{
/* Watercolor forest palette — pine, aspen, birch paper, high mountain sky */
--paper: #F7F2E5;
--paper-deep: #EEE4CC;
--ink: #232C24;
--pine-950: #14231B;
--pine-800: #1E3B2C;
--pine-700: #2C5540;
--pine-500: #457A5E;
--pine-300: #93AF9C;
--pine-100: #DCE6DD;
--aspen-600: #A9791C;
--aspen-500: #C99A2E;
--aspen-300: #E7C97C;
--aspen-100: #F6E9C8;
--sky-400: #7FA2AC;
--sky-200: #C7DBDF;
--white: #FFFFFF;
--line: rgba(20,35,27,0.14);
--radius: 4px;
--radius-lg: 22px;
}
*{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce){
html{ scroll-behavior:auto; }
*{ animation: none !important; transition: none !important; }
}
body{
margin:0;
font-family:'Karla', sans-serif;
color: var(--ink);
background: var(--paper);
line-height:1.6;
font-size:17px;
}
h1,h2,h3,.display{
font-family:'Fraunces', serif;
font-weight:500;
line-height:1.08;
margin:0 0 .5em;
color: var(--pine-950);
letter-spacing:-0.01em;
}
h1 em, h2 em{ font-style: italic; font-weight:400; color: var(--aspen-500); }
.mono{ font-family:'JetBrains Mono', monospace; }
a{ color: var(--pine-700); }
img, svg{ max-width:100%; display:block; }
.skip-link{ position:absolute; left:-999px; top:0; background:var(--pine-800); color:#fff; padding:12px 20px; z-index:300; border-radius:0 0 8px 0; }
.skip-link:focus{ left:0; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, .filter-chip:focus-visible{
outline: 3px solid var(--aspen-500); outline-offset:3px;
}
.wrap{ max-width:1180px; margin:0 auto; padding:0 28px; }
/* ================= NAV ================= */
.site-nav{
position:sticky; top:0; z-index:200;
background: rgba(247,242,229,0.9);
backdrop-filter: blur(10px);
border-bottom:1px solid var(--line);
}
.site-nav__inner{
display:flex; align-items:center; justify-content:space-between;
padding:16px 28px; max-width:1220px; margin:0 auto; gap:18px;
}
.site-nav__logo{ display:flex; align-items:center; gap:10px; text-decoration:none; color:var(--pine-950); white-space:nowrap; }
.site-nav__logo svg{ width:34px; height:34px; flex-shrink:0; }
.site-nav__logo-text{ font-family:'Fraunces', serif; font-weight:600; font-size:1.12rem; line-height:1.15; }
.site-nav__logo-text span{ display:block; font-family:'JetBrains Mono', monospace; font-weight:500; font-size:.62rem; letter-spacing:.18em; text-transform:uppercase; color:var(--pine-500); }
.site-nav__links{ display:flex; gap:30px; list-style:none; margin:0; padding:0; flex-wrap:wrap; align-items:center; }
.site-nav__links a{ text-decoration:none; color:var(--ink); font-weight:600; font-size:.92rem; }
.site-nav__links a:hover{ color:var(--pine-700); }
.site-nav__cta{
font-family:'Karla',sans-serif; font-weight:700; font-size:.86rem;
background: var(--pine-800); color:#fff; padding:11px 22px; border-radius:100px;
text-decoration:none; white-space:nowrap;
}
.site-nav__cta:hover{ background: var(--pine-950); }
@media (max-width:900px){ .site-nav__links a:not(.site-nav__cta){ display:none; } }
/* ================= HERO (full bleed photo, reference-style) ================= */
.hero{
position:relative;
min-height:86vh;
display:flex; align-items:flex-end;
background: var(--pine-950);
overflow:hidden;
}
.hero__bg{
position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
filter: saturate(0.92) brightness(0.78);
}
.hero__wash{
position:absolute; inset:0;
background:
radial-gradient(ellipse at 20% 15%, rgba(201,154,46,0.28), transparent 55%),
linear-gradient(190deg, rgba(20,35,27,0.08) 10%, rgba(20,35,27,0.86) 92%);
}
.hero__content{ position:relative; z-index:2; width:100%; padding:64px 28px 0; }
.hero__inner{ max-width:1220px; margin:0 auto; color:#fff; }
.hero__eyebrow{
font-family:'JetBrains Mono', monospace; text-transform:uppercase; letter-spacing:.2em;
font-size:.74rem; color: var(--aspen-300); display:inline-block; margin-bottom:20px;
}
.hero h1{ color:#fff; font-size:clamp(2.4rem,5.4vw,4.2rem); font-weight:500; max-width:16ch; }
.hero p.lede{ font-size:1.18rem; max-width:56ch; color:rgba(255,255,255,0.86); margin-top:6px; }
.hero__ctas{ display:flex; gap:14px; flex-wrap:wrap; margin-top:30px; }
.hero__search{ display:flex; gap:10px; margin-top:26px; max-width:440px; }
.hero__search input{
flex:1; padding:14px 16px; border:1px solid rgba(255,255,255,0.35); border-radius:100px;
font-family:'Karla',sans-serif; font-size:.96rem; background:rgba(255,255,255,0.12); color:#fff;
}
.hero__search input::placeholder{ color: rgba(255,255,255,0.7); }
.hero__treeline{ position:relative; z-index:2; width:100%; height:auto; display:block; margin-top:56px; }
.btn{
display:inline-block; font-family:'Karla',sans-serif; font-weight:700; font-size:.96rem;
padding:14px 26px; border-radius:100px; text-decoration:none; border:2px solid transparent; cursor:pointer;
}
.btn--primary{ background: var(--aspen-500); color: var(--pine-950); }
.btn--primary:hover{ background: var(--aspen-300); }
.btn--outline{ background:transparent; border-color:rgba(255,255,255,0.55); color:#fff; }
.btn--outline:hover{ background:rgba(255,255,255,0.14); }
.btn--dark{ background: var(--pine-800); color:#fff; }
.btn--dark:hover{ background: var(--pine-950); }
.btn--full{ width:100%; text-align:center; }
/* ================= INTRO STAT BAND ================= */
.intro{ background: var(--paper); padding:74px 28px 40px; }
.intro__grid{ max-width:1180px; margin:0 auto; display:grid; grid-template-columns:1.3fr 1fr; gap:60px; align-items:center; }
.intro__eyebrow{ font-family:'JetBrains Mono', monospace; text-transform:uppercase; letter-spacing:.16em; font-size:.72rem; color:var(--pine-500); display:block; margin-bottom:14px; }
.intro h2{ font-size:clamp(1.7rem,3vw,2.3rem); max-width:18ch; }
.intro p{ font-size:1.06rem; color:#3B443C; max-width:56ch; }
.intro__facts{ display:grid; grid-template-columns:1fr 1fr; gap:22px; }
.fact{ border-left:3px solid var(--aspen-500); padding-left:16px; }
.fact strong{ display:block; font-family:'Fraunces',serif; font-size:1.5rem; color:var(--pine-800); font-weight:600; }
.fact span{ font-size:.88rem; color:#4A5349; }
@media (max-width:860px){ .intro__grid{ grid-template-columns:1fr; } }
/* ================= ALTERNATING PHOTO/TEXT (bio) ================= */
.duo{ display:grid; grid-template-columns:1fr 1fr; align-items:stretch; }
.duo__photo{ width:100%; height:100%; min-height:420px; display:block; overflow:hidden; }
.duo__text{ padding:74px 60px; display:flex; flex-direction:column; justify-content:center; background: var(--paper); }
.duo__text.on-dark{ background: var(--pine-900, var(--pine-950)); }
.duo__text p{ font-size:1.05rem; color:#3B443C; margin:0 0 1.1em; }
.duo--reverse{ direction:rtl; }
.duo--reverse > *{ direction:ltr; }
@media (max-width:900px){
.duo{ grid-template-columns:1fr; }
.duo--reverse{ direction:ltr; }
.duo__photo{ min-height:280px; }
.duo__text{ padding:48px 28px; }
}
/* ================= SECTION SCAFFOLD ================= */
.section{ padding:92px 28px; border-bottom:1px solid var(--line); }
.section--paper-deep{ background: var(--paper-deep); }
.section--pine{ background: var(--pine-900, var(--pine-950)); border-bottom-color: transparent; }
.section--pine .section__eyebrow{ color: var(--aspen-300); }
.section--pine .section__head h2{ color:#fff; }
.section--pine .section__head p{ color: rgba(255,255,255,0.78); }
.section--sky{ background: var(--sky-200); }
.section__head{ max-width:680px; margin:0 auto 52px; text-align:center; }
.section__eyebrow{ font-family:'JetBrains Mono', monospace; text-transform:uppercase; font-size:.74rem; letter-spacing:.16em; color:var(--pine-500); display:block; margin-bottom:12px; }
.section__head h2{ font-size:clamp(1.7rem,3.2vw,2.4rem); }
.section__head p{ color:#454F47; font-size:1.06rem; }
/* ================= SPEC / DEFINITION TILES ================= */
.specs__grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:22px; max-width:1180px; margin:0 auto; }
.spec-card{
background: var(--white); border:1px solid var(--line); border-radius: var(--radius-lg);
padding:28px 26px; position:relative; overflow:hidden;
}
.spec-card__icon{ width:40px; height:40px; margin-bottom:16px; color: var(--pine-700); }
.spec-card__measure{
font-family:'JetBrains Mono', monospace; font-weight:600; color: var(--aspen-600);
font-size:.86rem; display:inline-block; background: var(--aspen-100); padding:3px 10px; border-radius:5px; margin-bottom:12px;
}
.spec-card h3{ font-size:1.08rem; margin-bottom:8px; }
.spec-card p{ font-size:.95rem; color:#4C554B; margin:0; }
.safety-list{
max-width:800px; margin:48px auto 0; background: var(--white);
border:1px solid var(--line); border-radius: var(--radius-lg); padding:36px 40px;
}
.safety-list h3{ font-size:1.18rem; color: var(--pine-700); }
.safety-list ul{ margin:0; padding-left:20px; }
.safety-list li{ margin-bottom:10px; }
/* ================= FORMS ================= */
.form-panel{ max-width:640px; margin:0 auto; background: var(--white); border:1px solid var(--line); border-radius: var(--radius-lg); padding:40px; }
.form-panel.on-dark{ background: rgba(255,255,255,0.06); border-color: rgba(255,255,255,0.18); }
.form__row{ margin-bottom:18px; }
.form__row label{ display:block; font-weight:700; font-size:.92rem; margin-bottom:6px; }
.on-dark .form__row label{ color:#fff; }
.form__row .hint{ font-weight:400; color:#6b6a5e; font-size:.82rem; }
.on-dark .form__row .hint{ color: rgba(255,255,255,0.65); }
.form__row input, .form__row select, .form__row textarea{
width:100%; padding:12px 14px; border:1px solid #CFC7AE; border-radius:10px;
font-family:'Karla',sans-serif; font-size:.96rem; background: var(--paper);
}
.on-dark .form__row input, .on-dark .form__row select, .on-dark .form__row textarea{
background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.25); color:#fff;
}
.form__row textarea{ resize:vertical; min-height:100px; }
.form-note{ text-align:center; font-size:.85rem; color:#6b6a5e; margin-top:16px; }
.on-dark .form-note{ color: rgba(255,255,255,0.6); }
.form-status{ margin-top:16px; padding:12px 16px; border-radius:10px; font-size:.92rem; display:none; }
.form-status.is-visible{ display:block; }
.form-status.ok{ background: var(--pine-100); color: var(--pine-800); }
.on-dark .form-status.ok{ background: rgba(233,201,124,0.18); color: var(--aspen-300); }
.form-status.err{ background:#F6E1DA; color:#8A3B24; }
.on-dark .form-status.err{ background: rgba(246,225,218,0.14); color:#F2B29B; }
/* ================= LISTINGS (property-card style) ================= */
.filters{ max-width:1180px; margin:0 auto 40px; display:flex; flex-wrap:wrap; gap:10px; justify-content:center; }
.filter-chip{
font-family:'Karla',sans-serif; font-size:.88rem; font-weight:700; padding:10px 18px;
border-radius:100px; border:1.5px solid #CFC7AE; background: var(--white); cursor:pointer; color: var(--ink);
}
.filter-chip[aria-pressed="true"]{ background: var(--pine-700); border-color: var(--pine-700); color:#fff; }
.listings{ display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:28px; max-width:1180px; margin:0 auto; }
.listing-card{ background: var(--white); border:1px solid var(--line); border-radius: var(--radius-lg); overflow:hidden; transition: transform .18s ease, box-shadow .18s ease; }
.listing-card:hover{ transform: translateY(-3px); box-shadow: 0 14px 30px rgba(20,35,27,0.1); }
.listing-card__media{
height:190px; position:relative; overflow:hidden;
background: linear-gradient(135deg, var(--pine-300), var(--pine-700));
}
.listing-card__media svg{ position:absolute; inset:0; width:100%; height:100%; }
.listing-card__body{ padding:20px 22px 24px; }
.listing-card__price{ font-family:'Fraunces', serif; font-weight:600; font-size:1.28rem; margin-bottom:2px; }
.listing-card__loc{ color:#6b6a5e; font-size:.88rem; margin-bottom:14px; }
.listing-card__tags{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:6px; }
.tag{ font-size:.72rem; background: var(--pine-100); color: var(--pine-800); padding:4px 10px; border-radius:100px; font-weight:700; }
.demo-badge{ font-family:'JetBrains Mono', monospace; font-size:.66rem; background: var(--aspen-100); color: var(--aspen-600); padding:3px 9px; border-radius:4px; letter-spacing:.04em; }
.empty-state{ text-align:center; color:#6b6a5e; padding:40px 0; display:none; }
/* ================= ROADMAP (neighborhood-tile style) ================= */
.roadmap__grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:20px; max-width:1180px; margin:0 auto; }
.roadmap-card{
position:relative; border-radius: var(--radius-lg); overflow:hidden; min-height:190px;
display:flex; flex-direction:column; justify-content:flex-end; padding:22px;
background: linear-gradient(160deg, var(--pine-700), var(--pine-950));
}
.roadmap-card::before{
content:''; position:absolute; inset:0;
background: radial-gradient(circle at 80% 0%, rgba(233,201,124,0.28), transparent 60%);
}
.roadmap-card > *{ position:relative; z-index:1; }
.roadmap-card .soon{
display:inline-block; font-family:'JetBrains Mono', monospace; font-size:.64rem;
background: rgba(255,255,255,0.14); color: var(--aspen-300); padding:3px 9px; border-radius:4px; margin-bottom:12px; letter-spacing:.05em;
}
.roadmap-card h3{ color:#fff; font-size:1.05rem; margin-bottom:6px; }
.roadmap-card p{ font-size:.86rem; color: rgba(255,255,255,0.78); margin:0; }
/* ================= PARTNERS ================= */
.partners__grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:22px; max-width:920px; margin:0 auto; }
.partner-card{ background: var(--white); border:1.5px dashed var(--pine-300); border-radius: var(--radius-lg); padding:26px; text-align:center; }
.partner-card h3{ font-size:1rem; color: var(--pine-700); }
.partner-card p{ font-size:.9rem; color:#454F47; }
/* ================= NEWSLETTER BAND ================= */
.newsband{ background: var(--pine-950); padding:88px 28px; text-align:center; position:relative; overflow:hidden; }
.newsband::before{
content:''; position:absolute; inset:0;
background: radial-gradient(ellipse at 15% 20%, rgba(201,154,46,0.22), transparent 55%),
radial-gradient(ellipse at 85% 80%, rgba(127,162,172,0.18), transparent 55%);
}
.newsband__inner{ position:relative; z-index:1; max-width:620px; margin:0 auto; }
.newsband .section__eyebrow{ color: var(--aspen-300); }
.newsband h2{ color:#fff; }
.newsband p{ color: rgba(255,255,255,0.78); font-size:1.05rem; }
/* ================= FOOTER ================= */
.site-footer{ background: var(--pine-950); color: rgba(255,255,255,0.82); padding:64px 28px 32px; }
.footer__grid{ max-width:1180px; margin:0 auto; display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:40px; padding-bottom:36px; border-bottom:1px solid rgba(255,255,255,0.14); }
.footer__brand{ font-family:'Fraunces',serif; font-size:1.3rem; color:#fff; margin-bottom:10px; }
.footer__brand span{ display:block; font-family:'JetBrains Mono',monospace; font-size:.62rem; letter-spacing:.18em; text-transform:uppercase; color: var(--aspen-300); margin-top:4px; }
.footer h4{ font-family:'Karla',sans-serif; font-size:.82rem; text-transform:uppercase; letter-spacing:.1em; color: var(--aspen-300); margin-bottom:14px; }
.footer__links{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.footer__links a{ color: rgba(255,255,255,0.82); text-decoration:none; font-size:.94rem; }
.footer__links a:hover{ color:#fff; }
.footer__bottom{ max-width:1180px; margin:24px auto 0; display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; font-size:.82rem; color: rgba(255,255,255,0.55); }
@media (max-width:860px){ .footer__grid{ grid-template-columns:1fr; } }
/* divider watercolor strip used between some sections */
.brushline{ height:34px; background-repeat: repeat-x; background-size: 340px 34px; }
</style>
</head>
<body>
<a class="skip-link" href="#main">Skip to main content</a>
<header class="site-nav">
<div class="site-nav__inner">
<a class="site-nav__logo" href="#top">
<svg viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
<path d="M24 6L34 24H29L36 36H12L19 24H14L24 6Z" fill="#2C5540"/>
<ellipse cx="24" cy="40" rx="14" ry="3" fill="#C99A2E" opacity="0.35"/>
<circle cx="36" cy="12" r="4" fill="#E7C97C"/>
</svg>
<span class="site-nav__logo-text">Accessible Homes<span>Colorado</span></span>
</a>
<nav aria-label="Primary">
<ul class="site-nav__links">
<li><a href="#definitions">What "Accessible" Means</a></li>
<li><a href="#signup">Weekly List</a></li>
<li><a href="#search">Search Homes</a></li>
<li><a href="#partners">Partners</a></li>
<li><a class="site-nav__cta" href="#contact">Ask About a Home</a></li>
</ul>
</nav>
</div>
</header>
<main id="main">
<!-- ================= HERO ================= -->
<section class="hero" id="top">
<svg class="hero__bg" viewBox="0 0 1600 1000" preserveAspectRatio="xMidYMid slice" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
<defs>
<linearGradient id="skyGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#3E5A56"/>
<stop offset="55%" stop-color="#2C4A3F"/>
<stop offset="100%" stop-color="#14231B"/>
</linearGradient>
<filter id="soft"><feGaussianBlur stdDeviation="14"/></filter>
<filter id="softer"><feGaussianBlur stdDeviation="26"/></filter>
</defs>
<rect width="1600" height="1000" fill="url(#skyGrad)"/>
<circle cx="1180" cy="230" r="190" fill="#E7C97C" opacity="0.35" filter="url(#softer)"/>
<circle cx="1180" cy="230" r="90" fill="#F6E9C8" opacity="0.5" filter="url(#soft)"/>
<!-- distant mountain wash -->
<path d="M0,560 L220,380 L420,520 L620,340 L860,540 L1080,360 L1300,520 L1600,420 L1600,1000 L0,1000 Z" fill="#7FA2AC" opacity="0.28" filter="url(#soft)"/>
<!-- mid ridge -->
<path d="M0,660 L180,520 L360,620 L560,470 L760,630 L980,500 L1200,640 L1400,540 L1600,650 L1600,1000 L0,1000 Z" fill="#457A5E" opacity="0.55" filter="url(#soft)"/>
<!-- pine cluster back row -->
<g fill="#1E3B2C" opacity="0.7">
<path d="M120,760 L180,620 L240,760 Z"/>
<path d="M200,780 L270,600 L340,780 Z"/>
<path d="M760,770 L825,610 L890,770 Z"/>
<path d="M1300,760 L1360,610 L1420,760 Z"/>
<path d="M1380,780 L1450,600 L1520,780 Z"/>
</g>
<!-- aspen grove, gold canopies -->
<g>
<rect x="466" y="640" width="10" height="180" fill="#EDE3CC" opacity="0.85"/>
<rect x="520" y="660" width="9" height="160" fill="#EDE3CC" opacity="0.8"/>
<rect x="574" y="650" width="10" height="170" fill="#EDE3CC" opacity="0.85"/>
<ellipse cx="471" cy="610" rx="60" ry="72" fill="#C99A2E" opacity="0.55" filter="url(#soft)"/>
<ellipse cx="524" cy="620" rx="54" ry="66" fill="#E7C97C" opacity="0.5" filter="url(#soft)"/>
<ellipse cx="579" cy="605" rx="58" ry="70" fill="#C99A2E" opacity="0.5" filter="url(#soft)"/>
</g>
<!-- pine cluster front row, darkest -->
<g fill="#14231B">
<path d="M40,860 L120,660 L200,860 Z"/>
<path d="M170,880 L260,640 L350,880 Z"/>
<path d="M900,870 L985,650 L1070,870 Z"/>
<path d="M1030,890 L1120,640 L1210,890 Z"/>
<path d="M1250,870 L1330,650 L1410,870 Z"/>
<path d="M1440,890 L1530,650 L1620,890 Z"/>
</g>
<rect y="880" width="1600" height="120" fill="#14231B"/>
</svg>
<div class="hero__wash"></div>
<div class="hero__content">
<div class="hero__inner">
<span class="hero__eyebrow">Southern Colorado · Verified, not just labeled</span>
<h1>Live it. <em>Truly</em> accessible.</h1>
<p class="lede">A wheelchair, a walker, aging knees, an aging parent moving in, a child who needs a safe and predictable layout — "accessible" means something different for every family. I look past the MLS checkbox to tell you what a home can actually do for yours.</p>
<div class="hero__ctas">
<a class="btn btn--primary" href="#signup">Get the weekly list</a>
<a class="btn btn--outline" href="#search">Search homes now</a>
</div>
<form class="hero__search" id="heroSearchForm">
<input type="text" placeholder="Search by city or neighborhood" aria-label="Search by city or neighborhood">
<button type="submit" class="btn btn--primary">Search</button>
</form>
</div>
</div>
<svg class="hero__treeline" viewBox="0 0 1200 90" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
<path d="M0,90 L0,58 L60,20 L95,58 L120,30 L150,58 L150,90 Z" fill="#F7F2E5" opacity="0.95"/>
<path d="M150,90 L150,45 L210,10 L230,45 L260,26 L285,58 L310,38 L340,58 L340,90 Z" fill="#F7F2E5"/>
<path d="M340,90 L340,60 L400,54 Q410,30 420,54 L470,60 L470,90 Z" fill="#F7F2E5" opacity="0.9"/>
<path d="M470,90 L470,40 L520,8 L545,40 L580,22 L615,50 L650,30 L680,55 L710,90 Z" fill="#F7F2E5"/>
<path d="M710,90 L710,58 L760,52 Q770,28 780,52 L830,58 L830,90 Z" fill="#F7F2E5" opacity="0.9"/>
<path d="M830,90 L830,42 L880,14 L905,42 L940,24 L975,50 L1010,32 L1040,55 L1200,55 L1200,90 Z" fill="#F7F2E5"/>
</svg>
</section>
<!-- ================= INTRO ================= -->
<section class="intro">
<div class="intro__grid">
<div>
<span class="intro__eyebrow">Hi, I'm Stacy</span>
<h2>I help families find homes that actually <em>work.</em></h2>
<p>A former special education teacher turned real estate researcher, I measure doorways, check thresholds, and stand in the shower myself — because a listing photo can't tell you what a home can do for your family.</p>
<div class="hero__ctas">
<a class="btn btn--dark" href="#definitions">See what I check</a>
</div>
</div>
<div class="intro__facts">
<div class="fact"><strong>9+</strong><span>accessibility features verified in person on every home</span></div>
<div class="fact"><strong>1</strong><span>tape measure, always in the car</span></div>
<div class="fact"><strong>Weekly</strong><span>new & verified listings, sent every Friday</span></div>
<div class="fact"><strong>S. CO</strong><span>Colorado Springs, Pueblo & the Front Range</span></div>
</div>
</div>
</section>
<!-- ================= BIO / STORY (alternating photo+text) ================= -->
<section class="duo">
<div class="duo__photo" style="background:linear-gradient(160deg,#F6E9C8,#E7C97C 55%,#C99A2E);">
<svg viewBox="0 0 700 700" width="100%" height="100%" preserveAspectRatio="xMidYMid slice" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Watercolor illustration of an aspen grove in gold and green">
<defs><filter id="asoft"><feGaussianBlur stdDeviation="10"/></filter></defs>
<ellipse cx="350" cy="230" rx="260" ry="180" fill="#93AF9C" opacity="0.35" filter="url(#asoft)"/>
<g opacity="0.9">
<rect x="150" y="260" width="14" height="380" fill="#FBF6E8"/>
<rect x="150" y="260" width="14" height="380" fill="none" stroke="#2C5540" stroke-width="2" opacity="0.25"/>
<rect x="260" y="220" width="16" height="420" fill="#FBF6E8"/>
<rect x="380" y="250" width="14" height="390" fill="#FBF6E8"/>
<rect x="480" y="210" width="17" height="430" fill="#FBF6E8"/>
<rect x="330" y="300" width="10" height="340" fill="#FBF6E8" opacity="0.8"/>
</g>
<ellipse cx="157" cy="235" rx="78" ry="92" fill="#2C5540" opacity="0.55" filter="url(#asoft)"/>
<ellipse cx="268" cy="190" rx="96" ry="112" fill="#C99A2E" opacity="0.6" filter="url(#asoft)"/>
<ellipse cx="387" cy="220" rx="86" ry="100" fill="#E7C97C" opacity="0.65" filter="url(#asoft)"/>
<ellipse cx="488" cy="175" rx="100" ry="118" fill="#A9791C" opacity="0.55" filter="url(#asoft)"/>
<ellipse cx="335" cy="260" rx="60" ry="70" fill="#457A5E" opacity="0.4" filter="url(#asoft)"/>
<rect y="600" width="700" height="100" fill="#EEE4CC"/>
</svg>
</div>
<div class="duo__text">
<span class="section__eyebrow">Why this exists</span>
<h2>Ten years teaching, three months house-hunting.</h2>
<p>I spent ten years as a special education teacher. Years ago, I worked inside the home of a family whose child had significant, complex medical needs — my first real look at how much a home's layout shapes a family's daily life, safety, and exhaustion.</p>
<p>More recently, I spent three months helping a close friend search for a home after her husband was diagnosed with ALS. Listing after listing said "wheelchair accessible" or "wide doorways" — and almost none of them actually were, because there was no way to know what those words really meant until we stood in the doorway ourselves with a tape measure.</p>
<p>Southern Colorado has one of the highest concentrations of disabled veterans in the country, plus families who move here for the state's waiver programs for children and adults with disabilities. Truly single-level, truly accessible homes are still surprisingly hard to find. Accessible Homes Colorado exists to close that gap.</p>
</div>
</section>
<section class="duo duo--reverse">
<div class="duo__photo" style="background:linear-gradient(160deg,#1E3B2C,#14231B 65%);">
<svg viewBox="0 0 700 700" width="100%" height="100%" preserveAspectRatio="xMidYMid slice" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Watercolor illustration of pine trees at dusk">
<defs><filter id="psoft"><feGaussianBlur stdDeviation="12"/></filter></defs>
<circle cx="520" cy="170" r="90" fill="#E7C97C" opacity="0.3" filter="url(#psoft)"/>
<circle cx="520" cy="170" r="46" fill="#F6E9C8" opacity="0.45" filter="url(#psoft)"/>
<path d="M0,420 L120,300 L240,420 Z" fill="#457A5E" opacity="0.4" filter="url(#psoft)"/>
<path d="M420,400 L540,270 L660,400 Z" fill="#457A5E" opacity="0.35" filter="url(#psoft)"/>
<path d="M40,620 L150,420 L260,620 Z" fill="#2C5540" opacity="0.85"/>
<path d="M170,660 L300,400 L430,660 Z" fill="#1E3B2C" opacity="0.92"/>
<path d="M370,640 L480,410 L590,640 Z" fill="#2C5540" opacity="0.85"/>
<path d="M520,660 L630,440 L700,660 Z" fill="#1E3B2C" opacity="0.9"/>
<rect y="640" width="700" height="60" fill="#14231B"/>
</svg>
</div>
<div class="duo__text on-dark">
<span class="section__eyebrow" style="color:var(--aspen-300)">How I work</span>
<h2 style="color:#fff">I go see it myself.</h2>
<p style="color:rgba(255,255,255,0.82)">Every home on the weekly list has been checked in person, or by someone I trust, against the same set of measurements — not just relayed from an agent's listing description.</p>
<p style="color:rgba(255,255,255,0.82)">If a home is close but not quite there, I'll tell you exactly what it would take to fix it, and who could do the work. If it's not accessible, I'll tell you that too.</p>
<a class="btn btn--primary" href="#contact" style="width:fit-content;">Ask about a specific home</a>
</div>
</section>
<!-- ================= DEFINITIONS ================= -->
<section class="section" id="definitions">
<div class="wrap">
<div class="section__head">
<span class="section__eyebrow">Start here</span>
<h2>What "accessible" actually means</h2>
<p>A listing that says "wide doorways" might mean 34 inches, or it might mean nothing measured at all. Here's what we actually check, and why it matters for a wheelchair, a walker, aging knees, or a family bringing a parent or a medically fragile child into their home.</p>
</div>
<div class="specs__grid">
<div class="spec-card">
<svg class="spec-card__icon" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M6 34H34M10 34V10L20 6L30 10V34" stroke="currentColor" stroke-width="2"/><path d="M10 22H30" stroke="currentColor" stroke-width="2"/></svg>
<span class="spec-card__measure">0" threshold</span>
<h3>Zero-step entry</h3>
<p>Garage, front door, and back door are all level with the living space — not just one ramp bolted onto an otherwise stepped house.</p>
</div>
<div class="spec-card">
<svg class="spec-card__icon" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><rect x="12" y="4" width="16" height="32" rx="1" stroke="currentColor" stroke-width="2"/><path d="M28 4L34 8V32L28 36" stroke="currentColor" stroke-width="2"/></svg>
<span class="spec-card__measure">32–36"</span>
<h3>Wide doorways & hallways</h3>
<p>Clear openings a wheelchair or walker can actually pass through, in every hallway that matters — not just the front door.</p>
</div>
<div class="spec-card">
<svg class="spec-card__icon" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><circle cx="20" cy="20" r="14" stroke="currentColor" stroke-width="2"/><path d="M20 20L20 8M20 20L29 27" stroke="currentColor" stroke-width="2"/></svg>
<span class="spec-card__measure">60" radius</span>
<h3>Open-concept kitchen</h3>
<p>Enough clear floor space to turn a wheelchair fully around, plus reachable outlets and workable counter heights.</p>
</div>
<div class="spec-card">
<svg class="spec-card__icon" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M6 20C6 12 12 6 20 6C28 6 34 12 34 20" stroke="currentColor" stroke-width="2"/><path d="M6 20H34V30C34 32 32 34 30 34H10C8 34 6 32 6 30V20Z" stroke="currentColor" stroke-width="2"/></svg>
<span class="spec-card__measure">curbless</span>
<h3>Roll-in shower</h3>
<p>No lip to cross, a fold-down or built-in bench, and a handheld sprayer within reach from a seated position.</p>
</div>
<div class="spec-card">
<svg class="spec-card__icon" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><rect x="6" y="16" width="24" height="8" rx="4" stroke="currentColor" stroke-width="2"/><circle cx="32" cy="20" r="3" fill="currentColor"/></svg>
<span class="spec-card__measure">lever</span>
<h3>Lever handles & rocker switches</h3>
<p>Door and faucet hardware that doesn't require gripping or twisting, plus light switches usable with a closed fist or elbow.</p>
</div>
<div class="spec-card">
<svg class="spec-card__icon" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><rect x="8" y="8" width="24" height="24" rx="2" stroke="currentColor" stroke-width="2"/><path d="M8 20H32M20 8V32" stroke="currentColor" stroke-width="1.5" opacity="0.5"/></svg>
<span class="spec-card__measure">blocking</span>
<h3>Reinforced walls</h3>
<p>Framing that can actually hold a grab bar where one is needed — bathrooms, hallways, and by the bed.</p>
</div>
<div class="spec-card">
<svg class="spec-card__icon" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M6 30H34M9 30V16L20 8L31 16V30" stroke="currentColor" stroke-width="2"/></svg>
<span class="spec-card__measure">1 level</span>
<h3>Single-story or true elevator access</h3>
<p>A "accessible" two-story home with stairs as the only way up is not accessible. A chair lift bolted to a staircase usually isn't either.</p>
</div>
<div class="spec-card">
<svg class="spec-card__icon" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M6 34V16L20 6L34 16V34" stroke="currentColor" stroke-width="2"/><rect x="15" y="22" width="10" height="12" stroke="currentColor" stroke-width="2"/></svg>
<span class="spec-card__measure">garage</span>
<h3>Level garage entry</h3>
<p>The garage-to-house transition is one of the most commonly mislabeled features — we check it directly, every time.</p>
</div>
<div class="spec-card">
<svg class="spec-card__icon" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><rect x="6" y="14" width="12" height="18" rx="2" stroke="currentColor" stroke-width="2"/><rect x="22" y="14" width="12" height="18" rx="2" stroke="currentColor" stroke-width="2"/></svg>
<span class="spec-card__measure">2+ main level</span>
<h3>More than one main-level bedroom</h3>
<p>Room for an aging parent moving in, a live-in caregiver, or a child who needs to stay close — not tucked upstairs alone. Increasingly rare in Colorado, and increasingly needed.</p>
</div>
</div>
<div class="safety-list">
<h3>Safety considerations we also look at</h3>
<ul>
<li>Slip-resistant flooring throughout, and no loose or high-pile rugs that catch wheels, walkers, or feet.</li>
<li>Smooth, flush transitions between rooms — no small thresholds that seem minor but aren't.</li>
<li>Clear sightlines between common rooms, useful for supervising a child or an aging parent who needs to stay in view.</li>
<li>Secure exits and fencing for anyone prone to wandering or elopement — whether that's a child or an adult family member.</li>
<li>Emergency egress width from bedrooms, in case of a fire or evacuation — especially important on a main-level bedroom used by someone who can't manage stairs.</li>
<li>Low-stimulation options nearby: a quiet room or flexible space that could work for sensory regulation or caregiver rest.</li>
</ul>
</div>
</div>
</section>
<!-- ================= SEARCH / LISTINGS ================= -->
<section class="section section--paper-deep" id="search">
<div class="wrap">
<div class="section__head">
<span class="section__eyebrow">Browse listings</span>
<h2>Find inviting, verified homes</h2>
<p>These are sample listings to show how search will work. Real, verified listings replace these as they're added.</p>
</div>
<div class="filters" id="filters" role="group" aria-label="Filter listings by accessibility feature">
<button class="filter-chip" type="button" data-filter="all" aria-pressed="true">All homes</button>
<button class="filter-chip" type="button" data-filter="zero-step" aria-pressed="false">Zero-step entry</button>
<button class="filter-chip" type="button" data-filter="single-story" aria-pressed="false">Single-story</button>
<button class="filter-chip" type="button" data-filter="roll-in-shower" aria-pressed="false">Roll-in shower</button>
<button class="filter-chip" type="button" data-filter="wide-doorways" aria-pressed="false">Wide doorways</button>
<button class="filter-chip" type="button" data-filter="main-level-bed" aria-pressed="false">2+ main-level beds</button>
</div>
<div class="listings" id="listings"><!-- populated by JS --></div>
<p class="empty-state" id="emptyState">No sample listings match that filter yet.</p>
</div>
</section>
<!-- ================= ROADMAP (neighborhood-tile style) ================= -->
<section class="section" id="roadmap">
<div class="wrap">
<div class="section__head">
<span class="section__eyebrow">Where this is headed</span>
<h2>Beyond real estate</h2>
<p>Once the Colorado home search is solid, these sections are next.</p>
</div>
<div class="roadmap__grid">
<div class="roadmap-card"><span class="soon">Coming soon</span><h3>Accessible Airbnb & VRBO stays</h3><p>Verified short-term rentals across Colorado, checked the same way as our home listings.</p></div>
<div class="roadmap-card"><span class="soon">Coming soon</span><h3>Accessible hikes & activities</h3><p>Trails, parks, and outings that genuinely work for mobility devices and sensory needs.</p></div>
<div class="roadmap-card"><span class="soon">Coming soon</span><h3>Handicap-friendly businesses</h3><p>Restaurants, shops, and services that go beyond the legal minimum.</p></div>
<div class="roadmap-card"><span class="soon">Coming soon</span><h3>Inclusive playgrounds</h3><p>A map of playgrounds built for kids of every ability.</p></div>
<div class="roadmap-card"><span class="soon">Coming soon</span><h3>Sensory-friendly museum days</h3><p>A calendar of low-stimulation hours at Colorado museums and attractions.</p></div>
<div class="roadmap-card"><span class="soon">Coming soon</span><h3>Realtor referral network</h3><p>Vetted, accessibility-minded realtors in other cities and states.</p></div>
</div>
</div>
</section>
<!-- ================= NEWSLETTER / SIGNUP BAND ================= -->
<section class="newsband" id="signup">
<div class="newsband__inner">
<span class="section__eyebrow">Stay in the loop</span>
<h2>Get the weekly accessible homes list</h2>
<p>A short, honest email every week with newly listed and verified accessible homes in Southern Colorado.</p>
<form class="form-panel on-dark" id="signupForm" novalidate style="margin-top:32px; text-align:left;">
<div class="form__row">
<label for="su-name">Name</label>
<input type="text" id="su-name" name="name" required autocomplete="name">
</div>
<div class="form__row">
<label for="su-email">Email <span class="hint">— we'll never share it</span></label>
<input type="email" id="su-email" name="email" required autocomplete="email">
</div>
<div class="form__row">
<label for="su-region">Area of interest</label>
<select id="su-region" name="region">
<option>Colorado Springs</option>
<option>Pueblo</option>
<option>Fountain / Security-Widefield</option>
<option>Monument / Tri-Lakes</option>
<option>Cañon City</option>
<option>All of Southern Colorado</option>
</select>
</div>
<div class="form__row">
<label for="su-notes">What matters most for your family? <span class="hint">— optional</span></label>
<textarea id="su-notes" name="notes" placeholder="e.g. wheelchair user, sensory needs, single-story only, budget range..."></textarea>
</div>
<button type="submit" class="btn btn--primary btn--full">Sign up for the list</button>
<p class="form-note">This form is ready to connect to an email service (like Mailchimp or Formspree) — see the setup notes for how.</p>
<div class="form-status ok" id="signupStatus" role="status" aria-live="polite">Thanks — you're on the list. Watch your inbox on Fridays.</div>
</form>
</div>
</section>
<!-- ================= PARTNERS ================= -->
<section class="section" id="partners">
<div class="wrap">
<div class="section__head">
<span class="section__eyebrow">Working together</span>
<h2>Lenders & vendors for special needs families</h2>
<p>Building a short list of trusted partners who understand this community — lenders, contractors, therapists, and more.</p>
</div>
<div class="partners__grid">
<div class="partner-card"><h3>Lending partner</h3><p>Spot reserved for our founding lending partner. Financing guidance built around accessible home purchases.</p></div>
<div class="partner-card"><h3>Accessibility contractors</h3><p>Vendors who can modify a promising-but-not-quite-there home — ramps, roll-in showers, widened doorways.</p></div>
<div class="partner-card"><h3>Are you a vendor?</h3><p>If you serve families with disabilities in Colorado, <a href="#contact">reach out</a> about partnering.</p></div>
</div>
</div>
</section>
<!-- ================= CONTACT ================= -->
<section class="section section--paper-deep" id="contact">
<div class="wrap">
<div class="section__head">
<span class="section__eyebrow">Colorado Springs area</span>
<h2>Ask if a home is truly accessible</h2>
<p>Send me an address or listing link and I'll tell you what I can find — or go look myself.</p>
<p style="margin-top:18px; font-size:.98rem;">
<a href="tel:+17193298885" style="font-weight:700;">719.329.8885</a>
<span style="color:#9a9482;"> · </span>
<a href="mailto:stacy.christopher@yourcastle.com" style="font-weight:700;">stacy.christopher@yourcastle.com</a>
<br><span style="color:#6b6a5e; font-size:.92rem;">Stacy Christopher · Your Castle Real Estate · 6455 N Union Blvd #201, Colorado Springs, CO 80918</span>
</p>
</div>
<form class="form-panel" id="contactForm" novalidate>
<div class="form__row"><label for="c-name">Your name</label><input type="text" id="c-name" name="name" required autocomplete="name"></div>
<div class="form__row"><label for="c-email">Email</label><input type="email" id="c-email" name="email" required autocomplete="email"></div>
<div class="form__row"><label for="c-address">Address or MLS number</label><input type="text" id="c-address" name="address" required></div>
<div class="form__row"><label for="c-message">What do you need to know?</label><textarea id="c-message" name="message" required></textarea></div>
<button type="submit" class="btn btn--dark btn--full">Send my question</button>
<div class="form-status ok" id="contactStatus" role="status" aria-live="polite">Got it — I'll follow up as soon as I can.</div>
</form>
</div>
</section>
</main>
<footer class="site-footer">
<div class="footer__grid">
<div>
<div class="footer__brand">Accessible Homes Colorado<span>Verified · Southern Colorado</span></div>
<p style="max-width:34ch; font-size:.94rem; color:rgba(255,255,255,0.7);">Built by someone who's seen up close how much a home's layout can change a family's life.</p>
</div>
<div>
<h4>Explore</h4>
<ul class="footer__links">
<li><a href="#definitions">What "Accessible" Means</a></li>
<li><a href="#search">Search Homes</a></li>
<li><a href="#signup">Weekly List</a></li>
<li><a href="#partners">Partners</a></li>
<li><a href="#contact">Ask About a Home</a></li>
</ul>
</div>
<div>
<h4>Get in touch</h4>
<ul class="footer__links">
<li><a href="tel:+17193298885">719.329.8885</a></li>
<li><a href="mailto:stacy.christopher@yourcastle.com">stacy.christopher@yourcastle.com</a></li>
<li>6455 N Union Blvd #201<br>Colorado Springs, CO 80918</li>
<li><a href="https://www.yourcastle.com" target="_blank" rel="noopener">yourcastle.com</a></li>
</ul>
</div>
</div>
<div class="footer__bottom">
<span>Stacy Christopher, Your Castle Real Estate</span>
<span>Southern Colorado · Verified, not just labeled</span>
</div>
</footer>
<script>
const sampleListings = [
{ price: "$425,000", loc: "Fountain, CO · 3 bd / 2 ba", tags: ["zero-step", "single-story", "wide-doorways", "main-level-bed"] },
{ price: "$389,900", loc: "Colorado Springs, CO · 3 bd / 2 ba", tags: ["zero-step", "roll-in-shower"] },
{ price: "$512,000", loc: "Monument, CO · 4 bd / 3 ba", tags: ["single-story", "wide-doorways", "roll-in-shower", "main-level-bed"] },
{ price: "$349,500", loc: "Pueblo, CO · 2 bd / 2 ba", tags: ["zero-step", "single-story"] },
{ price: "$468,000", loc: "Cañon City, CO · 3 bd / 2 ba", tags: ["wide-doorways", "roll-in-shower"] },
{ price: "$395,000", loc: "Colorado Springs, CO · 3 bd / 2 ba", tags: ["zero-step", "single-story", "roll-in-shower"] }
];
const tagLabels = {
"zero-step": "Zero-step entry", "single-story": "Single-story", "roll-in-shower": "Roll-in shower",
"wide-doorways": "Wide doorways", "main-level-bed": "2+ main-level beds"
};
const listingsEl = document.getElementById('listings');
const emptyStateEl = document.getElementById('emptyState');
const mediaSVG = `<svg viewBox="0 0 320 190" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="none"><rect width="320" height="190" fill="none"/><path d="M0,190 L0,120 L60,80 L100,120 L130,95 L160,120 L160,190 Z" fill="rgba(247,242,229,0.18)"/><path d="M160,190 L160,110 L210,70 L235,110 L270,85 L300,120 L320,105 L320,190 Z" fill="rgba(247,242,229,0.28)"/><circle cx="260" cy="40" r="16" fill="rgba(231,201,124,0.55)"/></svg>`;
function renderListings(filter) {
const filtered = filter === 'all' ? sampleListings : sampleListings.filter(l => l.tags.includes(filter));
listingsEl.innerHTML = '';
emptyStateEl.style.display = filtered.length ? 'none' : 'block';
filtered.forEach(listing => {
const card = document.createElement('div');
card.className = 'listing-card';
card.innerHTML = `
<div class="listing-card__media">${mediaSVG}</div>
<div class="listing-card__body">
<div class="listing-card__price">${listing.price} <span class="demo-badge">SAMPLE</span></div>
<div class="listing-card__loc">${listing.loc}</div>
<div class="listing-card__tags">${listing.tags.map(t => `<span class="tag">${tagLabels[t]}</span>`).join('')}</div>
</div>`;
listingsEl.appendChild(card);
});
}
renderListings('all');
document.querySelectorAll('.filter-chip').forEach(btn => {
btn.addEventListener('click', () => {
document.querySelectorAll('.filter-chip').forEach(b => b.setAttribute('aria-pressed', 'false'));
btn.setAttribute('aria-pressed', 'true');
renderListings(btn.dataset.filter);
});
});
// ---- Where form submissions go ----
// These forms send straight to your email via formsubmit.co — a free service
// that needs NO account, NO login, and NO dashboard to configure. The only
// setup step: the very first time each form is submitted for real, formsubmit.co
// sends ONE confirmation email to the address below. Open it and click the
// one activation link — after that, every submission just arrives in your inbox.
//
// Want these leads in Rechat too? Simplest path: create an inbox rule/filter
// in your email that forwards anything from formsubmit.co to whatever email
// address Rechat uses for lead intake (ask Rechat support if they have one) —
// that needs no Zapier at all. A live Rechat webhook integration is a nice
// upgrade for later, not something you need today.
const NOTIFY_EMAIL = "stacy.christopher@yourcastle.com";
const SIGNUP_ENDPOINT = `https://formsubmit.co/ajax/${NOTIFY_EMAIL}`;
const CONTACT_ENDPOINT = `https://formsubmit.co/ajax/${NOTIFY_EMAIL}`;
function wireForm(formId, statusId, endpoint, subjectLine) {
const form = document.getElementById(formId);
const status = document.getElementById(statusId);
const submitBtn = form.querySelector('button[type="submit"]');
form.addEventListener('submit', (e) => {
e.preventDefault();
if (!form.checkValidity()) { form.reportValidity(); return; }
const data = new FormData(form);
data.append('_subject', subjectLine);
data.append('_template', 'table');
data.append('_captcha', 'false');
const originalLabel = submitBtn ? submitBtn.textContent : '';
if (submitBtn) { submitBtn.disabled = true; submitBtn.textContent = 'Sending...'; }
fetch(endpoint, {
method: 'POST',
body: data,
headers: { 'Accept': 'application/json' }
})
.then((res) => { if (!res.ok) throw new Error('bad response'); })
.then(() => {
status.classList.remove('err');
status.classList.add('is-visible', 'ok');
form.reset();
})
.catch(() => {
status.textContent = "Something didn't send. Please try again, or reach me directly at 719.329.8885.";
status.classList.remove('ok');
status.classList.add('is-visible', 'err');
})
.finally(() => {
if (submitBtn) { submitBtn.disabled = false; submitBtn.textContent = originalLabel; }
});
});
}
wireForm('signupForm', 'signupStatus', SIGNUP_ENDPOINT, 'New weekly-list signup — Accessible Homes Colorado');
wireForm('contactForm', 'contactStatus', CONTACT_ENDPOINT, 'New home question — Accessible Homes Colorado');
document.getElementById('heroSearchForm').addEventListener('submit', (e) => {
e.preventDefault();
document.getElementById('search').scrollIntoView({ behavior: 'smooth' });
});
</script>
</body>
</html>