PageSourceSearch

https://cityinnovations.com/

html cityinnovations.com collected 2026-10-06 12:06:44 UTC 40,515 bytes, 641 lines download raw bytes

1<!DOCTYPE html>
2<!-- saved from url=(0126) -->
3<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<title>City Innovations — Gain Traction First™</title>
7<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Space+Grotesk:wght@400;500;600;700&display=swap" rel="stylesheet">
8<style>
9@font-face {
10  font-family: 'Axiforma';
11  src: local('Axiforma'), local('DM Sans');
12  font-weight: 400;
13}
14@font-face {
15  font-family: 'Axiforma';
16  src: local('Axiforma Bold'), local('DM Sans');
17  font-weight: 700;
18}
19
20:root {
21  --yellow: #f4b80d;
22  --yellow-light: #f7ca42;
23  --yellow-dark: #d4a00b;
24  --black: #000000;
25  --dark: #111111;
26  --dark-surface: #1a1a1a;
27  --white: #ffffff;
28  --light-gray: #ece8d7;
29  --text-primary: #ffffff;
30  --text-secondary: rgba(255,255,255,0.6);
31  --text-dark: #1a1a1a;
32  --text-dark-secondary: #666;
33  --blue: #008194;
34  --border-dark: rgba(255,255,255,0.08);
35  --border-light: rgba(0,0,0,0.08);
36  --font-heading: 'Axiforma', 'DM Sans', 'Inter', sans-serif;
37  --font-body: 'Inter', sans-serif;
38}
39
40*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
41::selection { background: var(--yellow); color: var(--black); }
42html { scroll-behavior: smooth; overflow-x: hidden; }
43body { background: var(--white); color: var(--text-dark); font-family: var(--font-body); line-height: 1.6; overflow-x: hidden; }
44
45/* ── Nav ── */
46nav {
47  position: fixed; top: 0; left: 0; right: 0; padding: 18px 48px;
48  display: flex; align-items: center; justify-content: space-between;
49  z-index: 100; background: rgba(0,0,0,0.92);
50  backdrop-filter: saturate(180%) blur(24px);
51  box-shadow: 0 1px 0 rgba(255,255,255,0.04);
52}
53nav .logo { height: 56px; }
54.nav-links { display: flex; gap: 28px; align-items: center; }
55.nav-links a { color: rgba(255,255,255,0.65); text-decoration: none; font-size: 14px; font-weight: 500; transition: color 0.3s; }
56.nav-links a:hover { color: #fff; }
57.nav-cta {
58  background: rgba(255,255,255,0.08); color: #fff !important; padding: 9px 22px;
59  border-radius: 9999px; border: 1px solid rgba(255,255,255,0.2); transition: all 0.3s;
60}
61.nav-cta:hover { border-color: rgba(255,255,255,0.5); }
62
63/* ── Utility ── */
64.container { max-width: 1140px; margin: 0 auto; }
65.section-pad { padding: 100px 32px; }
66.btn {
67  display: inline-flex; align-items: center; gap: 8px;
68  padding: 14px 28px; border-radius: 9999px; font-weight: 600; font-size: 15px;
69  text-decoration: none; transition: all 0.3s; border: none; cursor: pointer;
70}
71.btn-dark { background: var(--black); color: var(--white); box-shadow: 0 4px 16px rgba(0,0,0,0.15); }
72.btn-dark:hover { background: #1a1a1a; box-shadow: 0 6px 24px rgba(0,0,0,0.2); transform: translateY(-1px); }
73.btn-yellow { background: var(--yellow); color: var(--black); box-shadow: 0 4px 16px rgba(244,184,13,0.3); }
74.btn-yellow:hover { background: var(--yellow-light); box-shadow: 0 6px 24px rgba(244,184,13,0.35); transform: translateY(-1px); }
75.btn-outline-light { background: transparent; color: #fff; border: 1px solid rgba(255,255,255,0.25); }
76.btn-outline-light:hover { border-color: rgba(255,255,255,0.6); }
77.btn-outline-dark { background: transparent; color: var(--text-dark); border: 1px solid rgba(0,0,0,0.15); }
78.btn-outline-dark:hover { border-color: rgba(0,0,0,0.4); }
79.btn svg { width: 16px; height: 16px; }
80.arrow-icon { fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
81
82.label {
83  font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
84  color: var(--yellow); margin-bottom: 12px;
85}
86.light-label { color: var(--yellow); }
87.dark-label { color: var(--blue); }
88
89h2 { font-family: var(--font-heading); font-size: clamp(30px,3.5vw,48px); font-weight: 700; letter-spacing: -0.02em; line-height: 1.12; margin-bottom: 16px; }
90h3 { font-family: var(--font-heading); font-weight: 700; }
91
92/* ── HERO ── dark bg */
93.hero {
94  background: var(--black); color: var(--text-primary);
95  padding: 160px 32px 110px; text-align: center; position: relative; overflow: hidden;
96}
97.hero::before {
98  content: ''; position: absolute; top: 0; right: -10%; width: 700px; height: 700px;
99  background: radial-gradient(circle, rgba(244,184,13,0.06) 0%, transparent 70%);
100  pointer-events: none;
101}
102.hero::after {
103  content: ''; position: absolute; bottom: 0; left: -10%; width: 500px; height: 500px;
104  background: radial-gradient(circle, rgba(0,129,148,0.05) 0%, transparent 70%);
105  pointer-events: none;
106}
107
108.hero .label { color: var(--yellow); margin-bottom: 20px; }
109.hero h1 {
110  font-family: var(--font-heading); font-size: clamp(42px,5.8vw,76px);
111  font-weight: 700; line-height: 1.06; letter-spacing: -0.035em; max-width: 880px; margin: 0 auto;
112  text-shadow: 0 2px 40px rgba(0,0,0,0.3);
113}
114.hero h1 em { font-style: normal; color: var(--yellow); }
115.hero p { font-size: clamp(16px,1.4vw,19px); color: var(--text-secondary); max-width: 620px; margin: 20px auto 0; line-height: 1.7; }
116.hero-btns { display: flex; gap: 12px; justify-content: center; margin-top: 40px; flex-wrap: wrap; }
117
118/* ── TRACTION LABS ── white bg */
119.tl-section { background: var(--white); }
120.tl-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }
121.tl-content .label { color: var(--blue); }
122.tl-content h2 { color: var(--text-dark); }
123.tl-content h2 em { font-style: normal; color: var(--blue); }
124.tl-content p { color: var(--text-dark-secondary); font-size: 16px; line-height: 1.75; margin-bottom: 28px; }
125.tl-features { display: flex; flex-direction: column; gap: 14px; margin-bottom: 32px; }
126.tl-feature { display: flex; align-items: flex-start; gap: 10px; font-size: 15px; color: var(--text-dark-secondary); }
127.tl-feature strong { color: var(--text-dark); }
128.tl-check { color: var(--blue); flex-shrink: 0; margin-top: 3px; font-weight: 700; }
129.tl-visual { display: flex; justify-content: center; }
130.tl-visual img { width: 100%; max-width: 480px; filter: drop-shadow(0 8px 24px rgba(0,0,0,0.08)); transition: transform 0.4s; }
131.tl-visual img:hover { transform: scale(1.02); }
132
133/* ── Stats ── */
134.stats-bar {
135  display: grid; grid-template-columns: repeat(4,1fr);
136  background: var(--black); border-radius: 16px; overflow: hidden; margin-top: 56px;
137  box-shadow: 0 16px 48px rgba(0,0,0,0.12);
138}
139.stat { padding: 36px 24px; text-align: center; border-right: 1px solid rgba(255,255,255,0.06); }
140.stat:last-child { border-right: none; }
141.stat-num { font-family: var(--font-heading); font-size: clamp(28px,3vw,40px); font-weight: 700; color: var(--yellow); line-height: 1; }
142.stat-text { font-size: 13px; color: rgba(255,255,255,0.5); margin-top: 8px; line-height: 1.4; }
143
144/* ── DIFFERENTIATOR ── light gray bg */
145.diff-section { background: var(--light-gray); }
146.diff-section h2 { color: var(--text-dark); text-align: center; }
147.diff-section h2 em { font-style: normal; color: var(--blue); }
148.diff-section .label { text-align: center; display: block; color: var(--blue); }
149.diff-subtitle { text-align: center; color: var(--text-dark-secondary); font-size: 17px; max-width: 600px; margin: 0 auto 48px; line-height: 1.7; }
150.diff-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
151.diff-card { border-radius: 16px; padding: 36px 32px; transition: all 0.3s; }
152.diff-old { background: var(--white); border: 1px solid rgba(0,0,0,0.06); box-shadow: 0 2px 8px rgba(0,0,0,0.03); }
153.diff-new { background: var(--black); color: var(--text-primary); box-shadow: 0 8px 32px rgba(0,0,0,0.2); }
154.diff-header { font-family: var(--font-heading); font-size: 17px; font-weight: 700; margin-bottom: 24px; padding-bottom: 14px; }
155.diff-old .diff-header { color: var(--text-dark-secondary); border-bottom: 1px solid rgba(0,0,0,0.06); }
156.diff-new .diff-header { color: var(--yellow); border-bottom: 1px solid rgba(255,255,255,0.08); }
157.diff-items { display: flex; flex-direction: column; gap: 14px; }
158.diff-item { font-size: 14px; line-height: 1.6; padding-left: 24px; position: relative; }
159.diff-old .diff-item { color: #999; }
160.diff-old .diff-item::before { content: '✕'; position: absolute; left: 0; color: #ccc; font-size: 12px; font-weight: 700; }
161.diff-new .diff-item { color: rgba(255,255,255,0.7); }
162.diff-new .diff-item::before { content: '✓'; position: absolute; left: 0; color: var(--yellow); font-size: 13px; font-weight: 700; }
163.diff-cta { text-align: center; margin-top: 40px; }
164
165/* ── HOW IT WORKS ── white bg */
166.process-section { background: var(--white); }
167.process-section h2 { text-align: center; }
168.process-section .label { text-align: center; display: block; }
169.process-subtitle { text-align: center; color: var(--text-dark-secondary); font-size: 17px; max-width: 640px; margin: 0 auto 48px; line-height: 1.7; }
170.process-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 20px; }
171.process-step { padding: 32px 24px; background: var(--light-gray); border-radius: 14px; text-align: center; position: relative; transition: all 0.3s; box-shadow: 0 1px 3px rgba(0,0,0,0.03); }
172.process-step:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,0,0,0.06); }
173.process-step::after { content: '→'; position: absolute; right: -14px; top: 50%; transform: translateY(-50%); color: var(--yellow-dark); font-size: 18px; z-index: 2; }
174.process-step:last-child::after { display: none; }
175.step-num { font-family: var(--font-heading); font-size: 40px; font-weight: 700; color: var(--blue); opacity: 0.55; margin-bottom: 8px; }
176.step-title { font-family: var(--font-heading); font-size: 17px; font-weight: 700; color: var(--text-dark); margin-bottom: 8px; }
177.step-desc { font-size: 13px; color: var(--text-dark-secondary); line-height: 1.6; }
178
179/* ── ORIGIN STORY ── dark bg */
180.story-section { background: var(--black); color: var(--text-primary); }
181.story-layout { display: grid; grid-template-columns: 1.2fr 0.8fr; gap: 72px; align-items: start; }
182.story-section .label { color: var(--yellow); }
183.story-section h2 { color: #fff; }
184.story-section h2 em { font-style: normal;
184 color: var(--yellow); }
185.story-body p { font-size: 16px; color: var(--text-secondary); line-height: 1.8; margin-bottom: 14px; }
186.story-body strong { color: #fff; }
187.story-body i { color: var(--yellow); font-style: italic; }
188
189.timeline { display: flex; flex-direction: column; }
190.tl-item { display: flex; gap: 18px; align-items: flex-start; }
191.tl-dot { width: 12px; height: 12px; border-radius: 50%; border: 2px solid; flex-shrink: 0; margin-top: 5px; }
192.tl-dot.old { border-color: #555; }
193.tl-dot.mid { border-color: var(--yellow-dark); background: rgba(244,184,13,0.15); }
194.tl-dot.now { border-color: var(--yellow); background: var(--yellow); }
195.tl-line { width: 2px; height: 28px; background: rgba(255,255,255,0.08); margin-left: 5px; }
196.tl-phase { font-size: 10px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: rgba(255,255,255,0.4); margin-bottom: 3px; }
197.tl-quote { font-family: var(--font-heading); font-size: 16px; font-weight: 700; color: #fff; margin-bottom: 4px; }
198.tl-desc { font-size: 13px; color: var(--text-secondary); line-height: 1.5; }
199
200/* ── METHODOLOGY / BOOK ── light gray bg */
201.method-section { background: var(--light-gray); }
202.method-grid { display: grid; grid-template-columns: 0.8fr 1.2fr; gap: 72px; align-items: center; }
203.book-img { width: 100%; max-width: 320px; border-radius: 8px; box-shadow: 0 24px 56px rgba(0,0,0,0.18), 0 0 0 1px rgba(0,0,0,0.04); transition: transform 0.4s; }
204.book-img:hover { transform: scale(1.02) rotate(-1deg); }
205.book-avail { margin-top: 20px; font-size: 13px; color: var(--text-dark-secondary); }
206.book-avail strong { color: var(--text-dark); }
207.method-content .label { color: var(--yellow-dark); }
208.method-content h2 em { font-style: normal; color: var(--yellow-dark); }
209.laws-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 28px 0; }
210.law-item {
211  display: flex; align-items: flex-start; gap: 8px; padding: 12px 14px;
212  background: var(--white); border-radius: 8px; font-size: 13px; color: var(--text-dark-secondary); line-height: 1.4;
213}
214.law-num { font-family: var(--font-heading); font-weight: 700; font-size: 11px; color: var(--yellow-dark); flex-shrink: 0; width: 18px; text-align: right; }
215.book-quote {
216  margin-top: 28px; padding: 20px 24px;
217  border-left: 3px solid var(--yellow); background: var(--white); border-radius: 0 10px 10px 0;
218}
219.book-quote p { font-size: 15px; font-style: italic; color: var(--text-dark); line-height: 1.6; margin-bottom: 6px; }
220.book-quote cite { font-style: normal; font-size: 12px; color: var(--text-dark-secondary); }
221.stars { color: var(--yellow); letter-spacing: 2px; }
222
223/* ── TRACTION STACK ── white bg */
224.stack-section { background: var(--white); }
225.stack-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 48px; }
226.stack-card {
227  background: var(--light-gray); border-radius: 16px; padding: 36px 32px;
228  transition: all 0.4s cubic-bezier(0.16,1,0.3,1); position: relative; overflow: hidden;
229  box-shadow: 0 1px 3px rgba(0,0,0,0.04);
230}
231.stack-card:hover { transform: translateY(-3px); box-shadow: 0 12px 36px rgba(0,0,0,0.08); }
232.stack-card.featured { grid-column: 1/-1; }
233.card-number { font-family: var(--font-heading); font-size: 56px; font-weight: 700; color: rgba(0,0,0,0.04); position: absolute; top: 12px; right: 24px; line-height: 1; }
234.card-status { display: inline-block; font-size: 10px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; padding: 3px 10px; border-radius: 9999px; margin-bottom: 14px; }
235.status-spun { background: rgba(0,129,148,0.1); color: var(--blue); }
236.status-incubating { background: rgba(244,184,13,0.12); color: var(--yellow-dark); }
237.card-name { font-family: var(--font-heading); font-size: 24px; font-weight: 700; color: var(--text-dark); margin-bottom: 4px; }
238.card-tagline { font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--blue); margin-bottom: 12px; }
239.card-desc { font-size: 14px; color: var(--text-dark-secondary); line-height: 1.7; margin-bottom: 20px; }
240.card-link { display: inline-flex; align-items: center; gap: 6px; color: var(--blue); font-weight: 600; font-size: 13px; text-decoration: none; transition: all 0.3s; }
241.card-link:hover { gap: 10px; color: var(--yellow-dark); }
242
243/* ── TESTIMONIALS ── dark bg */
244.proof-section { background: var(--light-gray); color: var(--text-dark); }
245.logo-bar {
246  display: flex; align-items: center; justify-content: center; gap: 56px;
247  margin: 36px auto 48px; padding: 32px 0;
248  border-top: 1px solid rgba(0,0,0,0.06); border-bottom: 1px solid rgba(0,0,0,0.06);
249  flex-wrap: wrap;
250}
251.logo-text {
252  font-family: var(--font-heading); font-size: 18px; font-weight: 700;
253  opacity: 0.5; transition: opacity 0.3s; white-space: nowrap;
254}
255.logo-text:hover { opacity: 0.85; }
256@media(max-width:600px) {
257  .logo-bar { gap: 20px 28px; padding: 24px 0; justify-content: center; }
258  .logo-text { font-size: 13px; white-space: normal; text-align: center; }
259}
260.test-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 20px; margin-top: 40px; }
261.test-card { background: var(--white); border-radius: 14px; padding: 28px; border: 1px solid rgba(0,0,0,0.04); box-shadow: 0 1px 3px rgba(0,0,0,0.03); transition: all 0.3s; }
262.test-card:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,0,0,0.06); }
263.test-card p { font-size: 14px; font-style: italic; color: var(--text-dark); line-height: 1.7; margin-bottom: 16px; }
264.test-card cite { font-style: normal; font-size: 12px; color: var(--text-dark-secondary); display: block; border-top: 1px solid rgba(0,0,0,0.06); padding-top: 12px; }
265.test-card cite strong { color: var(--text-dark); display: block; margin-bottom: 2px; }
266
267/* ── BLOG ── light gray bg */
268.blog-section { background: var(--light-gray); }
269.blog-section .label { text-align: center; display: block; color: var(--blue); }
270.blog-section h2 { text-align: center; }
271.blog-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 20px; margin-top: 40px; }
272.blog-card {
273  background: var(--white); border-radius: 14px; padding: 28px; text-decoration: none;
274  transition: all 0.4s cubic-bezier(0.16,1,0.3,1); display: flex; flex-direction: column; gap: 14px;
275  box-shadow: 0 1px 3px rgba(0,0,0,0.03);
276}
277.blog-card:hover { transform: translateY(-3px); box-shadow: 0 12px 32px rgba(0,0,0,0.08); }
278.blog-tag { display: inline-block; font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--blue); background: rgba(0,129,148,0.08); padding: 3px 8px; border-radius: 4px; width: fit-content; }
279.blog-card h3 { font-size: 16px; color: var(--text-dark); line-height: 1.35; }
280.blog-read { font-size: 13px; color: var(--blue); font-weight: 600; margin-top: auto; }
281.blog-cta { text-align: center; margin-top: 32px; }
282
283/* ── CTA + FORM ── white bg */
284.cta-section { background: var(--white); text-align: center; padding: 100px 32px; }
285.cta-section h2 { max-width: 600px; margin: 0 auto 16px; }
286.cta-subtitle { color: var(--text-dark-secondary); font-size: 17px; max-width: 580px; margin: 0 auto 40px; line-height: 1.7; }
287.contact-form {
288  max-width: 580px; margin: 0 auto; text-align: left;
289  background: var(--light-gray); border-radius: 16px; padding: 44px 40px;
290  box-shadow: 0 8px 32px rgba(0,0,0,0.04);
291}
292.form-title { font-family: var(--font-heading); font-size: 20px; font-weight: 700; text-align: center; margin-bottom: 28px; color: var(--text-dark); }
293.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 14px; }
294.form-group { display: flex; flex-direction: column; gap: 5px; margin-bottom: 14px; }
295.form-row .form-group { margin-bottom: 0; }
296.form-group label { font-size: 12px; font-weight: 600; color: var(--text-dark-secondary); }
297.form-group input, .form-group textarea {
298  background: var(--white); border: 1px solid rgba(0,0,0,0.1); border-radius: 8px;
299  padding: 12px 14px; color: var(--text-dark); font-family: var(--font-body); font-size: 14px;
300  transition: border-color 0.3s; outline: none; width: 100%;
301}
302.form-group input::placeholder, .form-group textarea::placeholder { color: #bbb; }
303.form-group input:focus, .form-group textarea:focus { border-color: var(--blue); }
304.form-group textarea { resize: vertical; min-height: 90px; }
305
306/* ── Footer ── */
307footer { background: var(--black); padding: 44px 32px; border-top: 1px solid rgba(255,255,255,0.04); }
308.footer-inner { max-width: 1140px; margin: 0 auto; display: flex; justify-content: space-between; align-items: center; }
309.footer-inner .logo { height: 48px; opacity: 0.5; }
310.footer-links { display: flex; gap: 20px; }
311.footer-links a { color: rgba(255,255,255,0.4); text-decoration: none; font-size: 13px; transition: color 0.3s; }
312.footer-links a:hover { color: #fff; }
313.footer-inner span { font-size: 12px; color: rgba(255,255,255,0.3); }
314
315/* ── Animations ── */
316@keyframes fadeUp { from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)} }
317.reveal { opacity: 1; transform: translateY(0); transition: all 0.6s cubic-bezier(0.16,1,0.3,1); }
318
319/* ── Responsive ── */
320/* Hamburger */
321.hamburger { display: none; background: none; border: none; cursor: pointer; padding: 8px; z-index: 101; }
322.hamburger span { display: block; width: 22px; height: 2px; background: #fff; margin: 5px 0; transition: all 0.3s; border-radius: 2px; }
323
324@media(max-width:900px) {
325  .hamburger { display: block; }
326  .nav-links {
327    position: fixed; top: 0; right: -100%; width: 280px; height: 100vh;
328    background: rgba(0,0,0,0.97); backdrop-filter: blur(20px);
329    flex-direction: column; padding: 100px 32px 32px; gap: 24px;
330    transition: right 0.35s cubic-bezier(0.16,1,0.3,1);
331    box-shadow: -8px 0 32px rgba(0,0,0,0.3);
332  }
333  .nav-links.open { right: 0; }
334  .nav-links a { font-size: 18px; color: rgba(255,255,255,0.8); }
335  .nav-cta { text-align: center; margin-top: 12px; }
336}
337
338@media(max-width:900px) {
339  .tl-grid, .story-layout, .method-grid { grid-template-columns: 1fr; }
340  .tl-visual { order: -1; }
341  .stack-grid, .diff-grid { grid-template-columns: 1fr; }
342  .stack-card.featured { grid-column: auto; }
343  .stats-bar, .process-grid { grid-template-columns: 1fr 1fr; }
344  .process-step::after { display: none; }
345  .test-grid, .blog-grid { grid-template-columns: 1fr; }
346  nav { padding: 14px 20px; }
347  .nav-links { gap: 14px; }
348}
349@media(max-width:600px) {
350  .stats-bar, .process-grid { grid-template-columns: 1fr; }
351  .form-row { grid-template-columns: 1fr; }
352}
353</style>
354</head>
355<body>
356
357<!-- Nav -->
358<nav>
359  <img class="logo" src="./files/city-innovations-logo-with-tagline.png" alt="City Innovations">
360  <button class="hamburger" onclick="document.querySelector(&#39;.nav-links&#39;).classList.toggle(&#39;open&#39;)" aria-label="Menu">
361    <span></span><span></span><span></span>
362  </button>
363  <div class="nav-links">
364    <a href="#traction-labs" onclick="this.parentElement.classList.remove(&#39;open&#39;)">Traction Labs</a>
365    <a href="#methodology" onclick="this.parentElement.classList.remove(&#39;open&#39;)">Methodology</a>
366    <a href="#stack" onclick="this.parentElement.classList.remove(&#39;open&#39;)">Ecosystem</a>
367    <a href="https://tractionfirst.substack.com/">Insights</a>
368    <a href="#contact" class="nav-cta" onclick="this.parentElement.classList.remove(&#39;open&#39;)">Work With Us</a>
369  </div>
370</nav>
371
372<!-- HERO -->
373<section class="hero">
374  <div class="container">
375    <div class="label">The Market Traction Gap Is the #1 Reason Businesses Stall</div>
376    <h1 style="font-size:4em;">Traction Changes <u>Everything.</u><br/><em>We help companies find it faster.</em></h1>
377    <p>City Innovations is a venture studio unified by one methodology — <strong><a style="color:var(--yellow);" href="#methodology">Traction First™</a></strong> — and one mission: helping businesses and ventures find market traction faster than anyone. Whether you're stuck or just starting, we built an entire ecosystem around finding it.</p>
378    <div class="hero-btns">
379      <a href="#traction-labs" class="btn btn-yellow">Get Traction <svg class="arrow-icon" viewBox="0 0 16 16"><path d="M3 8h10M9 4l4 4-4 4"></path></svg></a>
380      <a href="#stack" class="btn btn-outline-light">Explore the Ecosystem</a>
381    </div>
382  </div>
383</section>
384
385<!-- TRACTION LABS -->
386<section id="traction-labs" class="tl-section section-pad">
387  <div class="container">
388    <div class="tl-grid">
389      <div class="tl-content">
390        <div class="label dark-label">Flagship Company</div>
391        <h2>Traction Labs — The First-Ever <em>Traction Studio</em></h2>
392        <p>Revenue plateaued. Growth stalled. A new product can't find its market. An existing business can't break through. Traction Labs was built for exactly these moments. We're not an agency, not a consultancy — we're the team that finds your fastest path to real customers, real revenue, real momentum.</p>
393        <div class="tl-features">
394          <div class="tl-feature"><span class="tl-check">✓</span><span><strong>Sell First, Build Later</strong> — we prove demand before you invest in building</span></div>
395          <div class="tl-feature"><span class="tl-check">✓</span><span><strong>520 learnings/year</strong> — vs. the industry average of 12. We learn 43× faster.</span></div>
396          <div class="tl-feature"><span class="tl-check">✓</span><span><strong>2-week sprint cycles</strong> — rapid experiments that reveal what works and what doesn't</span></div>
397        </div>
398        <a href="https://tractionlabs.city/" class="btn btn-dark">
398Visit Traction Labs <svg class="arrow-icon" viewBox="0 0 16 16"><path d="M3 8h10M9 4l4 4-4 4"></path></svg></a>
399      </div>
400      <div class="tl-visual">
401        <img src="./files/3afcfe8c-2c44-46f6-8486-d6d61ce256d9.png" alt="Traction Flywheel">
402      </div>
403    </div>
404    <!-- Stats -->
405    <div class="stats-bar">
406      <div class="stat"><div class="stat-num">43×</div><div class="stat-text">Faster to Market<br>Traction Than Typical</div></div>
407      <div class="stat"><div class="stat-num">520</div><div class="stat-text">Learnings Per Year<br>vs. Industry's 12</div></div>
408
409      <div class="stat"><div class="stat-num">2 wk</div><div class="stat-text">Sprint Cycles for<br>Rapid Experiments</div></div>
410
411      <div class="stat"><div class="stat-num">$1→$10</div><div class="stat-text">In/Out Repeatable<br>Traction Engine</div></div>
412    </div>
413  </div>
414</section>
415
416<!-- DIFFERENTIATOR -->
417<section class="diff-section section-pad">
418  <div class="container">
419    <div class="label">Why This Is Different</div>
420    <h2>Not an Agency. Not a Consultancy.<br>A <em>Traction Studio</em>.</h2>
421    <p class="diff-subtitle">You've probably hired marketing firms or sales consultants before. Maybe it worked for a while. Maybe it didn't. Here's why Traction Labs exists in a category of its own.</p>
422    <div class="diff-grid">
423      <div class="diff-card diff-old">
424        <div class="diff-header">Traditional Approach</div>
425        <div class="diff-items">
426          <div class="diff-item">Build the product first, then find customers</div>
427          <div class="diff-item">Campaigns based on assumptions and "best practices"</div>
428          <div class="diff-item">Quarterly plans, monthly reports, slow iteration</div>
429          <div class="diff-item">Success measured in impressions, clicks, leads</div>
430          <div class="diff-item">Engagement ends with a deliverable</div>
431        </div>
432      </div>
433      <div class="diff-card diff-new">
434        <div class="diff-header">The Traction Labs Way</div>
435        <div class="diff-items">
436          <div class="diff-item">Prove demand first — whether it's a new product or a stuck one</div>
437          <div class="diff-item">Experiments driven by real market signal, not guesses</div>
438          <div class="diff-item">2-week sprints, 520 learnings/year, constant pivots</div>
439          <div class="diff-item">Success measured in revenue, retention, and repeatability</div>
440          <div class="diff-item">We install a traction engine inside your organization</div>
441        </div>
442      </div>
443    </div>
444    <div class="diff-cta"><a href="#contact" class="btn btn-dark">Talk to Traction Labs <svg class="arrow-icon" viewBox="0 0 16 16"><path d="M3 8h10M9 4l4 4-4 4"></path></svg></a></div>
445  </div>
446</section>
447
448<!-- HOW IT WORKS -->
449<section class="process-section section-pad">
450  <div class="container">
451    <div class="label">How It Works</div>
452    <h2>Sell First. Build Later.</h2>
453    <p class="process-subtitle">The Traction First™ methodology flips the script — whether you're going to market for the first time or finding new growth in an existing business. Stop guessing. Start proving what the market will pay for.</p>
454    <div class="process-grid">
455      <div class="process-step"><div class="step-num">01</div><div class="step-title">Signal</div><div class="step-desc">Capture real market signal. Whether it's a new idea or a business that's plateaued — find out what your market actually wants.</div></div>
456      <div class="process-step"><div class="step-num">02</div><div class="step-title">Sell</div><div class="step-desc">Sell before you build. Early sales aren't revenue — they're the fastest learning mechanism that exists.</div></div>
457      <div class="process-step"><div class="step-num">03</div><div class="step-title">Prove</div><div class="step-desc">Run rapid 2-week experiments. Validate what works, kill what doesn't. Build a repeatable traction engine with proof.</div></div>
458      <div class="process-step"><div class="step-num">04</div><div class="step-title">Scale</div><div class="step-desc">Once traction is proven and repeatable — then and only then — pour fuel on the fire.</div></div>
459    </div>
460  </div>
461</section>
462
463
464
465<!-- METHODOLOGY / BOOK -->
466<section id="methodology" class="method-section section-pad">
467  <div class="container">
468    <div class="method-grid">
469      <div class="book-visual" style="text-align:center;">
470        <img class="book-img" src="./files/696e72b5bdf29aa9e80be4cf_IMG_0231-22.jpg" alt="Traction First™ by Josh Barker">
471        <div class="book-avail"><strong>Available on</strong> Amazon · Audible · Kindle</div>
472      </div>
473      <div class="method-content">
474        <div class="label">The Methodology</div>
475        <h2>Traction First™: <em>The 12 Laws of Market Traction</em></h2>
476        <p style="font-size:16px;color:var(--text-dark-secondary);line-height:1.75;margin-bottom:8px;">This isn't another business book — it's a wake-up call. Written by founder <strong style="color:var(--text-dark)">Josh Barker</strong> from hard-earned Silicon Valley lessons, Traction First™ lays out the battle-tested principles behind every company in our portfolio.</p>
477        <p style="font-size:16px;color:var(--text-dark-secondary);line-height:1.75;">The core idea: <strong style="color:var(--blue)">sell before you build.</strong></p>
478        <div class="laws-grid">
479          <div class="law-item"><span class="law-num">01</span> Sell before you build</div>
480          <div class="law-item"><span class="law-num">02</span> Learn from early sales</div>
481          <div class="law-item"><span class="law-num">03</span> Solve urgent pain, not vitamins</div>
482          <div class="law-item"><span class="law-num">04</span> Build momentum in weeks</div>
483          <div class="law-item"><span class="law-num">05</span> Traction beats perfection</div>
484          <div class="law-item"><span class="law-num">06</span> Engineer a growth engine</div>
485        </div>
486        <div style="display:flex;gap:10px;flex-wrap:wrap;">
487          <a href="https://a.co/d/1DYbNOz" class="btn btn-yellow">Get the Book <svg class="arrow-icon" viewBox="0 0 16 16"><path d="M3 8h10M9 4l4 4-4 4"></path></svg></a>
488          <a href="https://tractionfirst.com/" class="btn btn-outline-dark">Learn More</a>
489        </div>
490      </div>
491    </div>
492  </div>
493</section>
494
495<!-- TRACTION STACK -->
496<section id="stack" class="stack-section section-pad">
497  <div class="container">
498    <div class="label">Our Portfolio</div>
499    <h2>The Traction Ecosystem</h2>
500    <p style="color:var(--text-dark-secondary);font-size:17px;max-width:600px;line-height:1.7;">Four interconnected companies powered by the Traction First™ methodology. Each solves a different part of the market traction problem — for startups finding their footing and established businesses reigniting growth.</p>
501    <div class="stack-grid">
502      <div class="stack-card">
503        <div class="card-number">01</div>
504        <span class="card-status status-spun">Spun Out · Flagship</span>
505        <div class="card-name">Traction Labs</div>
506        <div class="card-tagline">Traction Studio</div>
507        <p class="card-desc" style="max-width:660px;">The first Traction Studio — devoted to getting your organization market traction as fast as possible. We find the fastest path to growth — turning ideas into traction, reviving what's stuck, and scaling what works.</p>
508        <a href="https://tractionlabs.city/" class="card-link">Visit tractionlabs.city <svg class="arrow-icon" viewBox="0 0 16 16"><path d="M3 8h10M9 4l4 4-4 4"></path></svg></a>
509      </div>
510      <div class="stack-card">
511        <div class="card-number">
51102</div>
512        <span class="card-status status-spun">Spun Out</span>
513        <div class="card-name">ThinkTank</div>
514        <div class="card-tagline">AI-Powered Trust Engine</div>
515        <p class="card-desc">Trust comes before revenue. ThinkTank builds trust at scale — using AI-powered content built from your voice, your expertise, and your point of view. From podcast studios to the Belief Engine™ to On-The-Road conference pipeline — we turn one conversation into months of traction.</p>
516        <a href="https://thinktank.city/" class="card-link">Visit thinktank.city <svg class="arrow-icon" viewBox="0 0 16 16"><path d="M3 8h10M9 4l4 4-4 4"></path></svg></a>
517      </div>
518      <div class="stack-card">
519        <div class="card-number">03</div>
520        <span class="card-status status-incubating">Incubating</span>
521        <div class="card-name">Hivemind</div>
522        <div class="card-tagline">Traction First™ AI</div>
523        <p class="card-desc">Your team learns. Hivemind compounds it. Patent-pending autonomous knowledge reinforcement technology that auto-learns from every customer interaction — compounding 520 learnings/year into organizational intelligence that gets exponentially smarter. The AI backbone of the Traction First™ system.</p>
524        <a href="https://hivemind.city/" class="card-link">Visit hivemind.city <svg class="arrow-icon" viewBox="0 0 16 16"><path d="M3 8h10M9 4l4 4-4 4"></path></svg></a>
525      </div>
526
527      <!-- Traction First -->
528      <div class="stack-card">
529        <div class="card-number">04</div>
530        <span class="card-status status-spun">Spun Out</span>
531        <div class="card-name">Traction First™</div>
532        <div class="card-tagline">Education & Methodology</div>
533        <p class="card-desc">The brand behind the methodology. Traction First™ houses the education of the system — the book series, certification programs, courses, and the accelerator — giving leaders and practitioners the tools to build repeatable growth engines themselves.</p>
534        <a href="https://tractionfirst.com" class="card-link">Visit tractionfirst.com <svg class="arrow-icon" viewBox="0 0 16 16"><path d="M3 8h10M9 4l4 4-4 4"></path></svg></a>
535      </div>
536    </div>
537  </div>
538</section>
539
540<!-- SOCIAL PROOF -->
541<section class="proof-section section-pad">
542  <div class="container">
543    <div class="label" style="text-align:center;display:block;color:var(--blue);">Trusted By</div>
544    <h2 style="text-align:center;">Traction First™ Changes Everything</h2>
545    <div class="logo-bar">
546      <div class="logo-text" style="color:#0072CE;"><span style="font-weight:800;">Consumers</span> Energy</div>
547      <div class="logo-text" style="color:#CC0000;font-weight:800;">Gordon<span style="color:#666;font-weight:400;"> Food Service</span></div>
548      <div class="logo-text" style="color:#1a237e;"><span style="font-weight:800;">WOLVERINE</span> <span style="font-weight:400;">BUILDING GROUP</span></div>
549      <div class="logo-text" style="color:#1a1a1a;font-weight:800;letter-spacing:0.12em;">CAVALLO<sup style="font-size:8px;">®</sup></div>
550    </div>
551    <div class="test-grid">
552      <div class="test-card"><p>"The Market Traction Funnel gave our team a clear, no-nonsense roadmap to move fast without wasting millions."</p><cite><strong>Isaiah Mclaughlin</strong>CEO</cite></div>
553      <div class="test-card"><p>"City Innovations led us from a basic idea to a fully operational product and a successful launch. I'd highly recommend their services."</p><cite><strong>Tracy</strong>Nell</cite></div>
554      <div class="test-card"><p>"When I see founders applying these principles, I know they're serious. This book should be on every pitch deck prep list."</p><cite><strong>Cam VanHouten</strong>Investor / VC</cite></div>
555    </div>
556  </div>
557</section>
558
559<!-- BLOG (hidden) -->
560<section class="blog-section section-pad" style="display:none;">
561  <div class="container">
562    <div class="label">Insights</div>
563    <h2>Tips, Ideas &amp; Stories for Innovators</h2>
564    <div class="blog-grid">
565      <a href="https://cityinnovations.com/why-early-traction-feels-flat-and-why-thats-exactly-what-should-happen/" class="blog-card">
566        <div class="blog-tag">Market Traction</div>
567        <h3>Why Early Traction Feels Flat — And Why That's Exactly What Should Happen</h3>
568        <span class="blog-read">Read article →</span>
569      </a>
570      <a href="https://cityinnovations.com/product-launch-strategy-benefits/" class="blog-card">
571        <div class="blog-tag">Strategy</div>
572        <h3>Creating a Product Launch Strategy: 6 Advantages for Corporate Intrapreneurs</h3>
573        <span class="blog-read">Read article →</span>
574      </a>
575      <a href="https://cityinnovations.com/product-market-fit-stages-and-questions/" class="blog-card">
576        <div class="blog-tag">Product-Market Fit</div>
577        <h3>Establishing Product-Market Fit: Stages, Questions to Ask, &amp; More</h3>
578        <span class="blog-read">Read article →</span>
579      </a>
580    </div>
581    <div class="blog-cta"><a href="https://tractionfirst.substack.com/" class="btn btn-outline-dark">View All Insights</a></div>
582  </div>
583</section>
584
585<!-- ORIGIN STORY -->
586<section class="story-section section-pad">
587  <div class="container">
588    <div class="story-layout">
589      <div class="story-content">
590        <div class="label">Our Story</div>
591        <h2>From Big 4 to Silicon Valley to <em>This</em>.</h2>
592        <div class="story-body">
593          <p>We came from Big 4 consulting. Went to Silicon Valley. Built a startup that missed the mark. That failure taught us everything — and became the foundation for <strong>Traction First™</strong>.</p>
594          <p>Our first iteration was a software company. Our mantra: <strong>"build the right thing."</strong> We preached <i>"validate before you build."</i> Almost nobody listened. Everyone had their Field of Dreams moment — <i>"just build it and they'll come."</i></p>
595          <p>So we started catching people after. Founders who built something great but couldn't grow it. Established businesses that had never cracked a repeatable growth engine. Companies doing fine — but stuck at the same revenue year after year.</p>
596          <p>The problem was always the same: <strong>no system for market traction.</strong> That's why we pivoted everything to Traction First™ — and built Traction Labs to solve it.</p>
597        </div>
598      </div>
599      <div class="story-sidebar" style="position:sticky;top:120px;">
600        <div class="timeline">
601          <div class="tl-item"><div class="tl-dot old"></div><div><div class="tl-phase">Big 4 → Silicon Valley</div><div class="tl-quote">Built a startup. It failed.</div><div class="tl-desc">Hard-earned lessons became the Traction First™ methodology.</div></div></div>
602          <div class="tl-line"></div>
603          <div class="tl-item"><div class="tl-dot mid"></div><div><div class="tl-phase">Software Company</div><div class="tl-quote">"Build the right thing"</div><div class="tl-desc">We preached validate-first. Nobody listened. They built anyway.</div></div></div>
604          <div class="tl-line"></div>
605          <div class="tl-item"><div class="tl-dot mid"></div><div><div class="tl-phase">The Pattern</div><div class="tl-quote">"We built it. Why isn't it working?"</div><div class="tl-desc">Same story. Hundreds of times. Great products. No traction.</div></div></div>
606          <div class="tl-line"></div>
607          <div class="tl-item"><div class="tl-dot now"></div><div><div class="tl-phase">Now</div><div class="tl-quote">Traction Labs</div><div class="tl-desc">A repeatable system for market traction — whether you're launching, stuck, or scaling.</div></div></div>
608        </div>
609      </div>
610    </div>
611  </div>
612</section>
613
614<!-- CTA + FORM -->
615<section id="contact" class="cta-section">
616  <div class="container">
617    <div class="label" style="text-align:center;display:block;color:var(--blue);">Ready?</div>
618    <h2>Traction First™ isn't luck —<br>it's a system.</h2>
619    <p class="cta-subtitle">Whether you're an established business looking to break through, or a startup finding its footing — Traction Labs is the fastest path to market traction. Real customers, real revenue, real momentum.</p>
620
621    <div class="opcrm-webform contact-form" id="opcrm-webform-6a04e7aa6281fc038e356cb2" data-form-url="https://forms.onepagecrm.com/6a04e7aa6281fc038e356cb2/"></div>
622    
622<script type="text/javascript" src="https://forms.onepagecrm.com/embed.js"></script>
622
623  </div>
624</section>
625
626<!-- Footer -->
627<footer>
628  <div class="footer-inner">
629    <img class="logo" src="./files/city-innovations-logo-with-tagline.png" alt="City Innovations">
630    <div class="footer-links">
631      <a href="https://cityinnovations.com/about/">About</a>
632      <a href="https://tractionfirst.substack.com/">Insights</a>
633      <a href="https://tractionfirst.com/">Traction First™</a>
634      <a href="https://cityinnovations.com/privacy-policy/">Privacy</a>
635    </div>
636    <span>© 2026 City Innovations</span>
637  </div>
638</footer>
639
640
641</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.