oh-my-design-cli 1.6.7 → 1.7.1

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 (229) hide show
  1. package/README.ko.md +17 -36
  2. package/README.md +6 -6
  3. package/agents/AGENT.md +3 -3
  4. package/agents/omd-master.md +7 -7
  5. package/agents/omd-microcopy.md +1 -1
  6. package/agents/omd-ux-researcher.md +1 -1
  7. package/data/reference-fingerprints.json +1318 -10
  8. package/package.json +1 -1
  9. package/web/references/11st/DESIGN.md +400 -0
  10. package/web/references/17live/DESIGN.md +43 -0
  11. package/web/references/29cm/DESIGN.md +41 -0
  12. package/web/references/91app/DESIGN.md +31 -0
  13. package/web/references/ably/DESIGN.md +54 -0
  14. package/web/references/airbnb/DESIGN.md +58 -0
  15. package/web/references/airtable/DESIGN.md +39 -0
  16. package/web/references/alipay/DESIGN.md +50 -0
  17. package/web/references/amazingtalker/DESIGN.md +434 -0
  18. package/web/references/appier/DESIGN.md +45 -0
  19. package/web/references/apple/DESIGN.md +47 -0
  20. package/web/references/baemin/DESIGN.md +142 -43
  21. package/web/references/banksalad/DESIGN.md +67 -0
  22. package/web/references/bilibili/DESIGN.md +45 -0
  23. package/web/references/bithumb/DESIGN.md +38 -0
  24. package/web/references/bmw/DESIGN.md +37 -0
  25. package/web/references/brandi/DESIGN.md +414 -0
  26. package/web/references/bunjang/DESIGN.md +47 -0
  27. package/web/references/cakeresume/DESIGN.md +29 -0
  28. package/web/references/cal/DESIGN.md +52 -0
  29. package/web/references/catchtable/DESIGN.md +79 -19
  30. package/web/references/cathay/DESIGN.md +432 -0
  31. package/web/references/channeltalk/DESIGN.md +48 -0
  32. package/web/references/class101/DESIGN.md +51 -0
  33. package/web/references/classting/DESIGN.md +41 -0
  34. package/web/references/classum/DESIGN.md +43 -0
  35. package/web/references/claude/DESIGN.md +157 -70
  36. package/web/references/clay/DESIGN.md +56 -0
  37. package/web/references/clickhouse/DESIGN.md +50 -0
  38. package/web/references/cloudflare/DESIGN.md +637 -0
  39. package/web/references/cohere/DESIGN.md +48 -0
  40. package/web/references/coinbase/DESIGN.md +139 -5
  41. package/web/references/coinone/DESIGN.md +39 -0
  42. package/web/references/composio/DESIGN.md +46 -0
  43. package/web/references/cookpad/DESIGN.md +37 -0
  44. package/web/references/coupang/DESIGN.md +57 -2
  45. package/web/references/cursor/DESIGN.md +44 -0
  46. package/web/references/dabang/DESIGN.md +57 -19
  47. package/web/references/dcard/DESIGN.md +57 -0
  48. package/web/references/dell/DESIGN.md +636 -0
  49. package/web/references/devsisters/DESIGN.md +29 -0
  50. package/web/references/discord/DESIGN.md +604 -0
  51. package/web/references/dji/DESIGN.md +39 -0
  52. package/web/references/drnow/DESIGN.md +52 -0
  53. package/web/references/duolingo/DESIGN.md +563 -0
  54. package/web/references/elevenlabs/DESIGN.md +39 -0
  55. package/web/references/expo/DESIGN.md +39 -0
  56. package/web/references/fastcampus/DESIGN.md +50 -0
  57. package/web/references/ferrari/DESIGN.md +47 -0
  58. package/web/references/figma/DESIGN.md +44 -0
  59. package/web/references/finda/DESIGN.md +413 -0
  60. package/web/references/flex/DESIGN.md +28 -0
  61. package/web/references/flo/DESIGN.md +43 -0
  62. package/web/references/framer/DESIGN.md +38 -0
  63. package/web/references/freee/DESIGN.md +48 -0
  64. package/web/references/fugle/DESIGN.md +41 -1
  65. package/web/references/gangnamunni/DESIGN.md +57 -1
  66. package/web/references/genie/DESIGN.md +415 -0
  67. package/web/references/github/DESIGN.md +727 -0
  68. package/web/references/gmarket/DESIGN.md +51 -0
  69. package/web/references/gogolook/DESIGN.md +25 -1
  70. package/web/references/gogoro/DESIGN.md +38 -0
  71. package/web/references/grip/DESIGN.md +39 -0
  72. package/web/references/hahow/DESIGN.md +26 -0
  73. package/web/references/hashicorp/DESIGN.md +42 -0
  74. package/web/references/hogangnono/DESIGN.md +41 -0
  75. package/web/references/hp/DESIGN.md +563 -0
  76. package/web/references/hyperconnect/DESIGN.md +393 -0
  77. package/web/references/hyundaicard/DESIGN.md +24 -0
  78. package/web/references/ibm/DESIGN.md +44 -0
  79. package/web/references/ichef/DESIGN.md +44 -0
  80. package/web/references/ikala/DESIGN.md +400 -0
  81. package/web/references/inflearn/DESIGN.md +38 -0
  82. package/web/references/intercom/DESIGN.md +38 -0
  83. package/web/references/jandi/DESIGN.md +382 -0
  84. package/web/references/jkopay/DESIGN.md +35 -1
  85. package/web/references/jobkorea/DESIGN.md +39 -0
  86. package/web/references/jumpit/DESIGN.md +37 -0
  87. package/web/references/kakao/DESIGN.md +64 -0
  88. package/web/references/kakaobank/DESIGN.md +55 -1
  89. package/web/references/kakaopay/DESIGN.md +59 -0
  90. package/web/references/kakaot/DESIGN.md +53 -0
  91. package/web/references/karrot/DESIGN.md +49 -0
  92. package/web/references/kbank/DESIGN.md +39 -0
  93. package/web/references/kdan/DESIGN.md +34 -1
  94. package/web/references/kintone/DESIGN.md +586 -0
  95. package/web/references/kkbox/DESIGN.md +22 -0
  96. package/web/references/kkday/DESIGN.md +47 -0
  97. package/web/references/kmong/DESIGN.md +427 -0
  98. package/web/references/krafton/DESIGN.md +37 -0
  99. package/web/references/kraken/DESIGN.md +44 -0
  100. package/web/references/krds/DESIGN.md +63 -0
  101. package/web/references/kream/DESIGN.md +32 -0
  102. package/web/references/kurly/DESIGN.md +38 -1
  103. package/web/references/laftel/DESIGN.md +40 -0
  104. package/web/references/lamborghini/DESIGN.md +54 -0
  105. package/web/references/layerx/DESIGN.md +615 -0
  106. package/web/references/lezhin/DESIGN.md +47 -0
  107. package/web/references/line/DESIGN.md +36 -0
  108. package/web/references/linear.app/DESIGN.md +182 -88
  109. package/web/references/loom/DESIGN.md +396 -0
  110. package/web/references/lovable/DESIGN.md +38 -0
  111. package/web/references/lunit/DESIGN.md +47 -19
  112. package/web/references/mastercard/DESIGN.md +587 -0
  113. package/web/references/meituan/DESIGN.md +42 -0
  114. package/web/references/melon/DESIGN.md +26 -0
  115. package/web/references/mercari/DESIGN.md +41 -0
  116. package/web/references/mercury/DESIGN.md +589 -0
  117. package/web/references/meta/DESIGN.md +615 -0
  118. package/web/references/millie/DESIGN.md +51 -0
  119. package/web/references/minimax/DESIGN.md +53 -0
  120. package/web/references/mintlify/DESIGN.md +45 -0
  121. package/web/references/miro/DESIGN.md +47 -0
  122. package/web/references/mistral.ai/DESIGN.md +37 -0
  123. package/web/references/momoshop/DESIGN.md +43 -0
  124. package/web/references/money-forward/DESIGN.md +42 -0
  125. package/web/references/mongodb/DESIGN.md +44 -0
  126. package/web/references/muji/DESIGN.md +605 -0
  127. package/web/references/musinsa/DESIGN.md +48 -0
  128. package/web/references/mustit/DESIGN.md +47 -1
  129. package/web/references/myrealtrip/DESIGN.md +49 -0
  130. package/web/references/naver/DESIGN.md +50 -1
  131. package/web/references/naverwebtoon/DESIGN.md +48 -0
  132. package/web/references/netflix/DESIGN.md +572 -0
  133. package/web/references/nexon/DESIGN.md +389 -0
  134. package/web/references/nhncloud/DESIGN.md +33 -0
  135. package/web/references/nike/DESIGN.md +588 -0
  136. package/web/references/note/DESIGN.md +28 -0
  137. package/web/references/notion/DESIGN.md +48 -0
  138. package/web/references/nvidia/DESIGN.md +50 -0
  139. package/web/references/ohouse/DESIGN.md +56 -0
  140. package/web/references/oliveyoung/DESIGN.md +47 -1
  141. package/web/references/ollama/DESIGN.md +40 -0
  142. package/web/references/openai/DESIGN.md +641 -0
  143. package/web/references/opencode.ai/DESIGN.md +37 -0
  144. package/web/references/payco/DESIGN.md +40 -0
  145. package/web/references/paypay/DESIGN.md +656 -0
  146. package/web/references/pchome/DESIGN.md +439 -0
  147. package/web/references/perplexity/DESIGN.md +546 -0
  148. package/web/references/piccollage/DESIGN.md +43 -0
  149. package/web/references/pinkoi/DESIGN.md +55 -0
  150. package/web/references/pinterest/DESIGN.md +44 -0
  151. package/web/references/pixiv/DESIGN.md +613 -0
  152. package/web/references/pixnet/DESIGN.md +430 -0
  153. package/web/references/posthog/DESIGN.md +50 -0
  154. package/web/references/publy/DESIGN.md +52 -0
  155. package/web/references/qanda/DESIGN.md +49 -1
  156. package/web/references/ragic/DESIGN.md +444 -0
  157. package/web/references/ramp/DESIGN.md +634 -0
  158. package/web/references/rayark/DESIGN.md +22 -0
  159. package/web/references/raycast/DESIGN.md +45 -0
  160. package/web/references/remember/DESIGN.md +44 -0
  161. package/web/references/renault/DESIGN.md +42 -0
  162. package/web/references/replicate/DESIGN.md +39 -0
  163. package/web/references/resend/DESIGN.md +44 -0
  164. package/web/references/retool/DESIGN.md +645 -0
  165. package/web/references/revolut/DESIGN.md +46 -0
  166. package/web/references/richart/DESIGN.md +465 -0
  167. package/web/references/ridi/DESIGN.md +47 -0
  168. package/web/references/riiid/DESIGN.md +32 -0
  169. package/web/references/robinhood/DESIGN.md +604 -0
  170. package/web/references/runwayml/DESIGN.md +45 -0
  171. package/web/references/sanity/DESIGN.md +50 -0
  172. package/web/references/sansan/DESIGN.md +631 -0
  173. package/web/references/sendbird/DESIGN.md +46 -0
  174. package/web/references/sentry/DESIGN.md +48 -0
  175. package/web/references/shinhancard/DESIGN.md +421 -0
  176. package/web/references/shopline/DESIGN.md +431 -0
  177. package/web/references/slack/DESIGN.md +635 -0
  178. package/web/references/smarthr/DESIGN.md +48 -0
  179. package/web/references/smartnews/DESIGN.md +29 -0
  180. package/web/references/socar/DESIGN.md +35 -0
  181. package/web/references/soomgo/DESIGN.md +326 -0
  182. package/web/references/spacex/DESIGN.md +27 -0
  183. package/web/references/spoon/DESIGN.md +46 -0
  184. package/web/references/spotify/DESIGN.md +49 -0
  185. package/web/references/starbucks/DESIGN.md +597 -0
  186. package/web/references/stripe/DESIGN.md +46 -0
  187. package/web/references/studio/DESIGN.md +602 -0
  188. package/web/references/supabase/DESIGN.md +41 -0
  189. package/web/references/superhuman/DESIGN.md +39 -0
  190. package/web/references/surveycake/DESIGN.md +442 -0
  191. package/web/references/tada/DESIGN.md +51 -0
  192. package/web/references/tesla/DESIGN.md +36 -0
  193. package/web/references/theverge/DESIGN.md +500 -0
  194. package/web/references/together.ai/DESIGN.md +33 -0
  195. package/web/references/toss/DESIGN.md +43 -0
  196. package/web/references/toss-securities/DESIGN.md +54 -19
  197. package/web/references/tossbank/DESIGN.md +57 -0
  198. package/web/references/trenbe/DESIGN.md +41 -0
  199. package/web/references/triple/DESIGN.md +47 -0
  200. package/web/references/tumblbug/DESIGN.md +48 -0
  201. package/web/references/tving/DESIGN.md +40 -0
  202. package/web/references/uber/DESIGN.md +36 -0
  203. package/web/references/ubie/DESIGN.md +615 -0
  204. package/web/references/uniqlo/DESIGN.md +575 -0
  205. package/web/references/upbit/DESIGN.md +42 -0
  206. package/web/references/upstage/DESIGN.md +38 -0
  207. package/web/references/velog/DESIGN.md +28 -0
  208. package/web/references/vercel/DESIGN.md +44 -0
  209. package/web/references/voicetube/DESIGN.md +39 -0
  210. package/web/references/voltagent/DESIGN.md +44 -0
  211. package/web/references/wadiz/DESIGN.md +71 -19
  212. package/web/references/wanted/DESIGN.md +46 -0
  213. package/web/references/warp/DESIGN.md +37 -0
  214. package/web/references/watcha/DESIGN.md +40 -0
  215. package/web/references/wavve/DESIGN.md +43 -1
  216. package/web/references/wconcept/DESIGN.md +45 -0
  217. package/web/references/webflow/DESIGN.md +49 -0
  218. package/web/references/wired/DESIGN.md +572 -0
  219. package/web/references/wise/DESIGN.md +41 -0
  220. package/web/references/x.ai/DESIGN.md +31 -0
  221. package/web/references/xiaohongshu/DESIGN.md +39 -0
  222. package/web/references/yanolja/DESIGN.md +45 -0
  223. package/web/references/yeogiotte/DESIGN.md +42 -1
  224. package/web/references/yogiyo/DESIGN.md +50 -0
  225. package/web/references/yourator/DESIGN.md +453 -0
  226. package/web/references/zapier/DESIGN.md +41 -0
  227. package/web/references/zigbang/DESIGN.md +33 -0
  228. package/web/references/zigzag/DESIGN.md +62 -0
  229. package/web/references/zozotown/DESIGN.md +578 -0
@@ -0,0 +1,572 @@
1
+ ---
2
+ id: netflix
3
+ name: Netflix
4
+ country: US
5
+ category: consumer-tech
6
+ homepage: "https://www.netflix.com"
7
+ primary_color: "#E50914"
8
+ logo:
9
+ type: simpleicons
10
+ slug: "netflix"
11
+ verified: "2026-06-06"
12
+ added: "2026-06-06"
13
+ omd: "0.1"
14
+ tokens:
15
+ source: prose-derived
16
+ extracted: "2026-06-09"
17
+ colors:
18
+ primary: "#E50914"
19
+ primary-hover: "#B20710"
20
+ brand: "#E50914"
21
+ canvas: "#141414"
22
+ foreground: "#FFFFFF"
23
+ muted: "#B3B3B3"
24
+ on-primary: "#FFFFFF"
25
+ surface: "#181818"
26
+ hairline: "#404040"
27
+ body: "#B3B3B3"
28
+ error: "#E87C03"
29
+ success: "#2A9D3C"
30
+ accent-match: "#46D369"
31
+ typography:
32
+ family: { sans: "Netflix Sans", mono: "Courier New" }
33
+ billboard-title: { size: 56, weight: 700, lineHeight: 1.1, tracking: -0.01, use: "Hero artwork title" }
34
+ display: { size: 40, weight: 700, lineHeight: 1.15, tracking: -0.01, use: "Marketing hero, sign-up headline" }
35
+ heading-lg: { size: 32, weight: 700, lineHeight: 1.2, use: "Modal title, detail-page show name" }
36
+ heading: { size: 24, weight: 700, lineHeight: 1.25, use: "Section / category headers" }
37
+ row-title: { size: 20, weight: 700, lineHeight: 1.3, use: "Row headers like Trending Now" }
38
+ subtitle: { size: 18, weight: 500, lineHeight: 1.4, use: "Card title in expanded preview" }
39
+ body-lg: { size: 16, weight: 400, lineHeight: 1.5, use: "Synopsis, descriptions" }
40
+ body: { size: 14, weight: 400, lineHeight: 1.5, use: "Standard metadata, list rows" }
41
+ caption: { size: 13, weight: 400, lineHeight: 1.4, use: "Match %, maturity rating, runtime" }
42
+ micro: { size: 12, weight: 400, lineHeight: 1.4, tracking: 0.02, use: "Legal, fine print, footer links" }
43
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48, section: 60 }
44
+ rounded: { sm: 2, md: 4, lg: 6, full: 9999 }
45
+ shadow:
46
+ hover: "0 12px 24px rgba(0,0,0,0.8)"
47
+ floating: "0 6px 16px rgba(0,0,0,0.7)"
48
+ modal: "0 8px 32px rgba(0,0,0,0.9)"
49
+ components_harvested: true
50
+ components:
51
+ button-primary: { type: button, bg: "#FFFFFF", fg: "#000000", radius: "4px", padding: "8px 24px", font: "16px / 700", states: "hover rgba(255,255,255,0.75)", use: "Play action on billboard / detail / continue-watching" }
52
+ button-cta: { type: button, bg: "#E50914", fg: "#FFFFFF", radius: "4px", padding: "16px 28px", font: "18px / 700", states: "hover #B20710", use: "Marketing acquisition CTA (Get Started, Finish Sign-Up)" }
53
+ button-secondary: { type: button, bg: "rgba(109,109,110,0.7)", fg: "#FFFFFF", radius: "4px", padding: "8px 24px", font: "16px / 700", states: "hover rgba(109,109,110,0.4)", use: "More Info beside Play" }
54
+ button-circle: { type: button, bg: "rgba(42,42,42,0.6)", fg: "#FFFFFF", border: "2px solid rgba(255,255,255,0.5)", radius: "9999px", height: "40px", states: "hover border #FFFFFF", use: "Add-to-list, Like, expand on hover cards" }
55
+ input-auth: { type: input, bg: "#161616", fg: "#FFFFFF", border: "1px solid #808080", radius: "4px", padding: "16px", font: "16px / 400", focus: "border #FFFFFF", states: "error border-bottom 2px #E87C03", use: "Email/password on sign-in" }
56
+ input-search: { type: input, bg: "rgba(0,0,0,0.75)", fg: "#FFFFFF", border: "1px solid #FFFFFF", radius: "4px", padding: "7px 12px", font: "14px / 400", use: "Top-nav search, expands from icon" }
57
+ card-tile: { type: card, bg: "#181818", radius: "4px", shadow: "none", use: "Resting poster tile in a scrolling row" }
58
+ card-hover: { type: card, bg: "#181818", radius: "6px", shadow: "0 12px 24px rgba(0,0,0,0.8)", states: "transform scale(1.5)", use: "Expanded preview card lifting above row" }
59
+ badge-new: { type: badge, bg: "transparent", fg: "#E50914", font: "12px / 700", use: "NEW EPISODE / RECENTLY ADDED overlay, uppercase" }
60
+ badge-top10: { type: badge, bg: "#E50914", fg: "#FFFFFF", font: "9px / 700", use: "Top 10 trending-rank ribbon" }
61
+ badge-maturity: { type: badge, bg: "rgba(51,51,51,0.6)", fg: "#FFFFFF", border: "1px solid #666666", radius: "2px", padding: "2px 6px", font: "13px / 400", use: "Maturity rating on detail pages / previews" }
62
+ tab-nav: { type: tab, fg: "#E5E5E5", font: "14px / 400", active: "color #FFFFFF weight 700", states: "hover #B3B3B3", use: "Top nav links" }
63
+ toast-banner: { type: toast, bg: "#E87C03", fg: "#FFFFFF", padding: "12px 16px", font: "14px / 500", use: "Account / payment full-width top banner" }
64
+ dialog-modal: { type: dialog, bg: "#181818", fg: "#FFFFFF", radius: "6px", padding: "0 / 24px body", shadow: "0 8px 32px rgba(0,0,0,0.9)", use: "Title-detail modal, account-action confirm" }
65
+ toggle-default: { type: toggle, bg: "#737373", radius: "9999px", states: "on track #E50914, thumb #FFFFFF", use: "Autoplay previews, subtitle, profile-lock switches" }
66
+ ---
67
+
68
+ # Design System Inspiration of Netflix
69
+
70
+ ## 1. Visual Theme & Atmosphere
71
+
72
+ Netflix is the streaming interface that taught the world what "lean-back" entertainment software should feel like — a dark, cinematic theater where the content is the only thing that glows. The product opens on near-black (`#141414`) and stays there. There is no white-canvas mode, no light theme in the consumer app; the darkness is not a setting, it is the brand. Against that black, full-bleed artwork — show posters, hero billboards, character key-art — supplies all the color the screen needs. The UI itself recedes to white text, grey metadata, and one searing red accent: **Netflix Red `#E50914`**, reserved almost exclusively for the logo, the primary CTA, and progress fills.
73
+
74
+ The custom **Netflix Sans** typeface (designed with foundry Dalton Maag, shipped 2018, replacing Gotham) is the quiet workhorse. It is a geometric, confident, faintly condensed grotesque tuned for screen rendering at TV viewing distance and mobile arm's-length alike. It carries the same optical voice from the wordmark down to the 12px caption, which is the point: one family, top to bottom, so the chrome feels like a single continuous surface and never competes with the artwork.
75
+
76
+ What defines Netflix visually is the **theater principle**: dim the room, light the screen. Chrome is intentionally low-contrast (grey-on-black) so that when artwork appears it reads as luminous. Rows of posters scroll horizontally; the page is a grid of doors into content, each door a 16:9 or 2:3 image with a hover-expand that pops a preview. The interface is less a set of widgets and more a dark frame around moving pictures.
77
+
78
+ **Key Characteristics:**
79
+ - Netflix Red (`#E50914`) used sparingly — logo, primary CTA, progress bars, never as a background wash
80
+ - Near-black canvas (`#141414`) as the permanent, theme-less ground
81
+ - Netflix Sans (Dalton Maag, 2018) — one geometric family across the entire UI
82
+ - Full-bleed artwork supplies color; chrome stays grey-on-black to let posters glow
83
+ - Horizontal poster rows ("sliders") as the primary navigation metaphor
84
+ - Hover-to-expand cards that scale up and reveal preview controls
85
+ - Top nav fades from transparent over the hero billboard to solid black on scroll
86
+
87
+ ## 2. Color Palette & Roles
88
+
89
+ ### Primary
90
+ - **Netflix Red** (`#E50914`): The brand red (Pantone 1795 C, RGB 229·9·20). Primary CTA fill, logo, progress-bar fill, active selection underline. Energetic, digital, legible on black and white. Used as accent, never as a large fill area.
91
+ - **Dark Red** (`#B20710`): Hover/pressed state for the red CTA; secondary brand red in marketing gradients.
92
+ - **Pure Black** (`#000000`): Player background, modal scrims, the deepest layer. Body of the video surface.
93
+ - **Near Black** (`#141414`): The app canvas — the default page and row background. Slightly lifted from pure black so layered surfaces are distinguishable.
94
+ - **Pure White** (`#FFFFFF`): Primary text, active icons, logo on dark contexts.
95
+
96
+ ### Brand (Logo / Marketing)
97
+ - **Netflix Red** (`#E50914`): The wordmark and "N" ribbon mark. The single non-negotiable brand asset color.
98
+ - **Black** (`#000000`) / **White** (`#FFFFFF`): The only approved logo backgrounds. The mark is never placed on a colored fill.
99
+
100
+ ### Semantic
101
+ - **Error Red** (`#E87C03`→`#E50914` family): Form errors use a warm red `#E50914`; auth/payment errors render in `#E87C03` amber-red to distinguish from the brand red CTA on the same screen.
102
+ - **Success Green** (`#2A9D3C`): "Downloaded", "Added to list" confirmations. Rare — Netflix avoids semantic green in the browse UI.
103
+ - **Warning Amber** (`#E87C03`): Billing reminders, payment-failed banners, "Your plan changes soon".
104
+ - **New Badge Red** (`#E50914`): "New Episode", "Recently Added" ribbons reuse the brand red.
105
+
106
+ ### Neutral Scale (dark-first)
107
+ - **Grey 900** (`#141414`): App canvas, row background.
108
+ - **Grey 850** (`#181818`): Card resting fill, expanded preview-card body.
109
+ - **Grey 800** (`#2F2F2F`): Hover row background, secondary button fill.
110
+ - **Grey 700** (`#404040`): Borders on dark surfaces, divider lines, circle-icon button outline.
111
+ - **Grey 600** (`#6D6D6E`): Disabled text, muted controls, secondary button border.
112
+ - **Grey 500** (`#808080`): Caption/metadata text, "secondary" CTA label, inactive nav links.
113
+ - **Grey 400** (`#B3B3B3`): Body metadata, sub-headings, the canonical "Netflix grey" for descriptions.
114
+ - **Grey 300** (`#E5E5E5`): Emphasized secondary text, list-item labels.
115
+ - **White** (`#FFFFFF`): Primary headings, active nav, key labels.
116
+
117
+ ### Surface & Borders
118
+ - **Border Default**: `#404040` (grey700). Inputs, dividers, icon-button rings on dark.
119
+ - **Border Subtle**: `#333333`. Hairline separators inside dark cards.
120
+ - **Overlay Scrim**: `rgba(0,0,0,0.7)` to `rgba(0,0,0,0.9)`. Modal and player-control scrims.
121
+ - **Hero Gradient**: `linear-gradient(180deg, rgba(20,20,20,0) 0%, rgba(20,20,20,1) 100%)` — the bottom-of-billboard fade that blends artwork into the canvas. Also a left-to-right variant `rgba(0,0,0,0.6)→transparent` for text legibility over key-art.
122
+
123
+ ## 3. Typography Rules
124
+
125
+ ### Font Family
126
+ - **Primary**: `"Netflix Sans", "Helvetica Neue", Helvetica, Arial, sans-serif`
127
+ - **Legacy fallback**: Pre-2018 surfaces used Gotham / `"Roboto"`; the modern stack standardizes on Netflix Sans.
128
+ - **Monospace**: `"Courier New", monospace` (used only in dev/diagnostic overlays, not consumer UI).
129
+
130
+ ### Hierarchy
131
+
132
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
133
+ |------|------|------|--------|-------------|----------------|-------|
134
+ | Billboard Title | Netflix Sans | 56px | 700 | 1.1 | -0.01em | Hero artwork title (often replaced by logo art) |
135
+ | Display | Netflix Sans | 40px | 700 | 1.15 | -0.01em | Marketing hero, sign-up headline |
136
+ | Heading Large | Netflix Sans | 32px | 700 | 1.2 | normal | Modal title, detail-page show name |
137
+ | Heading | Netflix Sans | 24px | 700 | 1.25 | normal | Section / category headers |
138
+ | Row Title | Netflix Sans | 20px | 700 | 1.3 | normal | "Trending Now", "Continue Watching" |
139
+ | Subtitle | Netflix Sans | 18px | 500 | 1.4 | normal | Card title in expanded preview |
140
+ | Body Large | Netflix Sans | 16px | 400 | 1.5 | normal | Synopsis, descriptions |
141
+ | Body | Netflix Sans | 14px | 400 | 1.5 | normal | Standard metadata, list rows |
142
+ | Caption | Netflix Sans | 13px | 400 | 1.4 | normal | Match %, maturity rating, runtime |
143
+ | Micro | Netflix Sans | 12px | 400 | 1.4 | 0.02em | Legal, fine print, footer links |
144
+
145
+ ### Principles
146
+ - **One family, full range**: Netflix Sans ships Light through Black; the UI primarily uses 400 (body/metadata), 500 (card labels), and 700 (titles/CTAs). Bold titles, regular everything else.
147
+ - **Grey is the default body color**: descriptive text is `#B3B3B3`, not white. White is reserved for the single most important label per surface, preserving contrast hierarchy on black.
148
+ - **Tight display, loose body**: large titles tighten letter-spacing (`-0.01em`) for cinematic density; body text stays at normal tracking with generous 1.5 line-height for arm's-length readability.
149
+ - **No italics in chrome**: emphasis comes from weight and color, not slant. Italics appear only inside subtitle/caption rendering of the video itself.
150
+
151
+ ## 4. Component Stylings
152
+
153
+ ### Buttons
154
+
155
+ Netflix buttons are flat, rounded-rectangle, high-contrast. The primary action on the player and browse surfaces is white (a "play" button), while red is reserved for marketing CTAs and the sign-up flow. There is no shadow on dark surfaces — separation comes from fill contrast.
156
+
157
+ **Primary / White (Play)**
158
+ - Background: `#FFFFFF`
159
+ - Text: `#000000`
160
+ - Border: none
161
+ - Radius: 4px
162
+ - Padding: 8px 24px
163
+ - Font: 16px / 700 / Netflix Sans
164
+ - Icon: leading play glyph, 24px, `#000000`
165
+ - Hover: background `rgba(255,255,255,0.75)`
166
+ - Use: "재생 / Play" on billboard, detail page, continue-watching card — the dominant action
167
+
168
+ **Primary / Red (Marketing CTA)**
169
+ - Background: `#E50914`
170
+ - Text: `#FFFFFF`
171
+ - Border: none
172
+ - Radius: 4px
173
+ - Padding: 16px 28px
174
+ - Font: 18px / 700 / Netflix Sans (24px on marketing hero)
175
+ - Hover: background `#B20710`
176
+ - Use: "Get Started", "Finish Sign-Up", "Restart Membership" — acquisition surfaces only
177
+
178
+ **Secondary / Grey (More Info)**
179
+ - Background: `rgba(109,109,110,0.7)` (grey600 @70%)
180
+ - Text: `#FFFFFF`
181
+ - Border: none
182
+ - Radius: 4px
183
+ - Padding: 8px 24px
184
+ - Font: 16px / 700 / Netflix Sans
185
+ - Icon: leading "ⓘ" info glyph
186
+ - Hover: background `rgba(109,109,110,0.4)`
187
+ - Use: "상세 정보 / More Info" paired beside the white Play button
188
+
189
+ **Circle Icon Button**
190
+ - Background: `rgba(42,42,42,0.6)`
191
+ - Border: 2px solid `rgba(255,255,255,0.5)`
192
+ - Radius: 9999px
193
+ - Size: 40px diameter (44px on detail page)
194
+ - Icon: 20px, `#FFFFFF`
195
+ - Hover: border `#FFFFFF`, icon `#FFFFFF`
196
+ - Use: Add-to-list (+), Like (👍), expand (⌄) on hover cards
197
+
198
+ ### Inputs
199
+
200
+ Sign-in and search inputs sit on dark fills with subtle borders; the email field on the marketing page is a notable high-contrast exception.
201
+
202
+ **Auth Field (dark)**
203
+ - Background: `#161616` (with `rgba(22,22,22,0.7)` over artwork)
204
+ - Text: `#FFFFFF`
205
+ - Border: 1px solid `#808080`
206
+ - Radius: 4px
207
+ - Padding: 16px
208
+ - Font: 16px / 400 / Netflix Sans
209
+ - Placeholder / floating label: `#8C8C8C`
210
+ - Focus: border `#FFFFFF`, label floats up to 11px
211
+ - Error: border-bottom 2px `#E87C03`, message `#E87C03` 13px below
212
+ - Use: Email/password on the sign-in screen
213
+
214
+ **Search Field**
215
+ - Background: `rgba(0,0,0,0.75)`
216
+ - Text: `#FFFFFF`
217
+ - Border: 1px solid `#FFFFFF`
218
+ - Radius: 4px
219
+ - Padding: 7px 12px
220
+ - Font: 14px / 400 / Netflix Sans
221
+ - Icon: leading magnifier 18px `#FFFFFF`
222
+ - Use: Top-nav search, expands from an icon
223
+
224
+ ### Cards (Title Cards)
225
+
226
+ The title card is THE Netflix component — a poster tile in a horizontal row that expands on hover.
227
+
228
+ **Resting (Row Tile)**
229
+ - Background: artwork image, fallback `#181818`
230
+ - Border: none
231
+ - Radius: 4px
232
+ - Aspect: 16:9 (boxshot rows) or 2:3 (portrait rows)
233
+ - Shadow: none at rest
234
+ - Use: Default state in a scrolling row
235
+
236
+ **Hover (Expanded Preview)**
237
+ - Background: `#181818` body below 16:9 artwork
238
+ - Border: none
239
+ - Radius: 6px (top corners follow artwork, bottom info-panel squared-rounded)
240
+ - Transform: `scale(1.5)` with `transform-origin` toward row center
241
+ - Shadow: `0 12px 24px rgba(0,0,0,0.8)`
242
+ - Contains: muted autoplay preview, action button row (play, +, like, expand), match % in green `#46D369`, maturity badge, duration, genre tags
243
+ - Use: Hover/focus on a row tile — lifts above neighbors with z-index and shadow
244
+
245
+ **Match Score**
246
+ - Text: `#46D369` (Netflix green)
247
+ - Font: 14px / 700 / Netflix Sans
248
+ - Use: "98% Match" inside expanded cards
249
+
250
+ ### Badges
251
+
252
+ **New / Recently Added**
253
+ - Background: transparent
254
+ - Text: `#E50914`
255
+ - Border: none
256
+ - Font: 12px / 700 / Netflix Sans, uppercase, letter-spacing 0.05em
257
+ - Use: "NEW EPISODE", "RECENTLY ADDED" overlaid bottom-left on artwork
258
+
259
+ **Top 10 Ribbon**
260
+ - Background: `#E50914` (red triangle ribbon, top-right of tile)
261
+ - Text: `#FFFFFF`
262
+ - Font: 9px / 700 uppercase "TOP 10"
263
+ - Use: Trending-rank indicator on qualifying tiles
264
+
265
+ **Maturity Rating**
266
+ - Background: `rgba(51,51,51,0.6)`
267
+ - Text: `#FFFFFF`
268
+ - Border: 1px solid `#666666` (left accent line for some regions)
269
+ - Radius: 2px
270
+ - Padding: 2px 6px
271
+ - Font: 13px / 400 / Netflix Sans
272
+ - Use: "18", "15+", "TV-MA" on detail pages and previews
273
+
274
+ ### Tabs / Nav
275
+
276
+ **Top Nav Link**
277
+ - Text: `#E5E5E5` (active `#FFFFFF` 700)
278
+ - Font: 14px / 400 / Netflix Sans
279
+ - Hover: `#B3B3B3`
280
+ - Background: transparent → `#141414` solid on scroll
281
+ - Use: Home / TV Shows / Movies / New & Popular / My List
282
+
283
+ **Profile Gate Tile**
284
+ - Background: artwork avatar, `#333333` fallback
285
+ - Radius: 4px
286
+ - Size: 84px–200px square depending on viewport
287
+ - Hover: 2px solid `#FFFFFF` outline, label brightens white
288
+ - Use: "Who's watching?" profile selection grid
289
+
290
+ ### Progress Bar
291
+
292
+ **Continue Watching**
293
+ - Track: `#404040`
294
+ - Fill: `#E50914`
295
+ - Height: 3px
296
+ - Radius: 0
297
+ - Use: Resume position under continue-watching tiles and on the player scrubber
298
+
299
+ ### Toasts / Banners
300
+
301
+ **Account Banner**
302
+ - Background: `#E87C03` (warning) or `#E50914` (urgent)
303
+ - Text: `#FFFFFF`
304
+ - Padding: 12px 16px
305
+ - Font: 14px / 500 / Netflix Sans
306
+ - Use: "Update your payment method", full-width top banner
307
+
308
+ ### Dialogs
309
+
310
+ **Modal (Detail / Confirm)**
311
+ - Background: `#181818`
312
+ - Text: `#FFFFFF`
313
+ - Border: none
314
+ - Radius: 6px
315
+ - Padding: 0 (artwork-bleed top) then 24px body
316
+ - Shadow: `0 8px 32px rgba(0,0,0,0.9)`
317
+ - Scrim: `rgba(0,0,0,0.7)`
318
+ - Use: Title-detail modal opened from a tile, account-action confirmations
319
+
320
+ ### Toggles
321
+
322
+ **Default**
323
+ - Track: `#E50914` (on) / `#737373` (off)
324
+ - Radius: 9999px
325
+ - Thumb: `#FFFFFF` circle
326
+ - Use: Autoplay previews, subtitle settings, profile-lock switches
327
+
328
+ ---
329
+
330
+
331
+ **Tier 1 sources:** https://www.netflix.com (live production site, verified via live DOM getComputedStyle).
332
+
333
+ ## 5. Layout Principles
334
+
335
+ ### Spacing System
336
+ - Base unit: 4px
337
+ - Common values: 4px, 8px, 12px, 16px, 24px, 32px, 48px, 60px
338
+ - Row gutter (between rows): ~3vw vertical, scaling with viewport
339
+ - Tile gap (within a row): 4px–8px, kept tight so more tiles peek at row edges
340
+
341
+ ### Grid & Container
342
+ - Page padding: 4% of viewport width left/right (`padding: 0 4vw`)
343
+ - Rows are horizontally scrollable carousels, not a fixed grid — tile count per row is responsive (2 on mobile → 6+ on wide desktop)
344
+ - Hero billboard: full-bleed, ~56vh tall, artwork right-aligned with left-side text gradient
345
+ - Detail modal: max-width ~850px, centered, artwork bleeds to modal edges
346
+
347
+ ### Whitespace Philosophy
348
+ - **Let artwork breathe, keep chrome tight**: generous vertical gaps between rows so each category reads as its own shelf; tight gaps within a row so the carousel feels abundant.
349
+ - **Edge-peek**: tiles are deliberately clipped at row edges to signal "scroll for more" — the row never ends cleanly at the viewport.
350
+ - **Dark negative space is the frame**: black around artwork is not empty, it is the cinema. Never fill it with decoration.
351
+
352
+ ### Border Radius Scale
353
+ - Sharp (2px): maturity badges, inline chips
354
+ - Standard (4px): buttons, inputs, resting tiles, profile gates
355
+ - Comfortable (6px): expanded hover cards, modals
356
+ - Pill (9999px): toggles, circle icon buttons
357
+
358
+ ## 6. Depth & Elevation
359
+
360
+ | Level | Treatment | Use |
361
+ |-------|-----------|-----|
362
+ | Flat (Level 0) | No shadow | Resting row tiles, page background |
363
+ | Hover (Level 1) | `0 12px 24px rgba(0,0,0,0.8)` + scale(1.5) | Expanded preview card lifting above row |
364
+ | Floating (Level 2) | `0 6px 16px rgba(0,0,0,0.7)` | Dropdown menus, profile menu, search panel |
365
+ | Modal (Level 3) | `0 8px 32px rgba(0,0,0,0.9)` | Detail modal, confirmation dialog |
366
+ | Scrim | `rgba(0,0,0,0.7)` full overlay | Behind any modal or the player chrome |
367
+
368
+ **Shadow Philosophy**: On a black canvas, drop-shadows are nearly invisible — so Netflix communicates elevation primarily through **scale and z-index**, not shadow. The hover card grows to 1.5× and slides above its neighbors; the shadow underneath is heavy and pure-black only to anchor that lift against the dark. Elsewhere, separation comes from fill-lightness steps (`#141414` → `#181818` → `#2F2F2F`), not from luminous edges. There are no colored shadows and no soft ambient glows — the artwork is the only light source.
369
+
370
+ ### Blur Effects
371
+ - Player controls and the top nav use a subtle backdrop scrim (gradient, not gaussian blur) to keep text legible over moving artwork.
372
+ - Profile and account dropdowns drop a hard `rgba(0,0,0,0.9)` panel rather than a frosted blur.
373
+
374
+ ## 7. Do's and Don'ts
375
+
376
+ ### Do
377
+ - Keep the canvas dark — `#141414` page, `#000000` player. Never a light theme in the consumer app.
378
+ - Reserve Netflix Red (`#E50914`) for the logo, the primary marketing CTA, progress fills, and "New" markers.
379
+ - Use white (`#FFFFFF`) as the primary in-app action color (the Play button); red is for acquisition.
380
+ - Default body/metadata text to grey `#B3B3B3`; reserve white for the single most important label.
381
+ - Let full-bleed artwork supply the color — keep surrounding chrome neutral.
382
+ - Use 700 weight for titles and CTAs, 400 for everything else.
383
+ - Communicate elevation with scale + z-index on the dark canvas, not soft shadows.
384
+ - Clip tiles at row edges to invite horizontal scroll.
385
+
386
+ ### Don't
387
+ - Don't use red as a large background fill — it is an accent, not a surface.
388
+ - Don't introduce a light/white background in browse, player, or detail surfaces.
389
+ - Don't put the logo or red CTA on a colored background — only black or white.
390
+ - Don't make all text white; grey hierarchy is what makes white legible.
391
+ - Don't add decorative borders or glows around artwork — the black frame is the design.
392
+ - Don't use heavy radii (>6px) on cards — Netflix tiles are nearly square-cornered.
393
+ - Don't crowd rows vertically — each category needs breathing room above and below.
394
+
395
+ ## 8. Responsive Behavior
396
+
397
+ ### Breakpoints
398
+ | Name | Width | Key Changes |
399
+ |------|-------|-------------|
400
+ | Mobile | <500px | 2–3 tiles/row, hero ~40vh, nav collapses to hamburger + N logo |
401
+ | Tablet | 500–950px | 3–4 tiles/row, hover previews disabled (tap to open detail) |
402
+ | Desktop | 950–1400px | 5–6 tiles/row, full hover-expand previews enabled |
403
+ | Wide / TV | >1400px | 6+ tiles/row, larger billboard, 4% edge padding holds |
404
+
405
+ ### Touch Targets
406
+ - Buttons: 44px min height on touch; circle icon buttons 44px diameter
407
+ - Tiles: full-tile tappable, opens detail modal directly (no hover-expand on touch)
408
+ - Nav: 48px tap rows in the mobile slide-out menu
409
+
410
+ ### Collapsing Strategy
411
+ - Hover-expand previews are desktop-only; touch devices open the detail modal on tap.
412
+ - Top nav links collapse into a dropdown (mobile) anchored by the red "N" mark.
413
+ - Billboard text block stays left-aligned and shrinks; on mobile the synopsis is hidden, leaving title art + Play/Info buttons.
414
+ - Rows remain horizontally scrollable at every breakpoint — the core metaphor never breaks down.
415
+
416
+ ### Image Behavior
417
+ - Artwork serves responsive crops: 16:9 boxshots for desktop rows, 2:3 portraits for mobile and "Top 10" rows.
418
+ - Hero billboard art is right-anchored with a left + bottom gradient so title text stays legible across crops.
419
+ - All artwork lazy-loads with a `#181818` placeholder block at exact tile dimensions.
420
+
421
+ ## 9. Agent Prompt Guide
422
+
423
+ ### Quick Color Reference
424
+ - Brand / Accent: Netflix Red (`#E50914`)
425
+ - Accent Hover: Dark Red (`#B20710`)
426
+ - App canvas: Near Black (`#141414`)
427
+ - Player / deepest: Pure Black (`#000000`)
428
+ - Card fill: Grey 850 (`#181818`)
429
+ - Hover row fill: Grey 800 (`#2F2F2F`)
430
+ - Primary text: White (`#FFFFFF`)
431
+ - Body / metadata text: Grey 400 (`#B3B3B3`)
432
+ - Caption text: Grey 500 (`#808080`)
433
+ - Border: Grey 700 (`#404040`)
434
+ - Match score: Green (`#46D369`)
435
+ - Warning: Amber (`#E87C03`)
436
+
437
+ ### Example Component Prompts
438
+ - "Create a Netflix title card: 16:9 artwork, 4px radius, `#181818` fallback. On hover, scale to 1.5×, lift z-index, drop `0 12px 24px rgba(0,0,0,0.8)`, reveal an `#181818` info panel with a white circular play button, + and like circle buttons (40px, 2px `rgba(255,255,255,0.5)` border), '98% Match' in `#46D369` 14px/700, and a maturity badge."
439
+ - "Build a billboard hero: full-bleed artwork, ~56vh, bottom gradient `rgba(20,20,20,0)→rgba(20,20,20,1)`. Left-aligned title art, then a white Play button (`#FFFFFF` bg, `#000` text, 16px/700, 4px radius, 8px 24px padding) and a grey More Info button (`rgba(109,109,110,0.7)` bg, white text)."
440
+ - "Design the top nav: transparent over the hero, fading to solid `#141414` on scroll. Red 'N' mark left, links in `#E5E5E5` 14px/400 (active white 700), search icon + profile avatar right."
441
+ - "Create a Get-Started CTA: `#E50914` bg, white 18px/700 text, 16px 28px padding, 4px radius; hover `#B20710`."
442
+ - "Build a continue-watching tile: 16:9 artwork with a 3px progress bar at the bottom — track `#404040`, fill `#E50914`."
443
+
444
+ ### Iteration Guide
445
+ 1. Canvas is always dark (`#141414`); never introduce a light theme.
446
+ 2. Red (`#E50914`) is an accent — logo, marketing CTA, progress, "New". White is the in-app action color.
447
+ 3. Body text is grey `#B3B3B3`; reserve white for the single key label per surface.
448
+ 4. Titles/CTAs are Netflix Sans 700; everything else is 400.
449
+ 5. Radii stay tight: 4px buttons/tiles, 6px cards/modals, pill for toggles.
450
+ 6. Elevation = scale + z-index + heavy black shadow, not soft glows.
451
+ 7. Let artwork carry the color; keep chrome neutral grey-on-black.
452
+
453
+ ---
454
+
455
+ ## 10. Voice & Tone
456
+
457
+ Netflix speaks like a confident, friendly host who already knows what you want to watch — warm, direct, lightly playful, never corporate. Copy is concise and action-forward. English is the source voice, but Netflix localizes into 30+ languages with culturally-tuned (not literal) translation. Sentences in body copy end in periods; buttons are short imperative verbs with no terminal punctuation. Emoji appear in marketing and social but never in the core browse/player chrome.
458
+
459
+ | Context | Tone |
460
+ |---|---|
461
+ | CTAs | Imperative, short ("Play", "Get Started", "Finish Sign-Up", "More Info") |
462
+ | Onboarding | Reassuring, low-commitment ("Cancel anytime.", "We'll send a reminder 3 days before your trial ends.") |
463
+ | Empty states | Encouraging, redirective ("Add titles to your list to watch them later.") |
464
+ | Error messages | Plain, blameless, actionable ("That password is incorrect. Try again or reset it.") |
465
+ | Billing | Calm and transparent ("Your plan changes on June 12. No action needed.") |
466
+ | Maturity / parental | Neutral, factual — no judgment in rating language |
467
+ | Marketing hero | Bold, benefit-led ("Unlimited movies, TV shows and more.") |
468
+
469
+ **Forbidden moves.** No jargon ("leverage", "utilize"), no fake urgency countdown timers in core flows, no guilt copy on cancel ("Are you sure you want to leave us?"), no exclamation-stuffed hype in the player UI. The cancel flow is deliberately frictionless — regulatory and brand-trust driven.
470
+
471
+ ## 11. Brand Narrative
472
+
473
+ Netflix began in 1997 as a **DVD-by-mail** rental service founded by **Reed Hastings** and **Marc Randolph** in Scotts Valley, California — famously conceived (per the often-repeated origin story) after a late video-store fee. The red-envelope mail business undercut Blockbuster's late-fee model, then the company made its defining bet: in 2007 it launched **streaming**, cannibalizing its own profitable mail business before anyone else could. In 2013 it became a studio with **House of Cards**, and "Netflix Original" reframed the company from distributor to producer.
474
+
475
+ The dark, cinematic interface is a direct expression of that identity. Netflix is not a software company that happens to show video; it is a **theater you carry**, and a theater is dark so the screen can be bright. Every interface decision serves the artwork: the black canvas, the grey-not-white chrome, the single red accent that never competes for attention. The red itself (`#E50914`) descends from the original DVD envelope and the wordmark — a piece of physical-era brand equity carried into pixels.
476
+
477
+ By the mid-2020s Netflix operates in 190+ countries with hundreds of millions of paid memberships, having expanded into ad-supported tiers, gaming, and live events. Through every expansion the visual system holds: **content is the hero, chrome is the frame, red is the signature.** The personalization engine — the rows are reordered per profile, the artwork itself is A/B-selected per viewer — means the "design" is partly generative, but the frame around it is rigid and constant. That tension — a fixed dark frame around infinitely variable content — is the whole brand.
478
+
479
+ What Netflix refuses: the bright, busy, multi-color dashboards of productivity software; the light-mode neutrality of utilities; ornamental UI that draws the eye away from a poster. The interface aspires to disappear.
480
+
481
+ ## 12. Principles
482
+
483
+ 1. **Dim the room, light the screen.** The canvas is dark so artwork reads as luminous. Chrome stays grey-on-black; the only light source is the content.
484
+ 2. **Red is a signature, not a surface.** `#E50914` marks the logo, the acquisition CTA, progress, and "New". It never becomes a background. Overusing red cheapens it.
485
+ 3. **White is the in-app action; red is acquisition.** Inside the product the dominant button is white (Play). Red lives on sign-up and marketing surfaces. Keep the two jobs separate.
486
+ 4. **Grey makes white mean something.** Default text to `#B3B3B3`. White is spent on the single most important label per surface, which is how hierarchy survives on black.
487
+ 5. **Elevation is scale, not glow.** On black, shadows vanish. Lift comes from growing the element (hover scale 1.5×) and raising z-index, anchored by a heavy pure-black shadow.
488
+ 6. **Rows are doors, edges peek.** Content lives in horizontal carousels; tiles clip at the edge to promise more. The grid is never closed.
489
+ 7. **The frame is fixed, the content is infinite.** The chrome is rigid and constant precisely because the artwork inside it is personalized and ever-changing.
490
+ 8. **Chrome aspires to disappear.** Every pixel of UI competes with a poster. When in doubt, make the interface quieter.
491
+
492
+ ## 13. Personas
493
+
494
+ *Personas below are fictional archetypes informed by publicly described streaming-viewer segments, not individual people.*
495
+
496
+ **Maya, 26, Los Angeles.** UX designer, watches on a 65" TV most evenings and her phone on the bus. Lives in "Continue Watching" and "Trending Now". Expects the app to remember her exact resume position to the second and to autoplay a preview the moment she lands on a tile. Annoyed by anything that delays the artwork — splash screens, slow row loads. Treats the red Play button as muscle memory.
497
+
498
+ **Daniel, 41, Chicago.** Father of two, manages four profiles including a Kids profile with a different (brighter, lighter) UI. Cares deeply that maturity ratings and parental locks are unambiguous. Browses lean-back on the living-room TV; never types if he can avoid it, navigating entirely by D-pad through the rows. Values the frictionless billing page — checks his plan once a quarter and wants zero surprises.
499
+
500
+ **Sofia, 33, Madrid.** Bilingual viewer who switches audio and subtitle languages constantly and watches a mix of Spanish originals and dubbed global content. Relies on the localized interface feeling native, not translated. Uses "My List" as a real watchlist and expects "New Episode" badges to be accurate. Watches mostly on a laptop in a dark room — the dark UI is why she never feels eye strain at midnight.
501
+
502
+ ## 14. States
503
+
504
+ | State | Treatment |
505
+ |---|---|
506
+ | **Empty (My List)** | Centered grey `#B3B3B3` line ("Titles you add to My List appear here.") over `#141414`, with a suggestion row below. No illustration. |
507
+ | **Empty (Search no results)** | Grey caption ("Your search for 'xyz' did not have any matches.") plus a "Suggestions:" list and a fallback popular row. |
508
+ | **Loading (row)** | `#181818` placeholder tiles at exact final dimensions, faint 1.2s shimmer. Artwork fades in on load. |
509
+ | **Loading (page)** | Centered red `#E50914` spinner / the "N" ribbon animation over `#141414`. |
510
+ | **Hover (tile)** | Scale 1.5×, z-index lift, `0 12px 24px rgba(0,0,0,0.8)` shadow, muted autoplay preview, action button row reveals. |
511
+ | **Error (form field)** | Border-bottom 2px `#E87C03`, amber message 13px below the field. |
512
+ | **Error (playback)** | Full black player with centered white message + error code in grey, "Try Again" white button. |
513
+ | **Success (added to list)** | The + circle button fills to a ✓, brief scale pulse, no toast. |
514
+ | **Disabled** | Control drops to `#6D6D6E` text / `rgba(255,255,255,0.3)`; geometry unchanged. |
515
+ | **Buffering** | Red `#E50914` circular spinner centered over the dimmed (`rgba(0,0,0,0.5)`) video frame. |
516
+ | **Progress (resume)** | 3px bar, `#404040` track / `#E50914` fill, under continue-watching tiles and on the scrubber. |
517
+
518
+ ## 15. Motion & Easing
519
+
520
+ **Durations:**
521
+
522
+ | Token | Value | Use |
523
+ |---|---|---|
524
+ | `motion-instant` | 0ms | Checkbox/toggle commit |
525
+ | `motion-fast` | 150ms | Button hover, nav-link color shift, icon-button border |
526
+ | `motion-card` | 300ms | Tile hover-expand (scale 1.5×) and collapse |
527
+ | `motion-standard` | 400ms | Modal open, row reorder, nav transparent→solid fade |
528
+ | `motion-billboard` | 600ms | Hero artwork cross-fade, billboard text reveal |
529
+
530
+ **Easings:**
531
+
532
+ | Token | Curve | Use |
533
+ |---|---|---|
534
+ | `ease-out` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Things appearing — card expand, modal in |
535
+ | `ease-in` | `cubic-bezier(0.4, 0.0, 1, 1)` | Things leaving — card collapse, modal out |
536
+ | `ease-standard` | `cubic-bezier(0.4, 0.0, 0.2, 1)` | Two-way — nav fade, row scroll |
537
+ | `ease-scroll` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Horizontal row carousel paging |
538
+
539
+ **Signature motions.**
540
+
541
+ 1. **Tile hover-expand.** On hover, the tile scales to 1.5× over `motion-card` with `ease-out`, raises z-index above neighbors, drops a heavy black shadow, and reveals the info panel + autoplay preview. Collapse reverses with `ease-in`. This is the defining Netflix gesture.
542
+ 2. **Row paging.** Clicking a row's edge arrow slides the carousel one page with `ease-scroll`; tiles at the new edge peek to promise more.
543
+ 3. **Nav fade.** As the user scrolls off the billboard, the top nav transitions from transparent to solid `#141414` over `motion-standard / ease-standard`, keeping links legible against incoming artwork.
544
+ 4. **Billboard cross-fade.** Hero artwork and its preview video cross-fade over `motion-billboard`; title art and buttons fade up from below with a slight delay so the artwork lands first.
545
+ 5. **Reduce motion.** Under `prefers-reduced-motion: reduce`, hover-expand scaling and autoplay previews are suppressed — tiles get a simple border/brightness change instead, and cross-fades become instant cuts. The product stays fully usable.
546
+
547
+ <!--
548
+ OmD v0.1 Sources
549
+
550
+ Token grounding (WebSearch, 2026-06-06): Netflix Red #E50914 (RGB 229·9·20,
551
+ Pantone 1795 C), Black #000000, White #FFFFFF, Dark Red #B20710 — confirmed
552
+ across multiple brand-color references. Netflix Sans (custom typeface by
553
+ Dalton Maag, introduced 2018, replacing Gotham) confirmed as the brand face.
554
+
555
+ Dark-UI tokens (#141414 canvas, #181818 card, #B3B3B3 metadata grey, #2F2F2F
556
+ hover, #46D369 match-green, hover scale 1.5×) are well-documented conventions
557
+ of the Netflix web/TV consumer UI, used here as representative values.
558
+
559
+ Brand narrative facts (founded 1997 by Reed Hastings & Marc Randolph; DVD-by-mail;
560
+ streaming launched 2007; House of Cards 2013; 190+ countries) are widely
561
+ documented public history.
562
+
563
+ Personas (§13) are fictional archetypes informed by publicly described
564
+ streaming-viewer segments, not individual people. Interpretive claims
565
+ ("dim the room, light the screen", "chrome aspires to disappear") are editorial
566
+ readings of the design, not official Netflix statements.
567
+
568
+ Sources:
569
+ - https://www.brandcolorcode.com/netflix
570
+ - https://brand.netflix.com/en/assets/logos/
571
+ - https://www.designyourway.net/blog/netflix-logo/ (Netflix Sans / Dalton Maag history)
572
+ -->