oh-my-design-cli 1.6.6 → 1.7.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.
- package/AGENTS.md +1 -1
- package/README.md +8 -8
- package/data/reference-fingerprints.json +1318 -10
- package/dist/bin/oh-my-design.js +1 -1
- package/dist/{install-skills-JNH66GOI.js → install-skills-YYHEC4CS.js} +5 -11
- package/dist/install-skills-YYHEC4CS.js.map +1 -0
- package/package.json +1 -1
- package/skills/claude-design/SKILL.md +7 -2
- package/web/references/11st/DESIGN.md +400 -0
- package/web/references/17live/DESIGN.md +43 -0
- package/web/references/29cm/DESIGN.md +41 -0
- package/web/references/91app/DESIGN.md +31 -0
- package/web/references/ably/DESIGN.md +54 -0
- package/web/references/airbnb/DESIGN.md +58 -0
- package/web/references/airtable/DESIGN.md +39 -0
- package/web/references/alipay/DESIGN.md +50 -0
- package/web/references/amazingtalker/DESIGN.md +434 -0
- package/web/references/appier/DESIGN.md +45 -0
- package/web/references/apple/DESIGN.md +47 -0
- package/web/references/baemin/DESIGN.md +142 -43
- package/web/references/banksalad/DESIGN.md +67 -0
- package/web/references/bilibili/DESIGN.md +45 -0
- package/web/references/bithumb/DESIGN.md +38 -0
- package/web/references/bmw/DESIGN.md +37 -0
- package/web/references/brandi/DESIGN.md +414 -0
- package/web/references/bunjang/DESIGN.md +47 -0
- package/web/references/cakeresume/DESIGN.md +29 -0
- package/web/references/cal/DESIGN.md +52 -0
- package/web/references/catchtable/DESIGN.md +79 -19
- package/web/references/cathay/DESIGN.md +432 -0
- package/web/references/channeltalk/DESIGN.md +48 -0
- package/web/references/class101/DESIGN.md +51 -0
- package/web/references/classting/DESIGN.md +41 -0
- package/web/references/classum/DESIGN.md +43 -0
- package/web/references/claude/DESIGN.md +157 -70
- package/web/references/clay/DESIGN.md +56 -0
- package/web/references/clickhouse/DESIGN.md +50 -0
- package/web/references/cloudflare/DESIGN.md +637 -0
- package/web/references/cohere/DESIGN.md +48 -0
- package/web/references/coinbase/DESIGN.md +139 -5
- package/web/references/coinone/DESIGN.md +39 -0
- package/web/references/composio/DESIGN.md +46 -0
- package/web/references/cookpad/DESIGN.md +37 -0
- package/web/references/coupang/DESIGN.md +57 -2
- package/web/references/cursor/DESIGN.md +44 -0
- package/web/references/dabang/DESIGN.md +57 -19
- package/web/references/dcard/DESIGN.md +57 -0
- package/web/references/dell/DESIGN.md +636 -0
- package/web/references/devsisters/DESIGN.md +29 -0
- package/web/references/discord/DESIGN.md +604 -0
- package/web/references/dji/DESIGN.md +39 -0
- package/web/references/drnow/DESIGN.md +52 -0
- package/web/references/duolingo/DESIGN.md +563 -0
- package/web/references/elevenlabs/DESIGN.md +39 -0
- package/web/references/expo/DESIGN.md +39 -0
- package/web/references/fastcampus/DESIGN.md +50 -0
- package/web/references/ferrari/DESIGN.md +47 -0
- package/web/references/figma/DESIGN.md +44 -0
- package/web/references/finda/DESIGN.md +413 -0
- package/web/references/flex/DESIGN.md +28 -0
- package/web/references/flo/DESIGN.md +43 -0
- package/web/references/framer/DESIGN.md +38 -0
- package/web/references/freee/DESIGN.md +48 -0
- package/web/references/fugle/DESIGN.md +41 -1
- package/web/references/gangnamunni/DESIGN.md +57 -1
- package/web/references/genie/DESIGN.md +415 -0
- package/web/references/github/DESIGN.md +727 -0
- package/web/references/gmarket/DESIGN.md +51 -0
- package/web/references/gogolook/DESIGN.md +25 -1
- package/web/references/gogoro/DESIGN.md +38 -0
- package/web/references/grip/DESIGN.md +39 -0
- package/web/references/hahow/DESIGN.md +26 -0
- package/web/references/hashicorp/DESIGN.md +42 -0
- package/web/references/hogangnono/DESIGN.md +41 -0
- package/web/references/hp/DESIGN.md +563 -0
- package/web/references/hyperconnect/DESIGN.md +393 -0
- package/web/references/hyundaicard/DESIGN.md +24 -0
- package/web/references/ibm/DESIGN.md +44 -0
- package/web/references/ichef/DESIGN.md +44 -0
- package/web/references/ikala/DESIGN.md +400 -0
- package/web/references/inflearn/DESIGN.md +38 -0
- package/web/references/intercom/DESIGN.md +38 -0
- package/web/references/jandi/DESIGN.md +382 -0
- package/web/references/jkopay/DESIGN.md +35 -1
- package/web/references/jobkorea/DESIGN.md +39 -0
- package/web/references/jumpit/DESIGN.md +37 -0
- package/web/references/kakao/DESIGN.md +64 -0
- package/web/references/kakaobank/DESIGN.md +55 -1
- package/web/references/kakaopay/DESIGN.md +59 -0
- package/web/references/kakaot/DESIGN.md +53 -0
- package/web/references/karrot/DESIGN.md +49 -0
- package/web/references/kbank/DESIGN.md +39 -0
- package/web/references/kdan/DESIGN.md +34 -1
- package/web/references/kintone/DESIGN.md +586 -0
- package/web/references/kkbox/DESIGN.md +22 -0
- package/web/references/kkday/DESIGN.md +47 -0
- package/web/references/kmong/DESIGN.md +427 -0
- package/web/references/krafton/DESIGN.md +37 -0
- package/web/references/kraken/DESIGN.md +44 -0
- package/web/references/krds/DESIGN.md +63 -0
- package/web/references/kream/DESIGN.md +32 -0
- package/web/references/kurly/DESIGN.md +38 -1
- package/web/references/laftel/DESIGN.md +40 -0
- package/web/references/lamborghini/DESIGN.md +54 -0
- package/web/references/layerx/DESIGN.md +615 -0
- package/web/references/lezhin/DESIGN.md +47 -0
- package/web/references/line/DESIGN.md +36 -0
- package/web/references/linear.app/DESIGN.md +182 -88
- package/web/references/loom/DESIGN.md +396 -0
- package/web/references/lovable/DESIGN.md +38 -0
- package/web/references/lunit/DESIGN.md +47 -19
- package/web/references/mastercard/DESIGN.md +587 -0
- package/web/references/meituan/DESIGN.md +42 -0
- package/web/references/melon/DESIGN.md +26 -0
- package/web/references/mercari/DESIGN.md +41 -0
- package/web/references/mercury/DESIGN.md +589 -0
- package/web/references/meta/DESIGN.md +615 -0
- package/web/references/millie/DESIGN.md +51 -0
- package/web/references/minimax/DESIGN.md +53 -0
- package/web/references/mintlify/DESIGN.md +45 -0
- package/web/references/miro/DESIGN.md +47 -0
- package/web/references/mistral.ai/DESIGN.md +37 -0
- package/web/references/momoshop/DESIGN.md +43 -0
- package/web/references/money-forward/DESIGN.md +42 -0
- package/web/references/mongodb/DESIGN.md +44 -0
- package/web/references/muji/DESIGN.md +605 -0
- package/web/references/musinsa/DESIGN.md +48 -0
- package/web/references/mustit/DESIGN.md +47 -1
- package/web/references/myrealtrip/DESIGN.md +49 -0
- package/web/references/naver/DESIGN.md +50 -1
- package/web/references/naverwebtoon/DESIGN.md +48 -0
- package/web/references/netflix/DESIGN.md +572 -0
- package/web/references/nexon/DESIGN.md +389 -0
- package/web/references/nhncloud/DESIGN.md +33 -0
- package/web/references/nike/DESIGN.md +588 -0
- package/web/references/note/DESIGN.md +28 -0
- package/web/references/notion/DESIGN.md +48 -0
- package/web/references/nvidia/DESIGN.md +50 -0
- package/web/references/ohouse/DESIGN.md +56 -0
- package/web/references/oliveyoung/DESIGN.md +47 -1
- package/web/references/ollama/DESIGN.md +40 -0
- package/web/references/openai/DESIGN.md +641 -0
- package/web/references/opencode.ai/DESIGN.md +37 -0
- package/web/references/payco/DESIGN.md +40 -0
- package/web/references/paypay/DESIGN.md +656 -0
- package/web/references/pchome/DESIGN.md +439 -0
- package/web/references/perplexity/DESIGN.md +546 -0
- package/web/references/piccollage/DESIGN.md +43 -0
- package/web/references/pinkoi/DESIGN.md +55 -0
- package/web/references/pinterest/DESIGN.md +44 -0
- package/web/references/pixiv/DESIGN.md +613 -0
- package/web/references/pixnet/DESIGN.md +430 -0
- package/web/references/posthog/DESIGN.md +50 -0
- package/web/references/publy/DESIGN.md +52 -0
- package/web/references/qanda/DESIGN.md +49 -1
- package/web/references/ragic/DESIGN.md +444 -0
- package/web/references/ramp/DESIGN.md +634 -0
- package/web/references/rayark/DESIGN.md +22 -0
- package/web/references/raycast/DESIGN.md +45 -0
- package/web/references/remember/DESIGN.md +44 -0
- package/web/references/renault/DESIGN.md +42 -0
- package/web/references/replicate/DESIGN.md +39 -0
- package/web/references/resend/DESIGN.md +44 -0
- package/web/references/retool/DESIGN.md +645 -0
- package/web/references/revolut/DESIGN.md +46 -0
- package/web/references/richart/DESIGN.md +465 -0
- package/web/references/ridi/DESIGN.md +47 -0
- package/web/references/riiid/DESIGN.md +32 -0
- package/web/references/robinhood/DESIGN.md +604 -0
- package/web/references/runwayml/DESIGN.md +45 -0
- package/web/references/sanity/DESIGN.md +50 -0
- package/web/references/sansan/DESIGN.md +631 -0
- package/web/references/sendbird/DESIGN.md +46 -0
- package/web/references/sentry/DESIGN.md +48 -0
- package/web/references/shinhancard/DESIGN.md +421 -0
- package/web/references/shopline/DESIGN.md +431 -0
- package/web/references/slack/DESIGN.md +635 -0
- package/web/references/smarthr/DESIGN.md +48 -0
- package/web/references/smartnews/DESIGN.md +29 -0
- package/web/references/socar/DESIGN.md +35 -0
- package/web/references/soomgo/DESIGN.md +326 -0
- package/web/references/spacex/DESIGN.md +27 -0
- package/web/references/spoon/DESIGN.md +46 -0
- package/web/references/spotify/DESIGN.md +49 -0
- package/web/references/starbucks/DESIGN.md +597 -0
- package/web/references/stripe/DESIGN.md +46 -0
- package/web/references/studio/DESIGN.md +602 -0
- package/web/references/supabase/DESIGN.md +41 -0
- package/web/references/superhuman/DESIGN.md +39 -0
- package/web/references/surveycake/DESIGN.md +442 -0
- package/web/references/tada/DESIGN.md +51 -0
- package/web/references/tesla/DESIGN.md +36 -0
- package/web/references/theverge/DESIGN.md +500 -0
- package/web/references/together.ai/DESIGN.md +33 -0
- package/web/references/toss/DESIGN.md +43 -0
- package/web/references/toss-securities/DESIGN.md +54 -19
- package/web/references/tossbank/DESIGN.md +57 -0
- package/web/references/trenbe/DESIGN.md +41 -0
- package/web/references/triple/DESIGN.md +47 -0
- package/web/references/tumblbug/DESIGN.md +48 -0
- package/web/references/tving/DESIGN.md +40 -0
- package/web/references/uber/DESIGN.md +36 -0
- package/web/references/ubie/DESIGN.md +615 -0
- package/web/references/uniqlo/DESIGN.md +575 -0
- package/web/references/upbit/DESIGN.md +42 -0
- package/web/references/upstage/DESIGN.md +38 -0
- package/web/references/velog/DESIGN.md +28 -0
- package/web/references/vercel/DESIGN.md +44 -0
- package/web/references/voicetube/DESIGN.md +39 -0
- package/web/references/voltagent/DESIGN.md +44 -0
- package/web/references/wadiz/DESIGN.md +71 -19
- package/web/references/wanted/DESIGN.md +46 -0
- package/web/references/warp/DESIGN.md +37 -0
- package/web/references/watcha/DESIGN.md +40 -0
- package/web/references/wavve/DESIGN.md +43 -1
- package/web/references/wconcept/DESIGN.md +45 -0
- package/web/references/webflow/DESIGN.md +49 -0
- package/web/references/wired/DESIGN.md +572 -0
- package/web/references/wise/DESIGN.md +41 -0
- package/web/references/x.ai/DESIGN.md +31 -0
- package/web/references/xiaohongshu/DESIGN.md +39 -0
- package/web/references/yanolja/DESIGN.md +45 -0
- package/web/references/yeogiotte/DESIGN.md +42 -1
- package/web/references/yogiyo/DESIGN.md +50 -0
- package/web/references/yourator/DESIGN.md +453 -0
- package/web/references/zapier/DESIGN.md +41 -0
- package/web/references/zigbang/DESIGN.md +33 -0
- package/web/references/zigzag/DESIGN.md +62 -0
- package/web/references/zozotown/DESIGN.md +578 -0
- package/dist/install-skills-JNH66GOI.js.map +0 -1
|
@@ -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
|
+
-->
|