oh-my-design-cli 1.8.6 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/.claude/hooks/lib/preferences-parser.cjs +1 -0
  2. package/.claude/hooks/lib/preferences-writer.cjs +1 -0
  3. package/.claude/hooks/post-edit-watch.cjs +1 -0
  4. package/.claude/hooks/session-end-foldin.cjs +1 -0
  5. package/.claude/hooks/session-state-loader.cjs +1 -0
  6. package/.claude/hooks/skill-activation.cjs +1 -0
  7. package/.claude/settings.json +10 -1
  8. package/.github/assets/logo-bg.png +0 -0
  9. package/AGENTS.md +20 -1
  10. package/CHANGELOG.md +482 -0
  11. package/MIGRATION.md +103 -0
  12. package/README.ja.md +56 -19
  13. package/README.ko.md +47 -30
  14. package/README.md +48 -30
  15. package/README.zh-TW.md +59 -22
  16. package/agents/AGENT.md +8 -7
  17. package/agents/omd-codex-image.md +1 -1
  18. package/agents/omd-critic.md +6 -7
  19. package/agents/omd-designer-review.md +1 -1
  20. package/agents/omd-final-qa.md +1 -1
  21. package/agents/omd-humanizer.md +38 -0
  22. package/agents/omd-kr-writer.md +3 -4
  23. package/agents/omd-locale-adapter.md +12 -16
  24. package/agents/omd-master.md +24 -19
  25. package/agents/omd-microcopy.md +1 -1
  26. package/agents/omd-orchestrator.md +7 -8
  27. package/agents/omd-slop-auditor.md +31 -0
  28. package/agents/omd-ux-researcher.md +1 -1
  29. package/data/reference-fingerprints.json +2761 -85
  30. package/dist/bin/oh-my-design.js +16 -8
  31. package/dist/bin/oh-my-design.js.map +1 -1
  32. package/dist/chunk-UJIHCEYF.js +99 -0
  33. package/dist/chunk-UJIHCEYF.js.map +1 -0
  34. package/dist/doctor-LDWSFM3I.js +763 -0
  35. package/dist/doctor-LDWSFM3I.js.map +1 -0
  36. package/dist/install-skills-ZZFNJ2II.js +1120 -0
  37. package/dist/install-skills-ZZFNJ2II.js.map +1 -0
  38. package/docs/CLI_QUICKSTART.md +157 -0
  39. package/package.json +25 -4
  40. package/scripts/postinstall.cjs +5 -4
  41. package/skills/claude-design/SKILL.md +38 -14
  42. package/skills/claude-design/references/claude-design-flow.md +11 -11
  43. package/skills/claude-design/references/codebase-analysis.md +5 -4
  44. package/skills/omd-final-qa/SKILL.md +1 -1
  45. package/skills/omd-harness/SKILL.md +51 -50
  46. package/skills/omd-humanize/SKILL.md +116 -0
  47. package/skills/omd-humanize/agents/openai.yaml +4 -0
  48. package/skills/omd-humanize/references/locale-playbooks.md +102 -0
  49. package/skills/omd-humanize/references/sources.md +11 -0
  50. package/skills/omd-init/SKILL.md +18 -12
  51. package/skills/omd-locale-adapter/SKILL.md +58 -91
  52. package/skills/omd-orchestrator/SKILL.md +11 -5
  53. package/skills/omd-reference-capture/SKILL.md +80 -26
  54. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
  55. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
  56. package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
  57. package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
  58. package/skills/omd-slop-audit/SKILL.md +110 -0
  59. package/skills/omd-slop-audit/agents/openai.yaml +4 -0
  60. package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
  61. package/skills/omd-slop-audit/references/sources.md +24 -0
  62. package/web/references/104/DESIGN.md +354 -0
  63. package/web/references/11st/DESIGN.md +197 -316
  64. package/web/references/29cm/DESIGN.md +297 -393
  65. package/web/references/42dot/DESIGN.md +390 -0
  66. package/web/references/8percent/DESIGN.md +438 -0
  67. package/web/references/ably/DESIGN.md +267 -572
  68. package/web/references/acer/DESIGN.md +329 -0
  69. package/web/references/airbnb/DESIGN.md +219 -557
  70. package/web/references/airbridge/DESIGN.md +451 -0
  71. package/web/references/alipay/DESIGN.md +179 -420
  72. package/web/references/apple/DESIGN.md +224 -498
  73. package/web/references/asleep/DESIGN.md +402 -0
  74. package/web/references/au/DESIGN.md +334 -0
  75. package/web/references/autopedia/DESIGN.md +382 -0
  76. package/web/references/aws-cloudscape/DESIGN.md +241 -0
  77. package/web/references/baemin/DESIGN.md +332 -491
  78. package/web/references/banksalad/DESIGN.md +269 -180
  79. package/web/references/barogo/DESIGN.md +416 -0
  80. package/web/references/beusable/DESIGN.md +464 -0
  81. package/web/references/bigin/DESIGN.md +454 -0
  82. package/web/references/bilibili/DESIGN.md +206 -374
  83. package/web/references/bmw/DESIGN.md +162 -276
  84. package/web/references/brandi/DESIGN.md +184 -325
  85. package/web/references/buzzvil/DESIGN.md +457 -0
  86. package/web/references/cafe24/DESIGN.md +472 -0
  87. package/web/references/catchtable/DESIGN.md +219 -264
  88. package/web/references/cgv/DESIGN.md +317 -0
  89. package/web/references/channeltalk/DESIGN.md +210 -336
  90. package/web/references/china-airlines/DESIGN.md +291 -0
  91. package/web/references/cjonstyle/DESIGN.md +453 -0
  92. package/web/references/class101/DESIGN.md +168 -387
  93. package/web/references/classum/DESIGN.md +228 -203
  94. package/web/references/claude/DESIGN.md +242 -479
  95. package/web/references/clay/DESIGN.md +179 -377
  96. package/web/references/clickhouse/DESIGN.md +254 -343
  97. package/web/references/codeit/DESIGN.md +470 -0
  98. package/web/references/cohere/DESIGN.md +214 -324
  99. package/web/references/coinone/DESIGN.md +199 -179
  100. package/web/references/corca/DESIGN.md +414 -0
  101. package/web/references/coupang/DESIGN.md +205 -475
  102. package/web/references/cursor/DESIGN.md +240 -381
  103. package/web/references/dabang/DESIGN.md +248 -213
  104. package/web/references/dable/DESIGN.md +431 -0
  105. package/web/references/datarize/DESIGN.md +338 -0
  106. package/web/references/dealicious/DESIGN.md +402 -0
  107. package/web/references/drdiary/DESIGN.md +404 -0
  108. package/web/references/elastic/DESIGN.md +238 -0
  109. package/web/references/elevenlabs/DESIGN.md +183 -321
  110. package/web/references/elice/DESIGN.md +445 -0
  111. package/web/references/eslite/DESIGN.md +257 -0
  112. package/web/references/evaair/DESIGN.md +338 -0
  113. package/web/references/expo/DESIGN.md +238 -331
  114. package/web/references/familymart-tw/DESIGN.md +254 -0
  115. package/web/references/ferrari/DESIGN.md +160 -377
  116. package/web/references/figma/DESIGN.md +197 -451
  117. package/web/references/fitpet/DESIGN.md +445 -0
  118. package/web/references/flex/DESIGN.md +170 -253
  119. package/web/references/framer/DESIGN.md +197 -340
  120. package/web/references/freee/DESIGN.md +211 -533
  121. package/web/references/friendliai/DESIGN.md +431 -0
  122. package/web/references/frip/DESIGN.md +440 -0
  123. package/web/references/furiosaai/DESIGN.md +450 -0
  124. package/web/references/gangnamunni/DESIGN.md +154 -591
  125. package/web/references/gaudiolab/DESIGN.md +414 -0
  126. package/web/references/google/DESIGN.md +290 -398
  127. package/web/references/goorm/DESIGN.md +470 -0
  128. package/web/references/greencar/DESIGN.md +420 -0
  129. package/web/references/hackle/DESIGN.md +472 -0
  130. package/web/references/hashicorp/DESIGN.md +273 -318
  131. package/web/references/heydealer/DESIGN.md +429 -0
  132. package/web/references/humanscape/DESIGN.md +433 -0
  133. package/web/references/hwahae/DESIGN.md +453 -0
  134. package/web/references/hyundai/DESIGN.md +158 -368
  135. package/web/references/hyundaicard/DESIGN.md +171 -121
  136. package/web/references/ibm/DESIGN.md +227 -378
  137. package/web/references/idus/DESIGN.md +450 -0
  138. package/web/references/igaworks/DESIGN.md +437 -0
  139. package/web/references/inflearn/DESIGN.md +221 -366
  140. package/web/references/intuit/DESIGN.md +244 -0
  141. package/web/references/jandi/DESIGN.md +191 -291
  142. package/web/references/jobplanet/DESIGN.md +415 -0
  143. package/web/references/kakao/DESIGN.md +287 -475
  144. package/web/references/kakaobank/DESIGN.md +220 -521
  145. package/web/references/kakaogames/DESIGN.md +220 -0
  146. package/web/references/kakaopay/DESIGN.md +207 -526
  147. package/web/references/karrot/DESIGN.md +227 -251
  148. package/web/references/kb-kookmin/DESIGN.md +308 -0
  149. package/web/references/kbank/DESIGN.md +220 -175
  150. package/web/references/kcd/DESIGN.md +432 -0
  151. package/web/references/kmong/DESIGN.md +281 -356
  152. package/web/references/krds/DESIGN.md +245 -19
  153. package/web/references/kream/DESIGN.md +224 -359
  154. package/web/references/kurly/DESIGN.md +211 -533
  155. package/web/references/kyobobook/DESIGN.md +445 -0
  156. package/web/references/lablup/DESIGN.md +474 -0
  157. package/web/references/lamborghini/DESIGN.md +198 -360
  158. package/web/references/lemonbase/DESIGN.md +452 -0
  159. package/web/references/lguplus/DESIGN.md +259 -0
  160. package/web/references/likelion/DESIGN.md +283 -0
  161. package/web/references/line/DESIGN.md +396 -355
  162. package/web/references/linear.app/DESIGN.md +209 -562
  163. package/web/references/lotteon/DESIGN.md +386 -0
  164. package/web/references/lovable/DESIGN.md +255 -349
  165. package/web/references/makinarocks/DESIGN.md +242 -0
  166. package/web/references/maum-ai/DESIGN.md +423 -0
  167. package/web/references/medibloc/DESIGN.md +425 -0
  168. package/web/references/megabox/DESIGN.md +232 -0
  169. package/web/references/mercari/DESIGN.md +217 -434
  170. package/web/references/microsoft/DESIGN.md +234 -388
  171. package/web/references/mildang/DESIGN.md +411 -0
  172. package/web/references/millie/DESIGN.md +183 -504
  173. package/web/references/minimax/DESIGN.md +264 -322
  174. package/web/references/miricanvas/DESIGN.md +182 -355
  175. package/web/references/miro/DESIGN.md +234 -232
  176. package/web/references/mistral.ai/DESIGN.md +231 -314
  177. package/web/references/mixi/DESIGN.md +234 -0
  178. package/web/references/moin/DESIGN.md +445 -0
  179. package/web/references/mongodb/DESIGN.md +219 -316
  180. package/web/references/moreh/DESIGN.md +437 -0
  181. package/web/references/musinsa/DESIGN.md +184 -510
  182. package/web/references/mynavi/DESIGN.md +242 -0
  183. package/web/references/myrealtrip/DESIGN.md +169 -406
  184. package/web/references/naver/DESIGN.md +328 -499
  185. package/web/references/naverwebtoon/DESIGN.md +172 -395
  186. package/web/references/neosapience/DESIGN.md +441 -0
  187. package/web/references/nhn/DESIGN.md +169 -346
  188. package/web/references/nhncloud/DESIGN.md +185 -123
  189. package/web/references/nota/DESIGN.md +451 -0
  190. package/web/references/notion/DESIGN.md +271 -475
  191. package/web/references/nrise/DESIGN.md +417 -0
  192. package/web/references/ohouse/DESIGN.md +210 -549
  193. package/web/references/oliveyoung/DESIGN.md +217 -326
  194. package/web/references/ollama/DESIGN.md +241 -308
  195. package/web/references/onestore/DESIGN.md +248 -0
  196. package/web/references/palantir/DESIGN.md +256 -0
  197. package/web/references/panasonic/DESIGN.md +276 -0
  198. package/web/references/patternfly/DESIGN.md +259 -0
  199. package/web/references/payhere/DESIGN.md +438 -0
  200. package/web/references/pega/DESIGN.md +262 -0
  201. package/web/references/peoplefund/DESIGN.md +431 -0
  202. package/web/references/petfriends/DESIGN.md +428 -0
  203. package/web/references/pinkfong/DESIGN.md +199 -367
  204. package/web/references/pinterest/DESIGN.md +258 -308
  205. package/web/references/portone/DESIGN.md +446 -0
  206. package/web/references/poya/DESIGN.md +286 -0
  207. package/web/references/pozalabs/DESIGN.md +438 -0
  208. package/web/references/protopie/DESIGN.md +419 -0
  209. package/web/references/qraft/DESIGN.md +448 -0
  210. package/web/references/queenit/DESIGN.md +432 -0
  211. package/web/references/quotabook/DESIGN.md +449 -0
  212. package/web/references/rebellions/DESIGN.md +449 -0
  213. package/web/references/recruit/DESIGN.md +247 -0
  214. package/web/references/remember/DESIGN.md +202 -396
  215. package/web/references/resend/DESIGN.md +274 -348
  216. package/web/references/returnzero/DESIGN.md +460 -0
  217. package/web/references/sakura-internet/DESIGN.md +269 -0
  218. package/web/references/samsung/DESIGN.md +157 -359
  219. package/web/references/sandoll/DESIGN.md +445 -0
  220. package/web/references/sanity/DESIGN.md +241 -375
  221. package/web/references/saramin/DESIGN.md +465 -0
  222. package/web/references/scatterlab/DESIGN.md +412 -0
  223. package/web/references/selectstar/DESIGN.md +439 -0
  224. package/web/references/servicenow/DESIGN.md +289 -0
  225. package/web/references/shiftee/DESIGN.md +468 -0
  226. package/web/references/shinhanbank/DESIGN.md +161 -341
  227. package/web/references/shinhancard/DESIGN.md +208 -319
  228. package/web/references/sionic/DESIGN.md +454 -0
  229. package/web/references/sktelecom/DESIGN.md +310 -0
  230. package/web/references/socar/DESIGN.md +125 -32
  231. package/web/references/softbank/DESIGN.md +231 -0
  232. package/web/references/solapi/DESIGN.md +483 -0
  233. package/web/references/sony/DESIGN.md +234 -0
  234. package/web/references/soop/DESIGN.md +261 -0
  235. package/web/references/spacex/DESIGN.md +184 -323
  236. package/web/references/spotify/DESIGN.md +253 -394
  237. package/web/references/squeezebits/DESIGN.md +441 -0
  238. package/web/references/stayfolio/DESIGN.md +422 -0
  239. package/web/references/stripe/DESIGN.md +212 -491
  240. package/web/references/supabase/DESIGN.md +244 -316
  241. package/web/references/supertone/DESIGN.md +413 -0
  242. package/web/references/tabling/DESIGN.md +415 -0
  243. package/web/references/taishinbank/DESIGN.md +243 -0
  244. package/web/references/teamlab/DESIGN.md +240 -0
  245. package/web/references/teamsparta/DESIGN.md +472 -0
  246. package/web/references/tellingme/DESIGN.md +392 -0
  247. package/web/references/tesla/DESIGN.md +244 -427
  248. package/web/references/thsr/DESIGN.md +284 -0
  249. package/web/references/thumbtack/DESIGN.md +302 -0
  250. package/web/references/together.ai/DESIGN.md +257 -304
  251. package/web/references/toss/DESIGN.md +251 -593
  252. package/web/references/toss-securities/DESIGN.md +255 -178
  253. package/web/references/tossbank/DESIGN.md +195 -491
  254. package/web/references/toyota/DESIGN.md +238 -0
  255. package/web/references/tving/DESIGN.md +197 -245
  256. package/web/references/typed/DESIGN.md +413 -0
  257. package/web/references/uber/DESIGN.md +256 -333
  258. package/web/references/udn/DESIGN.md +250 -0
  259. package/web/references/upbit/DESIGN.md +145 -256
  260. package/web/references/upstage/DESIGN.md +211 -204
  261. package/web/references/uswds/DESIGN.md +287 -0
  262. package/web/references/vercel/DESIGN.md +236 -440
  263. package/web/references/vuno/DESIGN.md +413 -0
  264. package/web/references/wanted/DESIGN.md +215 -487
  265. package/web/references/weverse/DESIGN.md +437 -0
  266. package/web/references/wise/DESIGN.md +223 -231
  267. package/web/references/wisetracker/DESIGN.md +462 -0
  268. package/web/references/wooribank/DESIGN.md +245 -0
  269. package/web/references/yanolja/DESIGN.md +250 -419
  270. package/web/references/yeogiotte/DESIGN.md +235 -418
  271. package/web/references/zapier/DESIGN.md +256 -377
  272. package/web/references/zendesk/DESIGN.md +288 -0
  273. package/web/references/zigzag/DESIGN.md +200 -621
  274. package/dist/install-skills-7UUDOLG2.js +0 -734
  275. package/dist/install-skills-7UUDOLG2.js.map +0 -1
@@ -0,0 +1,441 @@
1
+ ---
2
+ id: squeezebits
3
+ name: SqueezeBits
4
+ display_name_kr: 스퀴즈비츠
5
+ country: KR
6
+ category: ai
7
+ homepage: "https://www.squeezebits.com/"
8
+ primary_color: "#cc5a16"
9
+ logo:
10
+ type: favicon
11
+ slug: "https://www.google.com/s2/favicons?domain=squeezebits.com&sz=128"
12
+ verified: "2026-07-02"
13
+ added: "2026-07-02"
14
+ omd: "0.1"
15
+ tokens:
16
+ source: live-extract
17
+ extracted: "2026-07-02"
18
+ note: "Two-surface system. primary = flagship marketing brand orange (#cc5a16 — banner / wordmark / View-more); primary-bright = brighter blog CTA-fill orange (#ee781f). Homepage is a dark immersive surface (Pretendard, near-black #060211/#050311/#000000). Blog is a light zinc surface (IBM Plex Sans headings, #09090b ink). Flat, shadowless."
19
+ colors:
20
+ primary: "#cc5a16"
21
+ primary-bright: "#ee781f"
22
+ ink: "#09090b"
23
+ ink-strong: "#020a0f"
24
+ slate: "#1f2937"
25
+ nav: "#2c2925"
26
+ body: "#52525b"
27
+ muted: "#71717a"
28
+ tab-muted: "#646470"
29
+ faint: "#d9d9d9"
30
+ canvas: "#ffffff"
31
+ surface: "#f4f4f5"
32
+ surface-warm: "#f8f6f1"
33
+ surface-gray: "#f9fafb"
34
+ hairline: "#e4e4e7"
35
+ black: "#000000"
36
+ night: "#060211"
37
+ night-alt: "#050311"
38
+ typography:
39
+ family: { display: "Pretendard", heading: "IBM Plex Sans", body: "Pretendard" }
40
+ hero: { size: 92, weight: 400, use: "Homepage hero headline (Unlock the Potential of AI), Pretendard" }
41
+ section: { size: 56, weight: 600, use: "Homepage section titles (Squeeze / Benchmark / Why SqueezeBits?), Pretendard" }
42
+ subhead: { size: 32, weight: 600, use: "Homepage benefit subheads (Maximize Inference Speed), Pretendard" }
43
+ blog-hero: { size: 48, weight: 600, lineHeight: 1.0, use: "Blog hero H1, IBM Plex Sans" }
44
+ blog-h2: { size: 32, weight: 600, lineHeight: 1.25, use: "Blog featured post title, IBM Plex Sans" }
45
+ card-title: { size: 22, weight: 600, lineHeight: 1.375, use: "Blog post card title, IBM Plex Sans" }
46
+ nav: { size: 15, weight: 560, use: "Blog product nav links, IBM Plex Sans" }
47
+ button: { size: 16, weight: 500, use: "Subscribe button label" }
48
+ caption: { size: 14, weight: 500, use: "Category tabs, metadata" }
49
+ body: { size: 16, weight: 400, use: "Body reading text, Pretendard" }
50
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48 }
51
+ rounded: { sm: 6, md: 8, lg: 16, full: 9999 }
52
+ shadow:
53
+ none: "none"
54
+ components:
55
+ button-subscribe: { type: button, bg: "#ee781f", fg: "#ffffff", radius: "6px", padding: "8px 16px", font: "16px / 500 IBM Plex Sans", use: "Blog primary CTA (Subscribe)" }
56
+ button-viewmore: { type: button, fg: "#cc5a16", font: "18px / 600 Pretendard", use: "Homepage inline View-more link CTA, 4px underline gap" }
57
+ announcement-banner: { type: card, bg: "#cc5a16", fg: "#000000", padding: "0px 16px", height: "48px", use: "Top full-width announcement bar" }
58
+ article-card: { type: card, bg: "#ffffff", border: "1px solid #e4e4e7", radius: "6px", use: "Blog post card, flat (no shadow)" }
59
+ category-tab: { type: tab, fg: "#646470", active: "text #09090b", use: "Blog category filter tabs (Tech Insight / Product)" }
60
+ search-input: { type: input, bg: "#ffffff", border: "1px solid #e4e4e7", radius: "6px", padding: "4px 12px", font: "14px / 400", use: "Blog search input" }
61
+ seeall-pill: { type: badge, bg: "#f4f4f5", fg: "#020a0f", radius: "6px", padding: "6px 14px", font: "14px / 600", use: "See-All / more-link pill" }
62
+ components_harvested: true
63
+ ---
64
+
65
+ # Design System Inspiration of SqueezeBits
66
+
67
+ ## 1. Visual Theme & Atmosphere
68
+
69
+ SqueezeBits (스퀴즈비츠) is a Korean deep-tech AI company whose product is efficiency itself — model quantization, compression, and inference optimization (OwLite, Fits on Chips, Yetter, RoBoost). Its design language runs on two deliberately different surfaces. The flagship marketing homepage is a dark, immersive stage: near-black indigo sections (`#060211`, `#050311`) and pure black (`#000000`) backdrops carry an enormous 92px Pretendard hero ("Unlock the Potential of AI") in white (`#ffffff`), while a single saturated brand orange (`#cc5a16`) burns through as the one accent — the top announcement banner fill, the word "SqueezeBits" set in orange inside section titles, and every "View more" link. The effect is a GPU-in-a-dark-datacenter mood: quiet, technical, and confident, with orange as the heat signature.
70
+
71
+ The second surface — the official Tech blog (`blog.squeezebits.com`) — flips to light. It is a clean, editorial, engineer-to-engineer reading environment on a white (`#ffffff`) canvas with a zinc neutral ladder (ink `#09090b`, body `#52525b`, muted `#71717a`) and a warm-grey nav (`#2c2925`). Here the display face switches from Pretendard to **IBM Plex Sans** at weight 600 — a monospace-adjacent humanist sans that reads as research-grade and code-literate, exactly right for posts about vLLM, Intel Gaudi, and quantization-aware training. The brand orange returns as a slightly brighter fill (`#ee781f`) on the primary Subscribe button, tying the two surfaces together.
72
+
73
+ What unifies both surfaces is restraint with depth: live inspection found `box-shadow: none` across heroes, nav, cards, buttons, and inputs on both domains. Separation comes from flat tint (`#f4f4f5` zinc surface, `#f8f6f1` warm cream, `#f9fafb` on the homepage's light bands) and thin `#e4e4e7` hairlines rather than elevation. Interactive chrome is small-radius (6px on the blog, 8px on the homepage menu) and orderly. The system reads like the company: performance-obsessed, precise, and allergic to decoration that costs cycles.
74
+
75
+ **Key Characteristics:**
76
+ - Two-surface split — dark immersive homepage (Pretendard) + light editorial blog (IBM Plex Sans headings)
77
+ - A single saturated brand orange as the only accent: `#cc5a16` on the homepage, brighter `#ee781f` as the blog CTA fill
78
+ - Near-black indigo homepage stage (`#060211`, `#050311`, `#000000`) with white (`#ffffff`) display type
79
+ - Zinc neutral ladder on the blog: ink `#09090b`, near-black `#020a0f`, body `#52525b`, muted `#71717a`, tab-muted `#646470`
80
+ - Warm-grey blog nav text (`#2c2925`) at IBM Plex Sans weight 560 — a variable-weight fingerprint
81
+ - Flat, shadow-free system — separation via tint (`#f4f4f5`, `#f8f6f1`, `#f9fafb`) and `#e4e4e7` hairlines
82
+ - Slate section heads on light homepage bands (`#1f2937`); faint grey (`#d9d9d9`) for muted copy on the dark stage
83
+ - Small, orderly radii — 6px blog chrome, 8px homepage controls; no pills, no heavy rounding
84
+
85
+ ## 2. Color Palette & Roles
86
+
87
+ ### Brand
88
+ - **Brand Orange** (`#cc5a16`): The flagship brand accent on the homepage — announcement-banner fill, the orange "SqueezeBits" wordmark inside section titles, and every "View more" inline CTA. The system's single "heat" color and the `primary_color`.
89
+ - **Bright Orange** (`#ee781f`): A brighter tint of the brand orange used as the blog's primary button fill (Subscribe). Same identity, lighter surface.
90
+
91
+ ### Homepage (Dark Stage)
92
+ - **Night Indigo** (`#060211`): Primary near-black indigo backdrop for immersive hero sections.
93
+ - **Night Indigo Alt** (`#050311`): Companion near-black indigo for the tallest hero band.
94
+ - **Pure Black** (`#000000`): Maximum-contrast hero background and banner text color.
95
+ - **Slate** (`#1f2937`): Section titles on the homepage's light bands and the mobile menu icon.
96
+ - **Faint Grey** (`#d9d9d9`): Muted/secondary copy on the dark stage where white would be too loud.
97
+ - **Surface Grey** (`#f9fafb`): Light section-band background on the homepage.
98
+
99
+ ### Blog (Light Surface) — Ink & Neutrals
100
+ - **Ink** (`#09090b`): Primary heading and body ink on the blog — a near-black zinc.
101
+ - **Ink Strong** (`#020a0f`): The darkest text, used on pill labels and the search field.
102
+ - **Nav Warm** (`#2c2925`): Warm-grey product-nav link color (Yetter / OwLite / Fits on Chips).
103
+ - **Body Slate** (`#52525b`): Zinc-600 secondary body copy.
104
+ - **Muted** (`#71717a`): Zinc-500 tertiary text, metadata, descriptions.
105
+ - **Tab Muted** (`#646470`): Inactive category-filter tab text.
106
+
107
+ ### Surface & Borders
108
+ - **Canvas** (`#ffffff`): White page background on the blog, card surfaces, and text on dark/orange.
109
+ - **Surface** (`#f4f4f5`): Zinc-100 tinted surface — "See All" pills, quiet chips, card fills.
110
+ - **Surface Warm** (`#f8f6f1`): Warm cream surface for occasional soft blocks on the blog.
111
+ - **Hairline** (`#e4e4e7`): Zinc-200 thin borders, dividers, card outlines, and input strokes — the primary separation device given the shadow-free system.
112
+
113
+ ## 3. Typography Rules
114
+
115
+ ### Font Family
116
+ - **Display (homepage)**: `Pretendard` (with `Pretendard Fallback`) — drives the 92px hero and the 56px section titles, and is the document default / body font on the homepage.
117
+ - **Heading (blog)**: `IBM Plex Sans` (with `Pretendard` fallback) — drives every blog headline at weight 600, giving posts a research-grade, code-literate voice.
118
+ - **Body**: `Pretendard` for reading text; blog body flows in the same zinc ink.
119
+
120
+ ### Hierarchy
121
+
122
+ | Role | Font | Size | Weight | Line Height | Notes |
123
+ |------|------|------|--------|-------------|-------|
124
+ | Homepage Hero | Pretendard | 92px | 400 | normal | "Unlock the Potential of AI" — white on dark stage |
125
+ | Homepage Section | Pretendard | 56px | 600 | normal | "Squeeze", "Benchmark", "Why SqueezeBits?" |
126
+ | Homepage Subhead | Pretendard | 32px | 600 | normal | Benefit heads ("Maximize Inference Speed") |
127
+ | Blog Hero | IBM Plex Sans | 48px | 600 | 1.0 (48px) | Blog H1 on dark hero |
128
+ | Blog Featured H2 | IBM Plex Sans | 32px | 600 | 1.25 (40px) | Featured / recap post title |
129
+ | Blog Card Title | IBM Plex Sans | 22px | 600 | 1.375 (30.25px) | Post-card headline |
130
+ | Blog Nav | IBM Plex Sans | 15px | 560 | normal | Product nav links (variable weight) |
131
+ | Button | IBM Plex Sans | 16px | 500 | normal | Subscribe CTA label |
132
+ | Caption | IBM Plex Sans | 14px | 500 | normal | Category tabs, metadata |
133
+ | Body | Pretendard | 16px | 400 | normal | Standard reading text |
134
+
135
+ ### Principles
136
+ - **Two faces, two jobs**: Pretendard owns the immersive homepage display and all body reading; IBM Plex Sans owns the blog headlines. They never swap roles — Plex signals engineering rigor, Pretendard signals Korean-premium clarity.
137
+ - **Weight 600 is the headline weight**: Every blog headline and homepage section title runs at 600 — assertive but never black-heavy. The homepage hero is the one exception, running lighter at 400 so the 92px scale carries the presence.
138
+ - **Variable-weight fingerprint**: Blog nav lands at an unusual 560, language toggles at 540 — the system leans on IBM Plex Sans's variable axis for fine-grained UI weight rather than jumping between named weights.
139
+ - **Normal tracking**: Unlike letter-spaced display systems, SqueezeBits keeps tracking at normal across sizes; scale and weight do the hierarchy work.
140
+
141
+ ## 4. Component Stylings
142
+
143
+ ### Buttons
144
+
145
+ **Subscribe (Primary)**
146
+ - Background: `#ee781f`
147
+ - Text: `#ffffff`
148
+ - Radius: 6px
149
+ - Padding: 8px 16px
150
+ - Font: 16px / 500 / IBM Plex Sans
151
+ - Height: 36px
152
+ - Use: Blog primary call-to-action ("Subscribe") — the one filled button
153
+
154
+ **View More (Inline Link)**
155
+ - Text: `#cc5a16`
156
+ - Font: 18px / 600 / Pretendard
157
+ - Padding: 0px 0px 4px
158
+ - Use: Homepage inline "View more" CTA under each product block — an underline-gap text link, not a filled button
159
+
160
+ ### Inputs
161
+
162
+ **Search**
163
+ - Background: `#ffffff`
164
+ - Border: 1px solid `#e4e4e7`
165
+ - Radius: 6px
166
+ - Padding: 4px 12px
167
+ - Font: 14px / 400
168
+ - Height: 36px
169
+ - Use: Blog "Search posts" field
170
+
171
+ ### Cards & Containers
172
+
173
+ **Article Card**
174
+ - Background: `#ffffff`
175
+ - Border: 1px solid `#e4e4e7`
176
+ - Radius: 6px
177
+ - Use: Blog post card — flat, hairline-outlined, no shadow
178
+
179
+ **Announcement Banner**
180
+ - Background: `#cc5a16`
181
+ - Text: `#000000`
182
+ - Padding: 0px 16px
183
+ - Height: 48px
184
+ - Use: Top full-width announcement bar ("SqueezeBits is joining Rebellions!")
185
+
186
+ ### Badges
187
+
188
+ **See-All Pill**
189
+ - Background: `#f4f4f5`
190
+ - Text: `#020a0f`
191
+ - Radius: 6px
192
+ - Padding: 6px 14px
193
+ - Font: 14px / 600
194
+ - Use: "See All" / more-link pill on the blog
195
+
196
+ ### Tabs
197
+
198
+ **Category Filter**
199
+ - Text: `#646470`
200
+ - Padding: 6px 14px
201
+ - Font: 14px / 500
202
+ - Active: text `#09090b`
203
+ - Use: Blog category filters ("Tech Insight", "Product")
204
+
205
+ ### Navigation
206
+ - Background: `#ffffff`
207
+ - Text: `#2c2925`
208
+ - Font: 15px / 560 / IBM Plex Sans
209
+ - Radius: 6px
210
+ - Padding: 0px 10px
211
+ - Height: 38px
212
+ - Use: Blog product nav ("Yetter", "OwLite", "Fits on Chips", "SqueezeBits")
213
+
214
+ ---
215
+
216
+ **Verified:** 2026-07-02 (omd:add-reference CREATE — Tier 1 live inspect, 2 surfaces)
217
+ **Tier 1 sources:** https://www.squeezebits.com/ (dark marketing homepage, live DOM); https://blog.squeezebits.com/ (official Tech blog, live DOM); https://github.com/SqueezeBits (official GitHub org)
218
+ **Tier 2 sources:** getdesign.md/squeezebits — 0 DESIGN.md files (not listed); styles.refero.design/?q=squeezebits — not listed (generic/trending results only)
219
+ **Conflicts unresolved:** none (two-surface orange split `#cc5a16` homepage / `#ee781f` blog documented as intentional in `.verification.md` conflict matrix)
220
+
221
+ ## 5. Layout Principles
222
+
223
+ ### Spacing System
224
+ - Base unit: 4px
225
+ - Scale: 4px, 8px, 12px, 16px, 24px, 32px, 48px
226
+ - Notable: Blog chrome uses tight paddings (8px 16px buttons, 6px 14px pills, 4px 12px inputs); the homepage breathes with tall full-viewport hero bands (700–1060px)
227
+
228
+ ### Grid & Container
229
+ - Homepage: full-bleed vertical scroll of alternating dark (`#060211`/`#050311`/`#000000`) and light (`#f9fafb`) product bands, each anchored by a 56px section title and a "View more" link
230
+ - Blog: centered content column with a sticky top nav, a category-tab row, a featured hero post, then a responsive grid of hairline-outlined article cards
231
+ - Trusted-by logo strip and product blocks (Yetter / RoBoost / OwLite / Fits on Chips) stack vertically down the homepage
232
+
233
+ ### Whitespace Philosophy
234
+ - **Immersive dark, editorial light**: the homepage uses large empty dark space to make the orange accent and white hero pop; the blog uses calm white space for long-form reading.
235
+ - **Flat segmentation**: sections separate by background (dark band vs `#f9fafb` light band on the homepage; `#ffffff` vs `#f4f4f5` on the blog) and `#e4e4e7` hairlines — never by shadow.
236
+
237
+ ### Border Radius Scale
238
+ - Small (6px): blog buttons, inputs, pills, cards, nav items — the workhorse
239
+ - Medium (8px): homepage menu / control buttons
240
+ - Large (16px): larger containers when used
241
+ - Full (9999px): reserved for the rare avatar / circular control
242
+
243
+ ## 6. Depth & Elevation
244
+
245
+ | Level | Treatment | Use |
246
+ |-------|-----------|-----|
247
+ | Flat (Level 0) | No shadow | Page backgrounds, hero, nav, most surfaces |
248
+ | Tint (Level 1) | `#f4f4f5` / `#f8f6f1` / `#f9fafb` background shift | Card / section separation without elevation |
249
+ | Hairline (Level 2) | `1px solid #e4e4e7` border | Blog card outlines, dividers, input strokes |
250
+ | Contrast (Level 3) | Dark stage (`#060211` / `#050311` / `#000000`) vs light | Homepage section depth by background inversion |
251
+
252
+ **Shadow Philosophy**: SqueezeBits is a shadow-free system on both surfaces — live inspection returned `box-shadow: none` across heroes, nav, article cards, buttons, and inputs. Depth is communicated by background inversion (the near-black homepage stage against light bands) and by flat tint plus `#e4e4e7` hairlines on the blog. When emphasis is needed the system reaches for the orange accent (`#cc5a16` / `#ee781f`) or the dark stage, never elevation — a clean, fast, engineered look that matches a company selling efficiency.
253
+
254
+ ## 7. Do's and Don'ts
255
+
256
+ ### Do
257
+ - Use a single brand orange as the only accent — `#cc5a16` on dark marketing surfaces, `#ee781f` as the blog CTA fill
258
+ - Set the homepage on a near-black indigo stage (`#060211` / `#050311` / `#000000`) with white (`#ffffff`) display type
259
+ - Use Pretendard for the immersive homepage display and all body; use IBM Plex Sans weight 600 for blog headlines
260
+ - Keep depth flat — separate with tint (`#f4f4f5`, `#f8f6f1`, `#f9fafb`) and `#e4e4e7` hairlines, never drop shadows
261
+ - Use the zinc ink ladder on the blog: `#09090b` for headings, `#52525b` body, `#71717a` muted
262
+ - Keep radii small and orderly — 6px blog chrome, 8px homepage controls
263
+ - Render "View more" as an orange (`#cc5a16`) inline underline-gap link, not a filled button
264
+
265
+ ### Don't
266
+ - Add a second accent hue — orange is the only saturated color; everything else is neutral
267
+ - Use drop shadows for elevation — the system is flat on both surfaces
268
+ - Swap the type roles — never set blog headlines in Pretendard or the homepage hero in IBM Plex Sans
269
+ - Use pure black (`#000000`) for blog body text — reserve near-black zinc `#09090b` / `#020a0f`
270
+ - Apply pill or heavy rounding to buttons and cards — keep the 6px / 8px small-radius rhythm
271
+ - Spread the orange across many elements — it marks the single next action or the brand word only
272
+ - Letter-space the display type — SqueezeBits tracks at normal and lets weight/scale do the work
273
+
274
+ ## 8. Responsive Behavior
275
+
276
+ ### Breakpoints
277
+ | Name | Width | Key Changes |
278
+ |------|-------|-------------|
279
+ | Mobile | <640px | Homepage hero scales down from 92px; blog grid collapses to a single column; nav becomes a hamburger (8px-radius menu button) |
280
+ | Tablet | 640–1024px | 2-up article cards on the blog; moderate homepage band padding |
281
+ | Desktop | 1024–1440px | Full layout; multi-column blog card grid; full-viewport homepage bands |
282
+
283
+ ### Touch Targets
284
+ - Subscribe button at 36px height with 8px 16px padding
285
+ - Nav items at 38px height with 0px 10px padding
286
+ - Category tabs and pills sized with 6px 14px padding for comfortable tapping
287
+
288
+ ### Collapsing Strategy
289
+ - Homepage: 92px hero compresses on mobile; alternating dark/light bands maintain full-width treatment
290
+ - Blog: featured hero post stays full-width; the article grid reflows multi-column → single column
291
+ - Sticky nav condenses product links into a menu on narrow viewports
292
+
293
+ ### Image Behavior
294
+ - Blog post-card thumbnails sit inside 6px-radius, hairline-outlined cards with no shadow at any size
295
+ - Homepage product visuals sit directly on the dark stage without framing chrome
296
+
297
+ ## 9. Agent Prompt Guide
298
+
299
+ ### Quick Color Reference
300
+ - Brand accent (marketing): Brand Orange (`#cc5a16`)
301
+ - Brand accent (blog CTA): Bright Orange (`#ee781f`)
302
+ - Homepage stage: Night Indigo (`#060211`), Night Indigo Alt (`#050311`), Pure Black (`#000000`)
303
+ - Homepage light band: Surface Grey (`#f9fafb`)
304
+ - Blog canvas: White (`#ffffff`)
305
+ - Blog ink: `#09090b` (headings), `#020a0f` (strongest), `#52525b` (body), `#71717a` (muted)
306
+ - Blog nav text: Nav Warm (`#2c2925`)
307
+ - Inactive tab: Tab Muted (`#646470`)
308
+ - Muted on dark: Faint Grey (`#d9d9d9`)
309
+ - Surface / hairline: `#f4f4f5`, `#f8f6f1`, `#e4e4e7`
310
+ - Slate section head: `#1f2937`
311
+
312
+ ### Example Component Prompts
313
+ - "Create a dark hero: near-black indigo `#060211` background, full viewport. Headline at 92px Pretendard weight 400, white `#ffffff`, 'Unlock the Potential of AI'. One orange inline link 'View more' at 18px Pretendard weight 600, color `#cc5a16`, with a 4px underline gap. No shadow."
314
+ - "Design a blog post card: white `#ffffff` background, 1px solid `#e4e4e7` border, 6px radius, no shadow. Title 22px IBM Plex Sans weight 600, line-height 1.375, color `#09090b`. Meta 14px, color `#71717a`."
315
+ - "Build a primary button: `#ee781f` background, white `#ffffff` text, 6px radius, 8px 16px padding, 16px IBM Plex Sans weight 500 — 'Subscribe'."
316
+ - "Create a category-tab row: inactive tabs 14px weight 500 in `#646470`, active tab text `#09090b`, 6px 14px padding, no underline. Beside it a 'See All' pill: `#f4f4f5` background, `#020a0f` text, 6px radius, 6px 14px padding, 14px weight 600."
317
+ - "Top announcement banner: full-width `#cc5a16` background, black `#000000` text, 48px height, 0px 16px padding."
318
+
319
+ ### Iteration Guide
320
+ 1. One orange only — `#cc5a16` on dark surfaces, `#ee781f` as the blog fill; everything else neutral
321
+ 2. Pretendard for homepage display + body; IBM Plex Sans weight 600 for blog headlines — never swap
322
+ 3. No shadows — separate with `#f4f4f5` / `#f8f6f1` / `#f9fafb` tint and `#e4e4e7` hairlines
323
+ 4. Blog ink is zinc `#09090b`, never pure black for body
324
+ 5. Small radii — 6px blog chrome, 8px homepage controls
325
+ 6. Dark homepage stage is `#060211` / `#050311` / `#000000`, not neutral grey
326
+ 7. "View more" is an orange inline link, not a filled button
327
+
328
+ ---
329
+
330
+ ## 10. Voice & Tone
331
+
332
+ SqueezeBits speaks like a systems engineer who measures everything — precise, benefit-first, and quietly confident about performance numbers. The homepage register is direct and technical: "Deploy your AI with maximal efficiency on CPU, GPU, or NPU," "Do you need optimization?", "Maximize Inference Speed." Copy leads with a concrete capability or a measurable outcome (3.1× faster inference, 70% cost reduction) rather than adjectives. The blog voice is even more peer-to-peer — reference-implementation-grade write-ups on vLLM, Intel Gaudi, Qualcomm NPU, and quantization-aware training, addressed to ML engineers as equals.
333
+
334
+ | Context | Tone |
335
+ |---|---|
336
+ | Homepage hero | Declarative, aspirational-but-technical. "Unlock the Potential of AI." |
337
+ | Product blocks | Question + capability. "Do you need optimization?" then a precise one-liner on what the product does. |
338
+ | Benefit callouts | Numbers-first. "3.1× faster inference", "70% cost reduction", "near-original accuracy via QAT". |
339
+ | Blog posts | Engineer-to-engineer. Benchmarks, architecture, hardware specifics; examples precede conclusions. |
340
+ | CTAs | Plain and low-pressure. "View more", "Subscribe". |
341
+ | Announcements | Factual, unhyped. "SqueezeBits is joining Rebellions! Read more." |
342
+
343
+ **Voice samples (verbatim from live surfaces):**
344
+ - "Deploy your AI with maximal efficiency on CPU, GPU, or NPU" — homepage hero subline (capability, hardware-specific). *(verified live 2026-07-02)*
345
+ - "OwLite is SqueezeBits' core AI model optimization solution. Centered around industry-leading Quantization technology..." — homepage product copy (technical, precise). *(verified live 2026-07-02)*
346
+ - "SqueezeBits is joining Rebellions! Read more" — top announcement banner (factual, unhyped). *(verified live 2026-07-02)*
347
+
348
+ **Forbidden register**: vague hype ("revolutionary", "game-changing"), marketing superlatives untethered from a number, consumer-app exclamation stacking, and undefined jargon presented without a concrete benefit. If a claim can carry a measured figure, it should.
349
+
350
+ ## 11. Brand Narrative
351
+
352
+ SqueezeBits (스퀴즈비츠) is a Korean AI systems company built around a single thesis: the potential of AI is unlocked not by bigger models but by running them efficiently. Its name is the thesis — squeezing bits, i.e. quantization and compression, so that large models "fit on chips." The product line makes the mission literal: **OwLite** (quantization-centered model optimization with QAT to restore near-original accuracy), **Fits on Chips** (a serving-framework research tool that tunes lightweight models to specific GPU/NPU hardware), **Yetter** (an integrated full-stack inference engine and GenAI API service combining OwLite and Fits on Chips), and **RoBoost** (a Physical-AI synthetic-data generation platform for robotics and autonomous driving).
353
+
354
+ The company's stated promise on its homepage — "Deploy your AI with maximal efficiency on CPU, GPU, or NPU" — positions it at the systems layer between models and silicon. Its engineering blog reinforces the identity: deep, reproducible write-ups on vLLM, SGLang, Intel Gaudi, Qualcomm NPUs, disaggregated inference, and techniques like GraLoRA and vocabulary trimming. This is a company that publishes benchmarks, not brochures.
355
+
356
+ In 2026 SqueezeBits announced it is **joining Rebellions**, the Korean NPU/AI-accelerator company — a natural pairing of a model-efficiency team with a chip maker, and the reason the site's top banner reads "SqueezeBits is joining Rebellions!" What the design refuses is telling: no institutional-SaaS gloss, no shadow-stacked cards, no second accent color competing with the orange heat signature. What it embraces is a dark, instrument-panel homepage and a light, research-grade blog — both flat, both fast, both engineered.
357
+
358
+ ## 12. Principles
359
+
360
+ 1. **Efficiency is the product — and the aesthetic.** The brand sells fewer wasted cycles; the UI wastes none either. *UI implication:* flat, shadow-free surfaces, small orderly radii, one accent color — nothing renders that doesn't inform.
361
+ 2. **Numbers over adjectives.** Trust is earned with measured outcomes (3.1× faster, 70% cheaper), not superlatives. *UI implication:* lead callouts and benefit heads with figures; reserve prose for the mechanism.
362
+ 3. **One accent, marking the action.** The orange (`#cc5a16` / `#ee781f`) is the single heat signature. *UI implication:* use orange only for the brand word, the next action, or a live banner — never as decoration.
363
+ 4. **Two surfaces, one discipline.** A dark immersive marketing stage and a light editorial blog can differ in mood but share the same flat, precise grammar. *UI implication:* keep type roles fixed (Pretendard display / IBM Plex Sans headlines) and depth flat across both.
364
+ 5. **Engineer as first-class reader.** The blog treats ML engineers as peers with reproducible benchmarks. *UI implication:* long-form legibility, IBM Plex Sans headings, zinc ink, generous reading width — documentation is a design surface.
365
+
366
+ ## 13. Personas
367
+
368
+ *Personas below are fictional archetypes informed by publicly observable SqueezeBits audiences (ML systems engineers, inference-infra teams, hardware/NPU partners), not individual people.*
369
+
370
+ **민준, 34, 서울.** An inference-infrastructure engineer at a Korean AI startup deciding how to cut serving cost on B200 GPUs. Reads the SqueezeBits blog for reproducible vLLM/quantization benchmarks and trusts the brand because it publishes numbers, not slogans.
371
+
372
+ **Aisha, 29, Toronto.** An ML engineer evaluating quantization toolchains. Cares that OwLite's QAT restores accuracy to near-original and that the docs show the accuracy/latency trade curve. Would dismiss a vendor whose site was all adjectives and no figures.
373
+
374
+ **Dr. Park, 45, 대전.** A hardware partner at an NPU company assessing full-stack optimization fit. Values that Fits on Chips models the hardware's cost-performance curve explicitly, and reads the "joining Rebellions" news as strategic alignment.
375
+
376
+ **Leo, 38, Berlin.** A robotics lead exploring synthetic training data. Interested in RoBoost's physics-grounded validation and the promise of higher usable-data yield per GPU-hour; skims the blog's Physical-AI posts before booking a call.
377
+
378
+ ## 14. States
379
+
380
+ | State | Treatment |
381
+ |---|---|
382
+ | **Empty (blog search, no results)** | White (`#ffffff`) canvas. Single Ink (`#09090b`) line at body size explaining no posts match, with a path back to all categories. No illustration. |
383
+ | **Empty (category, none yet)** | Muted (`#71717a`) single line stating the category is empty, plus a link to "See All". Calm, factual. |
384
+ | **Loading (blog list fetch)** | Skeleton cards on the white canvas at final dimensions, 6px radius, `#e4e4e7` hairline. Flat pulse — no shadow shimmer, consistent with the shadowless system. |
385
+ | **Loading (homepage section reveal)** | Content fades in on scroll into the dark stage; the orange accent appears last so the eye lands on it. |
386
+ | **Error (fetch failed)** | Inline message in Ink (`#09090b`) with a plain-language explanation and a retry — never a bare "오류가 발생했습니다". States what to do next. |
387
+ | **Error (subscribe / form validation)** | Field-level message below the input in a clear tone; describes what is valid, not just "required". |
388
+ | **Success (subscribed)** | Brief inline confirmation in a calm tone near the Subscribe button; no celebratory emoji. |
389
+ | **Skeleton** | `#f4f4f5` blocks at final dimensions, 6px radius, flat pulse. |
390
+ | **Disabled** | Faint Grey (`#d9d9d9`) text on reduced-opacity surface; the orange action fades rather than switching to grey, to preserve the brand read. |
391
+
392
+ ## 15. Motion & Easing
393
+
394
+ **Durations**:
395
+
396
+ | Token | Value | Use |
397
+ |---|---|---|
398
+ | `motion-fast` | 120ms | Hover, link/tab press, focus |
399
+ | `motion-standard` | 220ms | Card / section reveal, dropdown, sheet |
400
+ | `motion-slow` | 360ms | Homepage scroll-triggered hero and band reveals |
401
+
402
+ **Easings**:
403
+
404
+ | Token | Curve | Use |
405
+ |---|---|---|
406
+ | `ease-enter` | `cubic-bezier(0.2, 0.6, 0.25, 1)` | Arriving — cards, sections, dropdowns |
407
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
408
+ | `ease-standard` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Two-way transitions |
409
+
410
+ **Motion rules**: Motion is functional and restrained, matching the flat, engineered aesthetic. The homepage uses scroll-triggered reveals as content enters the dark stage (`motion-slow / ease-enter`), with the orange accent settling last as the focal point. Blog interactions are quiet — hover and tab changes at `motion-fast`, card and section reveals at `motion-standard / ease-enter`. No bounce or spring: a company selling deterministic efficiency signals steadiness, not playfulness. Under `prefers-reduced-motion: reduce`, all transitions collapse to instant and the scroll reveals resolve immediately; the site remains fully functional.
411
+
412
+ <!--
413
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
414
+
415
+ Tier 1 live inspect (2026-07-02) via playwright getComputedStyle on two surfaces:
416
+ - https://www.squeezebits.com/ — dark marketing homepage: Pretendard hero 92px/400 white;
417
+ 56px/600 section titles; brand orange #cc5a16 on banner/wordmark/"View more"; near-black
418
+ indigo stage #060211/#050311/#000000; light band #f9fafb; slate section head #1f2937;
419
+ box-shadow none throughout.
420
+ - https://blog.squeezebits.com/ — official Tech blog: IBM Plex Sans headlines 48/32/22px @600;
421
+ zinc ink #09090b, #52525b, #71717a; #ee781f Subscribe button; #f4f4f5 pill; #e4e4e7 hairline;
422
+ #2c2925 nav @560; box-shadow none.
423
+
424
+ Token-level claims (§1-9) are sourced from this live inspection (see .verification.md Raw samples).
425
+
426
+ Voice samples (§10) are verbatim from the live homepage (hero subline, product copy, announcement banner).
427
+
428
+ Brand narrative (§11): product line (OwLite, Fits on Chips, Yetter, RoBoost) and mission
429
+ ("Deploy your AI with maximal efficiency on CPU, GPU, or NPU") are quoted/paraphrased from the
430
+ live homepage; the "joining Rebellions" fact is from the live top-banner announcement. SqueezeBits
431
+ is a Korean AI model-optimization/quantization company; broader company details are general public
432
+ knowledge, not directly quoted from a verified SqueezeBits statement in this turn.
433
+
434
+ Personas (§13) are fictional archetypes informed by publicly observable SqueezeBits audiences
435
+ (ML systems engineers, inference-infra teams, hardware/NPU partners). Names are illustrative;
436
+ they do not refer to real people.
437
+
438
+ Interpretive claims (e.g., "efficiency is the product and the aesthetic", "one accent as heat
439
+ signature") are editorial readings connecting SqueezeBits' observed design to its positioning,
440
+ not directly sourced SqueezeBits statements.
441
+ -->