oh-my-design-cli 1.8.7 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/hooks/lib/preferences-parser.cjs +1 -0
- package/.claude/hooks/lib/preferences-writer.cjs +1 -0
- package/.claude/hooks/post-edit-watch.cjs +1 -0
- package/.claude/hooks/session-end-foldin.cjs +1 -0
- package/.claude/hooks/session-state-loader.cjs +1 -0
- package/.claude/hooks/skill-activation.cjs +1 -0
- package/.claude/settings.json +10 -1
- package/.github/assets/logo-bg.png +0 -0
- package/AGENTS.md +20 -1
- package/CHANGELOG.md +482 -0
- package/MIGRATION.md +103 -0
- package/README.ja.md +56 -19
- package/README.ko.md +47 -30
- package/README.md +48 -30
- package/README.zh-TW.md +59 -22
- package/agents/AGENT.md +8 -7
- package/agents/omd-codex-image.md +1 -1
- package/agents/omd-critic.md +6 -7
- package/agents/omd-designer-review.md +1 -1
- package/agents/omd-final-qa.md +1 -1
- package/agents/omd-humanizer.md +38 -0
- package/agents/omd-kr-writer.md +3 -4
- package/agents/omd-locale-adapter.md +12 -16
- package/agents/omd-master.md +24 -19
- package/agents/omd-microcopy.md +1 -1
- package/agents/omd-orchestrator.md +7 -8
- package/agents/omd-slop-auditor.md +31 -0
- package/agents/omd-ux-researcher.md +1 -1
- package/data/reference-fingerprints.json +1995 -38
- package/dist/bin/oh-my-design.js +16 -8
- package/dist/bin/oh-my-design.js.map +1 -1
- package/dist/chunk-UJIHCEYF.js +99 -0
- package/dist/chunk-UJIHCEYF.js.map +1 -0
- package/dist/doctor-LDWSFM3I.js +763 -0
- package/dist/doctor-LDWSFM3I.js.map +1 -0
- package/dist/install-skills-ZZFNJ2II.js +1120 -0
- package/dist/install-skills-ZZFNJ2II.js.map +1 -0
- package/docs/CLI_QUICKSTART.md +157 -0
- package/package.json +25 -4
- package/scripts/postinstall.cjs +5 -4
- package/skills/claude-design/SKILL.md +38 -14
- package/skills/claude-design/references/claude-design-flow.md +11 -11
- package/skills/claude-design/references/codebase-analysis.md +5 -4
- package/skills/omd-final-qa/SKILL.md +1 -1
- package/skills/omd-harness/SKILL.md +51 -50
- package/skills/omd-humanize/SKILL.md +116 -0
- package/skills/omd-humanize/agents/openai.yaml +4 -0
- package/skills/omd-humanize/references/locale-playbooks.md +102 -0
- package/skills/omd-humanize/references/sources.md +11 -0
- package/skills/omd-init/SKILL.md +18 -12
- package/skills/omd-locale-adapter/SKILL.md +58 -91
- package/skills/omd-orchestrator/SKILL.md +11 -5
- package/skills/omd-reference-capture/SKILL.md +80 -26
- package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
- package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
- package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
- package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
- package/skills/omd-slop-audit/SKILL.md +110 -0
- package/skills/omd-slop-audit/agents/openai.yaml +4 -0
- package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
- package/skills/omd-slop-audit/references/sources.md +24 -0
- package/web/references/104/DESIGN.md +354 -0
- package/web/references/11st/DESIGN.md +197 -316
- package/web/references/29cm/DESIGN.md +297 -393
- package/web/references/42dot/DESIGN.md +390 -0
- package/web/references/8percent/DESIGN.md +438 -0
- package/web/references/ably/DESIGN.md +267 -572
- package/web/references/acer/DESIGN.md +329 -0
- package/web/references/airbnb/DESIGN.md +219 -557
- package/web/references/alipay/DESIGN.md +179 -420
- package/web/references/apple/DESIGN.md +224 -498
- package/web/references/asleep/DESIGN.md +402 -0
- package/web/references/au/DESIGN.md +334 -0
- package/web/references/autopedia/DESIGN.md +382 -0
- package/web/references/aws-cloudscape/DESIGN.md +241 -0
- package/web/references/baemin/DESIGN.md +332 -491
- package/web/references/banksalad/DESIGN.md +269 -180
- package/web/references/barogo/DESIGN.md +416 -0
- package/web/references/beusable/DESIGN.md +464 -0
- package/web/references/bilibili/DESIGN.md +206 -374
- package/web/references/bmw/DESIGN.md +162 -276
- package/web/references/brandi/DESIGN.md +184 -325
- package/web/references/catchtable/DESIGN.md +219 -264
- package/web/references/cgv/DESIGN.md +317 -0
- package/web/references/channeltalk/DESIGN.md +210 -336
- package/web/references/china-airlines/DESIGN.md +291 -0
- package/web/references/cjonstyle/DESIGN.md +453 -0
- package/web/references/class101/DESIGN.md +168 -387
- package/web/references/classum/DESIGN.md +228 -203
- package/web/references/claude/DESIGN.md +242 -479
- package/web/references/clay/DESIGN.md +179 -377
- package/web/references/clickhouse/DESIGN.md +254 -343
- package/web/references/cohere/DESIGN.md +214 -324
- package/web/references/coinone/DESIGN.md +199 -179
- package/web/references/corca/DESIGN.md +414 -0
- package/web/references/coupang/DESIGN.md +205 -475
- package/web/references/cursor/DESIGN.md +240 -381
- package/web/references/dabang/DESIGN.md +248 -213
- package/web/references/dable/DESIGN.md +431 -0
- package/web/references/datarize/DESIGN.md +217 -330
- package/web/references/dealicious/DESIGN.md +402 -0
- package/web/references/drdiary/DESIGN.md +404 -0
- package/web/references/elastic/DESIGN.md +238 -0
- package/web/references/elevenlabs/DESIGN.md +183 -321
- package/web/references/eslite/DESIGN.md +257 -0
- package/web/references/evaair/DESIGN.md +338 -0
- package/web/references/expo/DESIGN.md +238 -331
- package/web/references/familymart-tw/DESIGN.md +254 -0
- package/web/references/ferrari/DESIGN.md +160 -377
- package/web/references/figma/DESIGN.md +197 -451
- package/web/references/fitpet/DESIGN.md +445 -0
- package/web/references/flex/DESIGN.md +170 -253
- package/web/references/framer/DESIGN.md +197 -340
- package/web/references/freee/DESIGN.md +211 -533
- package/web/references/friendliai/DESIGN.md +431 -0
- package/web/references/frip/DESIGN.md +440 -0
- package/web/references/gangnamunni/DESIGN.md +154 -591
- package/web/references/gaudiolab/DESIGN.md +414 -0
- package/web/references/google/DESIGN.md +290 -398
- package/web/references/hashicorp/DESIGN.md +273 -318
- package/web/references/heydealer/DESIGN.md +429 -0
- package/web/references/humanscape/DESIGN.md +433 -0
- package/web/references/hyundai/DESIGN.md +158 -368
- package/web/references/hyundaicard/DESIGN.md +171 -121
- package/web/references/ibm/DESIGN.md +227 -378
- package/web/references/idus/DESIGN.md +450 -0
- package/web/references/igaworks/DESIGN.md +437 -0
- package/web/references/inflearn/DESIGN.md +221 -366
- package/web/references/intuit/DESIGN.md +244 -0
- package/web/references/jandi/DESIGN.md +191 -291
- package/web/references/jobplanet/DESIGN.md +415 -0
- package/web/references/kakao/DESIGN.md +287 -475
- package/web/references/kakaobank/DESIGN.md +220 -521
- package/web/references/kakaogames/DESIGN.md +220 -0
- package/web/references/kakaopay/DESIGN.md +207 -526
- package/web/references/karrot/DESIGN.md +227 -251
- package/web/references/kb-kookmin/DESIGN.md +308 -0
- package/web/references/kbank/DESIGN.md +220 -175
- package/web/references/kmong/DESIGN.md +281 -356
- package/web/references/krds/DESIGN.md +245 -19
- package/web/references/kream/DESIGN.md +224 -359
- package/web/references/kurly/DESIGN.md +211 -533
- package/web/references/lamborghini/DESIGN.md +198 -360
- package/web/references/lguplus/DESIGN.md +259 -0
- package/web/references/likelion/DESIGN.md +283 -0
- package/web/references/line/DESIGN.md +396 -355
- package/web/references/linear.app/DESIGN.md +209 -562
- package/web/references/lotteon/DESIGN.md +386 -0
- package/web/references/lovable/DESIGN.md +255 -349
- package/web/references/makinarocks/DESIGN.md +149 -349
- package/web/references/maum-ai/DESIGN.md +423 -0
- package/web/references/medibloc/DESIGN.md +425 -0
- package/web/references/megabox/DESIGN.md +232 -0
- package/web/references/mercari/DESIGN.md +217 -434
- package/web/references/microsoft/DESIGN.md +234 -388
- package/web/references/mildang/DESIGN.md +411 -0
- package/web/references/millie/DESIGN.md +183 -504
- package/web/references/minimax/DESIGN.md +264 -322
- package/web/references/miricanvas/DESIGN.md +182 -355
- package/web/references/miro/DESIGN.md +234 -232
- package/web/references/mistral.ai/DESIGN.md +231 -314
- package/web/references/mixi/DESIGN.md +234 -0
- package/web/references/moin/DESIGN.md +445 -0
- package/web/references/mongodb/DESIGN.md +219 -316
- package/web/references/musinsa/DESIGN.md +184 -510
- package/web/references/mynavi/DESIGN.md +242 -0
- package/web/references/myrealtrip/DESIGN.md +169 -406
- package/web/references/naver/DESIGN.md +328 -499
- package/web/references/naverwebtoon/DESIGN.md +172 -395
- package/web/references/nhn/DESIGN.md +169 -346
- package/web/references/nhncloud/DESIGN.md +185 -123
- package/web/references/notion/DESIGN.md +271 -475
- package/web/references/nrise/DESIGN.md +417 -0
- package/web/references/ohouse/DESIGN.md +210 -549
- package/web/references/oliveyoung/DESIGN.md +217 -326
- package/web/references/ollama/DESIGN.md +241 -308
- package/web/references/onestore/DESIGN.md +248 -0
- package/web/references/palantir/DESIGN.md +256 -0
- package/web/references/panasonic/DESIGN.md +276 -0
- package/web/references/patternfly/DESIGN.md +259 -0
- package/web/references/payhere/DESIGN.md +438 -0
- package/web/references/pega/DESIGN.md +262 -0
- package/web/references/peoplefund/DESIGN.md +431 -0
- package/web/references/petfriends/DESIGN.md +428 -0
- package/web/references/pinkfong/DESIGN.md +199 -367
- package/web/references/pinterest/DESIGN.md +258 -308
- package/web/references/poya/DESIGN.md +286 -0
- package/web/references/pozalabs/DESIGN.md +438 -0
- package/web/references/protopie/DESIGN.md +419 -0
- package/web/references/qraft/DESIGN.md +448 -0
- package/web/references/quotabook/DESIGN.md +449 -0
- package/web/references/recruit/DESIGN.md +247 -0
- package/web/references/remember/DESIGN.md +202 -396
- package/web/references/resend/DESIGN.md +274 -348
- package/web/references/sakura-internet/DESIGN.md +269 -0
- package/web/references/samsung/DESIGN.md +157 -359
- package/web/references/sandoll/DESIGN.md +445 -0
- package/web/references/sanity/DESIGN.md +241 -375
- package/web/references/scatterlab/DESIGN.md +412 -0
- package/web/references/selectstar/DESIGN.md +439 -0
- package/web/references/servicenow/DESIGN.md +289 -0
- package/web/references/shinhanbank/DESIGN.md +161 -341
- package/web/references/shinhancard/DESIGN.md +208 -319
- package/web/references/sionic/DESIGN.md +454 -0
- package/web/references/sktelecom/DESIGN.md +310 -0
- package/web/references/socar/DESIGN.md +125 -32
- package/web/references/softbank/DESIGN.md +231 -0
- package/web/references/sony/DESIGN.md +234 -0
- package/web/references/soop/DESIGN.md +261 -0
- package/web/references/spacex/DESIGN.md +184 -323
- package/web/references/spotify/DESIGN.md +253 -394
- package/web/references/squeezebits/DESIGN.md +441 -0
- package/web/references/stayfolio/DESIGN.md +422 -0
- package/web/references/stripe/DESIGN.md +212 -491
- package/web/references/supabase/DESIGN.md +244 -316
- package/web/references/tabling/DESIGN.md +415 -0
- package/web/references/taishinbank/DESIGN.md +243 -0
- package/web/references/teamlab/DESIGN.md +240 -0
- package/web/references/teamsparta/DESIGN.md +472 -0
- package/web/references/tellingme/DESIGN.md +392 -0
- package/web/references/tesla/DESIGN.md +244 -427
- package/web/references/thsr/DESIGN.md +284 -0
- package/web/references/thumbtack/DESIGN.md +302 -0
- package/web/references/together.ai/DESIGN.md +257 -304
- package/web/references/toss/DESIGN.md +251 -593
- package/web/references/toss-securities/DESIGN.md +255 -178
- package/web/references/tossbank/DESIGN.md +195 -491
- package/web/references/toyota/DESIGN.md +238 -0
- package/web/references/tving/DESIGN.md +197 -245
- package/web/references/typed/DESIGN.md +413 -0
- package/web/references/uber/DESIGN.md +256 -333
- package/web/references/udn/DESIGN.md +250 -0
- package/web/references/upbit/DESIGN.md +145 -256
- package/web/references/upstage/DESIGN.md +211 -204
- package/web/references/uswds/DESIGN.md +287 -0
- package/web/references/vercel/DESIGN.md +236 -440
- package/web/references/wanted/DESIGN.md +215 -487
- package/web/references/wise/DESIGN.md +223 -231
- package/web/references/wisetracker/DESIGN.md +462 -0
- package/web/references/wooribank/DESIGN.md +245 -0
- package/web/references/yanolja/DESIGN.md +250 -419
- package/web/references/yeogiotte/DESIGN.md +235 -418
- package/web/references/zapier/DESIGN.md +256 -377
- package/web/references/zendesk/DESIGN.md +288 -0
- package/web/references/zigzag/DESIGN.md +200 -621
- package/dist/install-skills-7UUDOLG2.js +0 -734
- package/dist/install-skills-7UUDOLG2.js.map +0 -1
|
@@ -5,580 +5,259 @@ display_name_kr: 밀리의서재
|
|
|
5
5
|
country: KR
|
|
6
6
|
category: education
|
|
7
7
|
homepage: "https://www.millie.co.kr"
|
|
8
|
-
primary_color: "#
|
|
8
|
+
primary_color: "#242424"
|
|
9
9
|
logo:
|
|
10
10
|
type: favicon
|
|
11
11
|
slug: "https://www.google.com/s2/favicons?domain=millie.co.kr&sz=128"
|
|
12
|
-
verified: "2026-
|
|
12
|
+
verified: "2026-07-13"
|
|
13
13
|
omd: "0.1"
|
|
14
|
+
verification_v2:
|
|
15
|
+
schema: 2
|
|
16
|
+
checked: "2026-07-13"
|
|
17
|
+
surfaces:
|
|
18
|
+
- { id: home, kind: product-surface, url: "https://www.millie.co.kr/", inspected: "2026-07-12" }
|
|
19
|
+
- { id: b2b, kind: product-surface, url: "https://www.millie.co.kr/v4/brand/b2b", inspected: "2026-07-12" }
|
|
20
|
+
sources:
|
|
21
|
+
- { id: home-live, kind: product-surface, url: "https://www.millie.co.kr/", captured: "2026-07-12" }
|
|
22
|
+
- { id: b2b-live, kind: product-surface, url: "https://www.millie.co.kr/v4/brand/b2b", captured: "2026-07-12" }
|
|
23
|
+
- { id: company-business, kind: official-doc, url: "https://company.millie.co.kr/business/", captured: "2026-07-13" }
|
|
24
|
+
- { id: anniversary-context, kind: official-doc, url: "https://10th.millie.co.kr/", captured: "2026-07-13" }
|
|
25
|
+
- { id: careers-context, kind: official-doc, url: "https://company.millie.co.kr/careers/", captured: "2026-07-13" }
|
|
26
|
+
- { id: pretendard-docs, kind: official-doc, url: "https://github.com/orioncactus/pretendard/blob/main/packages/pretendard/docs/en/README.md", captured: "2026-07-13" }
|
|
27
|
+
- { id: pretendard-license, kind: license, url: "https://github.com/orioncactus/pretendard/blob/main/LICENSE", captured: "2026-07-13" }
|
|
28
|
+
conflicts: []
|
|
29
|
+
claims:
|
|
30
|
+
"tokens.colors.ink": &both { surface_id: home, source_id: home-live, method: live-inspect, captured: "2026-07-12" }
|
|
31
|
+
"tokens.typography.heading-xl.size": &b2b { surface_id: b2b, source_id: b2b-live, method: live-inspect, captured: "2026-07-12" }
|
|
32
|
+
"tokens.typography.heading-xl.weight": *b2b
|
|
33
|
+
"tokens.typography.heading-xl.lineHeight": *b2b
|
|
34
|
+
"tokens.typography.heading-xl.use": *b2b
|
|
35
|
+
"tokens.typography.heading.size": *b2b
|
|
36
|
+
"tokens.typography.heading.weight": *b2b
|
|
37
|
+
"tokens.typography.heading.lineHeight": *b2b
|
|
38
|
+
"tokens.typography.heading.use": *b2b
|
|
39
|
+
"tokens.colors.canvas": *both
|
|
40
|
+
"tokens.colors.surface-subtle": *both
|
|
41
|
+
"tokens.colors.muted": *both
|
|
42
|
+
"tokens.colors.divider": *both
|
|
43
|
+
"tokens.typography.family.sans": *both
|
|
44
|
+
"tokens.typography.body.size": *both
|
|
45
|
+
"tokens.typography.body.weight": *both
|
|
46
|
+
"tokens.typography.body.lineHeight": *both
|
|
47
|
+
"tokens.typography.body.use": *both
|
|
48
|
+
"tokens.typography.utility.size": *both
|
|
49
|
+
"tokens.typography.utility.weight": *both
|
|
50
|
+
"tokens.typography.utility.lineHeight": *both
|
|
51
|
+
"tokens.typography.utility.use": *both
|
|
52
|
+
"tokens.rounded.utility-button": *both
|
|
53
|
+
"tokens.rounded.carousel-pagination": *both
|
|
14
54
|
tokens:
|
|
15
|
-
source:
|
|
16
|
-
extracted: "2026-
|
|
55
|
+
source: live-extract
|
|
56
|
+
extracted: "2026-07-13"
|
|
57
|
+
note: "Only values with supplied computed-style provenance are machine tokens. The capture did not establish a universal accent color, application state system, or native reader UI."
|
|
17
58
|
colors:
|
|
18
|
-
primary: "#1b6dda"
|
|
19
|
-
primary-hover: "#1860c2"
|
|
20
|
-
primary-pressed: "#1554ad"
|
|
21
|
-
primary-tint: "#f2f6fd"
|
|
22
|
-
canvas: "#ffffff"
|
|
23
59
|
ink: "#242424"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
gray-800: "#333333"
|
|
29
|
-
gray-700: "#555555"
|
|
30
|
-
gray-600: "#6f6f6f"
|
|
31
|
-
gray-500: "#8b8b8b"
|
|
32
|
-
gray-400: "#c1c1c1"
|
|
33
|
-
border: "#ececec"
|
|
34
|
-
surface: "#f2f2f2"
|
|
35
|
-
surface-tint: "#f7f7f7"
|
|
60
|
+
canvas: "#FFFFFF"
|
|
61
|
+
surface-subtle: "#F7F7F7"
|
|
62
|
+
muted: "#6F6F6F"
|
|
63
|
+
divider: "#ECECEC"
|
|
36
64
|
typography:
|
|
37
|
-
family: { sans: "Pretendard
|
|
38
|
-
|
|
39
|
-
heading-
|
|
40
|
-
heading:
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 20, xl: 24, xxl: 32, section: 48 }
|
|
48
|
-
rounded: { sm: 4, md: 8, lg: 12, full: 9999 }
|
|
49
|
-
shadow:
|
|
50
|
-
card: "0px 2px 8px rgba(0,0,0,0.08)"
|
|
51
|
-
components:
|
|
52
|
-
button-primary: { type: button, bg: "#1b6dda", fg: "#ffffff", radius: 8, padding: "14px 20px", font: "16px/700", use: "Primary subscription CTA" }
|
|
53
|
-
button-dark: { type: button, bg: "#333333", fg: "#ffffff", radius: 4, padding: "0px 12px", font: "12px/400", use: "Compact chrome action, login" }
|
|
54
|
-
button-outline: { type: button, bg: "#ffffff", fg: "#1b6dda", radius: 8, padding: "14px 20px", font: "16px/600", use: "Secondary CTA" }
|
|
55
|
-
button-neutral: { type: button, bg: "#f2f2f2", fg: "#333333", radius: 8, padding: "12px 16px", font: "14px/500", use: "Tertiary action" }
|
|
56
|
-
input: { type: input, bg: "#ffffff", fg: "#242424", radius: 8, padding: "12px 14px", font: "14px/400", use: "Default text input" }
|
|
57
|
-
search: { type: input, bg: "#f2f2f2", fg: "#242424", radius: 8, padding: "12px 16px", font: "14px/400", use: "Header/discovery search bar" }
|
|
58
|
-
book-tile: { type: card, bg: "#f2f2f2", radius: 6, use: "Default book unit in feed grid" }
|
|
59
|
-
feed-card: { type: card, bg: "#ffffff", radius: 12, use: "Curated feed promotion, banner" }
|
|
60
|
-
tab-active: { type: tab, bg: "#333333", fg: "#ffffff", radius: 10, padding: "0px 10px", font: "14px/600", active: "#333333 fill", use: "Active genre/category filter" }
|
|
61
|
-
tag-original: { type: badge, bg: "#a451f7", fg: "#ffffff", radius: 4, padding: "3px 6px", font: "11px/700", use: "밀리 오리지널 flag" }
|
|
62
|
-
tag-promo: { type: badge, bg: "#ff5b4f", fg: "#ffffff", radius: 4, padding: "3px 6px", font: "11px/700", use: "Time-limited promotion flag" }
|
|
63
|
-
pill-scrim: { type: toggle, fg: "#ffffff", radius: 9999, padding: "4px 10px", font: "16px/400", use: "Floating carousel control over imagery" }
|
|
64
|
-
components_harvested: true
|
|
65
|
+
family: { sans: "Pretendard Variable" }
|
|
66
|
+
body: { size: 14, weight: 400, lineHeight: 1.7143, use: "Observed public home body and list text." }
|
|
67
|
+
heading-xl: { size: 44, weight: 700, lineHeight: 1.2273, use: "Observed public B2B heading specimen." }
|
|
68
|
+
heading: { size: 28, weight: 700, lineHeight: 1.3571, use: "Observed public B2B section heading specimen." }
|
|
69
|
+
utility: { size: 12, weight: 400, lineHeight: 1.5, use: "Observed compact home utility button." }
|
|
70
|
+
rounded:
|
|
71
|
+
utility-button: 4
|
|
72
|
+
carousel-pagination: 100
|
|
73
|
+
components_harvested: false
|
|
74
|
+
components: {}
|
|
65
75
|
---
|
|
66
76
|
|
|
67
77
|
# Design System Inspiration of Millie (밀리의서재)
|
|
68
78
|
|
|
69
79
|
## 1. Visual Theme & Atmosphere
|
|
70
80
|
|
|
71
|
-
Millie
|
|
81
|
+
Millie is a Korean reading-subscription platform. Its official company material says it began an e-book subscription service in 2016 and has expanded into a catalogue spanning e-books, audio formats, chat books, web novels, and webtoons. The supplied public capture is much narrower than that product story: it covers Millie’s public home and a B2B marketing page, not a signed-in library, checkout, reader, or native app. On those surfaces, the visual expression is quiet and typographic: near-black `#242424` text, white page planes, a subtle `#F7F7F7` skeleton surface, and a loaded Pretendard Variable webfont. The home’s large editorial imagery and translucent carousel controls make content imagery the strongest visible accent; the capture does not establish a universal brand-CTA color.
|
|
72
82
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
What defines Millie visually is the streaming-app posture applied to books: a personalized, cover-forward feed; soft rounded chips and pill toggles (10px radius on category tabs); and a generous, comfortable type scale optimized for browsing on a phone in the evening. The mood is warm and inviting rather than institutional -- reading should feel like a daily habit, not homework.
|
|
83
|
+
Millie’s tenth-anniversary site frames the service’s current ambition as making reading an ordinary part of daily life. That narrative helps explain the public surfaces’ calm, content-led presentation, but does not turn the anniversary site’s event colours into home-product tokens. Similarly, the B2B route is a public sales surface for employer reading benefits, and its yellow call to action remains route-local rather than a consumer product rule.
|
|
76
84
|
|
|
77
85
|
**Key Characteristics:**
|
|
78
|
-
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
- Comfortable browsing type scale -- evening-on-a-phone reading posture
|
|
85
|
-
- `#f2f2f2` surface fills for nested sections and feed separation
|
|
86
|
+
|
|
87
|
+
- Near-black `#242424` is the most frequent observed text and border colour across both supplied routes.
|
|
88
|
+
- White canvas and `#F7F7F7` skeleton/card treatment keep the chrome restrained around editorial content.
|
|
89
|
+
- Pretendard Variable is visibly used and backed by loaded, Millie-hosted subset files.
|
|
90
|
+
- Home carousel controls use translucent black overlays and strongly rounded geometry over imagery.
|
|
91
|
+
- No consumer reader, account, checkout, error, modal, hover, pressed, disabled, or responsive state is established by this capture.
|
|
86
92
|
|
|
87
93
|
## 2. Color Palette & Roles
|
|
88
94
|
|
|
89
|
-
###
|
|
90
|
-
|
|
91
|
-
- **
|
|
92
|
-
- **
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
- **
|
|
96
|
-
- **
|
|
97
|
-
- **
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
### Neutral Scale
|
|
101
|
-
- **Gray 800** (`#333333`): Strong labels, dark button fill (login chip `#333`).
|
|
102
|
-
- **Gray 700** (`#555555`): Secondary headings, emphasized labels.
|
|
103
|
-
- **Gray 600** (`#6f6f6f`): Body secondary text, descriptions, metadata (observed `rgb(111,111,111)`).
|
|
104
|
-
- **Gray 500** (`#8b8b8b`): Caption text, secondary labels (observed `rgb(139,139,139)`).
|
|
105
|
-
- **Gray 400** (`#c1c1c1`): Placeholder text, disabled icons (observed `rgb(193,193,193)`).
|
|
106
|
-
- **Gray 200** (`#ececec`): Default border, dividers (observed `rgb(236,236,236)`).
|
|
107
|
-
- **Gray 100** (`#f2f2f2`): Secondary background, section fill, card fill.
|
|
108
|
-
- **Gray 50** (`#f7f7f7`): Lightest surface fill for nested sections.
|
|
109
|
-
|
|
110
|
-
### Surface & Overlays
|
|
111
|
-
- **Surface Fill**: `#f2f2f2`. Section backgrounds, feed separators, image placeholders.
|
|
112
|
-
- **Scrim Dark**: `rgba(0,0,0,0.3)`. Image overlays, cover-gradient veils, modal scrim.
|
|
113
|
-
- **Scrim Light**: `rgba(0,0,0,0.15)`. Subtle dividers over imagery.
|
|
95
|
+
### Observed public surfaces
|
|
96
|
+
|
|
97
|
+
- **Primary ink** (`#242424`): high-confidence computed text and border colour on the public home and B2B route.
|
|
98
|
+
- **Canvas** (`#FFFFFF`): high-confidence public page and B2B list-card surface.
|
|
99
|
+
- **Subtle surface** (`#F7F7F7`): observed on the home `skeleton__SkeletonCard` specimen.
|
|
100
|
+
- **Muted text** (`#6F6F6F`): observed home secondary copy.
|
|
101
|
+
- **Divider / pale surface** (`#ECECEC`): observed home background occurrence; its precise component role was not captured.
|
|
102
|
+
- **Home hero overlay** (`rgba(0,0,0,0.3)`): observed only on the carousel play and pagination controls.
|
|
103
|
+
- **B2B campaign action** (`#FEF08C`): observed only on `surface-2::[data-omd-capture="1"]`; it is marketing-route evidence, not a universal product CTA token.
|
|
104
|
+
|
|
105
|
+
The prior `#1B6DDA` “reading blue,” coral, yellow, and inferred semantic palette are not retained as current machine tokens: the supplied 2026 capture does not corroborate them as reusable public product roles. A single low-frequency `#A451F7` home observation is likewise insufficient to promote a brand-accent token.
|
|
114
106
|
|
|
115
107
|
## 3. Typography Rules
|
|
116
108
|
|
|
117
|
-
###
|
|
118
|
-
|
|
119
|
-
- **
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
|
127
|
-
|
|
|
128
|
-
|
|
|
129
|
-
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
| Caption | Pretendard | 13px | 400 | 18px | -0.2px | Author / publisher, review counts |
|
|
133
|
-
| Caption Bold | Pretendard | 13px | 700 | 18px | -0.2px | Badge / tag labels |
|
|
134
|
-
| Micro | Pretendard | 12px | 500 | 16px | -0.2px | Fine print, control labels |
|
|
135
|
-
|
|
136
|
-
### Principles
|
|
137
|
-
- **Comfortable browsing scale**: Body sits at 14-16px with generous leading — the system assumes evening phone browsing, not dense data scanning.
|
|
138
|
-
- **Three weights**: 400 (body), 600 (tabs / titles), 700 (headings / emphasis). Light is avoided on Korean glyphs.
|
|
139
|
-
- **Warm dark, not pure black**: Headings and body use `#242424`, a warm near-black, to feel inviting rather than clinical. Pure `#000` is reserved for high-contrast moments.
|
|
140
|
-
- **Tight Korean tracking**: `-0.2px` to `-0.4px` letter-spacing for editorial compactness on titles.
|
|
141
|
-
- **Covers carry color, type stays neutral**: Type tokens avoid the brand blue except on links and tab labels — the book cover is the chromatic event.
|
|
109
|
+
### Evidence classes
|
|
110
|
+
|
|
111
|
+
- **Live computed surface-use:** `Pretendard Variable` appears in 176 visible public-surface observations across body, list, button, card, and heading roles. The supplied FontFaceSet reports it loaded with high confidence and 29 Millie CloudFront subset source URLs. It is the sole UI-family token in this reference.
|
|
112
|
+
- **Official distributed font and licence:** the upstream Pretendard documentation describes its variable webfont distribution, and its upstream LICENSE is SIL Open Font License 1.1. Those sources describe the font asset and licence; Millie use is established separately by the supplied computed, loaded, and source evidence.
|
|
113
|
+
- **Declared-only:** `__notoSerif_ef2586`, `__notoSerif_Fallback_ef2586`, `icon`, `Pretendard Fallback`, `Pretendard Fallback Android`, and `swiper-icons` were declared with zero visible use. They are not UI-family tokens or specimens.
|
|
114
|
+
- **Unresolved:** one visible `Pretendard` computed observation has no matching loaded FontFace/source corroboration. It remains unresolved rather than being merged with Pretendard Variable.
|
|
115
|
+
|
|
116
|
+
| Role | Size | Weight | Line height | Surface provenance |
|
|
117
|
+
|---|---:|---:|---:|---|
|
|
118
|
+
| Body / list text | 14px | 400 | 24px | Public home text/body specimens |
|
|
119
|
+
| Large B2B heading | 44px | 700 | 54px | Public B2B body specimen |
|
|
120
|
+
| B2B section heading | 28px | 700 | 38px | Public B2B `h2` specimen |
|
|
121
|
+
| Compact home utility | 12px | 400 | 18px | `home::[data-omd-capture="10"]` |
|
|
122
|
+
|
|
123
|
+
Do not render a declared Noto Serif, icon font, fallback family, or the uncorroborated `Pretendard` observation as an observed Millie product font.
|
|
142
124
|
|
|
143
125
|
## 4. Component Stylings
|
|
144
126
|
|
|
145
|
-
###
|
|
146
|
-
|
|
147
|
-
**
|
|
148
|
-
- Background:
|
|
149
|
-
- Text:
|
|
150
|
-
- Border: none
|
|
151
|
-
- Radius: 8px
|
|
152
|
-
- Padding: 14px 20px
|
|
153
|
-
- Font: 16px / 700 / Pretendard
|
|
154
|
-
- Hover: `#1860c2`
|
|
155
|
-
- Pressed: `#1554ad`
|
|
156
|
-
- Disabled: `#c1c1c1` background, `#ffffff` text
|
|
157
|
-
- Use: Primary subscription CTA -- `무료체험 시작하기`, `구독하기`, `읽기`
|
|
158
|
-
|
|
159
|
-
**Dark (Neutral Solid)**
|
|
160
|
-
- Background: `#333333`
|
|
161
|
-
- Text: `#ffffff`
|
|
162
|
-
- Border: none
|
|
127
|
+
### Home utility button
|
|
128
|
+
|
|
129
|
+
**Observed default**
|
|
130
|
+
- Background: #333333
|
|
131
|
+
- Text: #FFFFFF
|
|
163
132
|
- Radius: 4px
|
|
164
133
|
- Padding: 0px 12px
|
|
165
|
-
- Font: 12px / 400 / Pretendard
|
|
166
|
-
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
-
|
|
172
|
-
-
|
|
173
|
-
-
|
|
174
|
-
-
|
|
175
|
-
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
- Background: `#f2f2f2`
|
|
181
|
-
- Text: `#333333`
|
|
182
|
-
- Border: none
|
|
183
|
-
- Radius: 8px
|
|
184
|
-
- Padding: 12px 16px
|
|
185
|
-
- Font: 14px / 500 / Pretendard
|
|
186
|
-
- Hover: `#ececec` background
|
|
187
|
-
- Use: Tertiary actions -- share, filter open, more options
|
|
188
|
-
|
|
189
|
-
### Inputs
|
|
190
|
-
|
|
191
|
-
**Default**
|
|
192
|
-
- Background: `#ffffff`
|
|
193
|
-
- Text: `#242424`
|
|
194
|
-
- Border: 1px solid `#ececec`
|
|
195
|
-
- Radius: 8px
|
|
196
|
-
- Padding: 12px 14px
|
|
197
|
-
- Font: 14px / 400 / Pretendard
|
|
198
|
-
- Placeholder: `#c1c1c1`
|
|
199
|
-
- Focus: 1px solid `#1b6dda`
|
|
200
|
-
- Use: Default text input -- login, search-detail forms
|
|
201
|
-
|
|
202
|
-
**Search**
|
|
203
|
-
- Background: `#f2f2f2`
|
|
204
|
-
- Text: `#242424`
|
|
205
|
-
- Border: none
|
|
206
|
-
- Radius: 8px
|
|
207
|
-
- Padding: 12px 16px 12px 40px (left-pad for inline magnifier)
|
|
208
|
-
- Font: 14px / 400 / Pretendard
|
|
209
|
-
- Placeholder: `#8b8b8b` ("제목, 저자, 출판사 검색")
|
|
210
|
-
- Focus: `#ffffff` background, 1px solid `#1b6dda` border
|
|
211
|
-
- Use: Header / discovery search bar
|
|
212
|
-
|
|
213
|
-
**Error**
|
|
214
|
-
- Background: `#ffffff`
|
|
215
|
-
- Text: `#242424`
|
|
216
|
-
- Border: 1px solid `#ff5b4f`
|
|
217
|
-
- Radius: 8px
|
|
218
|
-
- Padding: 12px 14px
|
|
219
|
-
- Font: 14px / 400 / Pretendard
|
|
220
|
-
- Use: Form validation failure -- helper text 13px/400 `#ff5b4f` below
|
|
221
|
-
|
|
222
|
-
### Cards
|
|
223
|
-
|
|
224
|
-
**Book Cover Tile**
|
|
225
|
-
- Background: `#f2f2f2` (placeholder behind cover art)
|
|
226
|
-
- Border: none
|
|
227
|
-
- Radius: 6px
|
|
228
|
-
- Padding: 0px on cover; 8px gap to title/author metadata
|
|
229
|
-
- Image: portrait cover (~2:3), 6px radius, soft `0px 2px 8px rgba(0,0,0,0.08)` shadow
|
|
230
|
-
- Use: Default book unit in the feed grid -- the primary content surface
|
|
231
|
-
|
|
232
|
-
**Feed Card (Editorial)**
|
|
233
|
-
- Background: `#ffffff` (or full-bleed cover-derived gradient)
|
|
234
|
-
- Border: none
|
|
235
|
-
- Radius: 12px
|
|
236
|
-
- Padding: 0px (image) / 16px (text block)
|
|
237
|
-
- Shadow: none
|
|
238
|
-
- Use: Curated "투데이" feed promotions, original-content banners
|
|
239
|
-
|
|
240
|
-
**Audiobook Card**
|
|
241
|
-
- Background: `#ffffff`
|
|
242
|
-
- Border: 1px solid `#ececec`
|
|
243
|
-
- Radius: 12px
|
|
244
|
-
- Padding: 16px
|
|
245
|
-
- Use: Audiobook entry with play affordance -- purple `#a451f7` play-button accent
|
|
246
|
-
|
|
247
|
-
### Badges & Tags
|
|
248
|
-
|
|
249
|
-
**Category Tab (Active)**
|
|
250
|
-
- Background: `#333333`
|
|
251
|
-
- Text: `#ffffff`
|
|
252
|
-
- Border: none
|
|
253
|
-
- Radius: 10px
|
|
254
|
-
- Padding: 0px 10px
|
|
255
|
-
- Font: 14px / 600 / Pretendard
|
|
256
|
-
- Height: 32px
|
|
257
|
-
- Use: Active genre/category filter ("종합", "소설", "경제경영")
|
|
258
|
-
|
|
259
|
-
**Category Tab (Inactive)**
|
|
260
|
-
- Background: `#f2f2f2`
|
|
261
|
-
- Text: `#6f6f6f`
|
|
262
|
-
- Border: none
|
|
263
|
-
- Radius: 10px
|
|
264
|
-
- Padding: 0px 10px
|
|
265
|
-
- Font: 14px / 400 / Pretendard
|
|
266
|
-
- Height: 32px
|
|
267
|
-
- Use: Inactive genre/category filter
|
|
268
|
-
|
|
269
|
-
**Original Tag (Purple)**
|
|
270
|
-
- Background: `#a451f7`
|
|
271
|
-
- Text: `#ffffff`
|
|
272
|
-
- Border: none
|
|
273
|
-
- Radius: 4px
|
|
274
|
-
- Padding: 3px 6px
|
|
275
|
-
- Font: 11px / 700 / Pretendard
|
|
276
|
-
- Use: "밀리 오리지널" original-content flag
|
|
277
|
-
|
|
278
|
-
**Promotion Tag (Coral)**
|
|
279
|
-
- Background: `#ff5b4f`
|
|
280
|
-
- Text: `#ffffff`
|
|
281
|
-
- Border: none
|
|
282
|
-
- Radius: 4px
|
|
283
|
-
- Padding: 3px 6px
|
|
284
|
-
- Font: 11px / 700 / Pretendard
|
|
285
|
-
- Use: "오늘만", time-limited promotion flag. Used scarcely.
|
|
286
|
-
|
|
287
|
-
**Rating (Yellow)**
|
|
288
|
-
- Background: transparent
|
|
289
|
-
- Text: `#ffc004` (star fill) + `#6f6f6f` (count)
|
|
290
|
-
- Border: none
|
|
291
|
-
- Radius: 0px
|
|
292
|
-
- Padding: 0px
|
|
293
|
-
- Font: 13px / 400 / Pretendard
|
|
294
|
-
- Use: Star rating + review count on book detail
|
|
295
|
-
|
|
296
|
-
### Pill Control
|
|
297
|
-
|
|
298
|
-
**Floating Pill (Scrim)**
|
|
299
|
-
- Background: `rgba(0,0,0,0.3)`
|
|
300
|
-
- Text: `#ffffff`
|
|
301
|
-
- Border: none
|
|
134
|
+
- Font: 12px / 400 / Pretendard Variable
|
|
135
|
+
- Use: `home::[data-omd-capture="10"]`, class `button__Button-sc-746c0757-0 HMzlI button`; 80px × 32px in the supplied home capture.
|
|
136
|
+
|
|
137
|
+
### Home hero controls
|
|
138
|
+
|
|
139
|
+
**Play control — observed default**
|
|
140
|
+
- Background: rgba(0,0,0,0.3)
|
|
141
|
+
- Radius: 100px
|
|
142
|
+
- Padding: 8px
|
|
143
|
+
- Font: 16px / 400 / Pretendard Variable
|
|
144
|
+
- Use: `home::[data-omd-capture="21"]`, class `styled__PlayButtonContainer-sc-aeee1130-0 hNymXJ`; 32px × 32px over the home hero.
|
|
145
|
+
|
|
146
|
+
**Pagination control — observed default**
|
|
147
|
+
- Background: rgba(0,0,0,0.3)
|
|
148
|
+
- Text: #FFFFFF
|
|
302
149
|
- Radius: 100px
|
|
303
150
|
- Padding: 4px 10px
|
|
304
|
-
- Font: 16px / 400 / Pretendard
|
|
305
|
-
- Use: "
|
|
151
|
+
- Font: 16px / 400 / Pretendard Variable
|
|
152
|
+
- Use: `home::[data-omd-capture="22"]`, class `styled__PaginationButtonContainer-sc-b710220-0 bcMcRo`; 76px × 32px over the home hero.
|
|
306
153
|
|
|
307
|
-
###
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
-
|
|
154
|
+
### Home content and skeleton shells
|
|
155
|
+
|
|
156
|
+
**Hero slide — observed default**
|
|
157
|
+
- Radius: 20px
|
|
158
|
+
- Use: `home::li`, class `styled__HeroBannerSwiperSlide-sc-e42f00ea-4 gvJwhy`; 1392px × 400px in the supplied desktop capture.
|
|
159
|
+
|
|
160
|
+
**Skeleton card — captured shell only**
|
|
161
|
+
- Background: #F7F7F7
|
|
162
|
+
- Radius: 16px
|
|
163
|
+
- Padding: 45px 24px 30px
|
|
164
|
+
- Use: `home::div`, class `skeleton__SkeletonCard-sc-3613fd6a-1 gSdwRh`; five occurrences. The raw class name is preserved as provenance, but the collector records no loading-state event, animation, or skeleton timing.
|
|
165
|
+
|
|
166
|
+
### B2B marketing examples
|
|
167
|
+
|
|
168
|
+
**Benefit card — observed default**
|
|
169
|
+
- Background: #FFFFFF
|
|
170
|
+
- Radius: 10px
|
|
171
|
+
- Padding: 16px 24px
|
|
172
|
+
- Font: 14px / 400 / Pretendard Variable
|
|
173
|
+
- Use: `surface-2::li`; three B2B marketing-list occurrences.
|
|
174
|
+
|
|
175
|
+
**B2B campaign action — observed default**
|
|
176
|
+
- Background: #FEF08C
|
|
177
|
+
- Radius: 4px
|
|
178
|
+
- Shadow: 0px 4px 16px rgba(0,0,0,0.22)
|
|
179
|
+
- Font: 16px / 400 / Pretendard Variable
|
|
180
|
+
- Use: `surface-2::[data-omd-capture="1"]`, HubSpot CTA placeholder; 318px × 56px. This is route-local B2B marketing evidence, not a consumer or app button contract.
|
|
181
|
+
|
|
182
|
+
The capture has `interactionCount: 0`, `interactionKinds: 0`, and no recorded state variants. No hover, focus, pressed, disabled, error, dialog, menu, toast, input, search, subscription, reader, or card interaction state is specified.
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
**Verified:** 2026-07-13
|
|
186
|
+
**Tier 1 sources:** https://www.millie.co.kr/; https://www.millie.co.kr/v4/brand/b2b; https://company.millie.co.kr/business/; https://10th.millie.co.kr/; https://company.millie.co.kr/careers/; https://github.com/orioncactus/pretendard/blob/main/packages/pretendard/docs/en/README.md; https://github.com/orioncactus/pretendard/blob/main/LICENSE
|
|
187
|
+
**Tier 2 sources:** https://getdesign.md/millie (attempted via built-in web; internal/safe-open error and no indexed Millie record); https://styles.refero.design/?q=millie (attempted via built-in web; internal/safe-open error and no indexed Millie style record)
|
|
188
|
+
**Conflicts unresolved:** none
|
|
189
|
+
|
|
190
|
+
The prior reference’s blue CTA system, content-tag palette, inferred inputs, book cards, shadows, states, motion, and reader flows were not corroborated by the supplied current capture and have been removed rather than carried forward as plausible defaults.
|
|
311
191
|
|
|
312
192
|
## 5. Layout Principles
|
|
313
193
|
|
|
314
|
-
|
|
315
|
-
- Base unit: 4px
|
|
316
|
-
- Scale: 4px, 8px, 12px, 16px, 20px, 24px, 32px, 40px, 56px
|
|
317
|
-
- Global gutter (mobile): 16px each side
|
|
318
|
-
- Global gutter (desktop): 20-24px each side, max content width ~1080px
|
|
319
|
-
- Inter-cover horizontal spacing: 12px between covers in a shelf carousel
|
|
320
|
-
- Inter-section vertical spacing: 32-40px between feed sections on "투데이"
|
|
321
|
-
|
|
322
|
-
### Grid & Container
|
|
323
|
-
- Mobile: horizontal cover carousels (3-3.5 covers visible) stacked vertically into feed sections
|
|
324
|
-
- Tablet: 4-5 covers per shelf
|
|
325
|
-
- Desktop: 6-7 covers per shelf, centered ~1080px column
|
|
326
|
-
- The feed is the homepage -- a vertical stack of horizontally-scrolling shelves, streaming-service style
|
|
327
|
-
- Detail pages: single-column, cover + metadata + description + reviews
|
|
328
|
-
|
|
329
|
-
### Whitespace Philosophy
|
|
330
|
-
- **Covers breathe in shelves**: Horizontal gaps between covers (12px) and vertical gaps between shelves (32-40px) are the system's primary rhythm.
|
|
331
|
-
- **Comfortable, not dense**: Evening phone browsing earns generous leading and section gaps — Millie is a leisure habit, not a productivity tool.
|
|
332
|
-
- **Let the cover lead**: Chrome padding stays minimal so the cover art dominates each tile.
|
|
333
|
-
|
|
334
|
-
### Border Radius Scale
|
|
335
|
-
- Subtle (4px): Buttons (dark/compact), small tags
|
|
336
|
-
- Standard (6px): Book cover tiles
|
|
337
|
-
- Comfortable (8px): Primary buttons, inputs, neutral chips
|
|
338
|
-
- Soft (10px): Category tabs
|
|
339
|
-
- Large (12px): Feed cards, audiobook cards
|
|
340
|
-
- Pill (100px): Floating scrim controls, carousel indicators
|
|
194
|
+
The supplied capture is desktop evidence only. On the home route it records a 1392px × 400px hero slide and 32px-high overlay controls; it also records 12px gaps on some article rows. The B2B page records 297px-wide benefit-list items and a 318px × 56px CTA. These isolated measurements do not establish a universal grid, shelf layout, product-reader page, mobile breakpoint, or signed-in library composition.
|
|
341
195
|
|
|
342
196
|
## 6. Depth & Elevation
|
|
343
197
|
|
|
344
|
-
|
|
345
|
-
|-------|-----------|-----|
|
|
346
|
-
| Flat (Level 0) | No shadow | Page background, feed sections, default chrome |
|
|
347
|
-
| Cover (Level 1) | `0px 2px 8px rgba(0,0,0,0.08)` | Book cover tiles — the signature lift that makes covers feel physical |
|
|
348
|
-
| Soft (Level 2) | `0px 2px 12px rgba(0,0,0,0.10)` | Sticky header on scroll, dropdown menus |
|
|
349
|
-
| Floating (Level 3) | `0px 4px 16px rgba(0,0,0,0.12)` | Bottom sheets, modal dialogs, snackbar |
|
|
350
|
-
|
|
351
|
-
**Shadow Philosophy**: Millie's signature elevation is the soft drop-shadow under each book cover — it makes a flat thumbnail feel like a physical book on a shelf, the one place the system spends shadow generously. Elsewhere, shadows are restrained and neutral (pure-black low-opacity), reserved for elements that must detach from the feed. No brand-tinted shadows.
|
|
198
|
+
The public home controls and captured cards report no box shadow. The B2B campaign CTA alone carries `0px 4px 16px rgba(0,0,0,0.22)`. No modal, drawer, popover, menu, or cross-surface elevation scale was captured, so the B2B shadow is not generalized.
|
|
352
199
|
|
|
353
200
|
## 7. Do's and Don'ts
|
|
354
201
|
|
|
355
202
|
### Do
|
|
356
|
-
|
|
357
|
-
-
|
|
358
|
-
-
|
|
359
|
-
-
|
|
360
|
-
-
|
|
361
|
-
- Build a cover-forward feed of horizontal shelves — streaming-service posture
|
|
362
|
-
- Keep type comfortable (14-16px) with generous leading for evening browsing
|
|
203
|
+
|
|
204
|
+
- Keep `#242424`, white, `#F7F7F7`, and `#6F6F6F` tied to their recorded public-surface roles.
|
|
205
|
+
- Use Pretendard Variable only where its computed, loaded, and source evidence supports it.
|
|
206
|
+
- Preserve translucent, fully rounded carousel controls as home-hero specimens.
|
|
207
|
+
- Keep B2B benefit cards and the yellow HubSpot CTA explicitly separate from consumer product claims.
|
|
363
208
|
|
|
364
209
|
### Don't
|
|
365
|
-
|
|
366
|
-
-
|
|
367
|
-
-
|
|
368
|
-
-
|
|
369
|
-
-
|
|
370
|
-
- Don't drop the cover shadow — flat covers lose the physical-book warmth
|
|
371
|
-
- Don't mix sharp 0px corners into chrome — the system is consistently rounded
|
|
210
|
+
|
|
211
|
+
- Restore the prior blue CTA or promotional palette without current selector-level evidence.
|
|
212
|
+
- Promote declared Noto Serif, icon, fallback, or unresolved font observations into a UI family.
|
|
213
|
+
- Generate reader, checkout, search, library, subscription, or mobile-app components from this public marketing capture.
|
|
214
|
+
- Invent hover, focus, pressed, disabled, error, loading, toast, modal, or responsive states.
|
|
372
215
|
|
|
373
216
|
## 8. Responsive Behavior
|
|
374
217
|
|
|
375
|
-
|
|
376
|
-
| Name | Width | Key Changes |
|
|
377
|
-
|------|-------|-------------|
|
|
378
|
-
| Mobile | <768px | Vertical feed of horizontal cover shelves, bottom tab bar |
|
|
379
|
-
| Tablet | 768-1024px | More covers per shelf, optional side margins |
|
|
380
|
-
| Desktop | >1024px | Centered ~1080px column, 6-7 covers per shelf, top nav |
|
|
381
|
-
|
|
382
|
-
### Touch Targets
|
|
383
|
-
- Primary CTA buttons: 48px height
|
|
384
|
-
- Category tabs: 32px height
|
|
385
|
-
- Bottom tab bar items: 56px height
|
|
386
|
-
- Book cover tile: full cover + metadata tap area
|
|
387
|
-
|
|
388
|
-
### Collapsing Strategy
|
|
389
|
-
- Desktop multi-shelf grid → mobile single-column vertical feed of carousels
|
|
390
|
-
- Filter side-rail → mobile bottom-sheet filter
|
|
391
|
-
- Reader (book content) view collapses to full-screen single-column with adjustable type
|
|
392
|
-
|
|
393
|
-
### Image Behavior
|
|
394
|
-
- Book covers: ~2:3 portrait, 6px radius, soft shadow, lazy-loaded with `#f2f2f2` placeholder
|
|
395
|
-
- Editorial banners: 16:9 or full-bleed, gradient scrim for text legibility
|
|
396
|
-
- Author / publisher logos: square 1:1, small
|
|
218
|
+
No responsive viewport comparison was supplied. The desktop dimensions above must not be scaled into mobile, tablet, native-app, or e-ink-reader layout rules.
|
|
397
219
|
|
|
398
220
|
## 9. Agent Prompt Guide
|
|
399
221
|
|
|
400
|
-
|
|
401
|
-
- Primary CTA: Reading Blue (`#1b6dda`)
|
|
402
|
-
- CTA Hover: Blue Dark (`#1860c2`)
|
|
403
|
-
- Background: Pure White (`#ffffff`)
|
|
404
|
-
- Surface fill: Gray 100 (`#f2f2f2`)
|
|
405
|
-
- Heading text: Warm Near-Black (`#242424`)
|
|
406
|
-
- Body secondary: Gray 600 (`#6f6f6f`)
|
|
407
|
-
- Caption: Gray 500 (`#8b8b8b`)
|
|
408
|
-
- Placeholder: Gray 400 (`#c1c1c1`)
|
|
409
|
-
- Border: Gray 200 (`#ececec`)
|
|
410
|
-
- Original tag: Purple (`#a451f7`)
|
|
411
|
-
- Promotion tag: Coral (`#ff5b4f`)
|
|
412
|
-
- Rating: Yellow (`#ffc004`)
|
|
413
|
-
|
|
414
|
-
### Example Component Prompts
|
|
415
|
-
- "Create a Millie book cover tile: ~2:3 portrait cover with 6px radius and 0px 2px 8px rgba(0,0,0,0.08) shadow on #f2f2f2 placeholder. Below: 8px gap, title 14px Pretendard 600 #242424 (2 lines, ellipsis), 2px gap, author 13px 400 #6f6f6f. Optional purple 밀리 오리지널 tag, 11px/700 #fff on #a451f7, 4px radius."
|
|
416
|
-
- "Build a primary subscription CTA: #1b6dda background, white text, 16px weight 700 Pretendard, padding 14px 20px, 8px radius, full-width. Hover #1860c2. Label '무료체험 시작하기'."
|
|
417
|
-
- "Design a category tab bar: horizontal scroll, 8px gap, 32px height. Active: #333 bg, white 14px/600, 10px radius, 0 10px padding. Inactive: #f2f2f2 bg, #6f6f6f 14px/400."
|
|
418
|
-
- "Create a Millie '투데이' feed section: 22px/700 #242424 section title, 12px gap, horizontal carousel of book cover tiles, 12px inter-cover gap, 32-40px gap to next section."
|
|
419
|
-
- "Design a floating carousel control: rgba(0,0,0,0.3) bg, white 16px text, 100px radius, 4px 10px padding, '자동 재생 중지' label."
|
|
420
|
-
|
|
421
|
-
### Iteration Guide
|
|
422
|
-
1. Reading blue `#1b6dda` is the interactive accent — CTA, active tab, links
|
|
423
|
-
2. Body and headings are warm `#242424`, never pure `#000`
|
|
424
|
-
3. Book covers carry the color; chrome stays neutral white / `#f2f2f2`
|
|
425
|
-
4. Secondary accents (purple/coral/yellow) organize content, used scarcely
|
|
426
|
-
5. Radius scale: 4px tags, 6px covers, 8px buttons, 10px tabs, 12px feed cards, 100px pills
|
|
427
|
-
6. Cover tiles get the signature soft shadow — flat covers lose the physical warmth
|
|
428
|
-
7. Comfortable 14-16px type, generous leading — evening phone browsing posture
|
|
429
|
-
|
|
430
|
-
---
|
|
222
|
+
Use this reference narrowly: “Create a Millie public-home hero pagination control with a translucent `rgba(0,0,0,0.3)` background, white 16px/400 Pretendard Variable text, 100px radius, and `4px 10px` padding. Do not add interaction states.” For the compact home utility specimen, use `#333333`, white 12px/400 text, 4px radius, and `0px 12px` padding. Do not use this evidence to generate a signed-in reading or payment flow.
|
|
431
223
|
|
|
432
224
|
## 10. Voice & Tone
|
|
433
225
|
|
|
434
|
-
Millie
|
|
226
|
+
Millie’s official tenth-anniversary material describes a decade spent making reading more enjoyable and ordinary; its B2B page frames the service as access to reading content and recommendations for employee benefits. That supports warm, direct, reading-oriented public copy, but does not establish a complete product microcopy system.
|
|
435
227
|
|
|
436
|
-
| Context |
|
|
228
|
+
| Context | Supported direction |
|
|
437
229
|
|---|---|
|
|
438
|
-
|
|
|
439
|
-
|
|
|
440
|
-
|
|
|
441
|
-
| Empty states | Gentle + suggestion (`아직 담은 책이 없어요` + `책 둘러보기`). Never `데이터가 없습니다`. |
|
|
442
|
-
| Error messages | Blameless + actionable (`잠시 후 다시 시도해 주세요`). No `오류가 발생했습니다` boilerplate. |
|
|
443
|
-
| Reading completion | Celebratory but quiet (`완독을 축하해요!`). |
|
|
444
|
-
| Notifications | Habit nudges (`오늘 5분만 읽어볼까요?`), low-frequency, friendly. |
|
|
445
|
-
|
|
446
|
-
**Forbidden phrases.** `지금 결제 안 하면 손해`, `마지막 기회!!!`, `데이터가 없습니다`, `오류가 발생했습니다`, `불편을 드려 죄송합니다`. The brand avoids high-pressure urgency — it sells a calm habit, not a flash deal. Emoji are allowed sparingly in habit nudges and completion celebrations, never in error states or paywall copy.
|
|
447
|
-
|
|
448
|
-
**Voice samples.**
|
|
449
|
-
|
|
450
|
-
- `독서와 무제한 친해지리` — Google Play subtitle / brand positioning. <!-- cited: play.google.com Millie listing, 2026-05 -->
|
|
451
|
-
- `당신의 일상을 1밀리+` — brand campaign slogan playing on the brand name. <!-- cited: millie.insight.wanted.co.kr, 2026-05 -->
|
|
452
|
-
- `밀리 오리지널` — original-content section label. <!-- illustrative: standard Millie content-category pattern -->
|
|
453
|
-
- `완독을 축하해요!` — reading-completion celebration. <!-- illustrative: standard Millie habit-loop pattern -->
|
|
454
|
-
- `무료체험 시작하기` — primary subscription CTA. <!-- illustrative: standard Millie CTA pattern -->
|
|
230
|
+
| Public reading discovery | Invite exploration in plain, encouraging language. |
|
|
231
|
+
| B2B benefit page | Explain access, content breadth, and workplace use directly. |
|
|
232
|
+
| Reader, account, payment, or error copy | Unresolved in this capture; do not manufacture a house voice. |
|
|
455
233
|
|
|
456
234
|
## 11. Brand Narrative
|
|
457
235
|
|
|
458
|
-
Millie
|
|
459
|
-
|
|
460
|
-
The company grew into the dominant Korean reading-subscription platform and was acquired by **KT** (operated as ㈜kt 밀리의서재), anchoring it inside a major Korean telecom while it expanded into original content, audiobooks, and "밀리 오리지널" exclusives ([millie.town — corporate](https://www.millie.town/)). The brand voice and campaign work consistently lean into the idea of reading as a small, compounding daily habit — captured in the slogan *"당신의 일상을 1밀리+"*, which turns the brand name into a unit of incremental daily growth ([millie.insight.wanted.co.kr](https://millie.insight.wanted.co.kr/)).
|
|
236
|
+
Millie’s official tenth-anniversary page says the company was founded in 2016 and began an e-book subscription service, asking how reading could become more enjoyable. Its company business page describes the present platform as offering 240,000 reading-content titles across e-books, audio formats, chat books, web novels, and webtoons (figures stated there as of May 2026). Together, these sources describe an expansion from subscription e-books to a wider digital-reading catalogue.
|
|
461
237
|
|
|
462
|
-
|
|
238
|
+
The supplied public capture shows only a home surface and B2B marketing page within that story. It does not establish the design of the signed-in library or reader. The public visual record here is therefore deliberately limited to content-led home chrome, a B2B marketing treatment, and the loaded webfont evidence.
|
|
463
239
|
|
|
464
240
|
## 12. Principles
|
|
465
241
|
|
|
466
|
-
1. **
|
|
467
|
-
2. **
|
|
468
|
-
3. **
|
|
469
|
-
4. **
|
|
470
|
-
5. **Reading blue is interaction, not decoration.** `#1b6dda` marks tappable elements — CTA, active tab, links. *UI implication:* if blue appears on a non-interactive surface, it has drifted; restate as neutral or a secondary content accent.
|
|
471
|
-
6. **A streaming posture for books.** Horizontal cover shelves, autoplay banners, personalized rows — the video-platform pattern reimagined for reading. *UI implication:* default to shelf carousels stacked vertically, not a flat paginated grid.
|
|
242
|
+
1. **Make reading approachable.** Millie’s anniversary material emphasizes making reading part of ordinary life. *UI implication:* public discovery copy can be welcoming and direct, but unobserved reader interactions remain unspecified.
|
|
243
|
+
2. **Let content explain breadth.** The company describes multiple reading and listening formats. *UI implication:* do not collapse that editorial breadth into an invented generic book-card system.
|
|
244
|
+
3. **Separate service audiences.** B2B benefits and public consumer discovery share a brand but are different source domains. *UI implication:* the yellow B2B CTA must not become a universal consumer control.
|
|
245
|
+
4. **Preserve evidence boundaries.** Font, colour, and component claims require their own surface provenance. *UI implication:* do not use company narrative or upstream licence text to fill missing UI states or tokens.
|
|
472
246
|
|
|
473
247
|
## 13. Personas
|
|
474
248
|
|
|
475
|
-
|
|
249
|
+
These are first-party stakeholder groups, not fictional personas.
|
|
476
250
|
|
|
477
|
-
|
|
251
|
+
**Readers seeking a broad digital catalogue.** Millie’s company page names e-books, audio content, chat books, web novels, and webtoons as available formats. The capture does not reveal their signed-in reading workflow.
|
|
478
252
|
|
|
479
|
-
|
|
253
|
+
**Employer and organisation benefit teams.** The B2B page positions the service for workplace welfare and development, including reading-related information for employees. Its captured marketing controls remain B2B-specific.
|
|
480
254
|
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
**민재 (Minjae), 28, Busan.** Software engineer. Skeptical of subscription creep but kept Millie because the unlimited model means he never hesitates to start a book he might abandon. Reads fiction in the reader view with a custom type size and a warm sepia background.
|
|
255
|
+
**Millie’s product and company teams.** The careers page describes people working across customer experience, service planning, content, design, development, marketing, and operations. This is organisational context, not evidence of internal tool UI.
|
|
484
256
|
|
|
485
257
|
## 14. States
|
|
486
258
|
|
|
487
|
-
|
|
488
|
-
|---|---|
|
|
489
|
-
| **Empty (empty 내 서재)** | Single gentle line (`아직 담은 책이 없어요`) in 14px/400 `#6f6f6f`, 12px gap, primary-blue CTA `책 둘러보기`. No harsh empty illustration — optionally a soft small graphic. |
|
|
490
|
-
| **Empty (search no results)** | One line `'{검색어}'에 대한 결과가 없어요` in 14px/400 `#6f6f6f`, then recommended shelves below. Never a full-screen dead-end. |
|
|
491
|
-
| **Empty (filter cleared)** | `조건에 맞는 책이 없어요` in 14px/400 `#8b8b8b`. No CTA — user adjusts filters. |
|
|
492
|
-
| **Loading (feed)** | Skeleton shelves at `#f2f2f2`: cover-rectangle placeholders in a row, two short text lines below each. Shimmer 1.2s, 6% white highlight. No spinner overlay. |
|
|
493
|
-
| **Loading (cover art)** | `#f2f2f2` placeholder rectangle at the cover's 2:3 ratio with 6px radius until the image resolves. |
|
|
494
|
-
| **Loading (subscribe action)** | Primary button text swaps to a 24px `#ffffff` spinner on the `#1b6dda` button — geometry unchanged for frame-stability. |
|
|
495
|
-
| **Error (inline form)** | Input border becomes `#ff5b4f` 1px, helper text 13px/400 `#ff5b4f` below. One actionable sentence (`이메일을 다시 확인해 주세요`). |
|
|
496
|
-
| **Error (toast)** | `#242424` background, white 14px/500 text, 8px radius, 3s auto-dismiss. Bottom of screen, 16px above bottom tab bar. One sentence. No icon. |
|
|
497
|
-
| **Error (network / blocking)** | Centered: 16px/700 `#242424` headline (`연결이 불안정해요`), 14px/400 `#6f6f6f` subline, retry button in primary-blue style. |
|
|
498
|
-
| **Success (added to library)** | Bottom snackbar: `#242424` bg, white 14px/500 `내 서재에 담았어요`, blue-text `보러가기` button on right. 3s auto-dismiss. |
|
|
499
|
-
| **Success (book completed)** | Quiet celebration screen / sheet: `완독을 축하해요!` 22px/700 `#242424`, completion stat, optional share. Low-key, not confetti-heavy. |
|
|
500
|
-
| **Skeleton** | `#f2f2f2` blocks at exact cover and text dimensions. Shimmer 1.2s. Title and author slots blank until resolved. |
|
|
501
|
-
| **Disabled** | Button bg drops to `#c1c1c1`, text stays `#ffffff`. No outline tricks. |
|
|
259
|
+
No state system is established. The raw capture records zero interaction expansions and zero observed states. It includes elements whose class names contain `skeleton`, but does not record a loading event, timing, animation, or transition; they are documented in §4 as captured shells only. Hover, focus, pressed, disabled, error, success, empty, toast, dialog, and reader-progress states remain unresolved.
|
|
502
260
|
|
|
503
261
|
## 15. Motion & Easing
|
|
504
262
|
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
| Token | Value | Use |
|
|
508
|
-
|---|---|---|
|
|
509
|
-
| `motion-instant` | 0ms | Toggle flips, checkbox states |
|
|
510
|
-
| `motion-fast` | 150ms | Hover, focus, button press dim, small reveals |
|
|
511
|
-
| `motion-standard` | 240ms | Default — shelf scroll snaps, tab switches, card expand |
|
|
512
|
-
| `motion-slow` | 360ms | Sheet presentations, completion-screen entry |
|
|
513
|
-
| `motion-page` | 300ms | Route push/pop |
|
|
514
|
-
| `motion-autoplay` | 5000ms | "투데이" hero-banner autoplay dwell |
|
|
515
|
-
|
|
516
|
-
**Easings:**
|
|
517
|
-
|
|
518
|
-
| Token | Curve | Use |
|
|
519
|
-
|---|---|---|
|
|
520
|
-
| `ease-enter` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Sheets, snackbars, route entries |
|
|
521
|
-
| `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals, snackbar auto-close |
|
|
522
|
-
| `ease-standard` | `cubic-bezier(0.4, 0.0, 0.2, 1)` | Two-way transitions — expandable cards, tab content |
|
|
523
|
-
| `ease-gentle-spring` | `cubic-bezier(0.34, 1.2, 0.64, 1)` | Reserved — completion celebration, "담기" confirm bounce. Gentle, never bouncy. |
|
|
524
|
-
|
|
525
|
-
**Signature motions.**
|
|
526
|
-
|
|
527
|
-
1. **Hero autoplay.** The "투데이" hero banner cross-fades between promotions on `motion-autoplay` dwell; a floating `rgba(0,0,0,0.3)` pill (`자동 재생 중지`) lets users pause. Transition is a soft cross-fade with `ease-standard`, never a hard cut.
|
|
528
|
-
2. **Cover-to-detail.** Tapping a cover lifts it (`scale 1.0 → 1.02`, `motion-fast`) then transitions into the detail view (`motion-page / ease-enter`); the cover shadow deepens slightly to imply pick-up.
|
|
529
|
-
3. **Add-to-library confirm.** A small gentle-spring bounce on the bookmark icon (`ease-gentle-spring`) plus the snackbar — the one place spring is licensed, and only gently.
|
|
530
|
-
4. **Shelf scroll.** Horizontal cover carousels use momentum scroll with soft snap to cover edges (`motion-standard`). No elastic overscroll bounce beyond the OS default.
|
|
531
|
-
5. **Reduce motion.** Under `prefers-reduced-motion: reduce`, autoplay pauses by default, all `motion-*` collapse to `motion-instant`, and cross-fades replace slides. The feed stays fully usable.
|
|
532
|
-
|
|
533
|
-
<!--
|
|
534
|
-
OmD v0.1 Sources — Philosophy Layer (sections 10–15)
|
|
535
|
-
|
|
536
|
-
Tier 1 — Direct verification (MCP playwright, 2026-05-27):
|
|
537
|
-
- https://www.millie.co.kr/ (live "투데이" home surface). Confirmed:
|
|
538
|
-
body font-family "Pretendard Variable", "Pretendard Fallback", ...;
|
|
539
|
-
body color rgb(36,36,36) = #242424 (dominant, ~3,416 occurrences);
|
|
540
|
-
body bg #ffffff; interactive blue rgb(27,109,218) = #1b6dda
|
|
541
|
-
(~66 occurrences); secondary accents purple rgb(164,81,247) = #a451f7,
|
|
542
|
-
coral rgb(255,91,79) = #ff5b4f, yellow rgb(255,192,4) = #ffc004;
|
|
543
|
-
surface fill #f2f2f2; border #ececec; login chip #333 bg / 4px radius;
|
|
544
|
-
category tab #333 bg / 10px radius / 14px·600; floating scrim pill
|
|
545
|
-
rgba(0,0,0,0.3) / 100px radius.
|
|
546
|
-
|
|
547
|
-
Tier 2 — Press / secondary (WebSearch, 2026-05):
|
|
548
|
-
- https://play.google.com/store/apps/details?id=kr.co.millie.millieshelf
|
|
549
|
-
— "독서와 무제한 친해지리" positioning; reading-subscription model.
|
|
550
|
-
- https://www.millie.town/ — corporate (㈜kt 밀리의서재), KT ownership.
|
|
551
|
-
- https://millie.insight.wanted.co.kr/ — "당신의 일상을 1밀리+" slogan.
|
|
552
|
-
- https://namu.wiki/w/밀리의 서재 — Korea's largest reading platform,
|
|
553
|
-
e-books / audiobooks / magazines, 밀리 오리지널 originals.
|
|
554
|
-
|
|
555
|
-
ASSUMED-VS-VERIFIED NOTE: The task brief assumed primary blue #3D5AFE.
|
|
556
|
-
Live inspect found the dominant interactive blue is #1b6dda
|
|
557
|
-
(rgb(27,109,218)), NOT #3D5AFE. The DESIGN.md uses the live-verified
|
|
558
|
-
#1b6dda as primary_color. The assumed #3D5AFE does not appear as a
|
|
559
|
-
dominant token on the current live surface.
|
|
560
|
-
|
|
561
|
-
Personas (§13) are fictional archetypes informed by Millie's publicly
|
|
562
|
-
described user base (Korean adults building a digital reading habit).
|
|
563
|
-
Any resemblance to specific individuals is unintended.
|
|
564
|
-
|
|
565
|
-
Interpretive claims (editorial, not documented Millie statements):
|
|
566
|
-
- "A streaming posture for books" framing (§11, §12) — editorial reading
|
|
567
|
-
of the cover-forward "투데이" feed pattern.
|
|
568
|
-
- The 6 numbered principles (§12) — synthesized from observed surface
|
|
569
|
-
behavior + brand positioning; not a published design-principles list.
|
|
570
|
-
- Component-internal geometry beyond the observed tokens (button padding,
|
|
571
|
-
card radii, shadow values) is reconciled from the live rounded-chrome
|
|
572
|
-
surface treatment; re-verify in a stable session before treating as
|
|
573
|
-
authoritative DS specs.
|
|
574
|
-
- The spring stance (§15) — derived from the calm brand posture, not a
|
|
575
|
-
documented Millie motion rule.
|
|
576
|
-
-->
|
|
577
|
-
|
|
578
|
-
---
|
|
579
|
-
|
|
580
|
-
**Verified:** 2026-05-27 (omd:add-reference initial create — Tier 1 live inspect / Tier 2 press confirmed)
|
|
581
|
-
**Tier 1 sources:** www.millie.co.kr ("투데이" live playwright inspect — Pretendard Variable, body `#242424` on `#fff`, interactive blue `#1b6dda`, secondary purple `#a451f7` / coral `#ff5b4f` / yellow `#ffc004`, surface `#f2f2f2`, border `#ececec`, category tab `#333`/10px, scrim pill 100px).
|
|
582
|
-
**Tier 2 sources:** getdesign.md/millie — not checked. styles.refero.design — not checked. Google Play + millie.town + Wanted Insight + Namu Wiki (2017 reading-subscription launch, KT ownership, "독서와 무제한 친해지리" / "당신의 일상을 1밀리+" positioning, 밀리 오리지널).
|
|
583
|
-
**Style ref:** `toss` (KR product tone scaffolding).
|
|
584
|
-
**Conflicts unresolved:** Assumed primary `#3D5AFE` (from task brief) NOT confirmed — live inspect found dominant interactive blue `#1b6dda`. Resolved in favor of Tier 1 live value `#1b6dda`. Component-internal geometry reconciled from surface treatment; re-run Tier 2 (getdesign/refero) to lock token values.
|
|
263
|
+
No duration, easing, autoplay timing, reduced-motion behaviour, or transition was supplied. The hero’s control markup does not establish carousel motion rules. No Millie motion token is specified.
|