// Hero - light paper canvas. Gold italic + textured paint-stroke underline on // the operative word. Alums-of strip replaces the stat band. Single Get in Touch CTA. // Switchable background treatments (preview selector, bottom-left): // refined · gold glow + drifting grid + grain (most brand-safe) // aurora · drifting gold/coral gradient blobs // spotlight · masked grid + sweeping soft spotlight // dots · animated dot-matrix with a pulsing reveal // mesh · multi-blob gradient mesh, faster + more saturated // beams · diagonal light beams sweeping across the canvas // constellation · canvas particle network, mouse-reactive (most motion) // Pick via the selector or ?hero= in the URL. const HERO_BGS = ['refined', 'aurora', 'spotlight', 'dots', 'mesh', 'beams', 'constellation']; // "Alums of" marquee firms. To swap a wordmark for a real logo image later, // add a `src` to that object (e.g. { name: 'Prudential', src: 'logos/prudential.svg' }). // The render below shows an when `src` is present, otherwise the Cormorant wordmark. // `h` = per-logo render height in px. Logos have different aspect ratios and // internal padding, so equal height looks unbalanced; tune each to match the // visual weight of the wide Redwood Dev Co wordmark. // Hero stat band. Three numeric proof points plus one qualitative item. // Gold Cormorant figures, DM Mono small-caps labels. No vertical rules: // the four cells sit as a calm, even row separated by generous spacing. // The qualitative item carries a short metric-style figure ("End to end") // in place of a numeral so the row of four reads as four deliberate callouts. const HERO_STATS = [ { figure: '$5.5 billion+', label: 'Workforce housing deals closed' }, { figure: '4,000+', label: 'Units developed' }, { figure: '22,000+', label: 'Low-income families served' }, { figure: 'End to end', label: 'AI engineering expertise' }, ]; const ALUMS = [ { name: 'Teach For America', src: 'assets/logos/teach-for-america.png', h: 52 }, { name: 'PGIM Real Estate', src: 'assets/logos/pgim-real-estate.png', h: 40 }, { name: 'R4 Capital', src: 'assets/logos/r4-capital.png', h: 42 }, { name: 'BridgeInvest', src: 'assets/logos/bridgeinvest.png', h: 44 }, { name: 'Redwood Dev Co', src: 'assets/logos/redwood-devco.png', h: 30 }, ]; const Hero = () => { const initial = (() => { try { const p = new URLSearchParams(window.location.search).get('hero'); if (p && HERO_BGS.includes(p)) return p; } catch (e) {} return 'mesh'; })(); const [bg, setBg] = React.useState(initial); // Canvas particle network for the "constellation" background. React.useEffect(() => { if (bg !== 'constellation') return; const canvas = document.getElementById('mdai-constellation'); if (!canvas) return; const ctx = canvas.getContext('2d'); const DPR = Math.min(window.devicePixelRatio || 1, 2); let w = 0, h = 0, pts = [], raf = 0; const mouse = { x: -9999, y: -9999 }; function resize() { w = canvas.clientWidth; h = canvas.clientHeight; canvas.width = w * DPR; canvas.height = h * DPR; ctx.setTransform(DPR, 0, 0, DPR, 0, 0); } function init() { const count = Math.max(40, Math.min(110, Math.floor((w * h) / 13000))); pts = Array.from({ length: count }, () => ({ x: Math.random() * w, y: Math.random() * h, vx: (Math.random() - 0.5) * 0.55, vy: (Math.random() - 0.5) * 0.55, r: Math.random() * 1.7 + 0.8, coral: Math.random() < 0.12, })); } function frame() { ctx.clearRect(0, 0, w, h); for (const p of pts) { p.x += p.vx; p.y += p.vy; if (p.x < 0 || p.x > w) p.vx *= -1; if (p.y < 0 || p.y > h) p.vy *= -1; } for (let i = 0; i < pts.length; i++) { for (let j = i + 1; j < pts.length; j++) { const a = pts[i], b = pts[j]; const dx = a.x - b.x, dy = a.y - b.y, d = Math.hypot(dx, dy); if (d < 135) { ctx.strokeStyle = 'rgba(156,124,46,' + ((1 - d / 135) * 0.20).toFixed(3) + ')'; ctx.lineWidth = 1; ctx.beginPath(); ctx.moveTo(a.x, a.y); ctx.lineTo(b.x, b.y); ctx.stroke(); } } } for (const p of pts) { const dx = p.x - mouse.x, dy = p.y - mouse.y, d = Math.hypot(dx, dy); if (d < 180) { ctx.strokeStyle = 'rgba(201,168,76,' + ((1 - d / 180) * 0.45).toFixed(3) + ')'; ctx.lineWidth = 1; ctx.beginPath(); ctx.moveTo(p.x, p.y); ctx.lineTo(mouse.x, mouse.y); ctx.stroke(); } } for (const p of pts) { ctx.fillStyle = p.coral ? 'rgba(228,88,106,0.7)' : 'rgba(156,124,46,0.55)'; ctx.beginPath(); ctx.arc(p.x, p.y, p.r, 0, Math.PI * 2); ctx.fill(); } raf = requestAnimationFrame(frame); } function onMove(e) { const rect = canvas.getBoundingClientRect(); mouse.x = e.clientX - rect.left; mouse.y = e.clientY - rect.top; } function onLeave() { mouse.x = -9999; mouse.y = -9999; } function onResize() { resize(); init(); } resize(); init(); const reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches; if (reduce) { frame(); cancelAnimationFrame(raf); } else frame(); window.addEventListener('resize', onResize); canvas.addEventListener('mousemove', onMove); canvas.addEventListener('mouseleave', onLeave); return () => { cancelAnimationFrame(raf); window.removeEventListener('resize', onResize); canvas.removeEventListener('mousemove', onMove); canvas.removeEventListener('mouseleave', onLeave); }; }, [bg]); return (
{/* ---- Background treatments ---- */} {bg === 'refined' && ( <>
)} {bg === 'aurora' && ( <>
)} {bg === 'spotlight' && ( <>
)} {bg === 'dots' && ( <>
)} {bg === 'mesh' && ( <>
)} {bg === 'beams' && ( <>
)} {bg === 'constellation' && ( <>
)}
Mission Driven AI

The AI partner for{' '} mission-driven {' '} housing.

We partner with mid-market and enterprise groups across the housing landscape to design, build, and deploy custom AI systems. From strategy to results, we own the work end to end.

{HERO_STATS.map((s) => (
{s.figure}
{s.label}
))}
Built by alums of
{/* Render the firm set twice so the translateX(-50%) loop is seamless. */} {[...ALUMS, ...ALUMS].map((item, i) => ( {item.src ? ( {item.name} ) : ( {item.name} )} ))}
{/* Background is locked to mesh. The other treatments remain in code and can still be previewed via the ?hero= URL param if needed. */}
); }; const heroStyles = { wrap: { position: 'relative', minHeight: '100vh', background: 'var(--bg)', overflow: 'hidden', display: 'flex', alignItems: 'center', }, glow: { position: 'absolute', inset: 0, zIndex: 1, pointerEvents: 'none', background: 'radial-gradient(55% 45% at 78% 22%, rgba(201,168,76,0.20), transparent 70%),' + 'radial-gradient(38% 38% at 12% 80%, rgba(228,88,106,0.06), transparent 75%)', }, grid: { position: 'absolute', inset: 0, zIndex: 1, pointerEvents: 'none', backgroundImage: 'linear-gradient(rgba(10,10,15,0.05) 1px, transparent 1px),' + 'linear-gradient(90deg, rgba(10,10,15,0.05) 1px, transparent 1px)', backgroundSize: '60px 60px', }, gridMasked: { position: 'absolute', inset: 0, zIndex: 0, pointerEvents: 'none', backgroundImage: 'linear-gradient(rgba(10,10,15,0.06) 1px, transparent 1px),' + 'linear-gradient(90deg, rgba(10,10,15,0.06) 1px, transparent 1px)', backgroundSize: '60px 60px', WebkitMaskImage: 'radial-gradient(70% 70% at 50% 40%, #000 30%, transparent 80%)', maskImage: 'radial-gradient(70% 70% at 50% 40%, #000 30%, transparent 80%)', }, dotfield: { position: 'absolute', inset: 0, zIndex: 1, pointerEvents: 'none', backgroundImage: 'radial-gradient(rgba(10,10,15,0.12) 1.4px, transparent 1.4px)', backgroundSize: '26px 26px', WebkitMaskImage: 'radial-gradient(75% 75% at 50% 38%, #000 35%, transparent 85%)', maskImage: 'radial-gradient(75% 75% at 50% 38%, #000 35%, transparent 85%)', }, canvas: { position: 'absolute', inset: 0, zIndex: 1, pointerEvents: 'auto', width: '100%', height: '100%', }, noise: { position: 'absolute', inset: 0, zIndex: 3, pointerEvents: 'none', opacity: 0.4, mixBlendMode: 'multiply', backgroundImage: "url(\"data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.92' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.04 0 0 0 0 0.04 0 0 0 0 0.06 0 0 0 0.06 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E\")", }, inner: { position: 'relative', zIndex: 5, maxWidth: 1240, margin: '0 auto', padding: '160px 32px 96px', width: '100%', boxSizing: 'border-box', }, eyebrow: { fontFamily: 'var(--font-mono)', fontSize: 11, letterSpacing: '0.22em', textTransform: 'uppercase', color: 'var(--fg-accent)', marginBottom: 36, }, headline: { fontFamily: 'var(--font-display)', fontWeight: 500, fontSize: 'clamp(56px, 7.2vw, 104px)', lineHeight: 0.98, letterSpacing: '-0.02em', color: 'var(--fg-1)', margin: '0 0 32px', maxWidth: 1100, textWrap: 'balance', }, headlineEm: { display: 'inline-block' }, headlineEmItalic: { color: 'var(--fg-accent)', fontStyle: 'italic', fontWeight: 500 }, brush: {}, lede: { fontSize: 19, lineHeight: 1.6, color: 'var(--fg-2)', maxWidth: 760, margin: '0 0 56px', textWrap: 'pretty', }, statBand: { display: 'grid', gridTemplateColumns: 'repeat(4, minmax(0, 1fr))', columnGap: 48, rowGap: 28, margin: '0 0 56px', maxWidth: 940, }, statCell: { padding: 0, }, statFigure: { fontFamily: 'var(--font-display)', fontSize: 'clamp(34px, 3.6vw, 50px)', lineHeight: 1, letterSpacing: '-0.02em', color: 'var(--fg-accent)', fontWeight: 500, whiteSpace: 'nowrap', }, statLabel: { fontFamily: 'var(--font-mono)', fontSize: 10, letterSpacing: '0.22em', textTransform: 'uppercase', color: 'var(--fg-2)', marginTop: 14, lineHeight: 1.5, }, alumStrip: { borderTop: '1px solid var(--border-gold)', borderBottom: '1px solid var(--border-gold)', padding: '20px 0', margin: '0 0 48px', display: 'flex', alignItems: 'center', gap: 32, flexWrap: 'wrap', }, alumLabel: { fontFamily: 'var(--font-mono)', fontSize: 10, letterSpacing: '0.22em', textTransform: 'uppercase', color: 'var(--fg-accent)', whiteSpace: 'nowrap', }, alumMarquee: { flex: 1, minWidth: 0, overflow: 'hidden', WebkitMaskImage: 'linear-gradient(90deg, transparent 0, #000 3%, #000 97%, transparent 100%)', maskImage: 'linear-gradient(90deg, transparent 0, #000 3%, #000 97%, transparent 100%)', }, alumTrack: { display: 'flex', alignItems: 'center', width: 'max-content', willChange: 'transform', }, alumItem: { display: 'inline-flex', alignItems: 'center', padding: '0 28px', }, alumName: { fontFamily: 'var(--font-display)', fontStyle: 'italic', fontSize: 22, fontWeight: 500, lineHeight: 1, color: 'var(--fg-1)', opacity: 0.7, whiteSpace: 'nowrap', transition: 'color 160ms cubic-bezier(0.22,0.61,0.36,1), opacity 160ms cubic-bezier(0.22,0.61,0.36,1)', }, alumLogo: { height: 28, width: 'auto', display: 'block', filter: 'grayscale(1)', opacity: 0.6, transition: 'opacity 160ms cubic-bezier(0.22,0.61,0.36,1)', }, ctas: { display: 'flex', gap: 16, flexWrap: 'wrap' }, ctaPrimary: { background: 'var(--gold)', color: 'var(--ink)', padding: '18px 28px', borderRadius: 4, fontFamily: 'var(--font-mono)', fontSize: 11, letterSpacing: '0.2em', textTransform: 'uppercase', textDecoration: 'none', border: 0, fontWeight: 500, transition: 'background 160ms cubic-bezier(0.22,0.61,0.36,1)', }, selector: { position: 'fixed', left: 18, bottom: 18, zIndex: 60, display: 'flex', alignItems: 'center', gap: 6, flexWrap: 'wrap', maxWidth: '90vw', background: 'rgba(245,243,238,0.85)', backdropFilter: 'blur(10px)', WebkitBackdropFilter: 'blur(10px)', border: '1px solid var(--border-gold)', borderRadius: 6, padding: '7px 9px', }, selectorLabel: { fontFamily: 'var(--font-mono)', fontSize: 9, letterSpacing: '0.18em', textTransform: 'uppercase', color: 'var(--fg-accent)', marginRight: 4, }, selectorBtn: { fontFamily: 'var(--font-mono)', fontSize: 9, letterSpacing: '0.1em', textTransform: 'uppercase', color: 'var(--fg-1)', background: 'transparent', border: '1px solid transparent', borderRadius: 4, padding: '5px 8px', cursor: 'pointer', transition: 'all 160ms cubic-bezier(0.22,0.61,0.36,1)', }, selectorBtnActive: { background: 'var(--gold)', color: 'var(--ink)', fontWeight: 500 }, }; Object.assign(window, { Hero });