getrelay 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +40 -0
  3. package/bin/relay.js +362 -0
  4. package/design-md/airbnb/DESIGN.md +545 -0
  5. package/design-md/airbnb/README.md +5 -0
  6. package/design-md/airtable/DESIGN.md +554 -0
  7. package/design-md/airtable/README.md +5 -0
  8. package/design-md/apple/DESIGN.md +562 -0
  9. package/design-md/apple/README.md +5 -0
  10. package/design-md/binance/DESIGN.md +634 -0
  11. package/design-md/binance/README.md +5 -0
  12. package/design-md/bmw/DESIGN.md +544 -0
  13. package/design-md/bmw/README.md +5 -0
  14. package/design-md/bmw-m/DESIGN.md +503 -0
  15. package/design-md/bmw-m/README.md +5 -0
  16. package/design-md/bugatti/DESIGN.md +454 -0
  17. package/design-md/bugatti/README.md +5 -0
  18. package/design-md/cal/DESIGN.md +542 -0
  19. package/design-md/cal/README.md +5 -0
  20. package/design-md/claude/DESIGN.md +589 -0
  21. package/design-md/claude/README.md +5 -0
  22. package/design-md/clay/DESIGN.md +541 -0
  23. package/design-md/clay/README.md +5 -0
  24. package/design-md/clickhouse/DESIGN.md +544 -0
  25. package/design-md/clickhouse/README.md +5 -0
  26. package/design-md/cohere/DESIGN.md +451 -0
  27. package/design-md/cohere/README.md +5 -0
  28. package/design-md/coinbase/DESIGN.md +570 -0
  29. package/design-md/coinbase/README.md +5 -0
  30. package/design-md/composio/DESIGN.md +506 -0
  31. package/design-md/composio/README.md +5 -0
  32. package/design-md/cursor/DESIGN.md +537 -0
  33. package/design-md/cursor/README.md +5 -0
  34. package/design-md/elevenlabs/DESIGN.md +504 -0
  35. package/design-md/elevenlabs/README.md +5 -0
  36. package/design-md/expo/DESIGN.md +526 -0
  37. package/design-md/expo/README.md +5 -0
  38. package/design-md/ferrari/DESIGN.md +531 -0
  39. package/design-md/ferrari/README.md +5 -0
  40. package/design-md/figma/DESIGN.md +578 -0
  41. package/design-md/figma/README.md +5 -0
  42. package/design-md/framer/DESIGN.md +544 -0
  43. package/design-md/framer/README.md +5 -0
  44. package/design-md/hashicorp/DESIGN.md +575 -0
  45. package/design-md/hashicorp/README.md +5 -0
  46. package/design-md/ibm/DESIGN.md +550 -0
  47. package/design-md/ibm/README.md +5 -0
  48. package/design-md/intercom/DESIGN.md +546 -0
  49. package/design-md/intercom/README.md +5 -0
  50. package/design-md/kraken/DESIGN.md +125 -0
  51. package/design-md/kraken/README.md +5 -0
  52. package/design-md/lamborghini/DESIGN.md +288 -0
  53. package/design-md/lamborghini/README.md +5 -0
  54. package/design-md/linear.app/DESIGN.md +548 -0
  55. package/design-md/linear.app/README.md +5 -0
  56. package/design-md/lovable/DESIGN.md +298 -0
  57. package/design-md/lovable/README.md +5 -0
  58. package/design-md/mastercard/DESIGN.md +365 -0
  59. package/design-md/mastercard/README.md +5 -0
  60. package/design-md/meta/DESIGN.md +683 -0
  61. package/design-md/meta/README.md +5 -0
  62. package/design-md/minimax/DESIGN.md +746 -0
  63. package/design-md/minimax/README.md +5 -0
  64. package/design-md/mintlify/DESIGN.md +852 -0
  65. package/design-md/mintlify/README.md +5 -0
  66. package/design-md/miro/DESIGN.md +825 -0
  67. package/design-md/miro/README.md +5 -0
  68. package/design-md/mistral.ai/DESIGN.md +773 -0
  69. package/design-md/mistral.ai/README.md +5 -0
  70. package/design-md/mongodb/DESIGN.md +767 -0
  71. package/design-md/mongodb/README.md +5 -0
  72. package/design-md/nike/DESIGN.md +575 -0
  73. package/design-md/nike/README.md +5 -0
  74. package/design-md/notion/DESIGN.md +821 -0
  75. package/design-md/notion/README.md +5 -0
  76. package/design-md/nvidia/DESIGN.md +640 -0
  77. package/design-md/nvidia/README.md +5 -0
  78. package/design-md/ollama/DESIGN.md +539 -0
  79. package/design-md/ollama/README.md +5 -0
  80. package/design-md/opencode.ai/DESIGN.md +521 -0
  81. package/design-md/opencode.ai/README.md +5 -0
  82. package/design-md/pinterest/DESIGN.md +597 -0
  83. package/design-md/pinterest/README.md +5 -0
  84. package/design-md/playstation/DESIGN.md +661 -0
  85. package/design-md/playstation/README.md +5 -0
  86. package/design-md/posthog/DESIGN.md +690 -0
  87. package/design-md/posthog/README.md +5 -0
  88. package/design-md/raycast/DESIGN.md +669 -0
  89. package/design-md/raycast/README.md +5 -0
  90. package/design-md/renault/DESIGN.md +589 -0
  91. package/design-md/renault/README.md +5 -0
  92. package/design-md/replicate/DESIGN.md +616 -0
  93. package/design-md/replicate/README.md +5 -0
  94. package/design-md/resend/DESIGN.md +585 -0
  95. package/design-md/resend/README.md +5 -0
  96. package/design-md/revolut/DESIGN.md +636 -0
  97. package/design-md/revolut/README.md +5 -0
  98. package/design-md/runwayml/DESIGN.md +244 -0
  99. package/design-md/runwayml/README.md +5 -0
  100. package/design-md/sanity/DESIGN.md +357 -0
  101. package/design-md/sanity/README.md +5 -0
  102. package/design-md/sentry/DESIGN.md +551 -0
  103. package/design-md/sentry/README.md +5 -0
  104. package/design-md/shopify/DESIGN.md +516 -0
  105. package/design-md/shopify/README.md +5 -0
  106. package/design-md/slack/DESIGN.md +482 -0
  107. package/design-md/spacex/DESIGN.md +363 -0
  108. package/design-md/spacex/README.md +5 -0
  109. package/design-md/spotify/DESIGN.md +246 -0
  110. package/design-md/spotify/README.md +5 -0
  111. package/design-md/starbucks/DESIGN.md +580 -0
  112. package/design-md/starbucks/README.md +5 -0
  113. package/design-md/stripe/DESIGN.md +487 -0
  114. package/design-md/stripe/README.md +5 -0
  115. package/design-md/supabase/DESIGN.md +462 -0
  116. package/design-md/supabase/README.md +5 -0
  117. package/design-md/superhuman/DESIGN.md +448 -0
  118. package/design-md/superhuman/README.md +5 -0
  119. package/design-md/tesla/DESIGN.md +286 -0
  120. package/design-md/tesla/README.md +5 -0
  121. package/design-md/theverge/DESIGN.md +339 -0
  122. package/design-md/theverge/README.md +5 -0
  123. package/design-md/together.ai/DESIGN.md +633 -0
  124. package/design-md/together.ai/README.md +5 -0
  125. package/design-md/uber/DESIGN.md +636 -0
  126. package/design-md/uber/README.md +5 -0
  127. package/design-md/vercel/DESIGN.md +736 -0
  128. package/design-md/vercel/README.md +5 -0
  129. package/design-md/vodafone/DESIGN.md +538 -0
  130. package/design-md/vodafone/README.md +5 -0
  131. package/design-md/voltagent/DESIGN.md +521 -0
  132. package/design-md/voltagent/README.md +5 -0
  133. package/design-md/warp/DESIGN.md +526 -0
  134. package/design-md/warp/README.md +5 -0
  135. package/design-md/webflow/DESIGN.md +588 -0
  136. package/design-md/webflow/README.md +5 -0
  137. package/design-md/wired/DESIGN.md +497 -0
  138. package/design-md/wired/README.md +5 -0
  139. package/design-md/wise/DESIGN.md +544 -0
  140. package/design-md/wise/README.md +5 -0
  141. package/design-md/x.ai/DESIGN.md +465 -0
  142. package/design-md/x.ai/README.md +5 -0
  143. package/design-md/zapier/DESIGN.md +537 -0
  144. package/design-md/zapier/README.md +5 -0
  145. package/package.json +31 -0
@@ -0,0 +1,661 @@
1
+ ---
2
+ version: alpha
3
+ name: PlayStation
4
+ description: |
5
+ A three-surface marketing system organized around alternating black, white, and PlayStation Blue chapters that scroll past the viewer like a console launch trailer. Each section has a single editorial purpose — hero photography, console product render, PS Plus tier callout, news strip — and each owns one of three full-bleed canvas modes. The chrome is unusually quiet for a gaming brand: bright PlayStation Blue (`#0070d1`) carries every primary CTA as a fully-rounded pill, the proprietary SST face renders display copy at a signature weight 300 (light) for an airy, premium feel, and a crisp 8px-radius secondary card system carries product info on either canvas mode. The system never decorates — no gradient backgrounds on chrome, no atmospheric mesh, no drop shadows beyond a faint section-divide. Imagery does all the heavy lifting: console glamour shots, game key art, and PS Plus tier illustrations occupy 60-90% of every section, with copy compressed into a small editorial slot.
6
+
7
+ colors:
8
+ primary: "#0070d1"
9
+ primary-pressed: "#0064b7"
10
+ primary-active: "#004d8d"
11
+ on-primary: "#ffffff"
12
+ link-light: "#0064b7"
13
+ link-dark: "#53b1ff"
14
+ commerce: "#d53b00"
15
+ commerce-pressed: "#aa2f00"
16
+ commerce-link-base: "#d63d00"
17
+ on-commerce: "#ffffff"
18
+ ink: "#000000"
19
+ ink-deep: "#121314"
20
+ ink-elevated: "#181818"
21
+ charcoal: "#1f2024"
22
+ body-light: "rgba(0,0,0,0.6)"
23
+ mute-light: "#6b6b6b"
24
+ ash-light: "#cccccc"
25
+ body-dark: "rgba(255,255,255,0.7)"
26
+ mute-dark: "rgba(229,229,229,0.55)"
27
+ ash-dark: "rgba(229,229,229,0.2)"
28
+ canvas-light: "#ffffff"
29
+ surface-soft: "#f3f3f3"
30
+ surface-card: "#f5f7fa"
31
+ surface-filter: "rgba(245,247,250,0.3)"
32
+ canvas-dark: "#000000"
33
+ surface-dark-elevated: "#121314"
34
+ surface-dark-card: "#181818"
35
+ hairline-light: "#f3f3f3"
36
+ hairline-dark: "rgba(229,229,229,0.2)"
37
+ on-dark: "#ffffff"
38
+ on-dark-mute: "#cccccc"
39
+ warning: "#c81b3a"
40
+ ps-plus-gold-start: "#ffce21"
41
+ ps-plus-gold-mid: "#f5a623"
42
+ ps-plus-gold-end: "#ee8e00"
43
+ marathon-yellow: "#deff20"
44
+
45
+ typography:
46
+ display-xl:
47
+ fontFamily: PlayStation SST
48
+ fontSize: 54px
49
+ fontWeight: 300
50
+ lineHeight: 1.25
51
+ letterSpacing: -0.1px
52
+ display-lg:
53
+ fontFamily: PlayStation SST
54
+ fontSize: 44px
55
+ fontWeight: 300
56
+ lineHeight: 1.25
57
+ letterSpacing: 0.1px
58
+ display-md:
59
+ fontFamily: PlayStation SST
60
+ fontSize: 35px
61
+ fontWeight: 300
62
+ lineHeight: 1.25
63
+ letterSpacing: 0
64
+ heading-xl:
65
+ fontFamily: PlayStation SST
66
+ fontSize: 28px
67
+ fontWeight: 300
68
+ lineHeight: 1.25
69
+ letterSpacing: 0.1px
70
+ heading-lg:
71
+ fontFamily: PlayStation SST
72
+ fontSize: 22px
73
+ fontWeight: 300
74
+ lineHeight: 1.25
75
+ letterSpacing: 0.1px
76
+ heading-md:
77
+ fontFamily: PlayStation SST
78
+ fontSize: 18px
79
+ fontWeight: 600
80
+ lineHeight: 1
81
+ letterSpacing: 0
82
+ body-md:
83
+ fontFamily: PlayStation SST
84
+ fontSize: 18px
85
+ fontWeight: 400
86
+ lineHeight: 1.5
87
+ letterSpacing: 0.1px
88
+ body-strong:
89
+ fontFamily: PlayStation SST
90
+ fontSize: 18px
91
+ fontWeight: 500
92
+ lineHeight: 1.25
93
+ letterSpacing: 0.4px
94
+ body-sm:
95
+ fontFamily: PlayStation SST
96
+ fontSize: 16px
97
+ fontWeight: 400
98
+ lineHeight: 1.5
99
+ letterSpacing: 0
100
+ caption-md:
101
+ fontFamily: PlayStation SST
102
+ fontSize: 14px
103
+ fontWeight: 400
104
+ lineHeight: 1.5
105
+ letterSpacing: 0
106
+ caption-sm:
107
+ fontFamily: PlayStation SST
108
+ fontSize: 12px
109
+ fontWeight: 500
110
+ lineHeight: 1.5
111
+ letterSpacing: 0
112
+ link-md:
113
+ fontFamily: PlayStation SST
114
+ fontSize: 18px
115
+ fontWeight: 400
116
+ lineHeight: 1.5
117
+ letterSpacing: 0
118
+ button-lg:
119
+ fontFamily: PlayStation SST
120
+ fontSize: 18px
121
+ fontWeight: 700
122
+ lineHeight: 1.25
123
+ letterSpacing: 0.45px
124
+ button-md:
125
+ fontFamily: PlayStation SST
126
+ fontSize: 14px
127
+ fontWeight: 700
128
+ lineHeight: 1.25
129
+ letterSpacing: 0.324px
130
+
131
+ rounded:
132
+ none: 0px
133
+ sm: 4px
134
+ md: 8px
135
+ lg: 16px
136
+ full: 9999px
137
+
138
+ spacing:
139
+ xxs: 4px
140
+ xs: 8px
141
+ sm: 12px
142
+ md: 16px
143
+ lg: 24px
144
+ xl: 32px
145
+ xxl: 48px
146
+ section: 96px
147
+
148
+ components:
149
+ button-primary:
150
+ backgroundColor: "{colors.primary}"
151
+ textColor: "{colors.on-primary}"
152
+ typography: "{typography.button-lg}"
153
+ rounded: "{rounded.full}"
154
+ padding: 12px 28px
155
+ height: 48px
156
+ button-primary-pressed:
157
+ backgroundColor: "{colors.primary-pressed}"
158
+ textColor: "{colors.on-primary}"
159
+ typography: "{typography.button-lg}"
160
+ rounded: "{rounded.full}"
161
+ button-commerce:
162
+ backgroundColor: "{colors.commerce}"
163
+ textColor: "{colors.on-commerce}"
164
+ typography: "{typography.button-lg}"
165
+ rounded: "{rounded.full}"
166
+ padding: 12px 28px
167
+ height: 48px
168
+ button-commerce-pressed:
169
+ backgroundColor: "{colors.commerce-pressed}"
170
+ textColor: "{colors.on-commerce}"
171
+ typography: "{typography.button-lg}"
172
+ rounded: "{rounded.full}"
173
+ button-secondary-light:
174
+ backgroundColor: "transparent"
175
+ textColor: "{colors.ink}"
176
+ typography: "{typography.button-lg}"
177
+ rounded: "{rounded.full}"
178
+ padding: 12px 28px
179
+ height: 48px
180
+ button-secondary-dark:
181
+ backgroundColor: "transparent"
182
+ textColor: "{colors.on-dark}"
183
+ typography: "{typography.button-lg}"
184
+ rounded: "{rounded.full}"
185
+ padding: 12px 28px
186
+ height: 48px
187
+ button-disabled:
188
+ backgroundColor: "{colors.surface-soft}"
189
+ textColor: "{colors.ash-light}"
190
+ rounded: "{rounded.full}"
191
+ text-input:
192
+ backgroundColor: "{colors.canvas-light}"
193
+ textColor: "{colors.ink}"
194
+ typography: "{typography.body-md}"
195
+ rounded: "{rounded.sm}"
196
+ padding: 12px 16px
197
+ height: 48px
198
+ text-input-focused:
199
+ backgroundColor: "{colors.canvas-light}"
200
+ textColor: "{colors.ink}"
201
+ rounded: "{rounded.sm}"
202
+ filter-pill:
203
+ backgroundColor: "{colors.surface-filter}"
204
+ textColor: "{colors.ink}"
205
+ typography: "{typography.button-md}"
206
+ rounded: "{rounded.full}"
207
+ padding: 8px 16px
208
+ filter-pill-active:
209
+ backgroundColor: "{colors.canvas-light}"
210
+ textColor: "{colors.ink}"
211
+ typography: "{typography.button-md}"
212
+ rounded: "{rounded.full}"
213
+ product-card:
214
+ backgroundColor: "{colors.surface-card}"
215
+ textColor: "{colors.ink}"
216
+ typography: "{typography.body-md}"
217
+ rounded: "{rounded.md}"
218
+ padding: 24px
219
+ product-card-dark:
220
+ backgroundColor: "{colors.surface-dark-card}"
221
+ textColor: "{colors.on-dark}"
222
+ typography: "{typography.body-md}"
223
+ rounded: "{rounded.md}"
224
+ padding: 24px
225
+ game-tile:
226
+ backgroundColor: "{colors.surface-dark-elevated}"
227
+ textColor: "{colors.on-dark}"
228
+ typography: "{typography.body-sm}"
229
+ rounded: "{rounded.md}"
230
+ padding: 0px
231
+ feature-card:
232
+ backgroundColor: "{colors.canvas-light}"
233
+ textColor: "{colors.ink}"
234
+ typography: "{typography.body-md}"
235
+ rounded: "{rounded.md}"
236
+ padding: 32px
237
+ hero-band-blue:
238
+ backgroundColor: "{colors.primary}"
239
+ textColor: "{colors.on-primary}"
240
+ typography: "{typography.display-md}"
241
+ rounded: "{rounded.none}"
242
+ padding: 96px 48px
243
+ hero-band-dark:
244
+ backgroundColor: "{colors.canvas-dark}"
245
+ textColor: "{colors.on-dark}"
246
+ typography: "{typography.display-xl}"
247
+ rounded: "{rounded.none}"
248
+ padding: 96px 48px
249
+ hero-band-light:
250
+ backgroundColor: "{colors.canvas-light}"
251
+ textColor: "{colors.ink}"
252
+ typography: "{typography.display-xl}"
253
+ rounded: "{rounded.none}"
254
+ padding: 96px 48px
255
+ ps-plus-banner:
256
+ backgroundColor: "{colors.surface-dark-elevated}"
257
+ textColor: "{colors.on-dark}"
258
+ typography: "{typography.heading-xl}"
259
+ rounded: "{rounded.md}"
260
+ padding: 48px 32px
261
+ carousel-paddle:
262
+ backgroundColor: "rgba(255,255,255,0.16)"
263
+ textColor: "{colors.on-dark}"
264
+ rounded: "{rounded.full}"
265
+ size: 48px
266
+ pagination-dot:
267
+ backgroundColor: "{colors.ash-dark}"
268
+ rounded: "{rounded.full}"
269
+ size: 8px
270
+ pagination-dot-active:
271
+ backgroundColor: "{colors.on-dark}"
272
+ rounded: "{rounded.full}"
273
+ size: 8px
274
+ badge-info:
275
+ backgroundColor: "{colors.primary}"
276
+ textColor: "{colors.on-primary}"
277
+ typography: "{typography.caption-sm}"
278
+ rounded: "{rounded.full}"
279
+ padding: 4px 10px
280
+ primary-nav:
281
+ backgroundColor: "{colors.canvas-dark}"
282
+ textColor: "{colors.on-dark}"
283
+ typography: "{typography.body-strong}"
284
+ rounded: "{rounded.none}"
285
+ height: 48px
286
+ sub-nav:
287
+ backgroundColor: "{colors.canvas-dark}"
288
+ textColor: "{colors.on-dark}"
289
+ typography: "{typography.caption-md}"
290
+ rounded: "{rounded.none}"
291
+ height: 40px
292
+ footer-section:
293
+ backgroundColor: "{colors.primary}"
294
+ textColor: "{colors.on-primary}"
295
+ typography: "{typography.caption-md}"
296
+ rounded: "{rounded.none}"
297
+ padding: 48px 32px
298
+ support-search-bar:
299
+ backgroundColor: "{colors.canvas-light}"
300
+ textColor: "{colors.ink}"
301
+ typography: "{typography.body-md}"
302
+ rounded: "{rounded.full}"
303
+ padding: 12px 24px
304
+ height: 56px
305
+ support-row:
306
+ backgroundColor: "{colors.canvas-light}"
307
+ textColor: "{colors.ink}"
308
+ typography: "{typography.body-md}"
309
+ rounded: "{rounded.none}"
310
+ padding: 16px 0px
311
+ link-inline:
312
+ textColor: "{colors.link-light}"
313
+ typography: "{typography.link-md}"
314
+ ---
315
+
316
+ ## Overview
317
+
318
+ PlayStation's marketing system reads like a console launch trailer scrolling past the viewer in chapters. Each section is a full-bleed band — pure black `{colors.canvas-dark}`, true white `{colors.canvas-light}`, or PlayStation Blue `{colors.primary}` — and each chapter owns one editorial moment: hero console photography, a games-coming-soon strip, the PlayStation Plus tier banner, the "30 Years of PlayStation" anniversary band, the news strip from the PlayStation Blog. There is no decorative chrome between chapters; the section background change IS the divider. Sections stack at `{spacing.section}` (96px) rhythm with the next band's color taking over the page edge-to-edge.
319
+
320
+ The system has two distinct surface modes that alternate down the page: a **dark canvas mode** for editorial product moments (hero, "ON PLAYSTATION" band, marathon game pages) and a **light canvas mode** for utility surfaces (PS5 games listing, support pages, news index). Both modes use the same chrome vocabulary — fully-rounded `{rounded.full}` pill buttons, 8px-radius `{rounded.md}` cards, the proprietary PlayStation SST face — only the surface and on-surface colors change. The third surface mode is the **PlayStation Blue band** (`{colors.primary}` — `#0070d1`) reserved for the highest-priority moments: the Marathon launch CTA strip, the footer, and any "Action Required" banner.
321
+
322
+ The typography is the system's most distinctive choice. PlayStation SST renders display headlines at **weight 300** (light) — unusual for a gaming brand that could easily reach for bold geometric display faces. The light weight gives the chrome an airy, almost editorial quality that lets the imagery speak; copy is information rather than decoration. Heading sizes drop in tight increments (54 → 44 → 35 → 28 → 22 → 18) and body settles at 18px with 1.5 line-height for comfortable long-form reading on support and games pages.
323
+
324
+ **Key Characteristics:**
325
+ - Three-canvas chapter system: `{colors.canvas-dark}` (black), `{colors.canvas-light}` (white), `{colors.primary}` (PlayStation Blue) alternating down the page
326
+ - PlayStation Blue (`{colors.primary}` — `#0070d1`) is the universal primary CTA — fully-rounded pill at `{rounded.full}` (9999px)
327
+ - Commerce orange (`{colors.commerce}` — `#d53b00`) is the secondary CTA reserved for "Buy now" / "Pre-order" / store actions
328
+ - PlayStation SST display tier renders at **weight 300** with -0.1px to +0.4px tracking — the brand's signature airy editorial voice
329
+ - 8px-radius (`{rounded.md}`) for product cards and feature panels; 4px-radius (`{rounded.sm}`) for inputs; pills (`{rounded.full}`) for every CTA
330
+ - Game tiles, console renders, and PS Plus tier illustrations occupy 60-90% of each section — imagery does the storytelling
331
+ - Color-block page rhythm (one observed band sequence): dark hero → light console showcase → dark "Great PS4 & PS5 games" rail → light "Discover PlayStation Plus" tier band → light "30 years of PlayStation" callout → dark "ON PLAYSTATION" band → light news strip → blue footer
332
+
333
+ ## Colors
334
+
335
+ > **Source pages:** `/en-tr/` (home), `/en-tr/ps5/games/` (PS5 games listing), `/en-tr/games/marathon/` (single game page), `/tr-tr/support/account/` (support center). The chrome palette is identical across all four pages; the support page uses the light-canvas mode exclusively while marketing pages alternate.
336
+
337
+ ### Brand & Accent
338
+ - **PlayStation Blue** (`{colors.primary}` — `#0070d1`): the brand's universal primary. Every primary CTA pill, the active filter chip, the footer surface, badge fills, and inline link color on dark surfaces.
339
+ - **PlayStation Blue Pressed** (`{colors.primary-pressed}` — `#0064b7`): pressed state for the primary pill — also doubles as the inline link color on light surfaces.
340
+ - **PlayStation Blue Active** (`{colors.primary-active}` — `#004d8d`): deeply-pressed state for the primary button.
341
+ - **Commerce Orange** (`{colors.commerce}` — `#d53b00`): the secondary CTA reserved for store/buy/pre-order actions. The only warm color in the system.
342
+ - **Commerce Orange Pressed** (`{colors.commerce-pressed}` — `#aa2f00`): pressed state for commerce buttons.
343
+ - **Marathon Yellow** (`{colors.marathon-yellow}` — `#deff20`): a single high-saturation game-page accent extracted from Marathon's product palette — used only inside the dedicated `/marathon/` game page chrome and not part of the system's general accent vocabulary.
344
+
345
+ ### Surface
346
+ - **Canvas Dark** (`{colors.canvas-dark}` — `#000000`): pure black hero band, primary nav background, footer base. The dominant surface for editorial product moments.
347
+ - **Surface Dark Elevated** (`{colors.surface-dark-elevated}` — `#121314`): inset dark panels, PS Plus tier banner background, "ON PLAYSTATION" gradient end.
348
+ - **Surface Dark Card** (`{colors.surface-dark-card}` — `#181818`): game tile fill, dark product card background.
349
+ - **Canvas Light** (`{colors.canvas-light}` — `#ffffff`): true white console-showcase band, support page body, news strip background.
350
+ - **Soft Surface** (`{colors.surface-soft}` — `#f3f3f3`): hairline-soft band fill on light pages, divider rule on light surfaces.
351
+ - **Surface Card** (`{colors.surface-card}` — `#f5f7fa`): cool-blue-tinted product card and tier-card background on light canvas.
352
+ - **Surface Filter** (`{colors.surface-filter}` — `rgba(245,247,250,0.3)`): translucent fill for filter-pill default state on light canvas.
353
+ - **Hairline Light** (`{colors.hairline-light}` — `#f3f3f3`): 1px divider rule on light pages.
354
+ - **Hairline Dark** (`{colors.hairline-dark}` — `rgba(229,229,229,0.2)`): translucent 1px divider on dark canvas.
355
+
356
+ ### Text
357
+ - **Ink** (`{colors.ink}` — `#000000`): primary text on `{colors.canvas-light}`. Headlines, button text, support body.
358
+ - **Ink Deep** (`{colors.ink-deep}` — `#121314`): warmer near-black for in-card titles on dark surfaces and deep-shadow gradients.
359
+ - **Ink Elevated** (`{colors.ink-elevated}` — `#181818`): the lightest of the dark-canvas inks, used for elevated card backgrounds.
360
+ - **Body Light** (`{colors.body-light}` — `rgba(0,0,0,0.6)`): translucent body text on light canvas — the system's default paragraph color.
361
+ - **Mute Light** (`{colors.mute-light}` — `#6b6b6b`): metadata text and footer link captions on light canvas.
362
+ - **Ash Light** (`{colors.ash-light}` — `#cccccc`): disabled-state text and lowest-emphasis utility on light surfaces.
363
+ - **On Dark** (`{colors.on-dark}` — `#ffffff`): primary text on `{colors.canvas-dark}` — headlines, button text on dark hero bands.
364
+ - **Body Dark** (`{colors.body-dark}` — `rgba(255,255,255,0.7)`): translucent body text on dark canvas.
365
+ - **On Dark Mute** (`{colors.on-dark-mute}` — `#cccccc`): secondary text and disabled state on dark surfaces.
366
+ - **Mute Dark** (`{colors.mute-dark}` — `rgba(229,229,229,0.55)`): captions and metadata on dark canvas.
367
+
368
+ ### Semantic
369
+ - **Warning** (`{colors.warning}` — `#c81b3a`): validation errors and destructive confirmation copy.
370
+ - **Link Light** (`{colors.link-light}` — `#0064b7`): inline body-prose anchor link on light canvas — same hex as `{colors.primary-pressed}`.
371
+ - **Link Dark** (`{colors.link-dark}` — `#53b1ff`): inline body-prose anchor link on dark canvas — a brightened blue for dark-mode legibility.
372
+
373
+ ### Brand Gradient
374
+ - **PlayStation Plus Gold Gradient** — a horizontal three-stop gold gradient `{colors.ps-plus-gold-start}` (`#ffce21`) → `{colors.ps-plus-gold-mid}` (`#f5a623`) → `{colors.ps-plus-gold-end}` (`#ee8e00`) that anchors the PS Plus banner on the home page. The only gradient in the system; reserved exclusively for PS Plus chrome.
375
+
376
+ ## Typography
377
+
378
+ ### Font Family
379
+ - **PlayStation SST** is the proprietary brand sans-serif used across every text role on the site. It carries weights 300 (light), 400 (regular), 500 (medium), 600 (semibold), and 700 (bold), and falls back through `sst` → `Arial` → `Helvetica`. The brand's distinctive choice is using **weight 300 (light) for display headlines** — unusual for a gaming brand and the source of the system's editorial, airy character.
380
+ - **SST** appears as a secondary cut for in-product surfaces, falling back to Helvetica → Arial.
381
+
382
+ ### Hierarchy
383
+
384
+ | Token | Size | Weight | Line Height | Letter Spacing | Use |
385
+ |---|---|---|---|---|---|
386
+ | `{typography.display-xl}` | 54px | 300 | 1.25 | -0.1px | Hero headline ("Discover all PS5 consoles and accessories") |
387
+ | `{typography.display-lg}` | 44px | 300 | 1.25 | 0.1px | Section headline ("Great PS4 & PS5 games out now or coming soon") |
388
+ | `{typography.display-md}` | 35px | 300 | 1.25 | 0 | Mid-section headline, game-page sub-hero |
389
+ | `{typography.heading-xl}` | 28px | 300 | 1.25 | 0.1px | "30 Years of PlayStation" callout, in-band sub-heading |
390
+ | `{typography.heading-lg}` | 22px | 300 | 1.25 | 0.1px | News card title, support category title |
391
+ | `{typography.heading-md}` | 18px | 600 | 1 | 0 | Card label, navigation menu heading, in-product strong title |
392
+ | `{typography.body-md}` | 18px | 400 | 1.5 | 0.1px | Body copy, paragraph text, support article body |
393
+ | `{typography.body-strong}` | 18px | 500 | 1.25 | 0.4px | Inline emphasis, primary nav link, button label (large) |
394
+ | `{typography.body-sm}` | 16px | 400 | 1.5 | 0 | Card description, secondary body |
395
+ | `{typography.caption-md}` | 14px | 400 | 1.5 | 0 | Footer link, metadata, sub-nav text |
396
+ | `{typography.caption-sm}` | 12px | 500 | 1.5 | 0 | Smallest utility text, badge label |
397
+ | `{typography.link-md}` | 18px | 400 | 1.5 | 0 | Inline body-prose anchor link |
398
+ | `{typography.button-lg}` | 18px | 700 | 1.25 | 0.45px | Primary CTA pill |
399
+ | `{typography.button-md}` | 14px | 700 | 1.25 | 0.324px | Compact pill, filter chip, secondary CTA |
400
+
401
+ ### Principles
402
+ The hierarchy works on a 1.25-line-height ladder almost exclusively — even body sits at 1.5 instead of the typical 1.6 — which keeps long-form support pages tight and console showcases efficient. The weight contrast between display (300) and button (700) is dramatic: a single 18px chrome line might host a heavyweight CTA next to a feather-light 22px headline, giving the system its editorial gaming-magazine feel.
403
+
404
+ ### Note on Font Substitutes
405
+ PlayStation SST is proprietary. The closest open-source substitutes:
406
+ - **Roboto Light (300)** for the display tier — its slightly looser letter-spacing matches SST's display optical fit.
407
+ - **Inter** at weights 400/500/600 for body and chrome — the closest geometric sans match for SST's body cut.
408
+ - **Source Sans Pro Light (300)** as an alternative for the display tier when Roboto reads too utilitarian.
409
+
410
+ When substituting, preserve the +0.1px to +0.45px tracking on display and button tiers — the spacing is part of what makes PlayStation SST feel premium at the light weight.
411
+
412
+ ## Layout
413
+
414
+ ### Spacing System
415
+ - **Base unit:** 8px (with finer 4/12px steps for tight inline gaps).
416
+ - **Tokens (front matter):** `{spacing.xxs}` (4px) · `{spacing.xs}` (8px) · `{spacing.sm}` (12px) · `{spacing.md}` (16px) · `{spacing.lg}` (24px) · `{spacing.xl}` (32px) · `{spacing.xxl}` (48px) · `{spacing.section}` (96px).
417
+ - **Universal section rhythm:** every page in the set uses `{spacing.section}` (96px) as the vertical gap between major content blocks. Card grids use `{spacing.lg}` (24px) gutters; in-card padding sits at `{spacing.lg}` to `{spacing.xl}` depending on density.
418
+ - **Hero band padding:** 96px vertical / 48px horizontal — the largest spacing in the system, reserved for full-bleed surface chapters.
419
+
420
+ ### Grid & Container
421
+ - **Max width:** ~1280px content area for body text on desktop with 24px gutters that expand to ~48px at ultrawide. Hero bands and game-tile rails go full-bleed with no max-width constraint on imagery.
422
+ - **Game tile carousel:** 4-up at desktop with horizontal scroll on the same row, collapsing to 3-up at 1024px and 2-up at 768px. Each tile uses 16:9 cover art at `{rounded.md}`.
423
+ - **Console showcase grid:** desktop 5-column thumbnail strip below the main hero render, collapsing to 3-up + horizontal scroll at tablet.
424
+ - **Support page:** desktop 2-column 30/70 split (sidebar nav + article body), collapsing to single-column with the sidebar promoted to a top accordion at mobile.
425
+ - **News strip:** 3-up card grid at desktop, 2-up at tablet, 1-up at mobile.
426
+
427
+ ### Whitespace Philosophy
428
+ Whitespace is structural and band-defined. The 96px `{spacing.section}` between chapters reads as silence between trailer cuts — there's no decorative wash, no gradient transition, no mid-section divider. Inside a section, content is left-aligned in a tight column with the imagery breathing in the right 60-70% of the band. Paragraph text is comfortable at 1.5 line-height but column widths stay narrow (~520px at desktop) to keep long-form copy readable.
429
+
430
+ ## Elevation & Depth
431
+
432
+ | Level | Treatment | Use |
433
+ |---|---|---|
434
+ | 0 — Flat | No border, no shadow | Default for hero bands, footer, full-bleed sections — the dominant treatment |
435
+ | 1 — Hairline divider | 1px solid `{colors.hairline-light}` or `{colors.hairline-dark}` | Card borders, support row dividers, footer column rules |
436
+ | 2 — Soft active shadow | `0 4px 12px rgba(0,0,0,0.16)` | Active/pressed CTAs, lifted product card |
437
+ | 3 — Section gradient | Soft top-to-bottom darkening from `{colors.surface-dark-elevated}` to `{colors.canvas-dark}` | "ON PLAYSTATION" band — only place a gradient appears on chrome |
438
+
439
+ The system has effectively no resting shadow on cards; depth is built from surface-color contrast across band chapters. Cards lift only on press.
440
+
441
+ ### Decorative Depth
442
+ Depth comes from the alternating-band rhythm and from the imagery itself:
443
+ - **Console product photography** — DualSense controller and PS5 console renders shot on neutral white with crisp edge lighting, full-bleed inside the light-canvas band.
444
+ - **Game key art** — full-bleed cinematic stills (Marathon, the latest blockbuster releases) inside dark-canvas bands with title lockup overlaid in the lower-left.
445
+ - **PS Plus tier banner** — a subtle horizontal gold gradient (`{colors.ps-plus-gold-start}` → `{colors.ps-plus-gold-end}`) sits as the only chrome gradient in the system, anchoring the "Discover PlayStation Plus" CTA.
446
+ - **"ON PLAYSTATION" gradient band** — top-to-bottom deepening from `{colors.surface-dark-elevated}` (`#121314`) to `{colors.canvas-dark}` (`#000000`) creates a cinematic dimming effect under the anniversary callout.
447
+
448
+ ## Shapes
449
+
450
+ ### Border Radius Scale
451
+
452
+ | Token | Value | Use |
453
+ |---|---|---|
454
+ | `{rounded.none}` | 0px | Hero bands, primary nav, footer, sub-nav, support article body — every full-bleed structural surface |
455
+ | `{rounded.sm}` | 4px | Text inputs, support search field utilities |
456
+ | `{rounded.md}` | 8px | Game tiles, product cards, feature cards, PS Plus banner |
457
+ | `{rounded.lg}` | 16px | Rare large container with extra-soft corners (e.g., dialog cards) |
458
+ | `{rounded.full}` | 9999px | Every CTA pill (primary / commerce / secondary), filter chips, pagination dots, carousel paddles |
459
+
460
+ The radius vocabulary works on a 4 / 8 / pill rhythm for chrome with structural surfaces staying flat at 0px.
461
+
462
+ ### Photography Geometry
463
+ - **Hero console render:** large centered console + DualSense composition on white, ~70% width of the band, with copy slot to the left.
464
+ - **Game tiles:** 16:9 key art at `{rounded.md}` (8px), 4-up rail at desktop with horizontal carousel.
465
+ - **Marathon game page hero:** full-bleed cinematic 16:9 still with the "MARATHON" wordmark in the lower-left at light weight, brand yellow `{colors.marathon-yellow}` accent on a few small UI tags.
466
+ - **News card thumbnails:** 16:9 imagery at `{rounded.md}` with a small text block below.
467
+ - **Avatar / brand icons:** 32–40px circles for sub-nav social row.
468
+
469
+ ## Components
470
+
471
+ > **No hover states documented** per system policy. Each spec covers Default and Active/Pressed only.
472
+
473
+ ### Buttons
474
+
475
+ **`button-primary`** — the universal PlayStation CTA
476
+ - Background `{colors.primary}` (PlayStation Blue), text `{colors.on-primary}`, type `{typography.button-lg}`, padding `12px 28px`, height ~48px, rounded `{rounded.full}`.
477
+ - Used for "Add to bag", "Sign up", "Learn more", "Subscribe" — every primary action across both light and dark canvases.
478
+ - Pressed state lives in `button-primary-pressed` — background drops to `{colors.primary-pressed}` (`#0064b7`).
479
+
480
+ **`button-commerce`** — orange store CTA
481
+ - Background `{colors.commerce}` (`#d53b00`), text `{colors.on-commerce}`, type `{typography.button-lg}`, padding `12px 28px`, height ~48px, rounded `{rounded.full}`.
482
+ - Reserved for "Buy now", "Pre-order", "Add to cart" — store actions only. The only warm color in the system.
483
+ - Pressed state lives in `button-commerce-pressed` — background drops to `{colors.commerce-pressed}`.
484
+
485
+ **`button-secondary-light`** — outline variant on light canvas
486
+ - Background transparent, text `{colors.ink}`, 1px solid `{colors.ash-light}` border, type `{typography.button-lg}`, padding `12px 28px`, height ~48px, rounded `{rounded.full}`.
487
+ - Lower-emphasis CTA on white surfaces ("Learn more →", "Watch trailer").
488
+
489
+ **`button-secondary-dark`** — outline variant on dark canvas
490
+ - Background transparent, text `{colors.on-dark}`, 1px solid `{colors.hairline-dark}`, type `{typography.button-lg}`, padding `12px 28px`, height ~48px, rounded `{rounded.full}`.
491
+ - Same role as the light variant but inverted for use on `{colors.canvas-dark}` hero bands.
492
+
493
+ **`button-disabled`**
494
+ - Background `{colors.surface-soft}`, text `{colors.ash-light}`, rounded `{rounded.full}` — flat soft gray.
495
+
496
+ ### Filter & Tab Chips
497
+
498
+ **`filter-pill`** + **`filter-pill-active`**
499
+ - Default: background `{colors.surface-filter}` (translucent), text `{colors.ink}`, type `{typography.button-md}`, padding `8px 16px`, rounded `{rounded.full}`.
500
+ - Active: background flips to `{colors.canvas-light}` (opaque white) — the chip "lifts" from the translucent default.
501
+ - Used in the PS5 games filter strip ("All", "Coming Soon", "PlayStation VR2", "Recently Released").
502
+
503
+ ### Inputs & Forms
504
+
505
+ **`text-input`** + **`text-input-focused`**
506
+ - Default: background `{colors.canvas-light}`, text `{colors.ink}`, 1px solid `{colors.ash-light}`, type `{typography.body-md}`, padding `12px 16px`, height ~48px, rounded `{rounded.sm}` (4px).
507
+ - Focused: 2px solid `{colors.primary}` border, no halo (relies on the border weight increase as the focus signal).
508
+
509
+ **`support-search-bar`** — the support-page signature search field
510
+ - Background `{colors.canvas-light}`, text `{colors.ink}`, type `{typography.body-md}`, padding `12px 24px`, height ~56px, rounded `{rounded.full}`.
511
+ - Sits at the top of the support page hero with a magnifier icon at the left edge and "Search the support center" placeholder.
512
+
513
+ ### Cards & Containers
514
+
515
+ **`product-card`** — light-canvas product/feature card
516
+ - Container: background `{colors.surface-card}` (`#f5f7fa` cool-blue-tinted), 1px solid `{colors.hairline-light}` (rare; usually borderless), padding `{spacing.lg}` (24px), rounded `{rounded.md}` (8px).
517
+ - Used for the "PlayStation Store" sale callout, news cards, and PS Plus tier comparison cards on light canvas.
518
+
519
+ **`product-card-dark`** — dark-canvas product card
520
+ - Container: background `{colors.surface-dark-card}` (`#181818`), padding `{spacing.lg}`, rounded `{rounded.md}`.
521
+ - Used for game-detail cards and dark-canvas feature panels.
522
+
523
+ **`game-tile`** — game/console thumbnail tile
524
+ - Container: background `{colors.surface-dark-elevated}`, padding 0, rounded `{rounded.md}`.
525
+ - Layout: 16:9 cover art at full bleed inside the radius, with title + platform tag overlaid at the bottom-left in `{typography.body-sm}`.
526
+ - Used in the "Great PS4 & PS5 games" rail and the PS5 games listing grid.
527
+
528
+ **`feature-card`** — light-canvas marketing card
529
+ - Container: background `{colors.canvas-light}`, padding `{spacing.xl}` (32px), rounded `{rounded.md}`.
530
+ - Used for the "PlayStation Store" hero card and similar feature panels with a small product icon, title, body, and CTA.
531
+
532
+ **`hero-band-blue`** — the PlayStation Blue full-bleed band
533
+ - Background `{colors.primary}`, text `{colors.on-primary}` in `{typography.display-md}`, padding `96px 48px`, rounded `{rounded.none}`.
534
+ - The Marathon launch CTA strip and the footer surface use this band. The band's defining purpose is "this is the action moment of the page."
535
+
536
+ **`hero-band-dark`** — full-bleed dark hero
537
+ - Background `{colors.canvas-dark}` (with optional gradient end at `{colors.surface-dark-elevated}`), text `{colors.on-dark}` in `{typography.display-xl}`, padding `96px 48px`, rounded `{rounded.none}`.
538
+ - The home-page hero, the game-detail page hero, and the "ON PLAYSTATION" anniversary band.
539
+
540
+ **`hero-band-light`** — full-bleed white hero
541
+ - Background `{colors.canvas-light}`, text `{colors.ink}` in `{typography.display-xl}`, padding `96px 48px`, rounded `{rounded.none}`.
542
+ - The console showcase band ("Discover all PS5 consoles and accessories") and the support page top.
543
+
544
+ **`ps-plus-banner`** — PlayStation Plus tier callout
545
+ - Background `{colors.surface-dark-elevated}` with the `{colors.ps-plus-gold-start}` → `{colors.ps-plus-gold-end}` gold gradient as a horizontal accent bar across the top, text `{colors.on-dark}` in `{typography.heading-xl}`, padding `48px 32px`, rounded `{rounded.md}`.
546
+ - The "Discover PlayStation Plus" full-width banner on the home page.
547
+
548
+ **`carousel-paddle`** — circular carousel control
549
+ - Background `rgba(255,255,255,0.16)`, icon `{colors.on-dark}`, rounded `{rounded.full}`, size 48px.
550
+ - Anchored to the left/right edge of the game tile carousel.
551
+
552
+ **`pagination-dot`** + **`pagination-dot-active`**
553
+ - 8px circle at `{rounded.full}`. Default fill `{colors.ash-dark}`; active fill `{colors.on-dark}`.
554
+ - Carousel position indicator below the game tile rail.
555
+
556
+ ### Inline
557
+
558
+ **`badge-info`** — small info tag
559
+ - Background `{colors.primary}`, text `{colors.on-primary}` in `{typography.caption-sm}`, padding `4px 10px`, rounded `{rounded.full}`.
560
+ - "New", "Pre-order", "Coming Soon" labels overlaid on game tiles.
561
+
562
+ **`link-inline`** — body-prose anchor link
563
+ - `{colors.link-light}` text on light canvas / `{colors.link-dark}` on dark canvas, no underline by default. Inline body links inside support article paragraphs.
564
+
565
+ ### Navigation
566
+
567
+ **`primary-nav`**
568
+ - Background `{colors.canvas-dark}`, text `{colors.on-dark}`, height ~48px, type `{typography.body-strong}`, rounded `{rounded.none}`.
569
+ - Layout (desktop): PlayStation P-logo at far-left, centered nav row ("Games · PS5 · PS4 · PS VR2 · Subscriptions · Hardware · Mobile · News · Shop · Support"), right cluster (search-glyph + locale + cart icon + user-avatar circle).
570
+
571
+ **`sub-nav`** — secondary nav strip
572
+ - Background `{colors.canvas-dark}`, text `{colors.on-dark}` in `{typography.caption-md}`, height ~40px, rounded `{rounded.none}`.
573
+ - Sits directly below the primary nav on PS5 games / single game / PS Plus pages with section-specific anchor links.
574
+
575
+ **Top Nav (Mobile)**
576
+ - Hamburger menu icon at left, P-logo at center, search + cart icons at right. Primary nav collapses into a full-screen dark drawer that slides from the left.
577
+
578
+ ### Footer
579
+
580
+ **`footer-section`**
581
+ - Background `{colors.primary}` (PlayStation Blue), text `{colors.on-primary}` in `{typography.caption-md}`, padding `{spacing.xxl}` (48px) vertical.
582
+ - Layout: large PlayStation wordmark at top-left, multi-column link grid (locale selector, store links, account, support, social), bottom row with terms / privacy fine-print in `{typography.caption-sm}`.
583
+ - The footer's blue surface is the system's "we're done — return to the brand" anchor.
584
+
585
+ ### Support-page-specific
586
+
587
+ **`support-row`** — support article-list row
588
+ - Background `{colors.canvas-light}`, text `{colors.ink}` in `{typography.body-md}`, padding `16px 0`, with a 1px `{colors.hairline-light}` bottom rule.
589
+ - Used for FAQ / category-listing rows on the support page with a small chevron-right icon at the right edge.
590
+
591
+ ## Do's and Don'ts
592
+
593
+ ### Do
594
+ - Reserve `{colors.primary}` (PlayStation Blue) for primary CTAs and the footer surface only. The blue band is precious — at most one full-bleed blue band per page.
595
+ - Reserve `{colors.commerce}` (orange) for store/buy/pre-order CTAs only. It is never used on marketing chrome or hero pills.
596
+ - Use PlayStation SST at weight 300 for display headings (54 / 44 / 35 / 28 / 22). The light weight is the brand voice.
597
+ - Stack content sections at `{spacing.section}` (96px) rhythm with the next band's surface color taking over the page edge-to-edge — no decorative dividers between bands.
598
+ - Use `{rounded.full}` (9999px) on every CTA pill and `{rounded.md}` (8px) on every product card. The two-radius vocabulary is the entire shape system aside from inputs.
599
+ - Pair full-bleed game key art and console renders inside dark or light bands; let imagery occupy 60-90% of the band's vertical height.
600
+ - Use `{component.ps-plus-banner}` with the gold gradient exclusively for the PlayStation Plus tier callout — never decorate other components with the gold.
601
+
602
+ ### Don't
603
+ - Don't introduce drop shadows on resting cards. The system is flat-on-canvas; cards lift only on press.
604
+ - Don't replace `{colors.primary}` with another shade of blue. The brand blue is precise — `#0070d1` for default and `#0064b7` for pressed.
605
+ - Don't use `{colors.commerce}` (orange) on marketing/hero CTAs. It's reserved exclusively for store actions.
606
+ - Don't introduce a sans-serif body font, italic, or monospace style. PlayStation SST carries every text role.
607
+ - Don't soften pill geometry. CTAs are always `{rounded.full}` — no medium-radius buttons.
608
+ - Don't use the gold PS Plus gradient on anything that isn't the PS Plus banner. It is a tier-specific brand asset.
609
+ - Don't put a gradient on chrome. The only allowed gradient is the gold PS Plus accent and the soft top-to-bottom darkening of the "ON PLAYSTATION" band.
610
+
611
+ ## Responsive Behavior
612
+
613
+ ### Breakpoints
614
+
615
+ | Name | Width | Key Changes |
616
+ |---|---|---|
617
+ | ultrawide | 1920px+ | Hero band stays at content max-width 1280px; outer gutters grow to ~80px |
618
+ | desktop-large | 1440px | Default desktop — 4-up game tile carousel, full primary nav |
619
+ | desktop | 1280px | Same layout with narrower outer gutters |
620
+ | desktop-small | 1024px | Game tile rail collapses to 3-up; sub-nav remains horizontal |
621
+ | tablet | 768px | Game tiles → 2-up; primary nav becomes hamburger drawer |
622
+ | mobile | 480px | Single-column everything; hero `{typography.display-xl}` scales 54px → ~32px |
623
+ | mobile-narrow | 320px | Section padding tightens to 32px; hero further scales to ~28px |
624
+
625
+ ### Touch Targets
626
+ All interactive elements meet WCAG AAA (≥ 44×44px). `{component.button-primary}` and `{component.button-commerce}` sit at 48px height with 28px horizontal padding (effective ~48×100px tappable). `{component.text-input}` sits at 48px. `{component.support-search-bar}` sits at 56px. `{component.filter-pill}` is ~36–40px height with 16px padding extending to 44px tappable via inline padding. `{component.carousel-paddle}` is exactly 48×48 circular.
627
+
628
+ ### Collapsing Strategy
629
+ - **Primary nav:** desktop horizontal cluster → tablet hamburger drawer at 768px. The right-cluster icons (search, cart, account) stay visible at every breakpoint.
630
+ - **Sub-nav:** desktop horizontal anchor row → tablet horizontal scroll → mobile select dropdown.
631
+ - **Game tile carousel:** 4-up → 3-up → 2-up at 1024 and 768px; carousel paddles stay visible at every desktop breakpoint, hide on mobile in favor of touch-swipe.
632
+ - **Hero bands:** stay full-bleed at every breakpoint; only the internal content column reflows from 2-column (text-left + image-right) to single-column (text above image).
633
+ - **Console showcase:** desktop 5-up thumbnail strip → tablet 3-up + horizontal scroll → mobile 1-up with paddle.
634
+ - **Support page:** desktop 30/70 split (sidebar + body) → tablet sidebar promoted to top accordion → mobile fully collapsed accordion.
635
+ - **Section padding:** `{spacing.section}` (96px) desktop → 64px tablet → 48px mobile.
636
+ - **Hero headline:** `{typography.display-xl}` (54px) at desktop, scaling 44px / 32px / 28px down the breakpoint stack.
637
+
638
+ ### Image Behavior
639
+ - Hero imagery (console renders, game key art) uses art-direction crops on mobile so the central subject stays centered when the band collapses to single-column.
640
+ - Game tile cover art preserves 16:9 ratio at every breakpoint; only the column count changes.
641
+ - Console showcase thumbnails maintain their natural aspect (~1:1 product render) across breakpoints.
642
+ - All non-critical imagery is lazy-loaded as the user scrolls into the next chapter.
643
+
644
+ ## Iteration Guide
645
+
646
+ 1. Focus on ONE component at a time. Pull its YAML entry and verify every property resolves.
647
+ 2. Reference component names and tokens directly (`{colors.primary}`, `{component.button-primary-pressed}`, `{rounded.full}`) — do not paraphrase.
648
+ 3. Run `npx @google/design.md lint DESIGN.md` after edits — `broken-ref`, `contrast-ratio`, and `orphaned-tokens` warnings flag issues automatically.
649
+ 4. Add new variants as separate component entries (`-pressed`, `-disabled`) — do not bury them inside prose.
650
+ 5. Default body to `{typography.body-md}` (18px / 400 / 1.5); reach for `{typography.display-xl}` strictly for the page-top hero headline; use `{typography.body-strong}` for primary nav links.
651
+ 6. Keep `{colors.primary}` scarce per viewport — at most one full-bleed PlayStation Blue band per page.
652
+ 7. When introducing a new component, ask whether it can be expressed with the existing pill + 8px-radius card + full-bleed-band vocabulary before adding new tokens. The system's strength is that it almost never needs new ones.
653
+
654
+ ## Known Gaps
655
+
656
+ - **Mobile screenshots not captured** — responsive behavior synthesizes PlayStation's known mobile pattern (hamburger drawer, single-column band reflow, hero downscale) from desktop evidence and the breakpoint stack.
657
+ - **Hover states not documented** by system policy.
658
+ - **Sign-in / authentication chrome** (login modal, account dashboard, profile pages) not in the captured pages.
659
+ - **PlayStation Store** in-store browsing surfaces (PDP / cart / checkout) are not in the captured set — those use a more dense data-table layout that this document does not describe.
660
+ - **Game-page-specific theming** — the `/marathon/` page uses `{colors.marathon-yellow}` as a chapter accent. Other game pages may pull in their own per-title brand colors that vary outside the documented system.
661
+ - **Form validation states** (success / error inline messages) not present in the captured surfaces beyond the `{colors.warning}` color token.