get-shit-pretty 0.7.0 → 0.7.3

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 (112) hide show
  1. package/README.md +301 -124
  2. package/bin/install.js +1 -1
  3. package/gsp/agents/gsp-accessibility-auditor.md +1 -60
  4. package/gsp/agents/gsp-brand-auditor.md +1 -61
  5. package/gsp/agents/gsp-brand-creative-director.md +10 -0
  6. package/gsp/agents/gsp-brand-engineer.md +1 -122
  7. package/gsp/agents/gsp-brand-researcher.md +11 -0
  8. package/gsp/agents/gsp-brand-strategist.md +1 -65
  9. package/gsp/agents/gsp-project-builder.md +17 -0
  10. package/gsp/agents/gsp-project-critic.md +11 -0
  11. package/gsp/agents/gsp-project-designer.md +11 -0
  12. package/gsp/agents/gsp-project-researcher.md +1 -74
  13. package/gsp/agents/gsp-project-reviewer.md +12 -0
  14. package/gsp/hooks/hooks.json +32 -14
  15. package/gsp/skills/get-shit-pretty/SKILL.md +2 -5
  16. package/gsp/skills/gsp-accessibility/SKILL.md +0 -1
  17. package/gsp/skills/gsp-accessibility-audit/SKILL.md +9 -8
  18. package/gsp/skills/gsp-accessibility-audit/methodology/gsp-accessibility-auditor.md +59 -0
  19. package/gsp/skills/gsp-add-reference/SKILL.md +0 -1
  20. package/gsp/skills/gsp-art/SKILL.md +13 -10
  21. package/gsp/skills/gsp-brand-audit/SKILL.md +4 -2
  22. package/gsp/skills/gsp-brand-audit/methodology/gsp-brand-auditor.md +61 -0
  23. package/gsp/skills/gsp-brand-brief/SKILL.md +129 -0
  24. package/gsp/skills/gsp-brand-guidelines/SKILL.md +13 -11
  25. package/gsp/skills/gsp-brand-guidelines/methodology/gsp-brand-engineer.md +122 -0
  26. package/gsp/skills/gsp-brand-identity/SKILL.md +19 -18
  27. package/gsp/{agents/gsp-creative-director.md → skills/gsp-brand-identity/methodology/gsp-brand-creative-director.md} +0 -9
  28. package/gsp/skills/gsp-brand-refine/SKILL.md +0 -1
  29. package/gsp/skills/gsp-brand-research/SKILL.md +13 -13
  30. package/gsp/{agents/gsp-researcher.md → skills/gsp-brand-research/methodology/gsp-brand-researcher.md} +0 -10
  31. package/gsp/skills/gsp-brand-strategy/SKILL.md +14 -14
  32. package/gsp/skills/gsp-brand-strategy/methodology/gsp-brand-strategist.md +65 -0
  33. package/gsp/skills/gsp-brand-sync/SKILL.md +60 -10
  34. package/gsp/skills/gsp-color/SKILL.md +0 -1
  35. package/gsp/skills/gsp-design-system/SKILL.md +0 -1
  36. package/gsp/skills/gsp-doctor/SKILL.md +0 -1
  37. package/gsp/skills/gsp-help/SKILL.md +10 -7
  38. package/gsp/skills/gsp-icons/SKILL.md +0 -1
  39. package/gsp/skills/gsp-logo/SKILL.md +0 -1
  40. package/gsp/skills/gsp-phase-transition/SKILL.md +0 -3
  41. package/gsp/skills/gsp-pretty/SKILL.md +25 -24
  42. package/gsp/skills/gsp-progress/SKILL.md +0 -1
  43. package/gsp/skills/gsp-project-brief/SKILL.md +51 -22
  44. package/gsp/skills/gsp-project-build/SKILL.md +216 -74
  45. package/gsp/skills/gsp-project-build/bento-grid.md +114 -0
  46. package/gsp/{agents/gsp-builder.md → skills/gsp-project-build/methodology/gsp-project-builder.md} +14 -16
  47. package/gsp/skills/gsp-project-critique/SKILL.md +21 -17
  48. package/gsp/{agents/gsp-critic.md → skills/gsp-project-critique/methodology/gsp-project-critic.md} +0 -11
  49. package/gsp/skills/gsp-project-design/SKILL.md +9 -6
  50. package/gsp/{agents/gsp-designer.md → skills/gsp-project-design/methodology/gsp-project-designer.md} +0 -11
  51. package/gsp/skills/gsp-project-research/SKILL.md +4 -2
  52. package/gsp/skills/gsp-project-research/methodology/gsp-project-researcher.md +73 -0
  53. package/gsp/skills/gsp-project-review/SKILL.md +8 -5
  54. package/gsp/{agents/gsp-reviewer.md → skills/gsp-project-review/methodology/gsp-project-reviewer.md} +0 -12
  55. package/gsp/skills/gsp-scaffold/SKILL.md +0 -1
  56. package/gsp/skills/gsp-start/SKILL.md +59 -210
  57. package/gsp/skills/gsp-style/SKILL.md +1 -2
  58. package/gsp/skills/gsp-style/styles/INDEX.yml +7 -1
  59. package/gsp/skills/gsp-style/styles/academia.md +751 -787
  60. package/gsp/skills/gsp-style/styles/art-deco.md +316 -352
  61. package/gsp/skills/gsp-style/styles/bauhaus.md +189 -225
  62. package/gsp/skills/gsp-style/styles/bold-typography.md +433 -469
  63. package/gsp/skills/gsp-style/styles/botanical.md +141 -177
  64. package/gsp/skills/gsp-style/styles/claymorphism.md +377 -413
  65. package/gsp/skills/gsp-style/styles/cyberpunk.md +419 -455
  66. package/gsp/skills/gsp-style/styles/enterprise.md +224 -260
  67. package/gsp/skills/gsp-style/styles/flat-design.md +119 -155
  68. package/gsp/skills/gsp-style/styles/fluent.md +0 -31
  69. package/gsp/skills/gsp-style/styles/glassmorphism.md +0 -36
  70. package/gsp/skills/gsp-style/styles/humanist-literary.md +0 -28
  71. package/gsp/skills/gsp-style/styles/industrial.md +406 -438
  72. package/gsp/skills/gsp-style/styles/kinetic.md +531 -563
  73. package/gsp/skills/gsp-style/styles/liquid-glass.md +0 -36
  74. package/gsp/skills/gsp-style/styles/luxury.md +402 -438
  75. package/gsp/skills/gsp-style/styles/material.md +555 -591
  76. package/gsp/skills/gsp-style/styles/maximalism.md +875 -911
  77. package/gsp/skills/gsp-style/styles/minimal-dark.md +442 -478
  78. package/gsp/skills/gsp-style/styles/modern-dark.md +390 -426
  79. package/gsp/skills/gsp-style/styles/monochrome.md +472 -504
  80. package/gsp/skills/gsp-style/styles/neubrutalism.md +354 -390
  81. package/gsp/skills/gsp-style/styles/neumorphism.md +195 -231
  82. package/gsp/skills/gsp-style/styles/newsprint.md +529 -565
  83. package/gsp/skills/gsp-style/styles/nothing.md +445 -0
  84. package/gsp/skills/gsp-style/styles/nothing.yml +146 -0
  85. package/gsp/skills/gsp-style/styles/organic.md +177 -213
  86. package/gsp/skills/gsp-style/styles/playful-geometric.md +211 -247
  87. package/gsp/skills/gsp-style/styles/professional.md +503 -539
  88. package/gsp/skills/gsp-style/styles/retro.md +664 -700
  89. package/gsp/skills/gsp-style/styles/saas.md +490 -526
  90. package/gsp/skills/gsp-style/styles/sketch.md +189 -225
  91. package/gsp/skills/gsp-style/styles/swiss-minimalist.md +195 -227
  92. package/gsp/skills/gsp-style/styles/terminal.md +99 -135
  93. package/gsp/skills/gsp-style/styles/vaporwave.md +356 -392
  94. package/gsp/skills/gsp-style/styles/web3.md +337 -373
  95. package/gsp/skills/gsp-typography/SKILL.md +0 -1
  96. package/gsp/skills/gsp-update/SKILL.md +0 -1
  97. package/gsp/skills/gsp-visuals/SKILL.md +0 -1
  98. package/gsp/templates/branding/config.json +3 -2
  99. package/gsp/templates/exports-index.md +0 -7
  100. package/gsp/templates/phases/build.md +13 -4
  101. package/gsp/templates/projects/config.json +3 -2
  102. package/gsp/templates/projects/roadmap.md +0 -7
  103. package/gsp/templates/projects/state.md +0 -4
  104. package/package.json +1 -1
  105. package/scripts/lint-check.sh +1 -1
  106. package/gsp/agents/gsp-ascii-artist.md +0 -66
  107. package/gsp/agents/gsp-brand-syncer.md +0 -126
  108. package/gsp/agents/gsp-campaign-director.md +0 -79
  109. package/gsp/agents/gsp-scoper.md +0 -85
  110. package/gsp/skills/gsp-launch/SKILL.md +0 -97
  111. package/gsp/skills/gsp-start/questioning.md +0 -87
  112. package/gsp/templates/phases/launch.md +0 -55
@@ -1,438 +1,402 @@
1
- <role>
2
- You are an expert frontend engineer, UI/UX designer, visual design specialist, and typography expert. Your goal is to help the user integrate a design system into an existing codebase in a way that is visually consistent, maintainable, and idiomatic to their tech stack.
3
-
4
- Before proposing or writing any code, first build a clear mental model of the current system:
5
-
6
- - Identify the tech stack (e.g. React, Next.js, Vue, Tailwind, shadcn/ui, etc.).
7
- - Understand the existing design tokens (colors, spacing, typography, radii, shadows), global styles, and utility patterns.
8
- - Review the current component architecture (atoms/molecules/organisms, layout primitives, etc.) and naming conventions.
9
- - Note any constraints (legacy CSS, design library in use, performance or bundle-size considerations).
10
-
11
- Ask the user focused questions to understand the user's goals. Do they want:
12
-
13
- - a specific component or page redesigned in the new style,
14
- - existing components refactored to the new system, or
15
- - new pages/features built entirely in the new style?
16
-
17
- Once you understand the context and scope, do the following:
18
-
19
- - Propose a concise implementation plan that follows best practices, prioritizing:
20
- - centralizing design tokens,
21
- - reusability and composability of components,
22
- - minimizing duplication and one-off styles,
23
- - long-term maintainability and clear naming.
24
- - When writing code, match the user’s existing patterns (folder structure, naming, styling approach, and component patterns).
25
- - Explain your reasoning briefly as you go, so the user understands *why* you’re making certain architectural or design choices.
26
-
27
- Always aim to:
28
-
29
- - Preserve or improve accessibility.
30
- - Maintain visual consistency with the provided design system.
31
- - Leave the codebase in a cleaner, more coherent state than you found it.
32
- - Ensure layouts are responsive and usable across devices.
33
- - Make deliberate, creative design choices (layout, motion, interaction details, and typography) that express the design system’s personality instead of producing a generic or boilerplate UI.
34
-
35
- </role>
36
-
37
- <design-system>
38
- # Design Style: Luxury / Editorial
39
-
40
- ## Design Philosophy
41
-
42
- **Core Principles**: Elegance through restraint, precision, and depth. This style emulates high-end fashion magazines (Vogue, Harper's Bazaar, Kinfolk) and luxury brand websites (Chanel, Hermès, Aesop). Success depends on **exquisite typography hierarchy**, **generous negative space**, **slow cinematic motion**, **intentional asymmetry**, and **layered depth through subtle shadows**. The design creates visual tension through grid-breaking layouts while maintaining perfect architectural balance.
43
-
44
- **Vibe**: Sophisticated, Timeless, Expensive, Serene, Curated, Deliberate, Editorial, Tactile.
45
-
46
- **The Secret**: Luxury isn't about adding decoration—it's about removing everything unnecessary and perfecting what remains. Every element must feel intentional and considered. Slow down all motion to cinematic speeds (1500-2000ms for images). Add more space than feels comfortable. Use asymmetry to create visual interest. Layer depth through subtle shadows (never harsh drops) and inner borders. The design should feel like expensive paper that you want to touch.
47
-
48
- ## Design Token System (The DNA)
49
-
50
- ### Colors (Sophisticated Monochrome)
51
-
52
- **Primary Palette:**
53
-
54
- - **Background**: `#F9F8F6` (Warm Alabaster) — Not pure white (#FFFFFF). This off-white feels like expensive paper or linen. The warm undertone is critical.
55
- - **Foreground**: `#1A1A1A` (Rich Charcoal) Not pure black (#000000). Softer, more sophisticated. Used for primary text and sharp borders.
56
- - **Muted Background**: `#EBE5DE` (Pale Taupe)For subtle surface elevation, disabled states, or alternate backgrounds.
57
- - **Muted Foreground**: `#6C6863` (Warm Grey) For secondary text, captions, metadata. Maintains warmth of the palette.
58
- - **Accent**: `#D4AF37` (Metallic Gold) — Use sparingly. For hover states, underlines, focus indicators, small decorative elements. Never use gold for large areas.
59
- - **Accent Foreground**: `#FFFFFF` (Pure White) — Only used on top of dark backgrounds or gold elements.
60
-
61
- **Layering Strategy:**
62
-
63
- - Use opacity for borders and dividers: `#1A1A1A` at 10-20% opacity creates subtle separation
64
- - Dark sections use inverted palette: `#1A1A1A` background with `#F9F8F6` text and `#EBE5DE` muted text at 60-80% opacity
65
- - Never use pure black or pure white for text—always use the charcoal and alabaster values
66
-
67
- ### Typography (The Most Critical Element)
68
-
69
- **Font Pairing:**
70
-
71
- - **Heading Font**: "Playfair Display" (High-contrast serif) — Elegant, editorial, with distinctive high-contrast strokes. Use for headlines, large quotes, and emphasis.
72
- - **Body Font**: "Inter" (Humanist sans-serif) — Clean, modern, highly legible. Use for body text, labels, UI elements.
73
-
74
- **Type Scale & Hierarchy:**
75
-
76
- - **Hero Headlines**: `text-6xl` to `text-9xl` (4rem to 8rem+) Massive, dramatic. Use `leading-[0.9]` for tight, compressed vertical rhythm.
77
- - **Section Headlines**: `text-5xl` to `text-7xl` (3rem to 4.5rem) — Still large, commanding attention.
78
- - **Subsection Titles**: `text-3xl` to `text-4xl` (1.875rem to 2.25rem) — For card titles, feature headings.
79
- - **Body Text**: `text-base` to `text-lg` (1rem to 1.125rem) — Comfortable reading size with `leading-relaxed` (1.625).
80
- - **Overlines/Labels**: `text-xs` (0.75rem) — Always uppercase with wide tracking.
81
- - **Micro-text**: `text-[10px]` — For metadata, copyright, tiny labels.
82
-
83
- **Font Weight Distribution:**
84
-
85
- - Playfair: Regular (400) for most headlines, Light (300) for specific contrast, Italic (400) for emphasis within headlines
86
- - Inter: Medium (500) for buttons/links, Regular (400) for body, Light (300) sparingly
87
-
88
- **Letter Spacing (Critical for Luxury Feel):**
89
-
90
- - **Uppercase Labels**: `tracking-[0.25em]` to `tracking-[0.3em]` — Wide tracking creates elegance and readability
91
- - **Buttons**: `tracking-[0.2em]` — Slightly less than labels but still generous
92
- - **Headlines**: `tracking-tight` or default Large serif headlines need tighter tracking
93
- - **Body Text**: Default tracking Never adjust body text spacing
94
-
95
- **Line Height Strategy:**
96
-
97
- - **Headlines**: `leading-[0.9]` to `leading-tight` (0.9 to 1.25) — Tight creates drama
98
- - **Body Text**: `leading-relaxed` (1.625) — Generous for readability
99
- - **Small Text**: `leading-relaxed` to default Maintains breathing room
100
-
101
- ### Radius & Borders (Architectural Precision)
102
-
103
- **Border Radius:**
104
-
105
- - **Everything**: `0px` Strictly rectangular. No rounded corners anywhere. This creates architectural precision and editorial sharpness.
106
-
107
- **Border Treatment:**
108
-
109
- - **Width**: Always `1px` Thin, precise, deliberate
110
- - **Color**: `#1A1A1A` at full opacity for strong borders, 10-20% opacity for subtle dividers
111
- - **Style**: Single borders (top, bottom, left, right) rather than full boxes. Common pattern: `border-t` only
112
- - **Dividers**: Use horizontal lines (`h-px`) or vertical lines (`w-px`) as decorative elements with background color
113
-
114
- ### Shadows & Effects (Subtle Layered Depth)
115
-
116
- **Shadows:**
117
-
118
- - **Philosophy**: Use extremely subtle, soft shadows to create depth and elevation—never harsh or prominent
119
- - **Hero Image**: `shadow-[0_8px_32px_rgba(0,0,0,0.12)]` Medium shadow for primary focal point
120
- - **Feature Images**: `shadow-[0_4px_24px_rgba(0,0,0,0.08)]` — Light shadow with subtle inner border
121
- - **Blog Images**: `shadow-[0_4px_20px_rgba(0,0,0,0.06)]` deepens to `shadow-[0_8px_32px_rgba(0,0,0,0.12)]` on hover
122
- - **Cards**: `shadow-[0_2px_8px_rgba(0,0,0,0.02)]` deepens to `shadow-[0_8px_24px_rgba(0,0,0,0.06)]` on hover
123
- - **Primary Buttons**: `shadow-[0_4px_16px_rgba(0,0,0,0.15)]` deepens to `shadow-[0_8px_24px_rgba(0,0,0,0.25)]` on hover
124
- - **Inner Borders**: Use `shadow-[inset_0_0_0_1px_rgba(0,0,0,0.04-0.08)]` for subtle framing on images
125
-
126
- **Texture & Grain:**
127
-
128
- - **Paper Noise**: Subtle SVG noise texture overlay across entire page at 2% opacity to mimic expensive paper grain
129
- - **Implementation**: Fixed position overlay with SVG fractal noise filter, pointer-events disabled, z-index 50
130
- - **Purpose**: Adds tactile quality without being visible at first glance—creates "expensive paper" feel
131
-
132
- **Image Treatment:**
133
-
134
- - **Default State**: Grayscale filter (`grayscale`) Creates monochromatic editorial look
135
- - **Hover State**: Full color (`grayscale-0`) Slow transition reveals color as reward
136
- - **Transition**: `duration-[1500ms]` to `duration-[2000ms]` — Ultra-slow, cinematic reveal
137
- - **Transform**: Subtle scale on hover (`group-hover:scale-105`) combined with color transition
138
- - **Shadow Evolution**: Images gain deeper shadows on hover to enhance lift effect
139
- - **Group Context**: Use `group` utility on parent for coordinated hover effects
140
-
141
- ### Grid & Vertical Lines (Structural Framework)
142
-
143
- **Visible Grid System:**
144
-
145
- - **4 Vertical Gridlines**: Fixed position lines spanning full viewport height, positioned at column boundaries
146
- - **Implementation**: `w-px` divs with `bg-[#1A1A1A]/20`, fixed position, pointer-events disabled
147
- - **Purpose**: Creates visible editorial grid structure, adds architectural quality
148
- - **Spacing**: Aligned with 12-column layout breakpoints, typically at container edges and middle thirds
149
-
150
- **Layout Grid:**
151
-
152
- - **Columns**: 12-column grid system
153
- - **Max Width**: 1600px for content container
154
- - **Padding**: `px-8` mobile, `px-16` desktop — Generous horizontal breathing room
155
- - **Asymmetry**: Use offset column starts (`col-start-2`, `col-start-6`) to create visual interest
156
-
157
- ## Component Styling Principles
158
-
159
- ### Buttons (Minimalist with Luxury Details)
160
-
161
- **Visual Structure:**
162
-
163
- - **Shape**: Rectangular, 0px border-radius, precise edges
164
- - **Height**: `h-12` default (48px), `h-14` large (56px), `h-10` small (40px)
165
- - **Padding**: Generous horizontal (`px-8` to `px-10`)
166
- - **Typography**: Uppercase, `text-xs`, `tracking-[0.2em]`, medium weight
167
-
168
- **Primary Button:**
169
-
170
- - **Default**: Dark background (`bg-[#1A1A1A]`), white text
171
- - **Hover Animation**: Gold layer (`bg-[#D4AF37]`) slides in from left using transform
172
- - Initial state: `translate-x-[-100%]` (off-screen left)
173
- - Hover state: `translate-x-0` (covers button)
174
- - Duration: `duration-500` with custom easing `cubic-bezier(0.25, 0.46, 0.45, 0.94)`
175
- - Text stays white and appears above gold layer using z-index
176
- - **Structure**: Requires internal `<span>` for gold overlay and another for content (z-10)
177
-
178
- **Secondary Button:**
179
-
180
- - **Default**: Transparent background, thin border (`border border-[#1A1A1A]`), dark text
181
- - **Hover**: Background fills to dark (`bg-[#1A1A1A]`), text inverts to white
182
- - **Transition**: Smooth `duration-500` for elegant fill
183
-
184
- **Link Button:**
185
-
186
- - **Style**: Text with underline on hover, no background or border
187
- - **Color**: Dark text, gold on hover optional
188
-
189
- ### Cards & Containers (Defined by Lines)
190
-
191
- **Visual Approach:**
192
-
193
- - **Background**: Transparent or subtle (`bg-transparent`)
194
- - **Definition**: Single top border (`border-t`) rather than full box
195
- - **Border**: `border-[#1A1A1A]` at 1px width
196
- - **Padding**: Generous `p-8` mobile, `p-12` desktop
197
- - **Hover**: Subtle background color shift (`hover:bg-[#F9F8F6]/50`) — barely visible
198
-
199
- **Featured Cards:**
200
-
201
- - Use thicker top border (`border-t-4`) with gold color (`border-t-[#D4AF37]`) to indicate importance
202
- - Pricing tier highlighting, special features
203
-
204
- **Image Cards:**
205
-
206
- - Image in grayscale with slow color reveal on hover
207
- - Use specific aspect ratios: `aspect-[3/4]` for features, `aspect-[4/5]` for blog posts
208
- - Combine image scale with parent card hover state using `group` utility
209
-
210
- ### Inputs (Underline Only)
211
-
212
- **Visual Style:**
213
-
214
- - **Border**: Bottom border only (`border-b`), no other borders
215
- - **Background**: Transparent (`bg-transparent`)
216
- - **Border Color**: `#1A1A1A` default, `#D4AF37` on focus
217
- - **Height**: `h-12` for consistency with buttons
218
- - **Padding**: Minimal horizontal (`px-0`), vertical (`py-2`)
219
-
220
- **Typography:**
221
-
222
- - **Input Text**: Inter font, `text-sm`, dark color
223
- - **Placeholder**: Playfair Display font, italic, warm grey color (`text-[#6C6863]`)
224
- - **Reasoning**: Italic serif placeholder creates elegant, editorial feel
225
-
226
- **Focus State:**
227
-
228
- - Border changes to gold (`focus-visible:border-[#D4AF37]`)
229
- - No ring or glow effects — keep it minimal
230
-
231
- ### Interactive States (Slow & Deliberate)
232
-
233
- **Hover Effects:**
234
-
235
- - **Duration**: `duration-500` to `duration-700` for most interactions (text, backgrounds, borders)
236
- - **Duration (Images)**: `duration-[1500ms]` to `duration-[2000ms]` for image transitions
237
- - **Easing**: `ease-out` or custom `cubic-bezier(0.25, 0.46, 0.45, 0.94)` for smooth luxury feel
238
- - **Color**: Gold accent (`#D4AF37`) appears subtly on hover (text, borders, underlines)
239
- - **Transform**: Subtle scale (`scale-105`) or translate never abrupt
240
- - **Shadow Evolution**: Shadows deepen on hover for lift effect
241
- - **Testimonials**: Left border changes to gold, padding increases, avatar gains color
242
- - **FAQ**: Question text turns gold, icon square rotates 90° and border turns gold
243
-
244
- **Focus States:**
245
-
246
- - Minimal focus rings: `focus-visible:ring-1 focus-visible:ring-[#1A1A1A]`
247
- - Prefer border color change over visible rings
248
- - Gold accent for focused inputs (`focus-visible:border-[#D4AF37]`)
249
-
250
- **Disabled States:**
251
-
252
- - Reduced opacity (`opacity-50`)
253
- - Pointer events disabled
254
- - No special color changes — muted appearance
255
-
256
- **Micro-interactions:**
257
-
258
- - **FAQ Accordion**: Icon rotates 90°, border turns gold on open, content fades in with translateY animation
259
- - **Testimonial Stars**: Scale up slightly on card hover (`group-hover:scale-110`)
260
- - **Blog Cards**: Shadow deepens, image scales and gains color
261
- - **Navigation Links**: Gold color on hover with 500ms transition
262
- - **Button Animations**: Gold overlay slides from left on primary buttons, shadow deepens
263
-
264
- ## Layout Principles (Breaking Symmetry)
265
-
266
- **Asymmetric Composition:**
267
-
268
- - **Avoid 50/50 splits**: Use 7/5, 4/4/4, or 4 offset by 2 column starts instead
269
- - **Bottom-left alignment**: Position primary content at bottom of container, aligned left
270
- - **Offset grids**: Start content at column 2 or 6 instead of 1, leaving deliberate empty space
271
-
272
- **Vertical Spacing (Generous Air):**
273
-
274
- - **Section Padding**: `py-24` to `py-32` (6rem to 8rem) Massive vertical space between sections
275
- - **Component Padding**: `p-8` to `p-12` for cards and containers
276
- - **Element Spacing**: Use `gap-12` or `gap-16` for component groups, not tight spacing
277
- - **Breathing Room**: If it feels like too much space, it's probably correct for luxury design
278
-
279
- **Section Alternation:**
280
-
281
- - Alternate light (`bg-[#F9F8F6]`) and dark (`bg-[#1A1A1A]`) sections for rhythm
282
- - Use top borders (`border-t`) to separate sections without color changes
283
- - Dark sections use inverted color palette with muted text at 60-80% opacity
284
-
285
- **Content Width:**
286
-
287
- - Maximum container: `max-w-[1600px]`
288
- - Centered with `mx-auto`
289
- - Text columns: `max-w-md` to `max-w-xl` for comfortable reading
290
-
291
- ## The "Bold Factor" (Non-Genericness)
292
-
293
- These signature elements make Luxury/Editorial instantly recognizable and must be present:
294
-
295
- 1. **Vertical Text Labels**: Use CSS `writing-mode: vertical-rl` for decorative side labels (e.g., "Editorial / Vol. 01"). Position absolutely on images, typically on left or right edges. Uppercase with wide tracking. Hidden on mobile, visible on desktop.
296
- 2. **Drop Caps**: Large initial letter for introductory paragraphs using `float-left`, Playfair Display font, 7xl size, tight line-height (0.8), with right margin (mr-3). Applied to first paragraph of Product Detail and Features intro. Creates classic editorial feel.
297
- 3. **Mixed Italic Headlines**: Within large headlines, alternate between regular and italic styling for specific words to create "spoken" cadence. Use gold color on italic words. Examples: "Curated *Excellence*", "The *Details*", "The *Process*". Headline splits across lines with specific words emphasized.
298
- 4. **Grayscale Image Transitions**: All images default to grayscale filter with ultra-slow (1500-2000ms) transition to full color on hover. Combines with subtle scale transform (`group-hover:scale-105`) and shadow deepening. Applied consistently to hero, features, blog, and testimonial avatars.
299
- 5. **Visible Grid Lines**: Fixed vertical lines spanning viewport height, aligned with 12-column grid boundaries, at low opacity (20%). Four lines total (edges and middle thirds). Creates architectural editorial magazine feel. Pointer-events disabled.
300
- 6. **Gold Sliding Animation**: Primary button hover reveals gold background (`#D4AF37`) sliding from left using `translate-x` transform. Requires layered span structure with z-index. Combined with shadow deepening from `shadow-[0_4px_16px]` to `shadow-[0_8px_24px]`.
301
- 7. **Decorative Horizontal Lines**: Short horizontal lines (`h-px w-8 md:w-12`) used as decorative elements before labels (hero) or between metadata (blog dates). Deliberate, architectural spacing elements.
302
- 8. **Extreme Type Scale**: Massive headlines (`text-5xl` mobile to `text-9xl` desktop) combined with tiny uppercase labels (`text-[10px]` to `text-xs`) creates dramatic hierarchy essential to luxury feel. Responsive scaling maintains proportions.
303
- 9. **Layered Shadows**: Subtle shadows create depth without being obvious. Images have box shadows that deepen on hover. Inner borders (`inset` shadows) frame images. Cards lift with shadow evolution. Never harsh—always soft and refined.
304
- 10. **Testimonial Interactions**: Left border animation (changes to gold and increases padding on hover), grayscale avatar transitions to color, author name turns gold, stars scale up. Multi-layered coordinated effect.
305
-
306
- ## Anti-Patterns (What to Avoid)
307
-
308
- These mistakes will break the luxury aesthetic:
309
-
310
- 1. **DO NOT use rounded corners** Everything must be perfectly rectangular with 0px border-radius
311
- 2. **DO NOT use harsh shadows** — Only use extremely subtle shadows with low opacity rgba values. Depth comes from layering, not prominent drops.
312
- 3. **DO NOT use pure black (#000000) or pure white (#FFFFFF)** — Use charcoal (#1A1A1A) and alabaster (#F9F8F6)
313
- 4. **DO NOT use fast animations** — Minimum 500ms for interactions, 1500-2000ms for images. Luxury is deliberate and slow.
314
- 5. **DO NOT use vibrant colors** Stick to monochromatic palette with gold (#D4AF37) as only accent
315
- 6. **DO NOT center everything** Use asymmetry, offset columns, bottom-left alignment. Break the grid intentionally.
316
- 7. **DO NOT overcrowd spacing** More space is better. If it feels too airy, you're on the right track. Mobile: py-20, Desktop: py-32.
317
- 8. **DO NOT use decorative fonts** — Only Playfair Display (serif) and Inter (sans-serif). No script or display fonts.
318
- 9. **DO NOT use icons prominently** — If needed, use lucide-react with thin strokes (1-2px), sparingly. Icons are functional, not decorative.
319
- 10. **DO NOT make gold dominant** — Gold is an accent for hover/focus states and specific emphasis, not a primary color
320
- 11. **DO NOT use small images** — Images should be large and prominent, portrait aspect ratios (3:4, 4:5) with shadows and inner borders
321
- 12. **DO NOT use tight tracking on body text** — Only uppercase labels get wide tracking (0.2-0.3em). Body text uses default tracking.
322
- 13. **DO NOT skip the grayscale filter**All images must default to grayscale. Color is the reward on hover.
323
- 14. **DO NOT use generic mobile layouts**Maintain the core aesthetic on mobile with proper scaling, not generic stacking
324
-
325
- ## Animation & Motion (Cinematic Timing)
326
-
327
- **Philosophy:** All motion should feel deliberate, slow, and expensive. Nothing snaps or jumps. Think of camera movements in luxury fashion videos—smooth, gradual, cinematic.
328
-
329
- **Timing:**
330
-
331
- - **Button Interactions**: `duration-500` (500ms)
332
- - **Color Transitions**: `duration-700` (700ms)
333
- - **Image Effects**: `duration-[1500ms]` to `duration-[2000ms]` (1500-2000ms)
334
- - **Background Transitions**: `duration-700` (700ms)
335
-
336
- **Easing Functions:**
337
-
338
- - **Default**: `ease-out` for most interactions
339
- - **Custom**: `cubic-bezier(0.25, 0.46, 0.45, 0.94)` for smooth luxury feel (use in Tailwind with arbitrary values)
340
- - **Never**: `ease-in-out` or `ease-in` — These feel too mechanical
341
-
342
- **Transition Properties:**
343
-
344
- - Combine multiple properties: `transition-all` or specific `transition-[colors,transform]`
345
- - Image transforms: Combine `scale` (1 to 1.05) with `grayscale` (1 to 0) in same transition
346
- - Button fills: Use transform on absolute positioned overlay rather than background color change
347
-
348
- **Hover Effects:**
349
-
350
- - Delay feels intentional user must pause on element for effect to complete
351
- - Multiple effects layer together (scale + color + grayscale) for richness
352
- - Text color changes are instant or faster (300ms) while backgrounds are slower
353
-
354
- ## Accessibility Considerations
355
-
356
- **Contrast:**
357
-
358
- - Charcoal (#1A1A1A) on Alabaster (#F9F8F6): 12.6:1 Excellent (AAA)
359
- - Warm Grey (#6C6863) on Alabaster: 4.8:1 Good for secondary text (AA)
360
- - Gold (#D4AF37) on Charcoal: 5.2:1 — Sufficient for accents (AA)
361
- - White on Charcoal: 14.5:1 — Excellent (AAA)
362
-
363
- **Focus Indicators:**
364
-
365
- - Use `focus-visible:ring-1` or `focus-visible:border-[color]` for keyboard navigation
366
- - Gold accent on focus makes interactive elements clear
367
- - Never remove focus indicators just make them elegant
368
-
369
- **Motion Preferences:**
370
-
371
- - Respect `prefers-reduced-motion` for users with vestibular disorders
372
- - Reduce animation durations to 0ms or use simpler transitions
373
- - Keep color changes but remove transforms and scales
374
-
375
- **Typography:**
376
-
377
- - Large body text size (16-18px base) ensures readability
378
- - High contrast ratio for primary text
379
- - Generous line-height (1.625) improves readability
380
- - Avoid justified text — use left alignment
381
-
382
- **Interactive Areas:**
383
-
384
- - Buttons have minimum 48px height (h-12) for touch targets
385
- - Adequate padding creates larger clickable areas
386
- - Spacing between interactive elements prevents mis-taps
387
-
388
- ## Implementation Notes
389
-
390
- **Tech Stack:**
391
-
392
- - Tailwind CSS v4 for all styling with custom color values
393
- - Google Fonts for "Playfair Display" and "Inter"
394
- - Lucide React for icons (if needed, use sparingly with thin stroke-width)
395
- - Custom CSS for noise texture (SVG data URI) and vertical writing mode
396
-
397
- **Responsive Strategy:**
398
-
399
- - **Mobile (< 768px)**:
400
-
401
- - Stack all columns vertically
402
- - Reduce padding: `px-8`, `py-20` (instead of px-16, py-32)
403
- - Scale down typography: `text-4xl` headlines (instead of text-6xl), `text-xl` quotes (instead of text-3xl)
404
- - Reduce gaps: `gap-8`, `gap-12` (instead of gap-12, gap-24)
405
- - Stats: 2 columns, smaller text (text-3xl instead of text-5xl)
406
- - Hero: Smaller type scale `text-5xl` (instead of text-9xl), smaller line and decorative elements
407
- - Testimonials: Smaller left padding `pl-6` (instead of pl-8)
408
- - Footer CTA: Stack email input and button vertically with `flex-col` on small screens
409
- - Maintain core aesthetic: grayscale images, gold accents, slow animations
410
- - **Tablet (768px - 1024px)**:
411
-
412
- - Begin introducing grid layouts (2-3 columns)
413
- - Medium padding: `px-8 md:px-16`, `py-20 md:py-32`
414
- - Typography scales up: `text-5xl md:text-6xl`
415
- - Complex layouts still stack (testimonials, FAQ)
416
- - **Desktop (> 1024px)**:
417
-
418
- - Full 12-column asymmetric grid with offset columns
419
- - Maximum padding and spacing
420
- - Visible vertical gridlines (4 lines at column boundaries)
421
- - Vertical writing mode text visible
422
- - Full typographic scale (text-9xl for hero)
423
-
424
- **Performance:**
425
-
426
- - Use CSS transforms (translate, scale) for animations — GPU accelerated
427
- - Grayscale filter is performant in modern browsers
428
- - Fixed gridlines and noise overlay use minimal resources
429
- - Shadows use rgba with low opacity for minimal render cost
430
-
431
- **Code Organization:**
432
-
433
- - Extract color values to config/constants for consistency
434
- - Create button component with variant system (primary/secondary/ghost/link) and shadow on primary
435
- - Create card component with border-top pattern and shadow evolution built in
436
- - Create input component with underline-only styling and italic placeholder
437
- - Add fadeIn keyframe animation for FAQ accordion content
438
- `</design-system>`
1
+ <design-system>
2
+ # Design Style: Luxury / Editorial
3
+
4
+ ## Design Philosophy
5
+
6
+ **Core Principles**: Elegance through restraint, precision, and depth. This style emulates high-end fashion magazines (Vogue, Harper's Bazaar, Kinfolk) and luxury brand websites (Chanel, Hermès, Aesop). Success depends on **exquisite typography hierarchy**, **generous negative space**, **slow cinematic motion**, **intentional asymmetry**, and **layered depth through subtle shadows**. The design creates visual tension through grid-breaking layouts while maintaining perfect architectural balance.
7
+
8
+ **Vibe**: Sophisticated, Timeless, Expensive, Serene, Curated, Deliberate, Editorial, Tactile.
9
+
10
+ **The Secret**: Luxury isn't about adding decoration—it's about removing everything unnecessary and perfecting what remains. Every element must feel intentional and considered. Slow down all motion to cinematic speeds (1500-2000ms for images). Add more space than feels comfortable. Use asymmetry to create visual interest. Layer depth through subtle shadows (never harsh drops) and inner borders. The design should feel like expensive paper that you want to touch.
11
+
12
+ ## Design Token System (The DNA)
13
+
14
+ ### Colors (Sophisticated Monochrome)
15
+
16
+ **Primary Palette:**
17
+
18
+ - **Background**: `#F9F8F6` (Warm Alabaster) — Not pure white (#FFFFFF). This off-white feels like expensive paper or linen. The warm undertone is critical.
19
+ - **Foreground**: `#1A1A1A` (Rich Charcoal) Not pure black (#000000). Softer, more sophisticated. Used for primary text and sharp borders.
20
+ - **Muted Background**: `#EBE5DE` (Pale Taupe) — For subtle surface elevation, disabled states, or alternate backgrounds.
21
+ - **Muted Foreground**: `#6C6863` (Warm Grey) — For secondary text, captions, metadata. Maintains warmth of the palette.
22
+ - **Accent**: `#D4AF37` (Metallic Gold) — Use sparingly. For hover states, underlines, focus indicators, small decorative elements. Never use gold for large areas.
23
+ - **Accent Foreground**: `#FFFFFF` (Pure White) — Only used on top of dark backgrounds or gold elements.
24
+
25
+ **Layering Strategy:**
26
+
27
+ - Use opacity for borders and dividers: `#1A1A1A` at 10-20% opacity creates subtle separation
28
+ - Dark sections use inverted palette: `#1A1A1A` background with `#F9F8F6` text and `#EBE5DE` muted text at 60-80% opacity
29
+ - Never use pure black or pure white for text—always use the charcoal and alabaster values
30
+
31
+ ### Typography (The Most Critical Element)
32
+
33
+ **Font Pairing:**
34
+
35
+ - **Heading Font**: "Playfair Display" (High-contrast serif) — Elegant, editorial, with distinctive high-contrast strokes. Use for headlines, large quotes, and emphasis.
36
+ - **Body Font**: "Inter" (Humanist sans-serif) — Clean, modern, highly legible. Use for body text, labels, UI elements.
37
+
38
+ **Type Scale & Hierarchy:**
39
+
40
+ - **Hero Headlines**: `text-6xl` to `text-9xl` (4rem to 8rem+) — Massive, dramatic. Use `leading-[0.9]` for tight, compressed vertical rhythm.
41
+ - **Section Headlines**: `text-5xl` to `text-7xl` (3rem to 4.5rem) — Still large, commanding attention.
42
+ - **Subsection Titles**: `text-3xl` to `text-4xl` (1.875rem to 2.25rem) For card titles, feature headings.
43
+ - **Body Text**: `text-base` to `text-lg` (1rem to 1.125rem) — Comfortable reading size with `leading-relaxed` (1.625).
44
+ - **Overlines/Labels**: `text-xs` (0.75rem) Always uppercase with wide tracking.
45
+ - **Micro-text**: `text-[10px]` — For metadata, copyright, tiny labels.
46
+
47
+ **Font Weight Distribution:**
48
+
49
+ - Playfair: Regular (400) for most headlines, Light (300) for specific contrast, Italic (400) for emphasis within headlines
50
+ - Inter: Medium (500) for buttons/links, Regular (400) for body, Light (300) sparingly
51
+
52
+ **Letter Spacing (Critical for Luxury Feel):**
53
+
54
+ - **Uppercase Labels**: `tracking-[0.25em]` to `tracking-[0.3em]` Wide tracking creates elegance and readability
55
+ - **Buttons**: `tracking-[0.2em]`Slightly less than labels but still generous
56
+ - **Headlines**: `tracking-tight` or defaultLarge serif headlines need tighter tracking
57
+ - **Body Text**: Default trackingNever adjust body text spacing
58
+
59
+ **Line Height Strategy:**
60
+
61
+ - **Headlines**: `leading-[0.9]` to `leading-tight` (0.9 to 1.25) — Tight creates drama
62
+ - **Body Text**: `leading-relaxed` (1.625) — Generous for readability
63
+ - **Small Text**: `leading-relaxed` to default Maintains breathing room
64
+
65
+ ### Radius & Borders (Architectural Precision)
66
+
67
+ **Border Radius:**
68
+
69
+ - **Everything**: `0px` — Strictly rectangular. No rounded corners anywhere. This creates architectural precision and editorial sharpness.
70
+
71
+ **Border Treatment:**
72
+
73
+ - **Width**: Always `1px` — Thin, precise, deliberate
74
+ - **Color**: `#1A1A1A` at full opacity for strong borders, 10-20% opacity for subtle dividers
75
+ - **Style**: Single borders (top, bottom, left, right) rather than full boxes. Common pattern: `border-t` only
76
+ - **Dividers**: Use horizontal lines (`h-px`) or vertical lines (`w-px`) as decorative elements with background color
77
+
78
+ ### Shadows & Effects (Subtle Layered Depth)
79
+
80
+ **Shadows:**
81
+
82
+ - **Philosophy**: Use extremely subtle, soft shadows to create depth and elevation—never harsh or prominent
83
+ - **Hero Image**: `shadow-[0_8px_32px_rgba(0,0,0,0.12)]` — Medium shadow for primary focal point
84
+ - **Feature Images**: `shadow-[0_4px_24px_rgba(0,0,0,0.08)]` — Light shadow with subtle inner border
85
+ - **Blog Images**: `shadow-[0_4px_20px_rgba(0,0,0,0.06)]` deepens to `shadow-[0_8px_32px_rgba(0,0,0,0.12)]` on hover
86
+ - **Cards**: `shadow-[0_2px_8px_rgba(0,0,0,0.02)]` deepens to `shadow-[0_8px_24px_rgba(0,0,0,0.06)]` on hover
87
+ - **Primary Buttons**: `shadow-[0_4px_16px_rgba(0,0,0,0.15)]` deepens to `shadow-[0_8px_24px_rgba(0,0,0,0.25)]` on hover
88
+ - **Inner Borders**: Use `shadow-[inset_0_0_0_1px_rgba(0,0,0,0.04-0.08)]` for subtle framing on images
89
+
90
+ **Texture & Grain:**
91
+
92
+ - **Paper Noise**: Subtle SVG noise texture overlay across entire page at 2% opacity to mimic expensive paper grain
93
+ - **Implementation**: Fixed position overlay with SVG fractal noise filter, pointer-events disabled, z-index 50
94
+ - **Purpose**: Adds tactile quality without being visible at first glance—creates "expensive paper" feel
95
+
96
+ **Image Treatment:**
97
+
98
+ - **Default State**: Grayscale filter (`grayscale`) — Creates monochromatic editorial look
99
+ - **Hover State**: Full color (`grayscale-0`) Slow transition reveals color as reward
100
+ - **Transition**: `duration-[1500ms]` to `duration-[2000ms]` — Ultra-slow, cinematic reveal
101
+ - **Transform**: Subtle scale on hover (`group-hover:scale-105`) combined with color transition
102
+ - **Shadow Evolution**: Images gain deeper shadows on hover to enhance lift effect
103
+ - **Group Context**: Use `group` utility on parent for coordinated hover effects
104
+
105
+ ### Grid & Vertical Lines (Structural Framework)
106
+
107
+ **Visible Grid System:**
108
+
109
+ - **4 Vertical Gridlines**: Fixed position lines spanning full viewport height, positioned at column boundaries
110
+ - **Implementation**: `w-px` divs with `bg-[#1A1A1A]/20`, fixed position, pointer-events disabled
111
+ - **Purpose**: Creates visible editorial grid structure, adds architectural quality
112
+ - **Spacing**: Aligned with 12-column layout breakpoints, typically at container edges and middle thirds
113
+
114
+ **Layout Grid:**
115
+
116
+ - **Columns**: 12-column grid system
117
+ - **Max Width**: 1600px for content container
118
+ - **Padding**: `px-8` mobile, `px-16` desktop Generous horizontal breathing room
119
+ - **Asymmetry**: Use offset column starts (`col-start-2`, `col-start-6`) to create visual interest
120
+
121
+ ## Component Styling Principles
122
+
123
+ ### Buttons (Minimalist with Luxury Details)
124
+
125
+ **Visual Structure:**
126
+
127
+ - **Shape**: Rectangular, 0px border-radius, precise edges
128
+ - **Height**: `h-12` default (48px), `h-14` large (56px), `h-10` small (40px)
129
+ - **Padding**: Generous horizontal (`px-8` to `px-10`)
130
+ - **Typography**: Uppercase, `text-xs`, `tracking-[0.2em]`, medium weight
131
+
132
+ **Primary Button:**
133
+
134
+ - **Default**: Dark background (`bg-[#1A1A1A]`), white text
135
+ - **Hover Animation**: Gold layer (`bg-[#D4AF37]`) slides in from left using transform
136
+ - Initial state: `translate-x-[-100%]` (off-screen left)
137
+ - Hover state: `translate-x-0` (covers button)
138
+ - Duration: `duration-500` with custom easing `cubic-bezier(0.25, 0.46, 0.45, 0.94)`
139
+ - Text stays white and appears above gold layer using z-index
140
+ - **Structure**: Requires internal `<span>` for gold overlay and another for content (z-10)
141
+
142
+ **Secondary Button:**
143
+
144
+ - **Default**: Transparent background, thin border (`border border-[#1A1A1A]`), dark text
145
+ - **Hover**: Background fills to dark (`bg-[#1A1A1A]`), text inverts to white
146
+ - **Transition**: Smooth `duration-500` for elegant fill
147
+
148
+ **Link Button:**
149
+
150
+ - **Style**: Text with underline on hover, no background or border
151
+ - **Color**: Dark text, gold on hover optional
152
+
153
+ ### Cards & Containers (Defined by Lines)
154
+
155
+ **Visual Approach:**
156
+
157
+ - **Background**: Transparent or subtle (`bg-transparent`)
158
+ - **Definition**: Single top border (`border-t`) rather than full box
159
+ - **Border**: `border-[#1A1A1A]` at 1px width
160
+ - **Padding**: Generous `p-8` mobile, `p-12` desktop
161
+ - **Hover**: Subtle background color shift (`hover:bg-[#F9F8F6]/50`) — barely visible
162
+
163
+ **Featured Cards:**
164
+
165
+ - Use thicker top border (`border-t-4`) with gold color (`border-t-[#D4AF37]`) to indicate importance
166
+ - Pricing tier highlighting, special features
167
+
168
+ **Image Cards:**
169
+
170
+ - Image in grayscale with slow color reveal on hover
171
+ - Use specific aspect ratios: `aspect-[3/4]` for features, `aspect-[4/5]` for blog posts
172
+ - Combine image scale with parent card hover state using `group` utility
173
+
174
+ ### Inputs (Underline Only)
175
+
176
+ **Visual Style:**
177
+
178
+ - **Border**: Bottom border only (`border-b`), no other borders
179
+ - **Background**: Transparent (`bg-transparent`)
180
+ - **Border Color**: `#1A1A1A` default, `#D4AF37` on focus
181
+ - **Height**: `h-12` for consistency with buttons
182
+ - **Padding**: Minimal horizontal (`px-0`), vertical (`py-2`)
183
+
184
+ **Typography:**
185
+
186
+ - **Input Text**: Inter font, `text-sm`, dark color
187
+ - **Placeholder**: Playfair Display font, italic, warm grey color (`text-[#6C6863]`)
188
+ - **Reasoning**: Italic serif placeholder creates elegant, editorial feel
189
+
190
+ **Focus State:**
191
+
192
+ - Border changes to gold (`focus-visible:border-[#D4AF37]`)
193
+ - No ring or glow effects — keep it minimal
194
+
195
+ ### Interactive States (Slow & Deliberate)
196
+
197
+ **Hover Effects:**
198
+
199
+ - **Duration**: `duration-500` to `duration-700` for most interactions (text, backgrounds, borders)
200
+ - **Duration (Images)**: `duration-[1500ms]` to `duration-[2000ms]` for image transitions
201
+ - **Easing**: `ease-out` or custom `cubic-bezier(0.25, 0.46, 0.45, 0.94)` for smooth luxury feel
202
+ - **Color**: Gold accent (`#D4AF37`) appears subtly on hover (text, borders, underlines)
203
+ - **Transform**: Subtle scale (`scale-105`) or translate — never abrupt
204
+ - **Shadow Evolution**: Shadows deepen on hover for lift effect
205
+ - **Testimonials**: Left border changes to gold, padding increases, avatar gains color
206
+ - **FAQ**: Question text turns gold, icon square rotates 90° and border turns gold
207
+
208
+ **Focus States:**
209
+
210
+ - Minimal focus rings: `focus-visible:ring-1 focus-visible:ring-[#1A1A1A]`
211
+ - Prefer border color change over visible rings
212
+ - Gold accent for focused inputs (`focus-visible:border-[#D4AF37]`)
213
+
214
+ **Disabled States:**
215
+
216
+ - Reduced opacity (`opacity-50`)
217
+ - Pointer events disabled
218
+ - No special color changes muted appearance
219
+
220
+ **Micro-interactions:**
221
+
222
+ - **FAQ Accordion**: Icon rotates 90°, border turns gold on open, content fades in with translateY animation
223
+ - **Testimonial Stars**: Scale up slightly on card hover (`group-hover:scale-110`)
224
+ - **Blog Cards**: Shadow deepens, image scales and gains color
225
+ - **Navigation Links**: Gold color on hover with 500ms transition
226
+ - **Button Animations**: Gold overlay slides from left on primary buttons, shadow deepens
227
+
228
+ ## Layout Principles (Breaking Symmetry)
229
+
230
+ **Asymmetric Composition:**
231
+
232
+ - **Avoid 50/50 splits**: Use 7/5, 4/4/4, or 4 offset by 2 column starts instead
233
+ - **Bottom-left alignment**: Position primary content at bottom of container, aligned left
234
+ - **Offset grids**: Start content at column 2 or 6 instead of 1, leaving deliberate empty space
235
+
236
+ **Vertical Spacing (Generous Air):**
237
+
238
+ - **Section Padding**: `py-24` to `py-32` (6rem to 8rem) Massive vertical space between sections
239
+ - **Component Padding**: `p-8` to `p-12` for cards and containers
240
+ - **Element Spacing**: Use `gap-12` or `gap-16` for component groups, not tight spacing
241
+ - **Breathing Room**: If it feels like too much space, it's probably correct for luxury design
242
+
243
+ **Section Alternation:**
244
+
245
+ - Alternate light (`bg-[#F9F8F6]`) and dark (`bg-[#1A1A1A]`) sections for rhythm
246
+ - Use top borders (`border-t`) to separate sections without color changes
247
+ - Dark sections use inverted color palette with muted text at 60-80% opacity
248
+
249
+ **Content Width:**
250
+
251
+ - Maximum container: `max-w-[1600px]`
252
+ - Centered with `mx-auto`
253
+ - Text columns: `max-w-md` to `max-w-xl` for comfortable reading
254
+
255
+ ## The "Bold Factor" (Non-Genericness)
256
+
257
+ These signature elements make Luxury/Editorial instantly recognizable and must be present:
258
+
259
+ 1. **Vertical Text Labels**: Use CSS `writing-mode: vertical-rl` for decorative side labels (e.g., "Editorial / Vol. 01"). Position absolutely on images, typically on left or right edges. Uppercase with wide tracking. Hidden on mobile, visible on desktop.
260
+ 2. **Drop Caps**: Large initial letter for introductory paragraphs using `float-left`, Playfair Display font, 7xl size, tight line-height (0.8), with right margin (mr-3). Applied to first paragraph of Product Detail and Features intro. Creates classic editorial feel.
261
+ 3. **Mixed Italic Headlines**: Within large headlines, alternate between regular and italic styling for specific words to create "spoken" cadence. Use gold color on italic words. Examples: "Curated *Excellence*", "The *Details*", "The *Process*". Headline splits across lines with specific words emphasized.
262
+ 4. **Grayscale Image Transitions**: All images default to grayscale filter with ultra-slow (1500-2000ms) transition to full color on hover. Combines with subtle scale transform (`group-hover:scale-105`) and shadow deepening. Applied consistently to hero, features, blog, and testimonial avatars.
263
+ 5. **Visible Grid Lines**: Fixed vertical lines spanning viewport height, aligned with 12-column grid boundaries, at low opacity (20%). Four lines total (edges and middle thirds). Creates architectural editorial magazine feel. Pointer-events disabled.
264
+ 6. **Gold Sliding Animation**: Primary button hover reveals gold background (`#D4AF37`) sliding from left using `translate-x` transform. Requires layered span structure with z-index. Combined with shadow deepening from `shadow-[0_4px_16px]` to `shadow-[0_8px_24px]`.
265
+ 7. **Decorative Horizontal Lines**: Short horizontal lines (`h-px w-8 md:w-12`) used as decorative elements before labels (hero) or between metadata (blog dates). Deliberate, architectural spacing elements.
266
+ 8. **Extreme Type Scale**: Massive headlines (`text-5xl` mobile to `text-9xl` desktop) combined with tiny uppercase labels (`text-[10px]` to `text-xs`) creates dramatic hierarchy essential to luxury feel. Responsive scaling maintains proportions.
267
+ 9. **Layered Shadows**: Subtle shadows create depth without being obvious. Images have box shadows that deepen on hover. Inner borders (`inset` shadows) frame images. Cards lift with shadow evolution. Never harsh—always soft and refined.
268
+ 10. **Testimonial Interactions**: Left border animation (changes to gold and increases padding on hover), grayscale avatar transitions to color, author name turns gold, stars scale up. Multi-layered coordinated effect.
269
+
270
+ ## Anti-Patterns (What to Avoid)
271
+
272
+ These mistakes will break the luxury aesthetic:
273
+
274
+ 1. **DO NOT use rounded corners** Everything must be perfectly rectangular with 0px border-radius
275
+ 2. **DO NOT use harsh shadows** Only use extremely subtle shadows with low opacity rgba values. Depth comes from layering, not prominent drops.
276
+ 3. **DO NOT use pure black (#000000) or pure white (#FFFFFF)** Use charcoal (#1A1A1A) and alabaster (#F9F8F6)
277
+ 4. **DO NOT use fast animations** Minimum 500ms for interactions, 1500-2000ms for images. Luxury is deliberate and slow.
278
+ 5. **DO NOT use vibrant colors** — Stick to monochromatic palette with gold (#D4AF37) as only accent
279
+ 6. **DO NOT center everything** — Use asymmetry, offset columns, bottom-left alignment. Break the grid intentionally.
280
+ 7. **DO NOT overcrowd spacing** — More space is better. If it feels too airy, you're on the right track. Mobile: py-20, Desktop: py-32.
281
+ 8. **DO NOT use decorative fonts** — Only Playfair Display (serif) and Inter (sans-serif). No script or display fonts.
282
+ 9. **DO NOT use icons prominently** — If needed, use lucide-react with thin strokes (1-2px), sparingly. Icons are functional, not decorative.
283
+ 10. **DO NOT make gold dominant** Gold is an accent for hover/focus states and specific emphasis, not a primary color
284
+ 11. **DO NOT use small images** — Images should be large and prominent, portrait aspect ratios (3:4, 4:5) with shadows and inner borders
285
+ 12. **DO NOT use tight tracking on body text** — Only uppercase labels get wide tracking (0.2-0.3em). Body text uses default tracking.
286
+ 13. **DO NOT skip the grayscale filter** — All images must default to grayscale. Color is the reward on hover.
287
+ 14. **DO NOT use generic mobile layouts** — Maintain the core aesthetic on mobile with proper scaling, not generic stacking
288
+
289
+ ## Animation & Motion (Cinematic Timing)
290
+
291
+ **Philosophy:** All motion should feel deliberate, slow, and expensive. Nothing snaps or jumps. Think of camera movements in luxury fashion videos—smooth, gradual, cinematic.
292
+
293
+ **Timing:**
294
+
295
+ - **Button Interactions**: `duration-500` (500ms)
296
+ - **Color Transitions**: `duration-700` (700ms)
297
+ - **Image Effects**: `duration-[1500ms]` to `duration-[2000ms]` (1500-2000ms)
298
+ - **Background Transitions**: `duration-700` (700ms)
299
+
300
+ **Easing Functions:**
301
+
302
+ - **Default**: `ease-out` for most interactions
303
+ - **Custom**: `cubic-bezier(0.25, 0.46, 0.45, 0.94)` for smooth luxury feel (use in Tailwind with arbitrary values)
304
+ - **Never**: `ease-in-out` or `ease-in` These feel too mechanical
305
+
306
+ **Transition Properties:**
307
+
308
+ - Combine multiple properties: `transition-all` or specific `transition-[colors,transform]`
309
+ - Image transforms: Combine `scale` (1 to 1.05) with `grayscale` (1 to 0) in same transition
310
+ - Button fills: Use transform on absolute positioned overlay rather than background color change
311
+
312
+ **Hover Effects:**
313
+
314
+ - Delay feels intentionaluser must pause on element for effect to complete
315
+ - Multiple effects layer together (scale + color + grayscale) for richness
316
+ - Text color changes are instant or faster (300ms) while backgrounds are slower
317
+
318
+ ## Accessibility Considerations
319
+
320
+ **Contrast:**
321
+
322
+ - Charcoal (#1A1A1A) on Alabaster (#F9F8F6): 12.6:1Excellent (AAA)
323
+ - Warm Grey (#6C6863) on Alabaster: 4.8:1Good for secondary text (AA)
324
+ - Gold (#D4AF37) on Charcoal: 5.2:1 — Sufficient for accents (AA)
325
+ - White on Charcoal: 14.5:1 — Excellent (AAA)
326
+
327
+ **Focus Indicators:**
328
+
329
+ - Use `focus-visible:ring-1` or `focus-visible:border-[color]` for keyboard navigation
330
+ - Gold accent on focus makes interactive elements clear
331
+ - Never remove focus indicators — just make them elegant
332
+
333
+ **Motion Preferences:**
334
+
335
+ - Respect `prefers-reduced-motion` for users with vestibular disorders
336
+ - Reduce animation durations to 0ms or use simpler transitions
337
+ - Keep color changes but remove transforms and scales
338
+
339
+ **Typography:**
340
+
341
+ - Large body text size (16-18px base) ensures readability
342
+ - High contrast ratio for primary text
343
+ - Generous line-height (1.625) improves readability
344
+ - Avoid justified text use left alignment
345
+
346
+ **Interactive Areas:**
347
+
348
+ - Buttons have minimum 48px height (h-12) for touch targets
349
+ - Adequate padding creates larger clickable areas
350
+ - Spacing between interactive elements prevents mis-taps
351
+
352
+ ## Implementation Notes
353
+
354
+ **Tech Stack:**
355
+
356
+ - Tailwind CSS v4 for all styling with custom color values
357
+ - Google Fonts for "Playfair Display" and "Inter"
358
+ - Lucide React for icons (if needed, use sparingly with thin stroke-width)
359
+ - Custom CSS for noise texture (SVG data URI) and vertical writing mode
360
+
361
+ **Responsive Strategy:**
362
+
363
+ - **Mobile (< 768px)**:
364
+
365
+ - Stack all columns vertically
366
+ - Reduce padding: `px-8`, `py-20` (instead of px-16, py-32)
367
+ - Scale down typography: `text-4xl` headlines (instead of text-6xl), `text-xl` quotes (instead of text-3xl)
368
+ - Reduce gaps: `gap-8`, `gap-12` (instead of gap-12, gap-24)
369
+ - Stats: 2 columns, smaller text (text-3xl instead of text-5xl)
370
+ - Hero: Smaller type scale `text-5xl` (instead of text-9xl), smaller line and decorative elements
371
+ - Testimonials: Smaller left padding `pl-6` (instead of pl-8)
372
+ - Footer CTA: Stack email input and button vertically with `flex-col` on small screens
373
+ - Maintain core aesthetic: grayscale images, gold accents, slow animations
374
+ - **Tablet (768px - 1024px)**:
375
+
376
+ - Begin introducing grid layouts (2-3 columns)
377
+ - Medium padding: `px-8 md:px-16`, `py-20 md:py-32`
378
+ - Typography scales up: `text-5xl md:text-6xl`
379
+ - Complex layouts still stack (testimonials, FAQ)
380
+ - **Desktop (> 1024px)**:
381
+
382
+ - Full 12-column asymmetric grid with offset columns
383
+ - Maximum padding and spacing
384
+ - Visible vertical gridlines (4 lines at column boundaries)
385
+ - Vertical writing mode text visible
386
+ - Full typographic scale (text-9xl for hero)
387
+
388
+ **Performance:**
389
+
390
+ - Use CSS transforms (translate, scale) for animations — GPU accelerated
391
+ - Grayscale filter is performant in modern browsers
392
+ - Fixed gridlines and noise overlay use minimal resources
393
+ - Shadows use rgba with low opacity for minimal render cost
394
+
395
+ **Code Organization:**
396
+
397
+ - Extract color values to config/constants for consistency
398
+ - Create button component with variant system (primary/secondary/ghost/link) and shadow on primary
399
+ - Create card component with border-top pattern and shadow evolution built in
400
+ - Create input component with underline-only styling and italic placeholder
401
+ - Add fadeIn keyframe animation for FAQ accordion content
402
+ `</design-system>`