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
@@ -4,11 +4,11 @@ name: Sanity
4
4
  country: US
5
5
  category: backend-devops
6
6
  homepage: "https://www.sanity.io"
7
- primary_color: "#f03e2f"
7
+ primary_color: "#ff5500"
8
8
  logo:
9
9
  type: simpleicons
10
10
  slug: sanity
11
- verified: "2026-05-15"
11
+ verified: "2026-07-13"
12
12
  omd: "0.1"
13
13
  ds:
14
14
  name: Sanity UI
@@ -17,414 +17,299 @@ ds:
17
17
  description: Sanity's accessible React toolkit for building apps with design tokens.
18
18
  og_image: "https://cdn.sanity.io/images/mos42crl/production/f378d0067c1406f4e3d3ed6874cd715c72f52d2c-1920x1080.png"
19
19
  tokens:
20
- source: prose-derived
21
- extracted: "2026-06-09"
20
+ source: reconciled
21
+ extracted: "2026-07-13"
22
22
  colors:
23
- canvas: "#0b0b0b"
24
- black: "#000000"
25
- cta: "#f36458"
26
- interactive: "#0052ef"
27
- blue-light: "#55beff"
28
- blue-dim: "#afe3ff"
29
- green: "#19d600"
23
+ brand-srgb-approx: "#ff5500"
24
+ canvas: "#ffffff"
25
+ foreground: "#0b0b0b"
30
26
  surface: "#212121"
31
- border: "#353535"
32
- white: "#ffffff"
33
- light-gray: "#ededed"
34
- silver: "#b9b9b9"
35
- medium-gray: "#797979"
36
- error: "#dd0000"
37
- gpc-green: "#37cd84"
27
+ surface-subtle: "#ededed"
28
+ on-dark: "#ffffff"
29
+ muted: "#b9b9b9"
30
+ divider: "#d6d6d6"
31
+ focus-blue: "#0052ef"
38
32
  typography:
39
- family: { sans: "waldenburgNormal", mono: "IBM Plex Mono" }
40
- display-hero: { size: 112, weight: 400, lineHeight: 1.00, tracking: -4.48, use: "Maximum impact, compressed tracking" }
41
- hero-secondary: { size: 72, weight: 400, lineHeight: 1.05, tracking: -2.88, use: "Large section headers" }
42
- section: { size: 48, weight: 400, lineHeight: 1.08, tracking: -1.68, use: "Primary section anchors" }
43
- heading-lg: { size: 38, weight: 400, lineHeight: 1.10, tracking: -1.14, use: "Feature section titles" }
44
- heading-md: { size: 32, weight: 425, lineHeight: 1.24, tracking: -0.32, use: "Card titles, subsection headers" }
45
- heading-sm: { size: 24, weight: 425, lineHeight: 1.24, tracking: -0.24, use: "Smaller feature headings" }
46
- subheading: { size: 20, weight: 425, lineHeight: 1.13, tracking: -0.2, use: "Sub-section markers" }
47
- body-lg: { size: 18, weight: 400, lineHeight: 1.50, tracking: -0.18, use: "Intro paragraphs, descriptions" }
48
- body: { size: 16, weight: 400, lineHeight: 1.50, use: "Standard body text" }
49
- caption: { size: 13, weight: 400, lineHeight: 1.30, tracking: -0.13, use: "Metadata, descriptions, tags" }
50
- micro: { size: 11, weight: 600, lineHeight: 1.00, use: "Uppercase labels, tiny badges" }
51
- code: { size: 15, weight: 400, lineHeight: 1.50, use: "Code blocks, technical content" }
52
- spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48, section: 96 }
53
- rounded: { sm: 4, md: 6, lg: 12, full: 9999 }
54
- shadow:
55
- ring: "0px 0px 0px 1px #212121"
56
- focus: "0 0 0 2px #0052ef"
33
+ family: { sans: "Waldenburg-75357948a2b6a39b", mono: "IBM Plex Mono-eea356736565d76d" }
34
+ display-hero: { size: 112, weight: 400, lineHeight: 112, tracking: -4.48, use: "Home H1" }
35
+ section: { size: 48, weight: 400, lineHeight: 51.84, tracking: -1.68, use: "Home section heading" }
36
+ body: { size: 15, weight: 400, lineHeight: 22.5, tracking: -0.15, use: "Repeated body and input text" }
37
+ control: { size: 13, weight: 400, lineHeight: 16.9, use: "Compact action labels" }
38
+ spacing: { xs: 4, sm: 8, md: 12, lg: 24, xl: 32 }
39
+ rounded: { input: 3, control: 99999 }
57
40
  components:
58
- button-primary: { type: button, bg: "#f36458", fg: "#ffffff", radius: 9999, padding: "8px 16px", font: "16px/400 waldenburgNormal", use: "Primary CTA pill, hover #0052ef" }
59
- button-secondary: { type: button, bg: "#0b0b0b", fg: "#b9b9b9", radius: 9999, padding: "8px 12px", use: "Dark pill, hover #0052ef" }
60
- button-outlined: { type: button, bg: "#ffffff", fg: "#0b0b0b", radius: 9999, padding: "8px", use: "Light pill, 1px #0b0b0b border, hover #0052ef" }
61
- button-ghost: { type: button, bg: "#212121", fg: "#b9b9b9", radius: 6, padding: "0px 12px", use: "Subtle button, 1px #212121 border, hover #0052ef" }
62
- button-label: { type: button, bg: "#212121", fg: "#b9b9b9", font: "11px/600 waldenburgNormal", use: "Uppercase tab-like nav and filters" }
63
- card-dark: { type: card, bg: "#212121", fg: "#ffffff", radius: 6, padding: "24px", use: "Dark content card, 1px #353535 border" }
64
- card-feature: { type: card, bg: "#0b0b0b", radius: 12, padding: "32px", use: "Full-bleed feature card with overlaid text" }
65
- input-text: { type: input, bg: "#0b0b0b", fg: "#b9b9b9", radius: 3, padding: "8px 12px", use: "Text input, 1px #212121 border, focus 2px #0052ef ring" }
66
- badge-subtle: { type: badge, bg: "#ffffff", fg: "#0b0b0b", radius: 9999, padding: "8px", font: "13px", use: "Neutral subtle pill" }
67
- badge-filled: { type: badge, bg: "#0b0b0b", fg: "#ffffff", radius: 9999, padding: "8px", font: "13px", use: "Neutral filled pill" }
41
+ button-brand: { type: button, fg: "#0b0b0b", radius: 99999, padding: "4px 12px", font: "13px/400 IBM Plex Mono-eea356736565d76d", hover: "near-black fill with P3-orange text", use: "P3 orange pill; home + pricing surfaces" }
42
+ button-inverse: { type: button, bg: "#0b0b0b", fg: "#ffffff", radius: 99999, padding: "4px 12px", font: "13px/400 IBM Plex Mono-eea356736565d76d", hover: "near-black fill with white text", use: "Compact inverse pill" }
43
+ button-light: { type: button, bg: "#ededed", fg: "#0b0b0b", radius: 99999, padding: "4px 12px", font: "13px/400 IBM Plex Mono-eea356736565d76d", hover: "light-gray fill with near-black text", pressed: "light-gray fill with near-black text", use: "Compact light pill" }
44
+ input-text: { type: input, bg: "#0b0b0b", fg: "#b9b9b9", radius: 3, padding: "8px 12px", font: "15px/400 Waldenburg-75357948a2b6a39b", focus: "P3-orange border, #212121 fill, white text", use: "Home textarea" }
68
45
  components_harvested: true
46
+ verification_v2:
47
+ schema: 2
48
+ checked: "2026-07-13"
49
+ surfaces:
50
+ - { id: home, url: "https://www.sanity.io/", inspected: "2026-07-13" }
51
+ - { id: surface-2, url: "https://www.sanity.io/pricing", inspected: "2026-07-13" }
52
+ - { id: surface-3, url: "https://www.sanity.io/pricing?ref=navbar", inspected: "2026-07-13" }
53
+ sources:
54
+ - { id: home, url: "https://www.sanity.io/", kind: product-surface, captured: "2026-07-13" }
55
+ - { id: pricing, url: "https://www.sanity.io/pricing", kind: product-surface, captured: "2026-07-13" }
56
+ - { id: pricing-navbar, url: "https://www.sanity.io/pricing?ref=navbar", kind: product-surface, captured: "2026-07-13" }
57
+ claims:
58
+ "tokens.colors.brand-srgb-approx": { surface_id: home, source_id: home, captured: "2026-07-13" }
59
+ "tokens.colors.canvas": { surface_id: home, source_id: home, captured: "2026-07-13" }
60
+ "tokens.colors.foreground": { surface_id: home, source_id: home, captured: "2026-07-13" }
61
+ "tokens.colors.surface": { surface_id: home, source_id: home, captured: "2026-07-13" }
62
+ "tokens.colors.surface-subtle": { surface_id: home, source_id: home, captured: "2026-07-13" }
63
+ "tokens.colors.on-dark": { surface_id: home, source_id: home, captured: "2026-07-13" }
64
+ "tokens.colors.muted": { surface_id: home, source_id: home, captured: "2026-07-13" }
65
+ "tokens.colors.divider": { surface_id: home, source_id: home, captured: "2026-07-13" }
66
+ "tokens.colors.focus-blue": { surface_id: home, source_id: home, captured: "2026-07-13" }
67
+ "tokens.typography.family.sans": { surface_id: home, source_id: home, captured: "2026-07-13" }
68
+ "tokens.typography.family.mono": { surface_id: home, source_id: home, captured: "2026-07-13" }
69
+ "tokens.typography.display-hero.size": { surface_id: home, source_id: home, captured: "2026-07-13" }
70
+ "tokens.typography.display-hero.weight": { surface_id: home, source_id: home, captured: "2026-07-13" }
71
+ "tokens.typography.display-hero.lineHeight": { surface_id: home, source_id: home, captured: "2026-07-13" }
72
+ "tokens.typography.display-hero.tracking": { surface_id: home, source_id: home, captured: "2026-07-13" }
73
+ "tokens.typography.display-hero.use": { surface_id: home, source_id: home, captured: "2026-07-13" }
74
+ "tokens.typography.section.size": { surface_id: home, source_id: home, captured: "2026-07-13" }
75
+ "tokens.typography.section.weight": { surface_id: home, source_id: home, captured: "2026-07-13" }
76
+ "tokens.typography.section.lineHeight": { surface_id: home, source_id: home, captured: "2026-07-13" }
77
+ "tokens.typography.section.tracking": { surface_id: home, source_id: home, captured: "2026-07-13" }
78
+ "tokens.typography.section.use": { surface_id: home, source_id: home, captured: "2026-07-13" }
79
+ "tokens.typography.body.size": { surface_id: home, source_id: home, captured: "2026-07-13" }
80
+ "tokens.typography.body.weight": { surface_id: home, source_id: home, captured: "2026-07-13" }
81
+ "tokens.typography.body.lineHeight": { surface_id: home, source_id: home, captured: "2026-07-13" }
82
+ "tokens.typography.body.tracking": { surface_id: home, source_id: home, captured: "2026-07-13" }
83
+ "tokens.typography.body.use": { surface_id: home, source_id: home, captured: "2026-07-13" }
84
+ "tokens.typography.control.size": { surface_id: home, source_id: home, captured: "2026-07-13" }
85
+ "tokens.typography.control.weight": { surface_id: home, source_id: home, captured: "2026-07-13" }
86
+ "tokens.typography.control.lineHeight": { surface_id: home, source_id: home, captured: "2026-07-13" }
87
+ "tokens.typography.control.use": { surface_id: home, source_id: home, captured: "2026-07-13" }
88
+ "tokens.rounded.input": { surface_id: home, source_id: home, captured: "2026-07-13" }
89
+ "tokens.rounded.control": { surface_id: home, source_id: home, captured: "2026-07-13" }
90
+ "tokens.spacing.xs": { surface_id: home, source_id: home, captured: "2026-07-13" }
91
+ "tokens.spacing.sm": { surface_id: home, source_id: home, captured: "2026-07-13" }
92
+ "tokens.spacing.md": { surface_id: home, source_id: home, captured: "2026-07-13" }
93
+ "tokens.spacing.lg": { surface_id: home, source_id: home, captured: "2026-07-13" }
94
+ "tokens.spacing.xl": { surface_id: home, source_id: home, captured: "2026-07-13" }
95
+ "tokens.components.button-brand.type": { surface_id: home, source_id: home, captured: "2026-07-13" }
96
+ "tokens.components.button-brand.fg": { surface_id: home, source_id: home, captured: "2026-07-13" }
97
+ "tokens.components.button-brand.radius": { surface_id: home, source_id: home, captured: "2026-07-13" }
98
+ "tokens.components.button-brand.padding": { surface_id: home, source_id: home, captured: "2026-07-13" }
99
+ "tokens.components.button-brand.font": { surface_id: home, source_id: home, captured: "2026-07-13" }
100
+ "tokens.components.button-brand.hover": { surface_id: home, source_id: home, captured: "2026-07-13" }
101
+ "tokens.components.button-brand.use": { surface_id: home, source_id: home, captured: "2026-07-13" }
102
+ "tokens.components.button-inverse.type": { surface_id: home, source_id: home, captured: "2026-07-13" }
103
+ "tokens.components.button-inverse.bg": { surface_id: home, source_id: home, captured: "2026-07-13" }
104
+ "tokens.components.button-inverse.fg": { surface_id: home, source_id: home, captured: "2026-07-13" }
105
+ "tokens.components.button-inverse.radius": { surface_id: home, source_id: home, captured: "2026-07-13" }
106
+ "tokens.components.button-inverse.padding": { surface_id: home, source_id: home, captured: "2026-07-13" }
107
+ "tokens.components.button-inverse.font": { surface_id: home, source_id: home, captured: "2026-07-13" }
108
+ "tokens.components.button-inverse.hover": { surface_id: home, source_id: home, captured: "2026-07-13" }
109
+ "tokens.components.button-inverse.use": { surface_id: home, source_id: home, captured: "2026-07-13" }
110
+ "tokens.components.button-light.type": { surface_id: home, source_id: home, captured: "2026-07-13" }
111
+ "tokens.components.button-light.bg": { surface_id: home, source_id: home, captured: "2026-07-13" }
112
+ "tokens.components.button-light.fg": { surface_id: home, source_id: home, captured: "2026-07-13" }
113
+ "tokens.components.button-light.radius": { surface_id: home, source_id: home, captured: "2026-07-13" }
114
+ "tokens.components.button-light.padding": { surface_id: home, source_id: home, captured: "2026-07-13" }
115
+ "tokens.components.button-light.font": { surface_id: home, source_id: home, captured: "2026-07-13" }
116
+ "tokens.components.button-light.hover": { surface_id: home, source_id: home, captured: "2026-07-13" }
117
+ "tokens.components.button-light.pressed": { surface_id: home, source_id: home, captured: "2026-07-13" }
118
+ "tokens.components.button-light.use": { surface_id: home, source_id: home, captured: "2026-07-13" }
119
+ "tokens.components.input-text.type": { surface_id: home, source_id: home, captured: "2026-07-13" }
120
+ "tokens.components.input-text.bg": { surface_id: home, source_id: home, captured: "2026-07-13" }
121
+ "tokens.components.input-text.fg": { surface_id: home, source_id: home, captured: "2026-07-13" }
122
+ "tokens.components.input-text.radius": { surface_id: home, source_id: home, captured: "2026-07-13" }
123
+ "tokens.components.input-text.padding": { surface_id: home, source_id: home, captured: "2026-07-13" }
124
+ "tokens.components.input-text.font": { surface_id: home, source_id: home, captured: "2026-07-13" }
125
+ "tokens.components.input-text.focus": { surface_id: home, source_id: home, captured: "2026-07-13" }
126
+ "tokens.components.input-text.use": { surface_id: home, source_id: home, captured: "2026-07-13" }
127
+ conflicts: []
69
128
  ---
70
129
 
71
130
  # Design System Inspiration of Sanity
72
131
 
73
132
  ## 1. Visual Theme & Atmosphere
74
133
 
75
- Sanity's website is a developer-content platform rendered as a nocturnal command center -- dark, precise, and deeply structured. The entire experience sits on a near-black canvas (`#0b0b0b`) that reads less like a "dark mode toggle" and more like the natural state of a tool built for people who live in terminals. Where most CMS marketing pages reach for friendly pastels and soft illustration, Sanity leans into the gravity of its own product: structured content deserves a structured stage.
134
+ Sanity is a configurable backend and content platform for teams building content-driven websites, apps, and AI experiences. Its current positioning is the Content Operating System: structured content, an extensible Studio, and APIs/automation that let organizations shape the content workflow around their own business. The public site makes that engineering posture tangible with a deliberately spare mix of editorial-sized Waldenburg type, compact IBM Plex Mono controls, and hard-edged light/dark panels rather than a decorative CMS aesthetic.
76
135
 
77
- The signature typographic voice is waldenburgNormal -- a distinctive, slightly geometric sans-serif with tight negative letter-spacing (-0.32px to -4.48px at display sizes) that gives headlines a compressed, engineered quality. At 112px hero scale with -4.48px tracking, the type feels almost machined -- like precision-cut steel letterforms. This is paired with IBM Plex Mono for code and technical labels, creating a dual-register voice: editorial authority meets developer credibility.
78
-
79
- What makes Sanity distinctive is the interplay between its monochromatic dark palette and vivid, saturated accent punctuation. The neutral scale runs from pure black through a tightly controlled gray ramp (`#0b0b0b` -> `#212121` -> `#353535` -> `#797979` -> `#b9b9b9` -> `#ededed` -> `#ffffff`) with no warm or cool bias -- just pure, achromatic precision. Against this disciplined backdrop, a neon green accent (display-p3 green) and electric blue (`#0052ef`) land with the impact of signal lights in a dark control room. The orange-red CTA (`#f36458`) provides the only warm touch in an otherwise cool system.
136
+ The observed marketing surface uses a white base (`#ffffff`) and near-black foreground (`#0b0b0b`), with the P3 orange `color(display-p3 1 0.3333 0)` as the conspicuous action color. That P3 value is the primary live value; `#ff5500` is included below only as an sRGB approximation for consumers that require hex. Pills recur in compact navigation/pricing actions, while the home hero has a larger 24px Waldenburg action. Sanity’s 2025 launch framed this product direction as a move from CMS category language toward a Content Operating System, with AI and workflow automation as part of the platform rather than a separate visual theme.
80
137
 
81
138
  **Key Characteristics:**
82
- - Near-black canvas (`#0b0b0b`) as the default, natural environment -- not a dark "mode" but the primary identity
83
- - waldenburgNormal with extreme negative tracking at display sizes, creating a precision-engineered typographic voice
84
- - Pure achromatic gray scale -- no warm or cool undertones, pure neutral discipline
85
- - Vivid accent punctuation: neon green, electric blue (`#0052ef`), and coral-red (`#f36458`) against the dark field
86
- - Pill-shaped primary buttons (99999px radius) contrasting with subtle rounded rectangles (3-6px) for secondary actions
87
- - IBM Plex Mono as the technical counterweight to the editorial display face
88
- - Full-bleed dark sections with content contained in measured max-width containers
89
- - Hover states that shift to electric blue (`#0052ef`) across all interactive elements -- a consistent "activation" signal
139
+ - White and near-black base surfaces with a P3-orange action signal
140
+ - Loaded Waldenburg for editorial content and loaded IBM Plex Mono for compact controls
141
+ - Strongly rounded action pills (99999px in the observed product-marketing controls)
142
+ - Small, exact spacing increments: 4px/8px/12px recur in controls; 24px/32px appear in hero actions
143
+ - Light/dark inversion is an observed hover treatment for the P3-orange action, not a general rule for every control
90
144
 
91
145
  ## 2. Color Palette & Roles
92
146
 
93
- ### Primary Brand
94
- - **Sanity Black** (`#0b0b0b`): The primary canvas and dominant surface color. Not pure black but close enough to feel absolute. The foundation of the entire visual identity.
95
- - **Pure Black** (`#000000`): Used for maximum-contrast moments, deep overlays, and certain border accents.
96
- - **Sanity Red** (`#f36458`): The primary CTA and brand accent -- a warm coral-red that serves as the main call-to-action color. Used for "Get Started" buttons and primary conversion points.
97
-
98
- ### Accent & Interactive
99
- - **Electric Blue** (`#0052ef`): The universal hover/active state color across the entire system. Buttons, links, and interactive elements all shift to this blue on hover. Also used as `--color-blue-700` for focus rings and active states.
100
- - **Light Blue** (`#55beff` / `#afe3ff`): Secondary blue variants used for accent backgrounds, badges, and dimmed blue surfaces.
101
- - **Neon Green** (`color(display-p3 .270588 1 0)`): A vivid, wide-gamut green used as `--color-fg-accent-green` for success states and premium feature highlights. Falls back to `#19d600` in sRGB.
102
- - **Accent Magenta** (`color(display-p3 .960784 0 1)`): A vivid wide-gamut magenta for specialized accent moments.
103
-
104
- ### Surface & Background
105
- - **Near Black** (`#0b0b0b`): Default page background and primary surface.
106
- - **Dark Gray** (`#212121`): Elevated surface color for cards, secondary containers, input backgrounds, and subtle layering above the base canvas.
107
- - **Medium Dark** (`#353535`): Tertiary surface and border color for creating depth between dark layers.
108
- - **Pure White** (`#ffffff`): Used for inverted sections, light-on-dark text, and specific button surfaces.
109
- - **Light Gray** (`#ededed`): Light surface for inverted/light sections and subtle background tints.
110
-
111
- ### Neutrals & Text
112
- - **White** (`#ffffff`): Primary text color on dark surfaces, maximum legibility.
113
- - **Silver** (`#b9b9b9`): Secondary text, body copy on dark surfaces, muted descriptions, and placeholder text.
114
- - **Medium Gray** (`#797979`): Tertiary text, metadata, timestamps, and de-emphasized content.
115
- - **Charcoal** (`#212121`): Text on light/inverted surfaces.
116
- - **Near Black Text** (`#0b0b0b`): Primary text on white/light button surfaces.
117
-
118
- ### Semantic
119
- - **Error Red** (`#dd0000`): Destructive actions, validation errors, and critical warnings -- a pure, high-saturation red.
120
- - **GPC Green** (`#37cd84`): Privacy/compliance indicator green.
121
- - **Focus Ring Blue** (`#0052ef`): Focus ring color for accessibility, matching the interactive blue.
122
-
123
- ### Border System
124
- - **Dark Border** (`#0b0b0b`): Primary border on dark containers -- barely visible, maintaining minimal containment.
125
- - **Subtle Border** (`#212121`): Standard border for inputs, textareas, and card edges on dark surfaces.
126
- - **Medium Border** (`#353535`): More visible borders for emphasized containment and dividers.
127
- - **Light Border** (`#ffffff`): Border on inverted/light elements or buttons needing contrast separation.
128
- - **Orange Border** (`color(display-p3 1 0.3333 0)`): Special accent border for highlighted/featured elements.
147
+ ### Brand Action
148
+ - **Sanity Orange (live P3)** (`color(display-p3 1 0.3333 0)`): Observed as background and border on home and pricing action pills. The hex `#ff5500` is an sRGB approximation retained for token consumers; it is not a replacement for the P3 source value.
149
+ - **Near Black** (`#0b0b0b`): Primary foreground, dark button fill, and the hover inversion partner for the orange action.
150
+
151
+ ### Surfaces & Text
152
+ - **White** (`#ffffff`): Observed base background and text on inverse controls.
153
+ - **Dark Gray** (`#212121`): Observed textarea background and a dark secondary surface.
154
+ - **Light Gray** (`#ededed`): Compact light-pill fill across home and pricing.
155
+ - **Silver** (`#b9b9b9`): Muted text and the observed hover fill of one pricing control.
156
+ - **Divider Gray** (`#d6d6d6`): Observed dialog border.
157
+
158
+ ### State-specific Evidence
159
+ - **Blue** (`#0052ef`): Observed as a border/background in the captured surfaces; its exact component assignment is not generalized here.
160
+ - The focused home textarea uses the P3-orange border. No error/success palette is promoted because this capture did not observe those states.
129
161
 
130
162
  ## 3. Typography Rules
131
163
 
132
164
  ### Font Family
133
- - **Display / Headline**: `waldenburgNormal`, fallback: `waldenburgNormal Fallback, ui-sans-serif, system-ui`
134
- - **Body / UI**: `waldenburgNormal`, fallback: `waldenburgNormal Fallback, ui-sans-serif, system-ui`
135
- - **Code / Technical**: `IBM Plex Mono`, fallback: `ibmPlexMono Fallback, ui-monospace`
136
- - **Fallback / CJK**: `Helvetica`, fallback: `Arial, Hiragino Sans GB, STXihei, Microsoft YaHei, WenQuanYi Micro Hei`
137
-
138
- *Note: waldenburgNormal is a custom typeface. For external implementations, use Inter or Space Grotesk as the sans substitute (geometric, slightly condensed feel). IBM Plex Mono is available on Google Fonts.*
165
+ - **Live product/marketing sans:** `Waldenburg-75357948a2b6a39b` is both computed and loaded (832 observed uses across body, headings, buttons, inputs, and dialogs). The current evidence exposes no browser-loadable source URL, so the family is preserved by its delivered family name only; no substitute is authorized.
166
+ - **Live product/marketing mono:** `IBM Plex Mono-eea356736565d76d` is both computed and loaded (568 observed uses across controls, labels, and content). The upstream IBM Plex family is distributed under the SIL Open Font License 1.1 by IBM; that license source does not establish a separate Sanity font asset.
167
+ - **Declared only:** Inter/Inter var appear in third-party `assets.qualified.com` declarations with zero visible uses; they are excluded from the UI family tokens.
168
+ - **System/embedded chrome:** Helvetica is present only in the cookie-consent dialog (three uses); it is system/embedded chrome, not a Sanity product or marketing type token.
139
169
 
140
170
  ### Hierarchy
141
171
 
142
172
  | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
143
173
  |------|------|------|--------|-------------|----------------|-------|
144
- | Display / Hero | waldenburgNormal | 112px (7rem) | 400 | 1.00 (tight) | -4.48px | Maximum impact, compressed tracking |
145
- | Hero Secondary | waldenburgNormal | 72px (4.5rem) | 400 | 1.05 (tight) | -2.88px | Large section headers |
146
- | Section Heading | waldenburgNormal | 48px (3rem) | 400 | 1.08 (tight) | -1.68px | Primary section anchors |
147
- | Heading Large | waldenburgNormal | 38px (2.38rem) | 400 | 1.10 (tight) | -1.14px | Feature section titles |
148
- | Heading Medium | waldenburgNormal | 32px (2rem) | 425 | 1.24 (tight) | -0.32px | Card titles, subsection headers |
149
- | Heading Small | waldenburgNormal | 24px (1.5rem) | 425 | 1.24 (tight) | -0.24px | Smaller feature headings |
150
- | Subheading | waldenburgNormal | 20px (1.25rem) | 425 | 1.13 (tight) | -0.2px | Sub-section markers |
151
- | Body Large | waldenburgNormal | 18px (1.13rem) | 400 | 1.50 | -0.18px | Intro paragraphs, descriptions |
152
- | Body | waldenburgNormal | 16px (1rem) | 400 | 1.50 | normal | Standard body text |
153
- | Body Small | waldenburgNormal | 15px (0.94rem) | 400 | 1.50 | -0.15px | Compact body text |
154
- | Caption | waldenburgNormal | 13px (0.81rem) | 400-500 | 1.30-1.50 | -0.13px | Metadata, descriptions, tags |
155
- | Small Caption | waldenburgNormal | 12px (0.75rem) | 400 | 1.50 | -0.12px | Footnotes, timestamps |
156
- | Micro / Label | waldenburgNormal | 11px (0.69rem) | 500-600 | 1.00-1.50 | normal | Uppercase labels, tiny badges |
157
- | Code Body | IBM Plex Mono | 15px (0.94rem) | 400 | 1.50 | normal | Code blocks, technical content |
158
- | Code Caption | IBM Plex Mono | 13px (0.81rem) | 400-500 | 1.30-1.50 | normal | Inline code, small technical labels |
159
- | Code Micro | IBM Plex Mono | 10-12px | 400 | 1.30-1.50 | normal | Tiny code labels, uppercase tags |
174
+ | Display / Hero | Waldenburg | 112px | 400 | 112px | -4.48px | One home H1 observation |
175
+ | Hero / CTA | Waldenburg | 24px | 400 | 26.4px | -0.24px | Home action pill |
176
+ | Section heading | Waldenburg | 48px | 400 | 51.84px | -1.68px | Home heading observation |
177
+ | Body compact | Waldenburg | 15px | 400 | 22.5px | -0.15px | Repeated body/input observation |
178
+ | Body | Waldenburg | 16px | 400 | 24px | normal | Repeated content observation |
179
+ | Control label | IBM Plex Mono | 13px | 400 | 16.9px | normal | Repeated compact action and label observation |
160
180
 
161
181
  ### Principles
162
- - **Extreme negative tracking at scale**: Display headings at 72px+ use aggressive negative letter-spacing (-2.88px to -4.48px), creating a tight, engineered quality that distinguishes Sanity from looser editorial typography.
163
- - **Single font, multiple registers**: waldenburgNormal handles both editorial display and functional UI text. The weight range is narrow (400-425 for most, 500-600 only for tiny labels), keeping the voice consistent.
164
- - **OpenType feature control**: Typography uses deliberate feature settings including `"cv01", "cv11", "cv12", "cv13", "ss07"` for display sizes and `"calt" 0` for body text, fine-tuning character alternates for different contexts.
165
- - **Tight headings, relaxed body**: Headings use 1.00-1.24 line-height (extremely tight), while body text breathes at 1.50. This contrast creates clear visual hierarchy.
166
- - **Uppercase for technical labels**: IBM Plex Mono captions and small labels frequently use `text-transform: uppercase` with tight line-heights, creating a "system readout" aesthetic for technical metadata.
182
+ - **Two delivered registers**: Waldenburg handles the editorial scale; IBM Plex Mono is the dense utility/control register.
183
+ - **Tracking is evidence-bound**: The capture shows increasingly negative tracking at the observed 24px, 48px, 72px, and 112px sizes. It does not establish a global OpenType-feature policy.
184
+ - **No fallback substitution**: a loaded but source-less Waldenburg delivery is still a live family fact; external implementations must label it unavailable rather than silently render Inter or a system font as Waldenburg.
167
185
 
168
186
  ## 4. Component Stylings
169
187
 
170
- ### Buttons
171
-
172
- **Primary CTA (Pill)**
173
- - Background: Sanity Red (`#f36458`)
174
- - Text: White (`#ffffff`)
175
- - Padding: 8px 16px
176
- - Border Radius: 99999px (full pill)
177
- - Border: none
178
- - Hover: Electric Blue (`#0052ef`) background, white text
179
- - Font: 16px waldenburgNormal, weight 400
180
-
181
- **Secondary (Dark Pill)**
182
- - Background: Near Black (`#0b0b0b`)
183
- - Text: Silver (`#b9b9b9`)
184
- - Padding: 8px 12px
185
- - Border Radius: 99999px (full pill)
186
- - Border: none
187
- - Hover: Electric Blue (`#0052ef`) background, white text
188
-
189
- **Outlined (Light Pill)**
190
- - Background: White (`#ffffff`)
191
- - Text: Near Black (`#0b0b0b`)
192
- - Padding: 8px
193
- - Border Radius: 99999px (full pill)
188
+ ### Actions
189
+
190
+ **Brand compact pill**
191
+ - Background: `color(display-p3 1 0.3333 0)`
192
+ - Text: `#0b0b0b`
193
+ - Border: 1px solid `color(display-p3 1 0.3333 0)`
194
+ - Radius: 99999px
195
+ - Padding: 4px 12px
196
+ - Font: 13px / 400 / IBM Plex Mono-eea356736565d76d
197
+ - Hover: Background `#0b0b0b`; Text `color(display-p3 1 0.3333 0)`
198
+ - Use: Home and pricing action links; `home::[data-omd-capture="14"]`, `surface-2::[data-omd-capture="10"]`, and `surface-3::[data-omd-capture="10"]`.
199
+
200
+ **Brand hero pill**
201
+ - Background: `color(display-p3 1 0.3333 0)`
202
+ - Text: `#0b0b0b`
203
+ - Border: 1px solid `color(display-p3 1 0.3333 0)`
204
+ - Radius: 99999px
205
+ - Padding: 8px 32px
206
+ - Font: 24px / 400 / Waldenburg-75357948a2b6a39b
207
+ - Hover: Background `#0b0b0b`; Text `color(display-p3 1 0.3333 0)`
208
+ - Pressed: Background `#0b0b0b`; Text `#0b0b0b`
209
+ - Use: Home hero action only; `home::[data-omd-capture="15"]`.
210
+
211
+ **Inverse compact pill**
212
+ - Background: `#0b0b0b`
213
+ - Text: `#ffffff`
194
214
  - Border: 1px solid `#0b0b0b`
195
- - Hover: Electric Blue (`#0052ef`) background, white text
196
-
197
- **Ghost / Subtle**
198
- - Background: Dark Gray (`#212121`)
199
- - Text: Silver (`#b9b9b9`)
200
- - Padding: 0px 12px
201
- - Border Radius: 5px
202
- - Border: 1px solid `#212121`
203
- - Hover: Electric Blue (`#0052ef`) background, white text
204
-
205
- **Uppercase Label Button**
206
- - Font: 11px waldenburgNormal, weight 600, uppercase
207
- - Background: transparent or `#212121`
208
- - Text: Silver (`#b9b9b9`)
209
- - Letter-spacing: normal
210
- - Used for tab-like navigation and filter controls
211
-
212
- ### Cards
213
-
214
- **Dark Content Card**
215
- - Background: `#212121`
216
- - Border: 1px solid `#353535` or `#212121`
217
- - Border Radius: 6px
218
- - Padding: 24px
219
- - Text: White (`#ffffff`) for titles, Silver (`#b9b9b9`) for body
220
- - Hover: subtle border color shift or elevation change
221
-
222
- **Feature Card (Full-bleed)**
223
- - Background: `#0b0b0b` or full-bleed image/gradient
224
- - Border: none or 1px solid `#212121`
225
- - Border Radius: 12px
226
- - Padding: 32-48px
227
- - Contains large imagery with overlaid text
228
-
229
- ### Inputs
230
-
231
- **Text Input / Textarea**
232
- - Background: Near Black (`#0b0b0b`)
233
- - Text: Silver (`#b9b9b9`)
215
+ - Radius: 99999px
216
+ - Padding: 4px 12px
217
+ - Font: 13px / 400 / IBM Plex Mono-eea356736565d76d
218
+ - Hover: Background `#0b0b0b`; Text `#ffffff`
219
+ - Use: Home and pricing compact inverse actions; `home::[data-omd-capture="13"]` and matching pricing surfaces.
220
+
221
+ **Light compact pill**
222
+ - Background: `#ededed`
223
+ - Text: `#0b0b0b`
224
+ - Radius: 99999px
225
+ - Padding: 4px 12px
226
+ - Font: 13px / 400 / IBM Plex Mono-eea356736565d76d
227
+ - Hover: Background `#ededed`; Text `#0b0b0b`
228
+ - Pressed: Background `#ededed`; Text `#0b0b0b`
229
+ - Use: Repeated home/pricing compact control; `home::[data-omd-capture="6"]` and matching pricing surfaces.
230
+
231
+ ### Form field
232
+
233
+ **Home textarea**
234
+ - Background: `#0b0b0b`
235
+ - Text: `#b9b9b9`
234
236
  - Border: 1px solid `#212121`
237
+ - Radius: 3px
235
238
  - Padding: 8px 12px
236
- - Border Radius: 3px
237
- - Focus: outline with `var(--focus-ring-color)` (blue), 2px solid
238
- - Focus background: shifts to deep cyan (`#072227`)
239
+ - Font: 15px / 400 / Waldenburg-75357948a2b6a39b
240
+ - Focus: Border `color(display-p3 1 0.3333 0)`; Background `#212121`; Text `#ffffff`
241
+ - Use: Home form only; `home::[data-omd-capture="22"]` and `::state-focus`.
239
242
 
240
- **Search Input**
241
- - Background: `#0b0b0b`
242
- - Text: Silver (`#b9b9b9`)
243
- - Padding: 0px 12px
244
- - Border Radius: 3px
245
- - Placeholder: Medium Gray (`#797979`)
246
-
247
- ### Navigation
248
-
249
- **Top Navigation**
250
- - Background: Near Black (`#0b0b0b`) with backdrop blur
251
- - Height: auto, compact padding
252
- - Logo: left-aligned, Sanity wordmark
253
- - Links: waldenburgNormal 16px, Silver (`#b9b9b9`)
254
- - Link Hover: Electric Blue via `--color-fg-accent-blue`
255
- - CTA Button: Sanity Red pill button right-aligned
256
- - Separator: 1px border-bottom `#212121`
257
-
258
- **Footer**
259
- - Background: Near Black (`#0b0b0b`)
260
- - Multi-column link layout
261
- - Links: Silver (`#b9b9b9`), hover to blue
262
- - Section headers: White (`#ffffff`), 13px uppercase IBM Plex Mono
263
-
264
- ### Badges / Pills
265
-
266
- **Neutral Subtle**
267
- - Background: White (`#ffffff`)
268
- - Text: Near Black (`#0b0b0b`)
269
- - Padding: 8px
270
- - Font: 13px
271
- - Border Radius: 99999px
272
-
273
- **Neutral Filled**
274
- - Background: Near Black (`#0b0b0b`)
275
- - Text: White (`#ffffff`)
276
- - Padding: 8px
277
- - Font: 13px
278
- - Border Radius: 99999px
243
+ ### Dialog
244
+
245
+ **Pricing dialog**
246
+ - Background: `#ffffff`
247
+ - Text: `#0b0b0b`
248
+ - Border: 1px solid `#d6d6d6`
249
+ - Padding: 16px
250
+ - Font: 14px / 400 / Waldenburg-75357948a2b6a39b
251
+ - Use: Observed open after pricing controls; `surface-2::[data-omd-interaction-capture="dialog-0-0"]` and repeated on the query-ref pricing capture.
279
252
 
280
253
  ## 5. Layout Principles
281
254
 
282
- ### Spacing System
283
- Base unit: **8px**
284
-
285
- | Token | Value | Usage |
286
- |-------|-------|-------|
287
- | space-1 | 1px | Hairline gaps, border-like spacing |
288
- | space-2 | 2px | Minimal internal padding |
289
- | space-3 | 4px | Tight component internal spacing |
290
- | space-4 | 6px | Small element gaps |
291
- | space-5 | 8px | Base unit -- button padding, input padding, badge padding |
292
- | space-6 | 12px | Standard component gap, button horizontal padding |
293
- | space-7 | 16px | Section internal padding, card spacing |
294
- | space-8 | 24px | Large component padding, card internal spacing |
295
- | space-9 | 32px | Section padding, container gutters |
296
- | space-10 | 48px | Large section vertical spacing |
297
- | space-11 | 64px | Major section breaks |
298
- | space-12 | 96-120px | Hero vertical padding, maximum section spacing |
299
-
300
- ### Grid & Container
301
- - Max content width: ~1440px (inferred from breakpoints)
302
- - Page gutter: 32px on desktop, 16px on mobile
303
- - Content sections use full-bleed backgrounds with centered, max-width content
304
- - Multi-column layouts: 2-3 columns on desktop, single column on mobile
305
- - Card grids: CSS Grid with consistent gaps (16-24px)
306
-
307
- ### Whitespace Philosophy
308
- Sanity uses aggressive vertical spacing between sections (64-120px) to create breathing room on the dark canvas. Within sections, spacing is tighter (16-32px), creating dense information clusters separated by generous voids. This rhythm gives the page a "slides" quality -- each section feels like its own focused frame.
309
-
310
- ### Border Radius Scale
311
-
312
- | Token | Value | Usage |
313
- |-------|-------|-------|
314
- | radius-xs | 3px | Inputs, textareas, subtle rounding |
315
- | radius-sm | 4-5px | Secondary buttons, small cards, tags |
316
- | radius-md | 6px | Standard cards, containers |
317
- | radius-lg | 12px | Large cards, feature containers, forms |
318
- | radius-pill | 99999px | Primary buttons, badges, nav pills |
255
+ The retained spacing observations are 4px, 8px, 12px, 24px, and 32px. They occur in the selector-bound controls documented in §4; they do not establish a global scale, grid, content width, gutter, or card layout. The retained radii are 3px for the home textarea and 99999px for the observed compact and hero action pills. No other radius scale is canonical.
319
256
 
320
257
  ## 6. Depth & Elevation
321
258
 
322
- ### Shadow System
323
-
324
- | Level | Value | Usage |
325
- |-------|-------|-------|
326
- | Level 0 (Flat) | none | Default state for most elements -- dark surfaces create depth through color alone |
327
- | Level 1 (Subtle) | 0px 0px 0px 1px `#212121` | Border-like shadow for minimal containment without visible borders |
328
- | Level 2 (Focus) | 0 0 0 2px `var(--color-blue-500)` | Focus ring for inputs and interactive elements |
329
- | Level 3 (Overlay) | Backdrop blur + semi-transparent dark | Navigation overlay, modal backgrounds |
330
-
331
- ### Depth Philosophy
332
- Sanity's depth system is almost entirely **colorimetric** rather than shadow-based. Elevation is communicated through surface color shifts: `#0b0b0b` (ground) -> `#212121` (elevated) -> `#353535` (prominent) -> `#ffffff` (inverted/highest). This approach is native to dark interfaces where traditional drop shadows would be invisible. The few shadows that exist are ring-based (0px 0px 0px Npx) or blur-based (backdrop-filter) rather than offset shadows, maintaining the flat, precision-engineered aesthetic.
333
-
334
- Border-based containment (1px solid `#212121` or `#353535`) serves as the primary spatial separator, with the border darkness calibrated to be visible but not dominant. The system avoids "floating card" aesthetics -- everything feels mounted to the surface rather than hovering above it.
259
+ The only retained elevation observation is the pricing dialog: `rgba(0, 0, 0, 0.1) 0px 10px 15px -3px` and `rgba(0, 0, 0, 0.1) 0px 4px 6px -4px`, alongside its `#ffffff` surface and `#d6d6d6` border. No general shadow scale, overlay, focus ring, card elevation, or depth philosophy is promoted from this packet.
335
260
 
336
261
  ## 7. Do's and Don'ts
337
262
 
338
263
  ### Do
339
- - Use the achromatic gray scale as the foundation -- maintain pure neutral discipline with no warm/cool tinting
340
- - Apply Electric Blue (`#0052ef`) consistently as the universal hover/active state across all interactive elements
341
- - Use extreme negative letter-spacing (-2px to -4.48px) on display headings 48px and above
342
- - Keep primary CTAs as full-pill shapes (99999px radius) with the coral-red (`#f36458`)
343
- - Use IBM Plex Mono uppercase for technical labels, tags, and system metadata
344
- - Communicate depth through surface color (dark-to-light) rather than shadows
345
- - Maintain generous vertical section spacing (64-120px) on the dark canvas
346
- - Use `"cv01", "cv11", "cv12", "cv13", "ss07"` OpenType features for display typography
264
+ - Preserve `color(display-p3 1 0.3333 0)` as the source value for the observed orange actions; use `#ff5500` only where an sRGB hex is technically required.
265
+ - Keep the observed compact action geometry together: 99999px radius, 4px 12px padding, and 13px / 400 IBM Plex Mono.
266
+ - Keep the observed hero action separate from compact controls: 8px 32px padding and 24px / 400 Waldenburg.
267
+ - Use the captured light/dark inversion only for the listed P3-orange action variants.
268
+ - Preserve the home textarea's 3px radius and captured P3-orange focus border when reproducing that field.
347
269
 
348
270
  ### Don't
349
- - Don't introduce warm or cool color tints to the neutral scale -- Sanity's grays are pure achromatic
350
- - Don't use drop shadows for elevation -- dark interfaces demand colorimetric depth
351
- - Don't apply border-radius between 13px and 99998px -- the system jumps from 12px (large card) directly to pill (99999px)
352
- - Don't mix the coral-red CTA with the electric blue interactive color in the same element
353
- - Don't use heavy font weights (700+) -- the system maxes out at 600 and only for 11px uppercase labels
354
- - Don't place light text on light surfaces or dark text on dark surfaces without checking the gray-on-gray contrast ratio
355
- - Don't use traditional offset box-shadows -- ring shadows (0 0 0 Npx) or border-based containment only
356
- - Don't break the tight line-height on headings -- 1.00-1.24 is the range, never go to 1.5+ for display text
271
+ - Don't replace loaded Waldenburg with Inter, a system stack, or another plausible substitute.
272
+ - Don't promote the cookie dialog's Helvetica or declared-only Inter assets into Sanity UI typography.
273
+ - Don't treat the pricing dialog or marketing controls as Sanity Studio application components.
274
+ - Don't generalize `#0052ef`, cards, responsive breakpoints, or unobserved error/success states from this capture.
357
275
 
358
276
  ## 8. Responsive Behavior
359
277
 
360
- ### Breakpoints
361
-
362
- | Name | Width | Behavior |
363
- |------|-------|----------|
364
- | Desktop XL | >= 1640px | Full layout, maximum content width |
365
- | Desktop | >= 1440px | Standard desktop layout |
366
- | Desktop Compact | >= 1200px | Slightly condensed desktop |
367
- | Laptop | >= 1100px | Reduced column widths |
368
- | Tablet Landscape | >= 960px | 2-column layouts begin collapsing |
369
- | Tablet | >= 768px | Transition zone, some elements stack |
370
- | Mobile Large | >= 720px | Near-tablet layout |
371
- | Mobile | >= 480px | Single-column, stacked layout |
372
- | Mobile Small | >= 376px | Minimum supported width |
373
-
374
- ### Collapsing Strategy
375
- - **Navigation**: Horizontal links collapse to hamburger menu below 768px
376
- - **Hero typography**: Scales from 112px -> 72px -> 48px -> 38px across breakpoints, maintaining tight letter-spacing ratios
377
- - **Grid layouts**: 3-column -> 2-column at ~960px, single-column below 768px
378
- - **Card grids**: Horizontal scrolling on mobile instead of wrapping (preserving card aspect ratios)
379
- - **Section spacing**: Vertical padding reduces by ~40% on mobile (120px -> 64px -> 48px)
380
- - **Button sizing**: CTA pills maintain padding but reduce font size; ghost buttons stay fixed
381
- - **Code blocks**: Horizontal scroll with preserved monospace formatting
382
-
383
- ### Mobile-Specific Adjustments
384
- - Full-bleed sections extend edge-to-edge with 16px internal gutters
385
- - Touch targets: minimum 44px for all interactive elements
386
- - Heading letter-spacing relaxes slightly at mobile sizes (less aggressive negative tracking)
387
- - Image containers switch from fixed aspect ratios to full-width with auto height
278
+ This packet contains desktop `1440×900` captures only. No breakpoint, collapse, mobile type, gutter, touch-target, or responsive component claim is retained. A future responsive capture must establish those values independently.
388
279
 
389
280
  ## 9. Agent Prompt Guide
390
281
 
391
282
  ### Quick Color Reference
392
283
  ```
393
- Background: #0b0b0b (near-black canvas)
394
- Surface: #212121 (elevated cards/containers)
395
- Border: #353535 (visible) / #212121 (subtle)
396
- Text Primary: #ffffff (white on dark)
397
- Text Secondary: #b9b9b9 (silver on dark)
398
- Text Tertiary: #797979 (medium gray)
399
- CTA: #f36458 (coral-red)
400
- Interactive: #0052ef (electric blue, all hovers)
401
- Success: #19d600 (green, sRGB fallback)
402
- Error: #dd0000 (pure red)
403
- Light Surface: #ededed / #ffffff (inverted sections)
284
+ Base: #ffffff (observed home background)
285
+ Foreground: #0b0b0b
286
+ Dark surface: #212121 (observed textarea focus fill)
287
+ Light pill: #ededed
288
+ Muted text: #b9b9b9
289
+ Orange action: color(display-p3 1 0.3333 0) (source value)
290
+ Orange fallback: #ff5500 (sRGB approximation only)
291
+ Blue: #0052ef (observed, role not generalized)
404
292
  ```
405
293
 
406
294
  ### Example Prompts
407
295
 
408
296
  **Landing page section:**
409
- "Create a feature section with a near-black (#0b0b0b) background. Use a 48px heading in Inter with -1.68px letter-spacing, white text. Below it, 16px body text in #b9b9b9 with 1.50 line-height. Include a coral-red (#f36458) pill button with white text and a secondary dark (#0b0b0b) pill button with #b9b9b9 text. Both buttons hover to #0052ef blue."
297
+ "Create a public marketing action using the captured P3-orange source value, #0b0b0b text, 99999px radius, 4px 12px padding, and 13px/400 IBM Plex Mono. On hover, invert it to #0b0b0b with P3-orange text."
410
298
 
411
299
  **Card grid:**
412
- "Build a 3-column card grid on a #0b0b0b background. Each card has a #212121 surface, 1px solid #353535 border, 6px border-radius, and 24px padding. Card titles are 24px white with -0.24px letter-spacing. Body text is 13px #b9b9b9. Add a 13px IBM Plex Mono uppercase tag in #797979 at the top of each card."
300
+ "Do not generate a canonical Sanity card grid from this reference. The supplied evidence did not establish a reusable marketing card variant."
413
301
 
414
302
  **Form section:**
415
- "Design a contact form on a #0b0b0b background. Inputs have #0b0b0b background, 1px solid #212121 border, 3px border-radius, 8px 12px padding, and #b9b9b9 placeholder text. Focus state shows a 2px blue (#0052ef) ring. Submit button is a full-width coral-red (#f36458) pill. Include a 13px #797979 helper text below each field."
303
+ "Reproduce the observed home textarea only: #0b0b0b fill, 1px #212121 border, 3px radius, 8px 12px padding, 15px/400 Waldenburg, and a P3-orange focus border with #212121 focus fill."
416
304
 
417
305
  **Navigation bar:**
418
- "Create a sticky top navigation on #0b0b0b with backdrop blur. Left: brand text in 15px white. Center/right: nav links in 16px #b9b9b9 that hover to blue. Far right: a coral-red (#f36458) pill CTA button. Bottom border: 1px solid #212121."
306
+ "Keep navigation claims to the captured compact pill controls; sticky behavior, backdrop blur, and a universal link-hover rule were not retained as canonical evidence."
419
307
 
420
308
  ### Iteration Guide
421
- 1. **Start dark**: Begin with `#0b0b0b` background, `#ffffff` primary text, `#b9b9b9` secondary text
422
- 2. **Add structure**: Use `#212121` surfaces and `#353535` borders for containment -- no shadows
423
- 3. **Apply typography**: Inter (or Space Grotesk) with tight letter-spacing on headings, 1.50 line-height on body
424
- 4. **Color punctuation**: Add `#f36458` for CTAs and `#0052ef` for all hover/interactive states
425
- 5. **Refine spacing**: 8px base unit, 24-32px within sections, 64-120px between sections
426
- 6. **Technical details**: Add IBM Plex Mono uppercase labels for tags and metadata
427
- 7. **Polish**: Ensure all interactive elements hover to `#0052ef`, all buttons are pills or subtle 5px radius, borders are hairline (1px)
309
+ 1. Start from an observed family and selector, not a broad visual impression.
310
+ 2. Keep the P3 orange in P3-capable output; disclose the hex approximation when using it.
311
+ 3. Keep Waldenburg and IBM Plex Mono distinct and do not substitute a system or declared-only family.
312
+ 4. Add only a listed interaction state to its matching component variant.
428
313
 
429
314
  ## 10. Voice & Tone
430
315
 
@@ -444,56 +329,37 @@ Sanity's voice is **content-platform-confident and developer-warm.** "The Conten
444
329
 
445
330
  ## 11. Brand Narrative
446
331
 
447
- Sanity was **founded 2016 in Norway** with the **public launch November 2017** by four co-founders: **Magnus Kongsli Hillestad**, **Even Westvang**, **Øyvind Rostad**, and **Simen Svale Skogsrud** ([Threshold Ventures — Magnus Hillestad founder Q&A](https://medium.com/threshold-ventures/magnus-hillestad-sanity-founder-story-80b7e97952d), [Sanity Magnus profile](https://www.sanity.io/exchange/community/magnus)). **Dual-headquartered in Oslo and San Francisco** with remote team across four continents. Headless CMS positioned as content infrastructure — **Studio** (editor) + **Dataset** (storage) + **Content Lake** (queryable). Founding insight: content must be **structured data**, easily queried + distributed across APIs (vs traditional page-bound CMS). **Series B $39M (2021)** led by **ICONIQ Growth** with **Lead Edge Capital** + existing investors — ICONIQ's portfolio includes **Datadog, Snowflake, Notion, Airtable, Zoom** ([Sanity blog It takes a village (Series B)](https://www.sanity.io/blog/it-takes-a-village), [TechStartups Sanity $39M Series B](https://techstartups.com/2021/06/24/norwegian-tech-startup-sanity-raises-39-million-grow-unified-content-platform-building-data-driven-content-solutions/)). Strong adoption among design-first SaaS + e-commerce. The **2024-2025 evolution to "Content Operating System for AI era"** positions Sanity as the structured-content layer for AI applications confirmed via live `<title>` "The Content Operating System for the AI era | Sanity" 2026-05.
332
+ Sanity describes the current platform as a Content Operating System rather than a conventional CMS: a structured content foundation with a configurable Studio, APIs/SDKs, automation, and AI-oriented tools. The first-party 2025 platform launch describes Content Lake, Studio, custom content applications, automation, an AI agent, Media Library, Canvas, and Dashboard as parts of that connected direction. This narrative describes product scope and evolution; it does not turn the marketing-site controls in §4 into Studio application components.
448
333
 
449
334
  ## 12. Principles
450
335
 
451
- 1. **Content as code.** Schemas, GROQ queries, deploys as code. *UI implication:* schema-first approach surfaces.
452
- 2. **Studio is the canvas.** Customizable React-based editor. *UI implication:* showcase Studio screenshots as primary marketing asset.
453
- 3. **Hairline borders, no shadow.** *UI implication:* depth via 1px borders + color contrast.
454
- 4. **Pills + 5px subtle.** *UI implication:* primary CTAs pill; secondary 5px radius.
455
- 5. **Hover to `#0052ef` blue.** *UI implication:* preserve hover blue across all interactive elements.
336
+ 1. **Structured content, configurable workflow.** *UI implication:* public messaging emphasizes adapting content systems to how an organization works.
337
+ 2. **Developer affordances remain visible.** *UI implication:* retain the editorial/technical typography contrast when reproducing observed marketing controls.
338
+ 3. **Accessibility and composability in Sanity UI.** *UI implication:* Sanity UI is an official React toolkit, but its documentation chrome is not a source for the marketing component measurements here.
339
+ 4. **Evidence-domain discipline.** *UI implication:* reuse only listed P3, inverse, light-pill, textarea, and dialog variants; leave other components absent.
456
340
 
457
341
  ## 13. Personas
458
342
 
459
- *Personas are fictional archetypes informed by Sanity user segments (developers, content teams, e-commerce marketers), not individual people.*
460
-
461
- **Henrik Sondergaard, 35, Copenhagen.** Senior engineer at e-commerce SaaS. Sanity Studio for product content management.
462
-
463
- **Sofia Russo, 30, Milan.** Indie SaaS shipping editorial sites. Sanity for headless CMS + Next.js integration.
464
-
465
- **Marcus Chen, 38, San Francisco.** Content lead at growth-stage SaaS. Owns the marketing site CMS.
343
+ No fictional personas are asserted. First-party public navigation identifies developers, content editors, product owners, and business leaders as relevant audiences; this reference does not infer demographics, locations, jobs, or workflows beyond those published groups.
466
344
 
467
345
  ## 14. States
468
346
 
469
347
  | State | Treatment |
470
348
  |---|---|
471
- | **Empty (no content)** | "Create your first document" CTA + schema picker |
472
- | **Empty (no schemas)** | "Define a schema" with code example |
473
- | **Loading (query)** | GROQ query result inline |
474
- | **Loading (publishing)** | Per-document progress |
475
- | **Error (schema)** | Specific. "Field X validation failed." |
476
- | **Error (deploy)** | Token + permission diagnostic |
477
- | **Success (published)** | Subtle confirmation + revision history |
478
- | **Success (preview)** | Inline preview link |
479
- | **Skeleton (document list)** | Hairline-border placeholders |
480
- | **Disabled (no permission)** | Role tooltip |
481
- | **Loading (long deploy)** | Persistent progress |
349
+ | Product empty/loading/error/success states | Not captured on an authenticated Sanity product surface; no state recipe is claimed. |
350
+ | Marketing interaction states | Only the §4 hover, pressed, focus, and dialog-open observations are retained. |
482
351
 
483
352
  ## 15. Motion & Easing
484
353
 
485
354
  | Token | Value | Use |
486
355
  |---|---|---|
487
- | `motion-instant` | 0ms | Selection |
488
- | `motion-fast` | 150ms | Hover |
489
- | `motion-standard` | 250ms | Modal, panel |
356
+ | Motion tokens | Not measured in the supplied capture |
490
357
 
491
- Standard cubic-bezier; no bounce. `prefers-reduced-motion: reduce` removes hover transitions.
358
+ No duration, easing, or reduced-motion rule is promoted without a measured source.
492
359
 
493
360
  ---
494
361
 
495
- **Verified:** 2026-05-08 (omd:migrate run 53 — Apple-tier)
496
- **Tier 1 sources:** sanity.io home + /pricing (live DOM via playwright — Primary **`color(display-p3 1 0.3333 0)`** Sanity Orange-Red (~`#ff5500` sRGB / wide-gamut P3) 99999px full-pill / 35px (page 13px·400 ALL CAPS) or 55px (hero 24px·400) / 4×12 or 8×32; Inverse `#0b0b0b` Near-Black; Light Secondary `#ededed`; A11y skip-nav `#0052ef` Sanity Blue. **`display-p3()` wide-gamut color-space — most advanced in corpus**).
497
- **Tier 2 sources:** styles.refero.design / getdesign.md no record.
498
- **Tier 2 (Philosophy/founders/funding):** Threshold Ventures (Magnus Hillestad Q&A), Sanity profile pages (Magnus + Simen), Sanity blog (Series B "It takes a village"), TechStartups, Nordic 9, Crunchbase.
499
- **Style ref:** `stripe`. **Conflicts unresolved:** none. **Earlier mistake reverted (significant):** prior footer claimed Primary was `#0b0b0b` 0px (announcement-banner strip) — canonical is **wide-gamut display-p3 Orange-Red 99999px full-pill**. Massive correction.
362
+ **Verified:** 2026-07-13
363
+ **Tier 1 sources:** https://www.sanity.io/ · https://www.sanity.io/pricing · https://www.sanity.io/ui · https://www.sanity.io/blog/why-the-age-of-cms-is-over
364
+ **Tier 2 sources:** https://getdesign.md/sanity/design-md · https://styles.refero.design/?q=Sanity (direct built-in access unavailable; no indexed result observed)
365
+ **Conflicts unresolved:** none