oh-my-design-cli 1.8.1 → 1.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.ja.md +5 -5
  2. package/README.ko.md +7 -7
  3. package/README.md +7 -7
  4. package/README.zh-TW.md +5 -5
  5. package/agents/omd-master.md +1 -1
  6. package/data/reference-fingerprints.json +1978 -58
  7. package/package.json +3 -1
  8. package/skills/omd-feel/SKILL.md +152 -0
  9. package/skills/omd-feel/provenance.md +233 -0
  10. package/skills/omd-feel/reference.md +254 -0
  11. package/skills/omd-harness/SKILL.md +1 -1
  12. package/skills/omd-init/SKILL.md +1 -1
  13. package/skills/omd-reference-capture/SKILL.md +1 -1
  14. package/web/references/591/DESIGN.md +460 -0
  15. package/web/references/asana/DESIGN.md +485 -0
  16. package/web/references/asos/DESIGN.md +475 -0
  17. package/web/references/bahamut/DESIGN.md +416 -0
  18. package/web/references/bbc/DESIGN.md +439 -0
  19. package/web/references/bito/DESIGN.md +394 -0
  20. package/web/references/cashapp/DESIGN.md +449 -0
  21. package/web/references/chunghwa/DESIGN.md +419 -0
  22. package/web/references/cuboai/DESIGN.md +435 -0
  23. package/web/references/cybozu/DESIGN.md +453 -0
  24. package/web/references/databricks/DESIGN.md +467 -0
  25. package/web/references/datadog/DESIGN.md +441 -0
  26. package/web/references/deliveroo/DESIGN.md +458 -0
  27. package/web/references/digital-agency-jp/DESIGN.md +439 -0
  28. package/web/references/dmm/DESIGN.md +455 -0
  29. package/web/references/doordash/DESIGN.md +429 -0
  30. package/web/references/easywallet/DESIGN.md +449 -0
  31. package/web/references/esunbank/DESIGN.md +445 -0
  32. package/web/references/farfetch/DESIGN.md +436 -0
  33. package/web/references/fubon/DESIGN.md +438 -0
  34. package/web/references/gaudiy/DESIGN.md +387 -0
  35. package/web/references/gitlab/DESIGN.md +546 -0
  36. package/web/references/goodpatch/DESIGN.md +429 -0
  37. package/web/references/govuk/DESIGN.md +450 -0
  38. package/web/references/hana/DESIGN.md +439 -0
  39. package/web/references/headspace/DESIGN.md +505 -0
  40. package/web/references/heptabase/DESIGN.md +448 -0
  41. package/web/references/hubspot/DESIGN.md +485 -0
  42. package/web/references/hyundai/DESIGN.md +468 -0
  43. package/web/references/icook/DESIGN.md +432 -0
  44. package/web/references/iicombined/DESIGN.md +421 -0
  45. package/web/references/instacart/DESIGN.md +439 -0
  46. package/web/references/ipassmoney/DESIGN.md +407 -0
  47. package/web/references/kakaopage/DESIGN.md +439 -0
  48. package/web/references/kbpay/DESIGN.md +442 -0
  49. package/web/references/kia/DESIGN.md +411 -0
  50. package/web/references/liner/DESIGN.md +465 -0
  51. package/web/references/maicoin/DESIGN.md +484 -0
  52. package/web/references/mailchimp/DESIGN.md +450 -0
  53. package/web/references/mikan/DESIGN.md +450 -0
  54. package/web/references/monzo/DESIGN.md +461 -0
  55. package/web/references/moze/DESIGN.md +423 -0
  56. package/web/references/naverpay/DESIGN.md +478 -0
  57. package/web/references/ncsoft/DESIGN.md +488 -0
  58. package/web/references/nhn/DESIGN.md +441 -0
  59. package/web/references/nintendo/DESIGN.md +445 -0
  60. package/web/references/octopusenergy/DESIGN.md +436 -0
  61. package/web/references/openpoint/DESIGN.md +431 -0
  62. package/web/references/patreon/DESIGN.md +439 -0
  63. package/web/references/paypal/DESIGN.md +459 -0
  64. package/web/references/pepabo/DESIGN.md +486 -0
  65. package/web/references/pinkfong/DESIGN.md +450 -0
  66. package/web/references/plaid/DESIGN.md +472 -0
  67. package/web/references/portaly/DESIGN.md +441 -0
  68. package/web/references/readmoo/DESIGN.md +492 -0
  69. package/web/references/reddit/DESIGN.md +537 -0
  70. package/web/references/samsung/DESIGN.md +465 -0
  71. package/web/references/shiftup/DESIGN.md +433 -0
  72. package/web/references/shinhanbank/DESIGN.md +429 -0
  73. package/web/references/skyscanner/DESIGN.md +563 -0
  74. package/web/references/snapchat/DESIGN.md +460 -0
  75. package/web/references/sparkful/DESIGN.md +434 -0
  76. package/web/references/speeda/DESIGN.md +422 -0
  77. package/web/references/spindle/DESIGN.md +470 -0
  78. package/web/references/spoqa/DESIGN.md +422 -0
  79. package/web/references/squarespace/DESIGN.md +454 -0
  80. package/web/references/ssg/DESIGN.md +439 -0
  81. package/web/references/starling/DESIGN.md +404 -0
  82. package/web/references/stibee/DESIGN.md +424 -0
  83. package/web/references/taiwanmobile/DESIGN.md +445 -0
  84. package/web/references/tmap/DESIGN.md +423 -0
  85. package/web/references/trainline/DESIGN.md +454 -0
  86. package/web/references/twilio/DESIGN.md +515 -0
  87. package/web/references/twitch/DESIGN.md +431 -0
  88. package/web/references/vocus/DESIGN.md +450 -0
  89. package/web/references/workday/DESIGN.md +452 -0
  90. package/web/references/wrtn/DESIGN.md +454 -0
  91. package/web/references/xrex/DESIGN.md +475 -0
  92. package/web/references/zepeto/DESIGN.md +463 -0
  93. package/web/references/zoom/DESIGN.md +457 -0
@@ -0,0 +1,441 @@
1
+ ---
2
+ id: portaly
3
+ name: Portaly
4
+ country: TW
5
+ category: design-tools
6
+ homepage: "https://portaly.cc/"
7
+ primary_color: "#862983"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=portaly.cc&sz=128"
11
+ verified: "2026-06-17"
12
+ added: "2026-06-17"
13
+ omd: "0.1"
14
+ tokens:
15
+ source: live-extract
16
+ extracted: "2026-06-17"
17
+ note: "primary = pricing interactive magenta/plum (#862983) on filled CTAs + toggle thumb; teal (#00a6a3 / #12a3a0) is the brand accent (logo swoosh, checkmarks, gradient endpoint); hero uses a purple gradient (#6e28af → #ac8ffe); navy (#0c2340) for nav. Marketing site renders English globally but the font stack carries Noto Sans TC for Traditional Chinese."
18
+ colors:
19
+ primary: "#862983"
20
+ teal: "#00a6a3"
21
+ teal-alt: "#12a3a0"
22
+ teal-soft: "#38aaaa"
23
+ purple-hero: "#6e28af"
24
+ purple-hero-light: "#ac8ffe"
25
+ swoosh-magenta: "#bb53b9"
26
+ navy: "#0c2340"
27
+ navy-deep: "#1a2a3a"
28
+ ink: "#333333"
29
+ ink-pure: "#000000"
30
+ muted: "#969696"
31
+ canvas: "#f8f8f8"
32
+ surface: "#ffffff"
33
+ surface-alt: "#f2f2f2"
34
+ hairline: "#d9d9d9"
35
+ on-primary: "#ffffff"
36
+ typography:
37
+ family: { sans: "Noto Sans", cjk: "Noto Sans TC" }
38
+ display-hero: { size: 50, weight: 800, lineHeight: 1.38, tracking: 1, use: "Hero headline, Noto Sans ExtraBold" }
39
+ feature-xl: { size: 50, weight: 700, lineHeight: 1.50, use: "Large feature statement (Turn Traffic into Revenue)" }
40
+ section: { size: 36, weight: 700, lineHeight: 1.50, use: "Section titles" }
41
+ feature: { size: 24, weight: 700, lineHeight: 1.50, use: "Feature card heads" }
42
+ lede: { size: 20, weight: 400, lineHeight: 1.50, use: "Hero subhead / lede" }
43
+ nav: { size: 18, weight: 600, lineHeight: 1.33, use: "Nav links, Noto Sans SemiBold" }
44
+ body: { size: 16, weight: 400, lineHeight: 1.50, use: "Standard reading text" }
45
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 20, xl: 24, xxl: 40, section: 64 }
46
+ rounded: { sm: 6, md: 12, lg: 20, full: 9999 }
47
+ shadow:
48
+ card: "rgba(99,99,99,0.2) 0px 2px 8px 0px"
49
+ block: "rgba(0,0,0,0.05) 0px 1px 2px 0px"
50
+ components:
51
+ button-primary: { type: button, bg: "#862983", fg: "#ffffff", radius: "6px", padding: "4px 16px", height: "32px", font: "16px / 600 Noto Sans", use: "Primary CTA on pricing (Join Now), hover deepens plum" }
52
+ button-primary-lg: { type: button, bg: "#862983", fg: "#ffffff", radius: "20px", padding: "24px 40px", height: "52px", font: "18px / 600 Noto Sans", use: "Large primary CTA (Start Free)" }
53
+ button-secondary: { type: button, bg: "#ffffff", fg: "#862983", border: "1px solid #862983", radius: "6px", padding: "4px 16px", height: "32px", font: "16px / 600 Noto Sans", use: "Secondary CTA (Start for Free), magenta outline" }
54
+ button-hero-ghost: { type: button, fg: "#ffffff", border: "2px solid #ffffff", radius: "9999px", padding: "14px 70px", font: "28px / 600 Noto Sans", use: "White outline pill CTA over the purple hero gradient" }
55
+ nav-link: { type: tab, fg: "#0c2340", font: "18px / 600 Noto Sans", active: "magenta #862983 text on the active item", use: "Top nav item (Features, Pricing, Portaly AI, Blog)" }
56
+ plan-card: { type: card, bg: "#ffffff", radius: "12px", shadow: "rgba(99,99,99,0.2) 0px 2px 8px 0px", use: "Pricing plan card on #f8f8f8 canvas, no border" }
57
+ link-block: { type: card, bg: "#ffffff", radius: "6px", padding: "8px 16px", font: "16px / 600 Noto Sans", use: "Creator-page link block (filled 6px / rounded 16px variants); accent color is creator-chosen" }
58
+ toggle-billing: { type: toggle, bg: "#d9d9d9", radius: "9999px", height: "24px", use: "Annual/Monthly billing switch, magenta #862983 active thumb" }
59
+ feature-check: { type: badge, fg: "#12a3a0", font: "16px / 400 Noto Sans", use: "Teal checkmark in plan feature lists" }
60
+ components_harvested: true
61
+ ---
62
+
63
+ # Design System Inspiration of Portaly
64
+
65
+ ## 1. Visual Theme & Atmosphere
66
+
67
+ Portaly (傳送門) is Taiwan's largest Traditional-Chinese link-in-bio and creator landing-page builder, operated by Real Engine, and its marketing surface reads like a bright, optimistic creator-economy product rather than a utilitarian dev tool. The page background is a soft off-white (`#f8f8f8`) under crisp white (`#ffffff`) content cards, with body copy in a comfortable warm grey-black (`#333333`) and headlines in true black (`#000000`). The single most saturated interactive color is a confident magenta-plum (`#862983`) — it owns every filled "Join Now" / "Start Free" call-to-action and the billing toggle — so the eye is trained to read that one plum as "the action."
68
+
69
+ The brand's emotional signature, though, is its **teal-and-magenta duality wired into a curved-arrow logo**. The Portaly wordmark sits in navy (`#0c2340`) with a teal-to-magenta swoosh curving through the letters — the curved-arrow visual metaphor that recurs across the system as a left-to-right gradient (`#bb53b9 → #00a6a3`, magenta into teal) on stat strips and decorative accents. Teal (`#00a6a3`, with `#12a3a0` and `#38aaaa` companions) is the accent voice: feature checkmarks, the "200,000 creators" highlight, and icon details. The hero itself is washed in a separate purple gradient (`#6e28af → #ac8ffe`) with white headline and a white outline pill CTA, giving the top of the page a playful, energetic lift before the content settles into clean white.
70
+
71
+ Geometrically the system is friendly and rounded but not extreme: filled pricing buttons sit at a tidy 6px radius, large CTAs relax to 20px, plan cards round to 12px with a soft grey ambient shadow (`rgba(99,99,99,0.2) 0px 2px 8px`), and the hero/nav pills go fully round (9999px). Depth is gentle — a single soft card shadow and thin `#d9d9d9` hairlines do the separating, never heavy elevation. Typography is set in **Noto Sans with a Noto Sans TC fallback**, so the same chrome renders Traditional Chinese natively on creator pages (e.g. `林啟維`, `Portaly 徵才 全端工程師`). Headlines run heavy — 50px ExtraBold (800) on the hero, 36px Bold (700) on sections — over quiet 16px / weight 400 body, the classic bold-display-over-light-body tension.
72
+
73
+ **Key Characteristics:**
74
+ - Magenta-plum (`#862983`) reserved for the primary interactive action — filled CTAs and the billing toggle thumb
75
+ - Teal accent voice (`#00a6a3` / `#12a3a0` / `#38aaaa`) — logo swoosh, feature checkmarks, highlights
76
+ - Signature magenta→teal gradient (`#bb53b9 → #00a6a3`) and a playful purple hero gradient (`#6e28af → #ac8ffe`)
77
+ - Navy (`#0c2340`, deeper `#1a2a3a`) for nav links and structural ink instead of pure black
78
+ - Noto Sans + Noto Sans TC stack — bold display (800/700) over quiet 16px/400 body, Traditional-Chinese native
79
+ - Rounded-but-restrained geometry — 6px buttons, 12px cards, 20px large CTAs, 9999px hero/nav pills
80
+ - Gentle depth — one soft grey card shadow (`rgba(99,99,99,0.2) 0px 2px 8px`) + `#d9d9d9` hairlines
81
+ - Off-white canvas (`#f8f8f8`) under white surfaces; warm-grey body text (`#333333`)
82
+
83
+ ## 2. Color Palette & Roles
84
+
85
+ ### Primary & Brand
86
+ - **Portaly Plum** (`#862983`): Primary interactive color. Filled CTA background ("Join Now", "Start Free"), billing toggle active thumb, secondary-button outline/text. The system's single "action" color.
87
+ - **Brand Teal** (`#00a6a3`): The dominant accent — logo swoosh endpoint, the magenta→teal gradient, highlight numerals ("200,000"), icon details. Appears 60+ times in the live color scan.
88
+ - **Teal Alt** (`#12a3a0`): Slightly deeper teal used for feature checkmarks and secondary accent strokes.
89
+ - **Teal Soft** (`#38aaaa`): A muted teal companion for softer accent surfaces and hover tints.
90
+
91
+ ### Gradients
92
+ - **Swoosh Magenta** (`#bb53b9`): The magenta start of the signature left-to-right brand gradient `#bb53b9 → #00a6a3` (the curved-arrow swoosh / stat-strip accent).
93
+ - **Purple Hero** (`#6e28af`): Top stop of the hero background gradient.
94
+ - **Purple Hero Light** (`#ac8ffe`): Bottom stop of the hero gradient `#6e28af → #ac8ffe` — gives the hero its playful violet wash.
95
+
96
+ ### Ink & Structure
97
+ - **Ink Navy** (`#0c2340`): Nav links, structural headings, strong labels — a deep blue-black instead of pure black.
98
+ - **Navy Deep** (`#1a2a3a`): A darker navy used on deeper structural surfaces and dark creator-page backdrops.
99
+ - **Ink** (`#333333`): Default body text — a warm grey-black, the document default.
100
+ - **Pure Black** (`#000000`): Maximum-contrast marketing headlines (hero feature statements, section heads).
101
+
102
+ ### Neutral & Surface
103
+ - **Canvas** (`#f8f8f8`): Page background — soft off-white under white content.
104
+ - **Surface** (`#ffffff`): White content cards, plan cards, button surfaces, text on plum/teal.
105
+ - **Surface Alt** (`#f2f2f2`): Secondary grey surface for alternating blocks and chips.
106
+ - **Hairline** (`#d9d9d9`): Thin borders, dividers, plan-grid separators, and the billing-toggle track.
107
+ - **Muted** (`#969696`): Helper/fine-print text ("Permanently Free to Use", annual-fee notes).
108
+ - **On Primary** (`#ffffff`): Text/icon color on plum and teal fills.
109
+
110
+ ## 3. Typography Rules
111
+
112
+ ### Font Family
113
+ - **Sans**: `Noto Sans` — the primary Latin face for all display and body text.
114
+ - **CJK**: `Noto Sans TC` — Traditional-Chinese fallback in the same stack (`"Noto Sans", "Noto Sans TC", sans-serif`); creator product pages also append `Noto Color Emoji`.
115
+
116
+ ### Hierarchy
117
+
118
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
119
+ |------|------|------|--------|-------------|----------------|-------|
120
+ | Display Hero | Noto Sans | 50px (3.13rem) | 800 | 1.38 (68.75px) | 1px | Hero headline, ExtraBold |
121
+ | Feature XL | Noto Sans | 50px (3.13rem) | 700 | 1.50 (75px) | normal | Large feature statement |
122
+ | Section Heading | Noto Sans | 36px (2.25rem) | 700 | 1.50 (54px) | normal | Section titles |
123
+ | Feature Head | Noto Sans | 24px (1.50rem) | 700 | 1.50 (36px) | normal | Feature card heads |
124
+ | Lede / Subhead | Noto Sans | 20px (1.25rem) | 400-500 | 1.50 (30px) | normal | Hero subhead, intro text |
125
+ | Nav Link | Noto Sans | 18px (1.13rem) | 600 | 1.33 (24px) | normal | Top navigation items |
126
+ | Body | Noto Sans | 16px (1.00rem) | 400 | 1.50 (24px) | normal | Standard reading text |
127
+
128
+ ### Principles
129
+ - **Bold display, quiet body**: headlines run 800 (hero) and 700 (sections/features); body and lede stay at 400. The weight jump is the primary hierarchy signal.
130
+ - **Two-language, one stack**: the same `Noto Sans → Noto Sans TC` stack renders Latin marketing copy and Traditional-Chinese creator pages without a font swap — Noto's matched metrics keep hangul-free CJK and Latin visually consistent.
131
+ - **Near-flat tracking**: only the hero carries a slight positive `1px` letter-spacing for its ExtraBold display line; everything else sits at normal tracking.
132
+ - **Generous line-height**: body and most heads run at a comfortable 1.5 line-height, reinforcing the airy, approachable creator-economy feel.
133
+
134
+ ## 4. Component Stylings
135
+
136
+ ### Buttons
137
+
138
+ **Primary (Join Now)**
139
+ - Background: `#862983`
140
+ - Text: `#ffffff`
141
+ - Radius: 6px
142
+ - Padding: 4px 16px
143
+ - Height: 32px
144
+ - Font: 16px Noto Sans weight 600
145
+ - Use: Primary CTA on pricing/nav — the system's single filled action
146
+
147
+ **Primary Large (Start Free)**
148
+ - Background: `#862983`
149
+ - Text: `#ffffff`
150
+ - Radius: 20px
151
+ - Padding: 24px 40px
152
+ - Height: 52px
153
+ - Font: 18px Noto Sans weight 600
154
+ - Use: Large primary CTA in plan cards / section ends
155
+
156
+ **Secondary (Start for Free)**
157
+ - Background: `#ffffff`
158
+ - Text: `#862983`
159
+ - Border: 1px solid `#862983`
160
+ - Radius: 6px
161
+ - Padding: 4px 16px
162
+ - Height: 32px
163
+ - Font: 16px Noto Sans weight 600
164
+ - Use: Lower-emphasis plum-outline action (Free plan)
165
+
166
+ **Hero Ghost (Start for free)**
167
+ - Text: `#ffffff`
168
+ - Border: 2px solid `#ffffff`
169
+ - Radius: 9999px
170
+ - Padding: 14px 70px
171
+ - Font: 28px Noto Sans weight 600
172
+ - Use: White outline pill CTA over the purple hero gradient
173
+
174
+ ### Cards & Containers
175
+
176
+ **Pricing Plan Card**
177
+ - Background: `#ffffff`
178
+ - Radius: 12px
179
+ - Shadow: `rgba(99,99,99,0.2) 0px 2px 8px 0px`
180
+ - Use: Pricing plan card sitting on the `#f8f8f8` canvas (no border)
181
+
182
+ **Creator Link Block**
183
+ - Background: `#ffffff`
184
+ - Radius: 6px
185
+ - Padding: 8px 16px
186
+ - Font: 16px Noto Sans weight 600
187
+ - Shadow: `rgba(0,0,0,0.05) 0px 1px 2px 0px`
188
+ - Use: The core product component — a full-width tappable link row on a creator's page (filled 6px and rounded 16px variants; accent color is creator-chosen)
189
+
190
+ ### Badges
191
+
192
+ **Feature Check**
193
+ - Text: `#12a3a0`
194
+ - Font: 16px Noto Sans weight 400
195
+ - Use: Teal checkmark glyph preceding each plan feature line
196
+
197
+ ### Toggles
198
+
199
+ **Billing Switch (Annual / Monthly)**
200
+ - Background: `#d9d9d9`
201
+ - Radius: 9999px
202
+ - Height: 24px
203
+ - Use: Billing-period switch; the active thumb is plum `#862983`
204
+
205
+ ### Navigation
206
+ - Background: `#ffffff`
207
+ - Text: `#0c2340`
208
+ - Font: 18px Noto Sans weight 600
209
+ - Active: magenta `#862983` text on the active item
210
+ - Use: Top horizontal nav (Features, Pricing, Portaly AI, Blog) with a plum "Join Now" pill right-aligned
211
+
212
+ ---
213
+
214
+ **Verified:** 2026-06-17 (omd:add-reference CREATE — Tier 1 live inspect, 3 brand-owned surfaces)
215
+ **Tier 1 sources:** https://portaly.cc/ ; https://portaly.cc/en/pricing ; https://portaly.cc/en/blog ; https://portaly.cc/cwl (founder live creator page — Traditional-Chinese product surface)
216
+ **Tier 2 sources:** getdesign.md/portaly — NO DATA ("No designs found for 'portaly'"); styles.refero.design/?q=portaly — Portaly not indexed (only generic default cards returned)
217
+ **Conflicts unresolved:** none
218
+
219
+ ## 5. Layout Principles
220
+
221
+ ### Spacing System
222
+ - Base unit: ~4px
223
+ - Scale: 4px, 8px, 12px, 16px, 20px, 24px, 40px, 64px
224
+ - Notable: section CTAs use a generous 24px 40px padding for the large "Start Free" button; plan cards sit ~540px wide in a two-up grid
225
+
226
+ ### Grid & Container
227
+ - Centered marketing column: full-width purple hero gradient band, then white content sections on the `#f8f8f8` canvas
228
+ - Pricing: a centered two-up plan-card grid (Free / Premium), each card ~538px wide at 12px radius
229
+ - Feature sections alternate white feature-card rows with template-thumbnail gradient grids
230
+ - Creator pages: a single mobile-first centered column of full-width link blocks under an avatar + handle header
231
+
232
+ ### Whitespace Philosophy
233
+ - **Airy and optimistic**: generous vertical rhythm between sections; the creator-economy product avoids dense dashboard packing on its marketing surface.
234
+ - **Color band cadence**: the purple hero gradient gives way to clean white content, a bright-to-calm transition that anchors the brand mood up top.
235
+ - **Soft segmentation**: sections separate by `#f8f8f8` vs `#ffffff` background shift and thin `#d9d9d9` hairlines, not heavy borders.
236
+
237
+ ### Border Radius Scale
238
+ - Small (6px): pricing buttons, filled creator link blocks — the workhorse
239
+ - Medium (12px): pricing plan cards, content containers
240
+ - Large (16px–20px): rounded creator link blocks, large CTAs
241
+ - Full (9999px): hero/nav pills, billing toggle, "Join Now" header pill
242
+
243
+ ## 6. Depth & Elevation
244
+
245
+ | Level | Treatment | Use |
246
+ |-------|-----------|-----|
247
+ | Flat (Level 0) | No shadow | Page background, inline text, most marketing chrome |
248
+ | Block (Level 1) | `rgba(0,0,0,0.05) 0px 1px 2px 0px` | Creator link blocks, subtle lift |
249
+ | Card (Level 2) | `rgba(99,99,99,0.2) 0px 2px 8px 0px` | Pricing plan cards, elevated content |
250
+ | Hairline | `1px solid #d9d9d9` | Plan-grid dividers, section separators |
251
+
252
+ **Shadow Philosophy**: Portaly keeps elevation gentle and friendly. The signature card shadow is a soft, neutral grey ambient blur (`rgba(99,99,99,0.2) 0px 2px 8px`) — low spread, no harsh contrast — used on pricing plan cards. Creator link blocks carry an even lighter `rgba(0,0,0,0.05) 0px 1px 2px` lift. Most of the marketing surface is flat; depth is reserved for the few surfaces that genuinely need to read as "tappable cards." The mood is approachable, not engineered — the opposite of a heavy fintech card-stack.
253
+
254
+ ## 7. Do's and Don'ts
255
+
256
+ ### Do
257
+ - Reserve magenta-plum (`#862983`) for the primary action — filled CTAs and the billing toggle
258
+ - Use teal (`#00a6a3` / `#12a3a0`) as the accent voice — checkmarks, highlights, the logo swoosh
259
+ - Reach for the magenta→teal gradient (`#bb53b9 → #00a6a3`) for the signature curved-arrow / stat accents
260
+ - Use the purple hero gradient (`#6e28af → #ac8ffe`) with white headline + white outline pill at the top
261
+ - Set type in Noto Sans with a Noto Sans TC fallback so Traditional Chinese renders natively
262
+ - Run headlines heavy (800 hero / 700 sections) over quiet 16px / weight 400 body
263
+ - Keep buttons at 6px, cards at 12px, large CTAs at 20px, hero/nav pills fully round
264
+ - Use navy (`#0c2340`) for nav links and structural ink instead of pure black
265
+
266
+ ### Don't
267
+ - Spread plum across many elements — it dilutes the single-action signal
268
+ - Swap the accent away from teal — the teal-magenta duality is the brand's identity
269
+ - Use heavy or dark drop shadows — depth is a soft grey ambient lift only
270
+ - Set the whole UI in pure black headings everywhere — reserve `#000000` for marketing display lines
271
+ - Use sharp square corners on buttons or cards — everything is gently rounded
272
+ - Render Traditional Chinese without the Noto Sans TC fallback — the stack must carry CJK
273
+ - Add a third saturated brand hue — plum + teal (+ the playful purple hero) is the whole palette
274
+ - Set headlines in a light weight — display is always Bold/ExtraBold
275
+
276
+ ## 8. Responsive Behavior
277
+
278
+ ### Breakpoints
279
+ | Name | Width | Key Changes |
280
+ |------|-------|-------------|
281
+ | Mobile | <640px | Single column; hero headline compresses; plan cards stack; creator pages are mobile-first by default |
282
+ | Tablet | 640-1024px | Moderate padding; two-up feature/plan grids begin |
283
+ | Desktop | 1024-1440px | Full layout; centered hero; two-up plan grid; template-thumbnail rows |
284
+
285
+ ### Touch Targets
286
+ - Filled CTAs at 32px+ height with comfortable horizontal padding; large CTA at 52px
287
+ - Creator link blocks at 44px+ full-width rows — generous, unmistakable tap targets
288
+ - Nav links spaced for touch within the white header
289
+
290
+ ### Collapsing Strategy
291
+ - Hero: 50px ExtraBold headline scales down on mobile, weight 800 maintained
292
+ - Pricing: two-up plan cards → stacked single column
293
+ - Feature sections + template grids: multi-column → stacked
294
+ - Purple hero band maintains its gradient full-width across breakpoints
295
+
296
+ ### Image Behavior
297
+ - Template thumbnails keep their vibrant gradient fills and rounded corners at all sizes
298
+ - Phone-mockup product shots in the hero scale proportionally
299
+ - Creator-page avatars and link blocks remain full-width centered on narrow viewports
300
+
301
+ ## 9. Agent Prompt Guide
302
+
303
+ ### Quick Color Reference
304
+ - Primary CTA: Portaly Plum (`#862983`)
305
+ - Brand accent: Teal (`#00a6a3`), deeper Teal Alt (`#12a3a0`)
306
+ - Hero gradient: Purple (`#6e28af` → `#ac8ffe`)
307
+ - Signature gradient: Magenta → Teal (`#bb53b9` → `#00a6a3`)
308
+ - Nav / ink: Navy (`#0c2340`)
309
+ - Body text: Ink (`#333333`); headings Pure Black (`#000000`)
310
+ - Muted text: (`#969696`)
311
+ - Canvas: Off-white (`#f8f8f8`); Surface White (`#ffffff`)
312
+ - Hairline: (`#d9d9d9`)
313
+
314
+ ### Example Component Prompts
315
+ - "Create a hero with a purple gradient background (#6e28af top → #ac8ffe bottom). Headline 50px Noto Sans weight 800, line-height 1.38, letter-spacing 1px, white. Subhead 20px weight 400 white. A white outline pill CTA: transparent bg, 2px solid #ffffff border, 9999px radius, 14px 70px padding, 28px weight 600 — 'Start for free'."
316
+ - "Design a pricing plan card: white #ffffff background, 12px radius, shadow rgba(99,99,99,0.2) 0px 2px 8px, no border, on a #f8f8f8 canvas. Primary CTA: #862983 background, white text, 6px radius, 4px 16px padding, 16px Noto Sans weight 600 ('Join Now'). Feature rows lead with a teal #12a3a0 checkmark."
317
+ - "Build a secondary button: white background, #862983 text, 1px solid #862983 border, 6px radius, 16px weight 600 ('Start for Free')."
318
+ - "Create a creator link-in-bio page: centered mobile column, avatar + handle header, full-width white link blocks at 6px radius, 8px 16px padding, 16px Noto Sans weight 600, soft rgba(0,0,0,0.05) 0px 1px 2px lift. Set the font stack 'Noto Sans, Noto Sans TC, sans-serif' for Traditional Chinese."
319
+ - "Create top nav: white header, 18px Noto Sans weight 600 links in navy #0c2340, magenta #862983 on the active item, with a plum #862983 'Join Now' pill (9999px) right-aligned."
320
+
321
+ ### Iteration Guide
322
+ 1. Plum (`#862983`) is the single filled action color; teal (`#00a6a3`/`#12a3a0`) is the accent
323
+ 2. Hero = purple gradient (`#6e28af → #ac8ffe`) + white headline + white outline pill
324
+ 3. Signature accent = magenta→teal gradient (`#bb53b9 → #00a6a3`)
325
+ 4. Noto Sans + Noto Sans TC stack; bold display (800/700) over 16px/400 body
326
+ 5. Buttons 6px, cards 12px, large CTAs 20px, hero/nav pills 9999px
327
+ 6. Card shadow is a soft grey `rgba(99,99,99,0.2) 0px 2px 8px`; nothing dark
328
+ 7. Navy `#0c2340` for nav/ink, `#000000` only for marketing display headlines
329
+ 8. Canvas `#f8f8f8` under white surfaces; hairlines `#d9d9d9`
330
+
331
+ ---
332
+
333
+ ## 10. Voice & Tone
334
+
335
+ Portaly's voice is **encouraging, growth-minded, and creator-first** — it speaks to visual creators and small businesses as ambitious people turning an audience into income, not as users to be onboarded. The hero line "Your All-in-One Platform for Growth and Profit" and the supporting "Join 200,000 creators worldwide to turn passion into profit" set the register: aspirational, plain-spoken, benefit-forward, never jargon-heavy. Pricing copy ("Growth & monetization plans built for creators", "From basic presence to steady monetization — choose the plan that fits you") frames money positively and removes friction rather than pressuring.
336
+
337
+ | Context | Tone |
338
+ |---|---|
339
+ | Hero headlines | Aspirational, benefit-first. "Your All-in-One Platform for Growth and Profit." Confident, not hype. |
340
+ | Feature heads | Action verbs naming an outcome. "Turn Traffic into Revenue", "Grow Your Fanbase", "Monetize Your Content". |
341
+ | CTAs | Direct, low-pressure, free-forward. "Start for free", "Join Now", "Start Free". |
342
+ | Pricing copy | Reassuring and transparent. "Permanently Free to Use", "with the first 14 days free", "Save 14% monthly". |
343
+ | Creator product (TC) | Personal and warm, in Traditional Chinese — a creator's own links, columns, and recruiting posts. |
344
+
345
+ **Voice samples (verbatim from live surfaces):**
346
+ - "Your All-in-One Platform for Growth and Profit" — hero headline (mission-framed). *(verified live 2026-06-17, portaly.cc/)*
347
+ - "Join 200,000 creators worldwide to turn passion into profit" — hero subhead (scale + benefit). *(verified live 2026-06-17, portaly.cc/)*
348
+ - "Growth & monetization plans built for creators" — pricing headline. *(verified live 2026-06-17, portaly.cc/en/pricing)*
349
+
350
+ **Forbidden register**: fear-based or scarcity urgency, undefined growth-hacking jargon, exclamation-heavy hype, dismissive or gatekeeping language toward small creators.
351
+
352
+ ## 11. Brand Narrative
353
+
354
+ Portaly (傳送門) was launched in **2022** by **CW Lin (林啟維)** under **Real Engine, Inc. (真實引擎)**, a Taiwan startup, to solve a problem visual creators and small Traditional-Chinese-speaking businesses faced: the dominant Western link-in-bio tools were built for a Latin, English-first audience and treated a creator's page as a bare list of links rather than a real, monetizable web presence. Portaly reframed the link-in-bio as a *social landing page* — a place to not only point followers outward but to sell, collect leads, and build a brand, localized first for the Taiwanese creator market.
355
+
356
+ The product grew into Taiwan's largest Traditional-Chinese link-in-bio / creator landing-page builder, serving a stated 200,000+ creators worldwide, with generative-AI page building added in 2023 — a launch that won **#2 Product of the Day** on Product Hunt (the badge still sits live on the homepage and pricing page). The company has been recognized in Taiwan's **Neo 30 (2023)** startup list and is a **500 Global** alumnus.
357
+
358
+ What Portaly refuses, visible in its design: the cold, utilitarian aesthetic of a pure-utility link list, and the high-pressure monetization patterns of growth-hacking tools. What it embraces: a bright, optimistic creator-economy mood; a friendly magenta-and-teal identity carried by a curved-arrow swoosh; native Traditional-Chinese typography (Noto Sans TC); and copy that frames growth and profit as encouraging outcomes the creator owns.
359
+
360
+ ## 12. Principles
361
+
362
+ 1. **A page, not a link list.** Portaly treats a creator's page as a real, monetizable landing page. *UI implication:* full-width tappable link blocks, plan-grade cards, and product/lead blocks — structure beyond a bare list.
363
+ 2. **One action, one plum.** Magenta-plum (`#862983`) means "do this." *UI implication:* reserve the saturated plum exclusively for the primary filled CTA so the next step is never ambiguous.
364
+ 3. **Teal is the brand's warmth.** The teal-magenta duality and curved-arrow swoosh are the identity. *UI implication:* use teal (`#00a6a3`/`#12a3a0`) for accents, checkmarks, and the signature gradient; don't introduce a competing hue.
365
+ 4. **Traditional-Chinese first.** The product is built for a Traditional-Chinese creator market. *UI implication:* always carry the Noto Sans TC fallback so CJK renders natively and consistently with Latin.
366
+ 5. **Optimistic, not pushy.** Growth and profit are framed as encouraging outcomes. *UI implication:* keep CTAs free-forward and low-pressure; lean on bright color and airy layout, never scarcity or dark patterns.
367
+
368
+ ## 13. Personas
369
+
370
+ *Personas below are fictional archetypes informed by publicly observable Portaly user segments (Traditional-Chinese visual creators, small businesses, course/product sellers), not individual people.*
371
+
372
+ **陳郁婷, 27, 台北.** An illustrator selling commissions and digital goods. Switched from a Western link-in-bio because Portaly let her build a real shopfront page in Traditional Chinese, collect leads, and take payment in one place. Values that the page feels like *hers*, not a generic list.
373
+
374
+ **黃彥儒, 34, 台中.** A fitness coach running paid programs. Uses Portaly's monetization blocks and AI page builder to spin up campaign landing pages fast. Likes that the free tier is genuinely usable and the upgrade ("the first 14 days free") feels low-risk.
375
+
376
+ **林思妤, 41, 高雄.** A small-shop owner driving social traffic to a single Portaly page. Appreciates the bright, friendly look that matches her brand and the plain pricing copy that tells her exactly what she gets — no jargon, no pressure.
377
+
378
+ ## 14. States
379
+
380
+ | State | Treatment |
381
+ |---|---|
382
+ | **Empty (new creator page)** | White canvas, avatar placeholder + handle, a single Ink (`#333333`) prompt to add the first link block, with a plum (`#862983`) "add" CTA. Encouraging, never blank-scary. |
383
+ | **Empty (no analytics yet)** | Muted (`#969696`) single line explaining no data has been collected yet, with a path to share the page. Honest and calm. |
384
+ | **Loading (page/builder)** | Skeleton blocks at final link-block dimensions on the `#f8f8f8` canvas, 6px radius, soft pulse consistent with the gentle-shadow system. |
385
+ | **Loading (AI page generation)** | Inline progress with the plum accent; existing blocks stay visible while AI proposes new ones. |
386
+ | **Error (save/publish failed)** | Inline message in Ink (`#333333`) with a plain-language explanation and a retry — states what to do next, no bare error code. |
387
+ | **Error (form validation)** | Field-level message below the input describing what's valid, not just "required". |
388
+ | **Success (published / saved)** | Brief inline confirmation in calm tone; the live page link surfaces immediately below. No celebratory emoji spam. |
389
+ | **Skeleton** | `#f2f2f2` / `#f8f8f8` blocks at final dimensions, 6px–12px radius, soft pulse. |
390
+ | **Disabled** | Muted (`#969696`) text on reduced-opacity surface; plum actions fade rather than turn grey to preserve brand read. |
391
+
392
+ ## 15. Motion & Easing
393
+
394
+ **Durations**:
395
+
396
+ | Token | Value | Use |
397
+ |---|---|---|
398
+ | `motion-fast` | 120ms | Hover, button press, toggle flip, focus |
399
+ | `motion-standard` | 200ms | Card/section reveal, sheet, dropdown, link-block reorder |
400
+ | `motion-slow` | 320ms | Page-level transitions, hero reveal |
401
+
402
+ **Easings**:
403
+
404
+ | Token | Curve | Use |
405
+ |---|---|---|
406
+ | `ease-enter` | `cubic-bezier(0.2, 0.6, 0.25, 1)` | Arriving — cards, blocks, sheets |
407
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
408
+ | `ease-standard` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Two-way transitions |
409
+
410
+ **Motion rules**: Motion is friendly but functional — consistent with the bright, approachable creator-economy mood. The billing toggle flips its plum thumb at `motion-fast`; link blocks and cards reveal/reorder at `motion-standard / ease-enter` with a small fade-from-below; the purple hero settles in once on load. A light delight is on-brand here (more than a fintech tool would allow), but never bouncy chaos — a creator's published page must feel stable and trustworthy. Under `prefers-reduced-motion: reduce`, all transitions collapse to instant and the product remains fully functional.
411
+
412
+ <!--
413
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
414
+
415
+ Tier 1 live inspect (2026-06-17) via playwright getComputedStyle:
416
+ - https://portaly.cc/ (homepage, geo-redirects to /en) — hero, hero gradient, nav, CTAs, template thumbnails, color-frequency scan
417
+ - https://portaly.cc/en/pricing — primary/secondary buttons (#862983), plan cards (12px, soft grey shadow), billing toggle, teal checkmarks (#12a3a0)
418
+ - https://portaly.cc/en/blog — brand-owned surface, same chrome/font stack
419
+ - https://portaly.cc/cwl — founder 林啟維's live creator page (Traditional-Chinese product surface; link-block component; "Noto Sans, Noto Sans TC, Noto Color Emoji" stack confirmed)
420
+
421
+ All token-level claims (§1–9) are sourced from this live inspection. Full raw samples in
422
+ web/references/portaly/.verification.md.
423
+
424
+ Voice samples (§10) are verbatim from the live homepage and pricing page.
425
+
426
+ Brand narrative (§11): Portaly (傳送門) launched 2022 by CW Lin (林啟維) under Real Engine, Inc.
427
+ (真實引擎), a Taiwan startup; Taiwan's largest Traditional-Chinese link-in-bio / creator
428
+ landing-page builder; AI feature won #2 Product of the Day on Product Hunt (2023, badge live
429
+ on site); Neo 30 (2023) and 500 Global recognition. Gathered via WebSearch 2026-06-17
430
+ (LinkedIn /company/portaly-cc, Cake /me/chi-wei-lin-CW, Yourator Real-Engine, Crunchbase
431
+ /organization/portaly) + live marketing copy. These are widely documented public facts, not
432
+ directly quoted from a verified internal Portaly statement beyond the live site copy.
433
+
434
+ Personas (§13) are fictional archetypes informed by publicly observable Portaly user segments
435
+ (Traditional-Chinese visual creators, small businesses, course/product sellers). Names are
436
+ illustrative; they do not refer to real people.
437
+
438
+ Interpretive claims (e.g., "a page, not a link list", "one action, one plum", "teal-magenta
439
+ duality as the brand's warmth") are editorial readings connecting Portaly's observed design to
440
+ its positioning, not directly sourced Portaly statements.
441
+ -->