PageSourceSearch

https://www.foundsurface.com/

html foundsurface.com collected 2026-10-04 02:07:45 UTC 15,633 bytes, 266 lines download raw bytes

1<!doctype html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<meta name="viewport" content="width=device-width,initial-scale=1">
6<title>Found Surface — Custom knit manufacturing, Cleveland Ohio</title>
7<meta name="description" content="American knit manufacturing. Jacquard sweaters, beanies, scarves, blankets and pennants — designed in our Knitting Studio and knit to spec in Cleveland, Ohio. No overseas handoffs.">
8<meta property="og:title" content="Found Surface — Yarn in. Product out.">
9<meta property="og:description" content="Design it in the Knitting Studio. We knit it in Cleveland. Jacquard sweaters, beanies, scarves, blankets and pennants.">
10<meta property="og:type" content="website">
11<link rel="icon" href="favicon.svg">
12<link rel="apple-touch-icon" href="apple-touch-icon.png">
13<link rel="preconnect" href="https://fonts.googleapis.com">
14<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
15<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Yellowtail&display=swap" rel="stylesheet">
16<link rel="stylesheet" href="css/site.css">
17<link rel="stylesheet" href="css/studio.css">
18<script type="importmap">{ "imports": { "three": "./assets/studio/three.module.min.js" } }</script>
18
19<!-- Model cache-busting, filled in by pull-assets.sh: filename -> content hash.
20     assets/studio/* is served with a 7-day max-age, so a re-exported .glb that
21     keeps its name is held by the BROWSER for a week however hard the CDN is
22     invalidated — see studio.js modelV(). Empty here on purpose; the deploy
23     stamps it, and an empty map just means unversioned URLs. -->
24<script id="ks-asset-v">window.KS_ASSET_V={"beanie_head_fs.glb":"50a2aad0ad","blanket_fs.glb":"b89d9a9776","pennant_fs.glb":"b49ca3f09d","scarf_fs.glb":"9c935ab77b","scarf_long_fs.glb":"74e35da8e2","scarf_worn_fs.glb":"53f9b04b7f","skully_fs.glb":"90626b3f39","sweater_fs.glb":"8adb82579e"};</script>
24
25</head>
26<body>
27
28<!-- ═══ Header ═════════════════════════════════════════════════════════ -->
29<header class="bar" id="bar">
30  <div class="wrap">
31    <a class="lockup" href="#top" aria-label="Found Surface — home">
32      <img src="brand/fs-wordmark.png" alt="Found Surface"><i>Made in USA</i></a>
33    <nav class="main" id="nav">
34      <a href="studio/">Studio</a>
35      <a href="#factory">Factory</a>
36      <a href="#industries">Industries</a>
37      <a href="#talk">Contact</a>
38      <!-- The Account button in .bar-end is hidden below 760px, which left a
39           customer on a phone with no way into their account at all. It lives
40           in the burger menu there instead, and is hidden again once the
41           button is back on screen. El, 2026-09-03: mobile spacing, menu. -->
42      <a class="on-menu" href="account/">Account</a>
43    </nav>
44    <div class="bar-end">
45      <a class="btn btn-ghost btn-hide" href="account/">Account</a>
46      <button class="btn btn-primary" data-studio-enter>
47        <span class="on-wide">Start a design</span><span class="on-narrow">Design</span></button>
48      <button class="burger" id="burger" aria-label="Menu" aria-expanded="false"><span></span></button>
49    </div>
50  </div>
51</header>
52
53<main id="top">
54
55<!-- ═══ The Studio — full bleed, the first thing on the page ═══════════ -->
56<section id="studio" class="studio-sec">
57  <!-- studio.js replaces the whole of #studio-root, so this stands in only for
58       as long as its modules take to arrive — the same skeleton the slides use,
59       on the same light. Without it (and without the section's reserved height
60       in studio.css) the first paint dropped the factory band into the top of
61       the window, footage and all, and then shoved it down. -->
62  <div id="studio-root">
63    <div class="studio-boot">Knitting Studio</div>
64  </div>
65</section>
66
67<!-- ═══ Knit, not printed ══════════════════════════════════════════════ -->
68<!-- This panel used to open the Studio page (studio-back.js). El moved it here:
69     the homepage is where the claim belongs, and the Studio page gets straight
70     to the blanks. -->
71<section class="cloth" id="cloth">
72  <figure class="cloth-fig rv">
73    <img src="media/bellows-blanket.jpg" loading="lazy"
74      alt="A black and ecru jacquard blanket reproducing George Bellows' A Stag at Sharkey's as knitted halftone, with the title up one edge and The Cleveland Museum of Art down the other">
75    <figcaption>Jacquard blanket · A Stag at Sharkey's, George Bellows 1916 · The Cleveland Museum of Art</figcaption>
76  </figure>
77  <div class="cloth-say rv">
78    <span class="eyebrow">Knit, not printed</span>
79    <h2>Graphic <em>is</em> the Garment</h2>
80    <p class="lede">Custom apparel has always been two steps: buy a blank, then pay someone to
81      decorate it. We knit the design into the garment as it’s made — yarns swapping places
82      stitch by stitch. The graphic is yarn, not a layer sitting on yarn, so it wears, washes
83      and fades with the fabric instead of against it.</p>
84    <!-- El, 4 Sep — four now, not three. They wrap to two rows in this column,
85         which is why .cloth-facts is a wrapping flex row and not a fixed grid. -->
86    <div class="cloth-facts">
87      <div><b>1</b><span>unit minimum</span></div>
88      <div><b>$0</b><span>setup or screen fees</span></div>
89      <div><b>$0</b><span>charge per color</span></div>
90      <div><b>100%</b><span>cotton, graphic included</span></div>
91    </div>
92    <button class="btn btn-ghost btn-lg" data-studio-enter>Pick a blank and design it
93      <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor"
94        stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 18 6-6-6-6"/></svg></button>
95  </div>
96</section>
97
98<!-- ═══ Factory ════════════════════════════════════════════════════════ -->
99<section id="factory" class="factory">
100  <!-- The floor itself, wide, behind everything. The still ships; the footage
101       is an upgrade the device opts into (site.js), and fades in over it. -->
102  <div class="factory-bg" id="floor-reel" data-poster="media/factory-floor.jpg" data-src="media/factory-floor.mp4">
103    <img src="media/factory-floor.jpg" alt="The knitting floor at Mulberry, Cleveland" loading="lazy">
104  </div>
105  <div class="factory-scrim"></div>
106  <div class="wrap factory-in">
107    <div class="factory-copy">
108      <span class="eyebrow">The Factory</span>
109      <h2>Mulberry: Cleveland, Ohio.</h2>
110      <p class="lede">Automated 3D Knitting. One building where yarn goes in and
111        product comes out.</p>
112    </div>
113    <div class="factory-cards">
114      <!-- El's copy, 4 Sep, verbatim and at EVERY width — the tightened version is
115           the copy now, not a phone-only variant of a longer desktop one. -->
116      <div class="card"><h3>Vertically integrated, additively made</h3>
117        <p>Every product is a digital program sent straight to the machine. Making what you
118          want, when you want it.</p></div>
119      <div class="card"><h3>Automation from file to freight</h3>
120        <p>Our own software carries an order from design to knit to packed box, cutting the
121          production cycle at every step.</p></div>
122      <div class="card"><h3>Real support, real-time visibility</h3>
123        <p>Watch every order move through the floor in real time. The team behind it works in
124          that same building.</p></div>
125    </div>
126  </div>
127</section>
128
129<!-- ═══ Industries ═════════════════════════════════════════════════════ -->
130<!-- El, 4 Sep: "Need to add mention of other industries we are in medical,
131     safety apparel ... Fully service product development fashion to automotive,
132     we do technical textiles for medical ppe etc ... Tab called Industries ...
133     make it look similar to factory ... should go right after the cotton is
134     graphic panel." So it is built on the SAME classes as the factory band
135     rather than a lookalike of its own — one set of rules, and the two read as
136     a pair. No data-src here, and site.js only ever upgrades #floor-reel, so
137     this one is a still and stays a still. -->
138<section id="industries" class="factory">
139  <div class="factory-bg">
140    <img src="media/technical-textiles.jpg" loading="lazy"
141      alt="Bands of technical knit in tan, ecru and open mesh structures coming off the bed of a blue flatbed machine">
142  </div>
143  <div class="factory-scrim"></div>
144  <div class="wrap factory-in">
145    <div class="factory-copy">
146      <span class="eyebrow">Industries</span>
147      <h2>Textiles are in almost everything.</h2>
148      <p class="lede">We bring our knitting and supply chain expertise to industry-leading
149        products, concept through production in one building. Clients develop directly with the
150        people on the machines, IP protected.</p>
151    </div>
152    <div class="factory-cards">
153      <div class="card"><h3>Fashion and apparel</h3>
154        <p>Fully-fashioned knitwear, jacquard graphics and engineered structures. Sweaters and
155          accessories built to a brand's own fit, hand and finish.</p></div>
156      <div class="card"><h3>Technical and protective</h3>
157        <p>Flame-resistant, cut-resistant and anti-microbial constructions. The performance is
158          engineered into the structure of the fabric, not added afterward.</p></div>
159      <div class="card"><h3>Medical</h3>
160        <p>New yarn systems and knit constructions for therapeutic and life-saving products.
161          Tight tolerances and repeatable results, lot to lot.</p></div>
162    </div>
163  </div>
164</section>
165
166<!-- ═══ Accounts + talk to us ══════════════════════════════════════════ -->
167<section class="band-ink" id="talk">
168  <div class="wrap">
169    <div class="sec-head">
170      <div>
171        <span class="eyebrow">Accounts</span>
172        <h2 style="color:#fff">Send your design straight to the machines.</h2>
173        <p>Place orders and follow them through the floor. Reorder when you’re ready — no quote
174          request, no waiting on a rep to send a form.</p>
175      </div>
176    </div>
177    <div class="card" style="display:flex;align-items:center;gap:1.2rem;flex-wrap:wrap">
178      <div style="flex:1;min-width:14rem"><h3 style="color:#fff">Your account</h3>
179        <p>Every design you save in the Studio, everything you have sent us, your quotes with real
180          prices, and the documents and photos we send you — in one place. One sweater or a whole
181          program, it is the same account.</p></div>
182      <!-- El, 2026-09-11: "there should be no create account option — it should
183           be get access code every time". One door, and it says what it is. -->
184      <a class="btn btn-primary" href="account/">Log in to your account</a>
185    </div>
186    <div class="card" style="margin-top:1rem;display:flex;align-items:center;gap:1.2rem;flex-wrap:wrap">
187      <div style="flex:1;min-width:14rem"><h3 style="color:#fff">Rather just ask us something?</h3>
188        <p>
188Send a spec, a sketch, or a question. We answer with data and a lead time.</p></div>
189      <button class="btn btn-ink" style="background:#fff;color:#0A0A0A;border-color:#fff" data-drawer="message">Message us</button>
190      <a class="btn btn-ghost" style="border-color:rgba(255,255,255,.3);color:#fff" href="mailto:[email protected]">[email protected]</a>
191    </div>
192  </div>
193</section>
194
195</main>
196
197<!-- ═══ Footer ═════════════════════════════════════════════════════════ -->
198<footer>
199  <div class="wrap">
200    <div class="cols">
201      <div>
202        <div class="lockup"><img src="brand/logo-wordmark-white.png" alt="Found Surface"></div>
203        <p>Yarn in. Product out. American textiles and custom apparel, knit in Cleveland, Ohio.</p>
204      </div>
205      <div><h4>Site</h4><ul>
206        <li><a href="studio/">Knitting Studio</a></li>
207      </ul></div>
208      <div><h4>Company</h4><ul>
209        <li><a href="#factory">The factory</a></li>
210        <li><a href="#industries">Industries</a></li>
211        <li><a href="#talk">Accounts</a></li>
212        <li><a href="mailto:[email protected]">[email protected]</a></li>
213      </ul></div>
214      <div><h4>Visit</h4><ul>
215        <li>Mulberry</li>
216        <li>West Bank of the Flats</li>
217        <li>Cleveland, Ohio</li>
218      </ul></div>
219    </div>
220    <div class="fine">
221      <span style="margin:0">© <b id="yr">2026</b> Found Surface · Made in USA</span>
222    </div>
223  </div>
224</footer>
225
226<!-- ═══ Drawer: accounts + messages ════════════════════════════════════ -->
227<div class="scrim" id="scrim"></div>
228<aside class="drawer" id="drawer" role="dialog" aria-modal="true" aria-label="Account and contact">
229  <div class="drawer-hd">
230    <!-- The drawer is for messages; accounts live at /account/. This is the
231         title before site.js runs, so it has to be the message one. -->
232    <b id="dr-title">Message us</b>
233    <button class="x" id="dr-x" aria-label="Close">✕</button>
234  </div>
235  <div class="drawer-bd">
236    <div id="dr-msg"></div>
237    <form id="dr-form" novalidate>
238      <div id="dr-recap"></div>
239      <label class="f"><span>Name</span><input type="text" name="name" autocomplete="name" required></label>
240      <label class="f"><span>Email</span><input type="email" name="email" autocomplete="email" required></label>
241      <label class="f" id="f-company"><span>Company <em style="color:var(--faint);font-style:normal">optional</em></span><input type="text" name="company" autocomplete="organization"></label>
242      <label class="f"><span>Phone <em style="color:var(--faint);font-style:normal">optional</em></span>
243        <input type="tel" name="phone" autocomplete="tel"></label>
244      <label class="f" id="f-note"><span id="l-note">What are you making?</span>
245        <textarea name="note" placeholder="Styles, colors, quantities, and the date you need them."></textarea></label>
246      <div id="dr-captcha"></div>
247      <button class="btn btn-primary btn-block btn-lg" type="submit" id="dr-send">Send it</button>
248      <p class="note" style="margin-top:.9rem" id="dr-note">
249        A person reads this — usually the same day. Want to save designs and see your quotes?
250        <a href="account/">Log in</a> — we email you a sign-in code, and that is the whole of it.
251      </p>
252    </form>
253  </div>
254</aside>
255
256<!-- site.js FIRST, on purpose: module scripts run in document order, and
257     ks3d.js pulls in three.js and the loaders (~800KB) before it hands over.
258     Behind it, the studio's own DOM did not exist until all of that had landed.
259     studio.js already waits for `ks3d-ready` (and checks window.KS3D in case it
260     beat it), so the hero can be on screen while the 3D engine is still coming. -->
261<script type="module" src="js/site.js"></script>
261
262<!-- The 3D engine is the portal Knitting Studio's own file, staged by
263     pull-assets.sh — one copy for the site and the portal (see its header). -->
264<script type="module" src="assets/studio/ks3d.js?v=95b1b4c6e6"></script>
264
265</body>
266</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.