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,787 +1,751 @@
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: Academia / Classical
39
-
40
- ## Design Philosophy
41
-
42
- **Core Principles**: Scholarly gravitas meets timeless elegance. This style channels the atmosphere of centuries-old university libraries, Victorian study halls, and Renaissance manuscripts. Every element must feel like it belongs in a prestigious institution - combining **rich material references** (aged parchment, dark mahogany wood, polished brass hardware, crimson leather bindings) with **traditional typographic excellence** and **measured ornamentation**.
43
-
44
- **Vibe**: Scholarly, Prestigious, Warm, Timeless, Dignified, Intellectual, Distinguished.
45
-
46
- **The Academia Promise**: This isn't a modern dark theme with serif fonts. It's a complete transformation into a physical library environment where every interaction feels like turning pages in a leather-bound tome, where brass fixtures catch the light, and where centuries of knowledge create an atmosphere of gravitas and trust.
47
-
48
- ---
49
-
50
- ## Design Token System (The DNA)
51
-
52
- ### Color System (Library at Night)
53
-
54
- **Foundation Colors**:
55
-
56
- - **background**: `#1C1714` (Deep Mahogany) - The darkest wood tone, foundation of all layouts
57
- - **backgroundAlt**: `#251E19` (Aged Oak) - Surface elevation, cards, and panel backgrounds
58
- - **foreground**: `#E8DFD4` (Antique Parchment) - Primary text, warm cream tone
59
- - **muted**: `#3D332B` (Worn Leather) - Tertiary backgrounds, disabled states
60
- - **mutedForeground**: `#9C8B7A` (Faded Ink) - Secondary text, labels, metadata
61
- - **border**: `#4A3F35` (Wood Grain) - Subtle borders and dividers
62
-
63
- **Accent Colors**:
64
-
65
- - **accent**: `#C9A962` (Polished Brass) - Primary interactive color, highlights, focus states
66
- - **accentSecondary**: `#8B2635` (Library Crimson) - Emphasis badges, hover transforms
67
- - **accentForeground**: `#1C1714` (Dark on Brass) - Text on brass-colored buttons
68
-
69
- **Color Usage Rules**:
70
-
71
- 1. **Contrast Ratios**: Maintain 8.5:1 for parchment on mahogany, minimum 4.5:1 for muted text
72
- 2. **Layering Strategy**: Always layer backgroundAlt on top of background for depth (cards, panels)
73
- 3. **Brass Application**: Use brass for ALL interactive elements (buttons, links, focus rings, icons)
74
- 4. **Crimson Sparingly**: Reserve crimson for special emphasis (featured pricing tier, wax seals, hover transforms on secondary buttons)
75
- 5. **Border Subtlety**: Borders should be visible but never harsh - wood grain color provides gentle separation
76
-
77
- **Brass Gradient Formula** (for buttons and metallic elements):
78
-
79
- ```
80
- background: linear-gradient(180deg, #D4B872 0%, #C9A962 50%, #B8953F 100%)
81
- ```
82
-
83
- This creates authentic polished brass with highlights and shadows.
84
-
85
- ### Typography System
86
-
87
- **Font Families**:
88
-
89
- - **Heading Font**: `"Cormorant Garamond", serif` - High-contrast old-style serif with calligraphic elegance
90
- - **Body Font**: `"Crimson Pro", serif` - Book-style serif designed for extended reading
91
- - **Display Font**: `"Cinzel", serif` - Engraved, all-caps display font for labels and special emphasis
92
-
93
- **Type Scale & Hierarchy**:
94
-
95
- - **Display Headings**: `text-5xl` to `text-7xl` (48px-72px), Cormorant Garamond, `leading-[1.1]`, `tracking-tight`
96
- - **Section Headings**: `text-4xl` to `text-5xl` (36px-48px), Cormorant Garamond
97
- - **Subsection Headings**: `text-2xl` to `text-3xl` (24px-30px), Cormorant Garamond
98
- - **Body Text**: `text-base` to `text-lg` (16px-18px), Crimson Pro, `leading-relaxed` (1.625)
99
- - **Labels/Overlines**: `text-xs` to `text-[10px]` (10px-12px), Cinzel, `uppercase`, `tracking-[0.2em]` to `tracking-[0.3em]`
100
-
101
- **Font Weight Distribution**:
102
-
103
- - Headings: Regular/Normal (400-500) - avoid heavy weights, let the serif do the work
104
- - Body: Regular (400)
105
- - Labels: Medium (500-600) for Cinzel
106
- - Emphasis: Italic rather than bold for body text
107
-
108
- **Special Typography Patterns**:
109
-
110
- 1. **Drop Caps**: First letter of introductory paragraphs
111
-
112
- - Font: Cinzel (display font)
113
- - Size: `text-7xl` (72px), `float-left`, `mr-4`, `leading-[0.8]`
114
- - Color: Brass (`#C9A962`)
115
- - Shadow: `2px 2px 4px rgba(0,0,0,0.3)` for engraved depth
116
- 2. **Section Numbering**: Use Roman numerals (I, II, III, IV, V...) with "Volume" prefix for major sections
117
-
118
- - Font: Cinzel, `text-xs`, `uppercase`, `tracking-[0.25em]` to `tracking-[0.3em]`
119
- - Color: Brass
120
- - Pattern: "Volume I", "Volume II", etc. for major section headers; standalone Roman numerals for lists and sub-items
121
- - Placement: Positioned above section headings as overline labels
122
- 3. **Engraved Text Effect** (for buttons and special headings):
123
-
124
- - `text-shadow: 1px 1px 1px rgba(0,0,0,0.4), -1px -1px 1px rgba(255,255,255,0.1)`
125
- - Creates pressed-into-metal appearance
126
-
127
- ### Radius & Border System
128
-
129
- **Border Radius Values**:
130
-
131
- - **Default**: `4px` (`rounded`) - Subtle, traditional corners for buttons, cards, inputs
132
- - **Arch-Top Special**: `border-radius: 40% 40% 0 0 / 20% 20% 0 0` - Cathedral arch tops for images
133
- - **Full Circle**: For icon containers, badges, profile images
134
-
135
- **The Arch-Top Signature**:
136
- This is a defining visual element. The formula creates an elegant arch reminiscent of cathedral windows or library alcoves:
137
-
138
- ```css
139
- .arch-top {
140
- border-radius: 40% 40% 0 0 / 20% 20% 0 0;
141
- }
142
- ```
143
-
144
- Apply to: Hero images, blog thumbnails, feature images, decorative containers.
145
-
146
- **Border Styling**:
147
-
148
- - **Thickness**: `1px` standard, `2px` for decorative frames and focus states
149
- - **Color**: `#4A3F35` (wood grain) for standard borders, `#C9A962` (brass) for interactive/decorative
150
- - **Pattern**: Single solid borders, avoid dashed or dotted
151
-
152
- ### Shadows & Depth
153
-
154
- **Shadow Philosophy**: Shadows should feel like physical depth in a dimly-lit library - soft, warm, and realistic.
155
-
156
- **Shadow Recipes**:
157
-
158
- 1. **Card Elevation** (default):
159
-
160
- ```
161
- shadow: none (rely on border and background differentiation)
162
- hover: 0 8px 24px rgba(0,0,0,0.3)
163
- ```
164
- 2. **Engraved/Embossed Effect** (buttons, decorative elements):
165
-
166
- ```
167
- inset 0 1px 0 rgba(255,255,255,0.2),
168
- inset 0 -1px 0 rgba(0,0,0,0.2),
169
- 0 2px 8px rgba(0,0,0,0.3)
170
-
171
- hover: Add glow via 0 4px 12px rgba(201,169,98,0.3)
172
- ```
173
- 3. **Wax Seal Badge**:
174
-
175
- ```
176
- inset 0 2px 4px rgba(255,255,255,0.2),
177
- inset 0 -2px 4px rgba(0,0,0,0.3),
178
- 0 4px 8px rgba(0,0,0,0.4)
179
- ```
180
- 4. **Focus Ring**:
181
-
182
- ```
183
- ring-2 ring-[#C9A962] ring-offset-2 ring-offset-[#1C1714]
184
- ```
185
-
186
- ### Textures & Atmospheric Effects
187
-
188
- **1. Aged Paper Texture Overlay**:
189
-
190
- - SVG noise filter with fractal turbulence
191
- - Opacity: `0.03` (extremely subtle)
192
- - Position: Fixed overlay covering entire viewport
193
- - Blend mode: `overlay`
194
- - Purpose: Adds tactile paper grain without overpowering content
195
-
196
- **2. Vignette Effect**:
197
-
198
- - Radial gradient from center
199
- - Formula: `radial-gradient(ellipse at center, transparent 0%, transparent 50%, rgba(28,23,20,0.4) 100%)`
200
- - Position: Fixed overlay
201
- - Purpose: Focuses attention toward center, mimics library lighting
202
-
203
- **3. Sepia Image Treatment**:
204
-
205
- - Default state: `filter: sepia(0.6) contrast(0.95) brightness(0.9)`
206
- - Hover state: `filter: sepia(0) contrast(1) brightness(1)`
207
- - Transition: `duration-700 ease-out`
208
- - Purpose: Images appear as aged photographs that reveal full color on interaction
209
-
210
- **4. Decorative Patterns**:
211
-
212
- **Ornate Corner Flourishes** (for major frames and cards):
213
-
214
- ```css
215
- /* Top-left and bottom-right brass corners */
216
- .ornate-frame::before,
217
- .ornate-frame::after {
218
- content: "";
219
- position: absolute;
220
- width: 40px;
221
- height: 40px;
222
- border: 2px solid #C9A962;
223
- }
224
-
225
- .ornate-frame::before {
226
- top: -1px;
227
- left: -1px;
228
- border-right: none;
229
- border-bottom: none;
230
- }
231
-
232
- .ornate-frame::after {
233
- bottom: -1px;
234
- right: -1px;
235
- border-left: none;
236
- border-top: none;
237
- }
238
- ```
239
-
240
- **Ornate Divider** (section separators):
241
-
242
- ```css
243
- /* Gradient line with centered decorative glyph */
244
- .ornate-divider {
245
- height: 1px;
246
- background: linear-gradient(90deg, transparent 0%, #4A3F35 20%, #C9A962 50%, #4A3F35 80%, transparent 100%);
247
- }
248
-
249
- .ornate-divider::before {
250
- content: "✶"; /* or other decorative Unicode character */
251
- position: absolute;
252
- left: 50%;
253
- top: 50%;
254
- transform: translate(-50%, -50%);
255
- color: #C9A962;
256
- font-size: 12px;
257
- background: #1C1714;
258
- padding: 0 12px;
259
- }
260
- ```
261
-
262
- ---
263
-
264
- ## Section Patterns
265
-
266
- ### Product Detail Section
267
-
268
- This section serves as a formal proclamation or manifesto, positioned after stats to elaborate on the value proposition.
269
-
270
- **Structure**:
271
-
272
- - Container: Ornate frame with corner flourishes
273
- - Background: `#251E19/50` on rounded border
274
- - Header: Centered "Proclamation" label with flanking brass lines
275
- - Headline: Large serif (4xl-6xl) centered with tight line-height
276
- - Ornate divider: Full decorative divider with centered glyph
277
- - Body: Multi-paragraph content with drop cap on first paragraph
278
- - Spacing: Generous padding (p-8 to p-12), centered max-width (max-w-4xl)
279
-
280
- **Typography**:
281
-
282
- - Label: Cinzel, uppercase, brass color, wide tracking
283
- - Headline: Cormorant Garamond, extra large, standard color
284
- - Body: Text-lg, muted foreground color, relaxed leading
285
- - First paragraph: Drop cap effect automatically applied
286
-
287
- This creates a "certificate of excellence" feeling - formal, centered, and authoritative.
288
-
289
- ---
290
-
291
- ## Component Styling Principles
292
-
293
- ### Buttons
294
-
295
- **Visual Treatment**:
296
-
297
- - Font: Cinzel (display font)
298
- - Text: Uppercase with `tracking-[0.15em]`
299
- - Size: Small text (`text-xs`) with generous padding for dignified presence
300
- - Effect: Engraved text shadow for pressed-metal appearance
301
-
302
- **Primary Button** (brass, main actions):
303
-
304
- - Background: Brass gradient (`linear-gradient(180deg, #D4B872 0%, #C9A962 50%, #B8953F 100%)`)
305
- - Text: Dark mahogany (`#1C1714`) for maximum contrast on brass
306
- - Radius: `4px` (rounded)
307
- - Shadow: Inset highlights and depth shadows (see shadow system)
308
- - Hover: Increase brightness to 110%, add brass glow shadow
309
- - Active: Deeper inset shadow for pressed effect
310
-
311
- **Secondary Button** (outlined, alternative actions):
312
-
313
- - Background: Transparent
314
- - Border: `2px solid #C9A962` (brass)
315
- - Text: Brass (`#C9A962`)
316
- - Hover: Transform to crimson - `border: #8B2635`, `bg: #8B2635`, `text: #E8DFD4`
317
- - Purpose: Offers elegant alternative that can dramatically transform
318
-
319
- **Ghost Button** (minimal, tertiary actions):
320
-
321
- - No background or border
322
- - Text: Brass with hover underline
323
- - Underline offset: `4px` for breathing room
324
- - Hover: Brighten to `#D4B872` with underline
325
-
326
- **Button Sizes**:
327
-
328
- - Default: `h-12 px-8`
329
- - Small: `h-10 px-6`
330
- - Large: `h-14 px-10`
331
-
332
- ### Cards & Containers
333
-
334
- **Structure**:
335
-
336
- - Background: `#251E19` (aged oak - one layer above page background)
337
- - Border: `1px solid #4A3F35` (wood grain)
338
- - Radius: `4px` (rounded)
339
- - Padding: `p-8` to `p-12` depending on content density
340
- - Position: Relative (for corner flourishes)
341
-
342
- **Corner Flourish Pattern**:
343
-
344
- - Apply `.corner-flourish` class
345
- - Creates subtle brass corner brackets (24px × 24px)
346
- - Opacity: 0.6 default, 1.0 on hover
347
- - Purpose: Frames content like a certificate or portrait
348
-
349
- **Hover Behavior**:
350
-
351
- - Border: Transition to `#C9A962/50` (brass with transparency)
352
- - Shadow: Add `0 8px 24px rgba(0,0,0,0.3)` for lift effect
353
- - Duration: `300ms` ease
354
-
355
- **Special Card Treatments**:
356
-
357
- 1. **Certificate/Ledger Style** (pricing cards):
358
-
359
- - Double border effect using box-shadow inset
360
- - Brass corner accents using pseudo-elements as triangular brackets
361
- - Featured tier gets brass border and ring
362
- 2. **Arch-Top Image Cards** (blog, features):
363
-
364
- - Image container uses arch-top border-radius
365
- - Image has sepia filter with hover reveal
366
- - Scale image slightly on card hover (`scale-105`)
367
- 3. **Wax Seal Badges** (featured items):
368
-
369
- - Circular crimson badge positioned at top-right
370
- - Radial gradient for dimensional wax appearance
371
- - Contains icon (typically star)
372
- - Position: `-top-3 absolute right-6`
373
-
374
- ### Form Inputs
375
-
376
- **Text Inputs**:
377
-
378
- - Background: `#251E19` (aged oak)
379
- - Border: `1px solid #4A3F35` (wood grain)
380
- - Text: `#E8DFD4` (parchment), Crimson Pro font
381
- - Placeholder: Italic serif, `#9C8B7A` (faded ink)
382
- - Height: `h-12` (48px)
383
- - Padding: `px-4 py-2`
384
- - Radius: `4px` (rounded)
385
-
386
- **Focus State**:
387
-
388
- - Border: `#C9A962` (brass)
389
- - Ring: `ring-2 ring-[#C9A962]/30` with offset
390
- - No outline, rely on ring for accessibility
391
-
392
- **Labels**:
393
-
394
- - Position: Above input
395
- - Font: Cinzel, uppercase, small tracking
396
- - Color: `#9C8B7A` or brass for important fields
397
-
398
- ### Interactive States
399
-
400
- **Hover States**:
401
-
402
- - Links: Brass text with expanded letter-spacing (tracking increase from 0.2em to 0.25em)
403
- - Cards: Brass border tint, shadow lift, corner flourish opacity increase
404
- - Buttons: Brightness increase or color transformation (secondary transforms to crimson)
405
- - Images: Sepia filter removal over 700ms with subtle scale (105%)
406
- - Stats: Number scales to 110%, label changes to brass, background darkens
407
- - Logo: Subtle scale to 105%
408
- - FAQ toggles: Rotate 180deg on open with color transformation
409
-
410
- **Focus States** (keyboard navigation):
411
-
412
- - Ring: `ring-2 ring-[#C9A962]` with `ring-offset-2 ring-offset-[#1C1714]`
413
- - Must be clearly visible against all backgrounds
414
- - No outline removal - accessibility critical
415
-
416
- **Active/Pressed States**:
417
-
418
- - Buttons: Deeper inset shadow
419
- - Links: Slightly darker brass tone
420
- - Cards: No special treatment (hover is sufficient)
421
-
422
- **Disabled States**:
423
-
424
- - Opacity: `0.5`
425
- - Pointer events: `none`
426
- - No color change - opacity handles it
427
-
428
- ---
429
-
430
- ## Layout Principles
431
-
432
- ### Spacing Rhythm
433
-
434
- **Base Grid**: 8px spacing system
435
-
436
- - Micro spacing (icon gaps, inline elements): `gap-2` to `gap-4` (8px-16px)
437
- - Element spacing (card internals): `gap-4` to `gap-8` (16px-32px)
438
- - Section spacing (between major blocks): `gap-8` to `gap-12` (32px-48px)
439
- - Vertical section padding: `py-24` to `py-32` (96px-128px)
440
-
441
- **Content Width**:
442
-
443
- - Standard content: `max-w-6xl` (1152px)
444
- - Narrow content (blog posts, forms): `max-w-4xl` (896px)
445
- - Full-width sections: `max-w-7xl` (1280px) or full viewport for backgrounds
446
-
447
- **Grid Patterns**:
448
-
449
- - Three-column: `grid-cols-1 md:grid-cols-3` (features, pricing, benefits)
450
- - Two-column: `grid-cols-1 lg:grid-cols-2` (testimonials, hero split)
451
- - Four-column: `grid-cols-2 md:grid-cols-4` (stats bar)
452
-
453
- **Asymmetry & Balance**:
454
-
455
- - Hero sections favor 60/40 or 7/5 column splits
456
- - Text can slightly "bleed" into adjacent columns for dynamic feel
457
- - Alternate left/right alignment in timeline-style sections
458
-
459
- ### Section Separators
460
-
461
- **Border Separators**:
462
-
463
- - Full-width border: `border-y border-[#4A3F35]`
464
- - Background: Often pair with `bg-[#251E19]/30` or `bg-[#251E19]/50` for subtle panel effect
465
- - Use between major sections to create rhythm
466
-
467
- **Ornate Dividers**:
468
-
469
- - Use within sections to separate subsections
470
- - Width: `w-64` centered or full-width
471
- - Include decorative glyph at center
472
-
473
- **Visual Breathing Room**:
474
-
475
- - Allow generous vertical space between sections (96px-128px)
476
- - Don't pack content tightly - academia values space and contemplation
477
-
478
- ---
479
-
480
- ## The "Bold Factor" (Non-Genericness)
481
-
482
- These are the **mandatory signature elements** that define Academia/Classical. A design is not complete without these:
483
-
484
- ### 1. **Arch-Topped Images**
485
-
486
- Every featured image must use the cathedral arch border-radius (`40% 40% 0 0 / 20% 20% 0 0`). This single element transforms modern web imagery into architectural references of classical libraries and Gothic buildings.
487
-
488
- ### 2. **Sepia-to-Color Image Transitions**
489
-
490
- All images start with sepia filter (0.6) and transition to full color on hover over 700ms. This creates the magical effect of "aged photographs coming to life" when users interact.
491
-
492
- ### 3. **Roman Numeral Volume System**
493
-
494
- Every major section must be prefixed with "Volume I", "Volume II", etc. using Roman numerals. List items and sub-elements use standalone Roman numerals (I, II, III...). Use Cinzel font, uppercase, brass color for all numbering.
495
-
496
- ### 4. **Drop Cap Introductions**
497
-
498
- Opening paragraphs of major sections should feature massive brass drop caps using Cinzel font at `text-7xl`, creating that illuminated manuscript feeling.
499
-
500
- ### 5. **Corner Flourishes**
501
-
502
- Major frames (hero section) must have large brass corner brackets (40px). Cards should have subtle corner flourishes (24px). This frames content like certificates and portraits.
503
-
504
- ### 6. **Ornate Dividers with Glyphs**
505
-
506
- Section breaks use gradient dividers (transparent → wood grain → brass → wood grain → transparent) with a centered decorative Unicode character (✶, ❧, ✤, ❦).
507
-
508
- ### 7. **Wax Seal Badges**
509
-
510
- Featured or highlighted items get circular crimson badges with radial gradients and inset shadows, containing a centered star icon. This mimics traditional wax seals on important documents.
511
-
512
- ### 8. **Brass Interactive Elements**
513
-
514
- ALL interactive elements (buttons, links, focus rings, hover states) must use the brass color (#C9A962) or brass gradient. This is non-negotiable - brass is the interactive color language.
515
-
516
- ### 9. **Engraved Text Effects**
517
-
518
- Buttons and special headings use dual text-shadow (dark below, light above) to create pressed-into-metal engraved appearance.
519
-
520
- ### 10. **Texture Overlays**
521
-
522
- Page must include both subtle paper texture (3% opacity noise) and vignette effect (radial gradient darkening edges). These are fixed overlays that create atmospheric depth.
523
-
524
- ---
525
-
526
- ## Animation & Motion
527
-
528
- **Motion Philosophy**: Dignified, deliberate, and smooth. Nothing should feel snappy, bouncy, or playful. Motion should feel like the weight of leather-bound books, the swing of brass lamps, the turn of old pages.
529
-
530
- **Timing Functions**:
531
-
532
- - Default: `ease-out` (natural deceleration)
533
- - Never use: `ease-in-out` (too mechanical), `bounce`, `spring` (too playful)
534
-
535
- **Duration Hierarchy**:
536
-
537
- - Fast interactions (button press, focus): `150ms`
538
- - Standard transitions (hover, border changes): `300ms`
539
- - Deliberate transitions (cards lifting, border color): `500ms`
540
- - Dramatic reveals (sepia to color, scale): `700ms`
541
-
542
- **Transform Patterns**:
543
-
544
- - Hover scale: `scale-105` or `scale-[1.02]` (subtle, never dramatic)
545
- - Hover lift: Increase shadow, don't translate vertically
546
- - No rotation transforms (except for chevron icons)
547
- - No slide-in or slide-out animations
548
-
549
- **Signature Animation - Brass Shimmer** (optional enhancement):
550
- Subtle brightness oscillation on brass buttons:
551
-
552
- ```
553
- hover: brightness-110
554
- animation: Gentle pulse between 100% and 110% over 2s
555
- ```
556
-
557
- **Respect Motion Preferences**:
558
-
559
- ```css
560
- @media (prefers-reduced-motion: reduce) {
561
- * {
562
- animation-duration: 0.01ms !important;
563
- animation-iteration-count: 1 !important;
564
- transition-duration: 0.01ms !important;
565
- }
566
- }
567
- ```
568
-
569
- ---
570
-
571
- ## Iconography
572
-
573
- **Icon Library**: Use Lucide React or similar minimal icon set
574
-
575
- **Styling Rules**:
576
-
577
- - Stroke width: `1.5` (thin, elegant lines)
578
- - Color: Brass (`#C9A962`) for decorative icons
579
- - Size: `h-4 w-4` to `h-6 w-6` depending on context
580
- - Containers: Often enclosed in circular or shield-shaped containers with brass border
581
-
582
- **Engraved Icon Treatment** (optional):
583
-
584
- - Place icons in circular containers: `rounded-full border border-[#C9A962]/30 bg-[#1C1714]`
585
- - Size: `h-12 w-12` with centered icon `h-5 w-5`
586
- - Creates "carved medallion" effect
587
-
588
- **Icon Usage**:
589
-
590
- - Feature icons: Educational symbols (book, scroll, graduation cap, quill)
591
- - Button icons: Actions (chevrons, external link, check marks)
592
- - Decorative icons: Stars for ratings, quotes for testimonials
593
-
594
- ---
595
-
596
- ## Anti-Patterns (What to Avoid)
597
-
598
- ### Do NOT:
599
-
600
- 1. **Use sans-serif fonts** anywhere except for extreme edge cases (accessibility overrides)
601
- 2. **Use bright, saturated colors** - everything should feel aged and warm
602
- 3. **Use sharp, geometric shapes** - favor organic curves and traditional architecture
603
- 4. **Overuse decorative elements** - restraint is scholarly; excess is gaudy
604
- 5. **Use modern gradients** (except brass metallic effect) - no vibrant color transitions
605
- 6. **Ignore the arch-top pattern** - flat-top images break the aesthetic
606
- 7. **Skip Roman numerals** - they're essential to the classical academic vibe
607
- 8. **Use pure black (#000000)** - always use warm dark browns
608
- 9. **Use pure white (#FFFFFF)** - always use warm cream tones
609
- 10. **Add playful animations** - no bouncing, no elastic effects, no whimsy
610
- 11. **Forget sepia filters** - images must feel aged by default
611
- 12. **Use thin borders everywhere** - let backgrounds do separation work, borders for emphasis
612
- 13. **Mix cold and warm tones** - this is a warm palette exclusively
613
-
614
- ### Common Mistakes:
615
-
616
- - **Too many corner flourishes** - reserve for hero and cards, not every element
617
- - **Overusing crimson** - it's for special emphasis only, brass should dominate
618
- - **Insufficient spacing** - academia needs breathing room for contemplation
619
- - **Missing texture overlays** - these add essential atmospheric depth
620
- - **Forgetting focus states** - keyboard navigation must have visible brass rings
621
- - **Inconsistent font usage** - Cormorant for headings, Crimson for body, Cinzel for labels/display
622
-
623
- ---
624
-
625
- ## Responsive Strategy
626
-
627
- ### Mobile (< 768px):
628
-
629
- - **Stack all columns vertically** - maintain hierarchy
630
- - **Touch targets** - Minimum 48px height for interactive elements (FAQ buttons 40px, general links 48px min-height)
631
- - **Simplify decorative elements** - hide large corner flourishes, keep small ones
632
- - **Maintain typography** - reduce sizes slightly (text-lg becomes text-base) but keep font choices
633
- - **Full-width cards** - preserve arch-tops on images
634
- - **Single-line borders** - simplify double-border effects
635
- - **Reduce spacing** - py-16 instead of py-24 for sections, reduce internal padding (pl-6 instead of pl-10)
636
- - **Simplify navigation** - hamburger menu with same serif styling
637
- - **Form elements** - Stack email input and button vertically, ensure full-width buttons on mobile
638
-
639
- ### Tablet (768px - 1024px):
640
-
641
- - **Two-column grids** where appropriate (features, testimonials)
642
- - **Partial decorative elements** - show corner flourishes on cards
643
- - **Maintain most effects** - keep sepia transitions, brass interactions
644
- - **Flexible spacing** - scale between mobile and desktop values
645
-
646
- ### Desktop (> 1024px):
647
-
648
- - **Full ornate experience** - all decorative elements visible
649
- - **Three-column grids** - features, pricing, benefits
650
- - **Maximum visual richness** - large corner flourishes, full texture overlays
651
- - **Generous spacing** - full py-24 to py-32 section padding
652
-
653
- ### Responsive Image Strategy:
654
-
655
- - Arch-tops work at all sizes - maintain the effect
656
- - Use `aspect-[3/4]` or `aspect-[4/5]` for portraits, `aspect-[4/3]` for landscapes
657
- - Always apply sepia filter at all viewport sizes
658
-
659
- ---
660
-
661
- ## Accessibility Considerations
662
-
663
- ### Contrast Requirements:
664
-
665
- - **Primary text on background**: 8.5:1 (exceeds WCAG AAA)
666
- - **Secondary text on background**: 4.5:1 minimum (meets WCAG AA)
667
- - **Brass on dark backgrounds**: 7:1 (excellent)
668
- - **Dark text on brass buttons**: 8:1 (excellent)
669
-
670
- ### Focus Indicators:
671
-
672
- - **Always visible**: 2px brass ring with 2px offset
673
- - **High contrast**: Brass (#C9A962) against all backgrounds
674
- - **Never remove**: Critical for keyboard navigation
675
- - **Ring offset**: Uses background color for clear separation
676
-
677
- ### Motion Preferences:
678
-
679
- - Respect `prefers-reduced-motion` media query
680
- - Disable or drastically reduce transition durations
681
- - Maintain functionality without motion
682
-
683
- ### Semantic HTML:
684
-
685
- - Use proper heading hierarchy (h1 → h2 → h3)
686
- - Use `<nav>` for navigation, `<main>` for content, `<footer>` for footer
687
- - Use `<button>` for actions, `<a>` for navigation
688
- - Use `aria-label` for icon-only buttons
689
-
690
- ### Screen Reader Considerations:
691
-
692
- - Decorative elements (flourishes, dividers) should have `aria-hidden="true"`
693
- - Images must have descriptive alt text
694
- - Form inputs must have associated labels
695
- - Focus order must be logical
696
-
697
- ---
698
-
699
- ## Implementation Constraints
700
-
701
- ### Technology Stack:
702
-
703
- - **CSS Framework**: Tailwind CSS v4+ with arbitrary value syntax `[#C9A962]`
704
- - **Fonts**: Google Fonts (Cormorant Garamond, Crimson Pro, Cinzel)
705
- - **Icons**: Lucide React or similar minimal icon set
706
- - **Custom CSS**: Required for textures, flourishes, and complex decorative elements
707
-
708
- ### Custom CSS Requirements:
709
-
710
- The following cannot be achieved with Tailwind alone and require custom CSS:
711
-
712
- - Paper texture overlay (SVG noise filter)
713
- - Vignette radial gradient overlay
714
- - Corner flourishes (pseudo-elements)
715
- - Ornate dividers with centered glyphs
716
- - Wax seal badge (complex radial gradient)
717
- - Drop cap styling (::first-letter pseudo-element)
718
- - Arch-top border-radius (complex multi-value syntax)
719
-
720
- ### Performance Considerations:
721
-
722
- - Fixed overlays (texture, vignette) use single elements, not per-component
723
- - Sepia filters are GPU-accelerated transforms
724
- - Minimize custom fonts to three families
725
- - Use font-display: swap for Google Fonts
726
-
727
- ### Browser Support:
728
-
729
- - Modern browsers (last 2 versions of Chrome, Firefox, Safari, Edge)
730
- - CSS Grid and Flexbox required
731
- - CSS custom properties for theme tokens
732
- - Border-radius complex syntax for arch-tops
733
-
734
- ---
735
-
736
- ## Design Token Reference (Quick Copy)
737
-
738
- ```javascript
739
- export const academiaTokens = {
740
- colors: {
741
- background: "#1C1714",
742
- backgroundAlt: "#251E19",
743
- foreground: "#E8DFD4",
744
- muted: "#3D332B",
745
- mutedForeground: "#9C8B7A",
746
- accent: "#C9A962",
747
- accentSecondary: "#8B2635",
748
- border: "#4A3F35",
749
- },
750
- fonts: {
751
- heading: "'Cormorant Garamond', serif",
752
- body: "'Crimson Pro', serif",
753
- display: "'Cinzel', serif",
754
- },
755
- radius: {
756
- default: "4px",
757
- arch: "40% 40% 0 0 / 20% 20% 0 0",
758
- },
759
- transitions: {
760
- fast: "150ms",
761
- base: "300ms",
762
- slow: "500ms",
763
- dramatic: "700ms",
764
- },
765
- spacing: {
766
- section: ["py-24", "py-32"],
767
- card: ["p-8", "p-12"],
768
- element: ["gap-4", "gap-8"],
769
- },
770
- effects: {
771
- sepia: "sepia(0.6) contrast(0.95) brightness(0.9)",
772
- brassGradient: "linear-gradient(180deg, #D4B872 0%, #C9A962 50%, #B8953F 100%)",
773
- engraved: "1px 1px 1px rgba(0,0,0,0.4), -1px -1px 1px rgba(255,255,255,0.1)",
774
- },
775
- };
776
- ```
777
-
778
- ---
779
-
780
- ## Summary
781
-
782
- Academia/Classical is defined by its **material authenticity** (aged paper, dark wood, polished brass), **typographic excellence** (three distinct serifs used purposefully), and **signature architectural elements** (arch-tops, corner flourishes, Roman numerals).
783
-
784
- The style succeeds when every element feels like it could exist in a physical 19th-century university library. It fails when it feels like a generic dark theme with serifs tacked on.
785
-
786
- The brass/gold accent color is the interactive language. The sepia-to-color transition is the magical moment. The arch-topped images are the architectural signature. Together, these create a cohesive, prestigious, scholarly experience that feels timeless and trustworthy.
787
- `</design-system>`
1
+ <design-system>
2
+ # Design Style: Academia / Classical
3
+
4
+ ## Design Philosophy
5
+
6
+ **Core Principles**: Scholarly gravitas meets timeless elegance. This style channels the atmosphere of centuries-old university libraries, Victorian study halls, and Renaissance manuscripts. Every element must feel like it belongs in a prestigious institution - combining **rich material references** (aged parchment, dark mahogany wood, polished brass hardware, crimson leather bindings) with **traditional typographic excellence** and **measured ornamentation**.
7
+
8
+ **Vibe**: Scholarly, Prestigious, Warm, Timeless, Dignified, Intellectual, Distinguished.
9
+
10
+ **The Academia Promise**: This isn't a modern dark theme with serif fonts. It's a complete transformation into a physical library environment where every interaction feels like turning pages in a leather-bound tome, where brass fixtures catch the light, and where centuries of knowledge create an atmosphere of gravitas and trust.
11
+
12
+ ---
13
+
14
+ ## Design Token System (The DNA)
15
+
16
+ ### Color System (Library at Night)
17
+
18
+ **Foundation Colors**:
19
+
20
+ - **background**: `#1C1714` (Deep Mahogany) - The darkest wood tone, foundation of all layouts
21
+ - **backgroundAlt**: `#251E19` (Aged Oak) - Surface elevation, cards, and panel backgrounds
22
+ - **foreground**: `#E8DFD4` (Antique Parchment) - Primary text, warm cream tone
23
+ - **muted**: `#3D332B` (Worn Leather) - Tertiary backgrounds, disabled states
24
+ - **mutedForeground**: `#9C8B7A` (Faded Ink) - Secondary text, labels, metadata
25
+ - **border**: `#4A3F35` (Wood Grain) - Subtle borders and dividers
26
+
27
+ **Accent Colors**:
28
+
29
+ - **accent**: `#C9A962` (Polished Brass) - Primary interactive color, highlights, focus states
30
+ - **accentSecondary**: `#8B2635` (Library Crimson) - Emphasis badges, hover transforms
31
+ - **accentForeground**: `#1C1714` (Dark on Brass) - Text on brass-colored buttons
32
+
33
+ **Color Usage Rules**:
34
+
35
+ 1. **Contrast Ratios**: Maintain 8.5:1 for parchment on mahogany, minimum 4.5:1 for muted text
36
+ 2. **Layering Strategy**: Always layer backgroundAlt on top of background for depth (cards, panels)
37
+ 3. **Brass Application**: Use brass for ALL interactive elements (buttons, links, focus rings, icons)
38
+ 4. **Crimson Sparingly**: Reserve crimson for special emphasis (featured pricing tier, wax seals, hover transforms on secondary buttons)
39
+ 5. **Border Subtlety**: Borders should be visible but never harsh - wood grain color provides gentle separation
40
+
41
+ **Brass Gradient Formula** (for buttons and metallic elements):
42
+
43
+ ```
44
+ background: linear-gradient(180deg, #D4B872 0%, #C9A962 50%, #B8953F 100%)
45
+ ```
46
+
47
+ This creates authentic polished brass with highlights and shadows.
48
+
49
+ ### Typography System
50
+
51
+ **Font Families**:
52
+
53
+ - **Heading Font**: `"Cormorant Garamond", serif` - High-contrast old-style serif with calligraphic elegance
54
+ - **Body Font**: `"Crimson Pro", serif` - Book-style serif designed for extended reading
55
+ - **Display Font**: `"Cinzel", serif` - Engraved, all-caps display font for labels and special emphasis
56
+
57
+ **Type Scale & Hierarchy**:
58
+
59
+ - **Display Headings**: `text-5xl` to `text-7xl` (48px-72px), Cormorant Garamond, `leading-[1.1]`, `tracking-tight`
60
+ - **Section Headings**: `text-4xl` to `text-5xl` (36px-48px), Cormorant Garamond
61
+ - **Subsection Headings**: `text-2xl` to `text-3xl` (24px-30px), Cormorant Garamond
62
+ - **Body Text**: `text-base` to `text-lg` (16px-18px), Crimson Pro, `leading-relaxed` (1.625)
63
+ - **Labels/Overlines**: `text-xs` to `text-[10px]` (10px-12px), Cinzel, `uppercase`, `tracking-[0.2em]` to `tracking-[0.3em]`
64
+
65
+ **Font Weight Distribution**:
66
+
67
+ - Headings: Regular/Normal (400-500) - avoid heavy weights, let the serif do the work
68
+ - Body: Regular (400)
69
+ - Labels: Medium (500-600) for Cinzel
70
+ - Emphasis: Italic rather than bold for body text
71
+
72
+ **Special Typography Patterns**:
73
+
74
+ 1. **Drop Caps**: First letter of introductory paragraphs
75
+
76
+ - Font: Cinzel (display font)
77
+ - Size: `text-7xl` (72px), `float-left`, `mr-4`, `leading-[0.8]`
78
+ - Color: Brass (`#C9A962`)
79
+ - Shadow: `2px 2px 4px rgba(0,0,0,0.3)` for engraved depth
80
+ 2. **Section Numbering**: Use Roman numerals (I, II, III, IV, V...) with "Volume" prefix for major sections
81
+
82
+ - Font: Cinzel, `text-xs`, `uppercase`, `tracking-[0.25em]` to `tracking-[0.3em]`
83
+ - Color: Brass
84
+ - Pattern: "Volume I", "Volume II", etc. for major section headers; standalone Roman numerals for lists and sub-items
85
+ - Placement: Positioned above section headings as overline labels
86
+ 3. **Engraved Text Effect** (for buttons and special headings):
87
+
88
+ - `text-shadow: 1px 1px 1px rgba(0,0,0,0.4), -1px -1px 1px rgba(255,255,255,0.1)`
89
+ - Creates pressed-into-metal appearance
90
+
91
+ ### Radius & Border System
92
+
93
+ **Border Radius Values**:
94
+
95
+ - **Default**: `4px` (`rounded`) - Subtle, traditional corners for buttons, cards, inputs
96
+ - **Arch-Top Special**: `border-radius: 40% 40% 0 0 / 20% 20% 0 0` - Cathedral arch tops for images
97
+ - **Full Circle**: For icon containers, badges, profile images
98
+
99
+ **The Arch-Top Signature**:
100
+ This is a defining visual element. The formula creates an elegant arch reminiscent of cathedral windows or library alcoves:
101
+
102
+ ```css
103
+ .arch-top {
104
+ border-radius: 40% 40% 0 0 / 20% 20% 0 0;
105
+ }
106
+ ```
107
+
108
+ Apply to: Hero images, blog thumbnails, feature images, decorative containers.
109
+
110
+ **Border Styling**:
111
+
112
+ - **Thickness**: `1px` standard, `2px` for decorative frames and focus states
113
+ - **Color**: `#4A3F35` (wood grain) for standard borders, `#C9A962` (brass) for interactive/decorative
114
+ - **Pattern**: Single solid borders, avoid dashed or dotted
115
+
116
+ ### Shadows & Depth
117
+
118
+ **Shadow Philosophy**: Shadows should feel like physical depth in a dimly-lit library - soft, warm, and realistic.
119
+
120
+ **Shadow Recipes**:
121
+
122
+ 1. **Card Elevation** (default):
123
+
124
+ ```
125
+ shadow: none (rely on border and background differentiation)
126
+ hover: 0 8px 24px rgba(0,0,0,0.3)
127
+ ```
128
+ 2. **Engraved/Embossed Effect** (buttons, decorative elements):
129
+
130
+ ```
131
+ inset 0 1px 0 rgba(255,255,255,0.2),
132
+ inset 0 -1px 0 rgba(0,0,0,0.2),
133
+ 0 2px 8px rgba(0,0,0,0.3)
134
+
135
+ hover: Add glow via 0 4px 12px rgba(201,169,98,0.3)
136
+ ```
137
+ 3. **Wax Seal Badge**:
138
+
139
+ ```
140
+ inset 0 2px 4px rgba(255,255,255,0.2),
141
+ inset 0 -2px 4px rgba(0,0,0,0.3),
142
+ 0 4px 8px rgba(0,0,0,0.4)
143
+ ```
144
+ 4. **Focus Ring**:
145
+
146
+ ```
147
+ ring-2 ring-[#C9A962] ring-offset-2 ring-offset-[#1C1714]
148
+ ```
149
+
150
+ ### Textures & Atmospheric Effects
151
+
152
+ **1. Aged Paper Texture Overlay**:
153
+
154
+ - SVG noise filter with fractal turbulence
155
+ - Opacity: `0.03` (extremely subtle)
156
+ - Position: Fixed overlay covering entire viewport
157
+ - Blend mode: `overlay`
158
+ - Purpose: Adds tactile paper grain without overpowering content
159
+
160
+ **2. Vignette Effect**:
161
+
162
+ - Radial gradient from center
163
+ - Formula: `radial-gradient(ellipse at center, transparent 0%, transparent 50%, rgba(28,23,20,0.4) 100%)`
164
+ - Position: Fixed overlay
165
+ - Purpose: Focuses attention toward center, mimics library lighting
166
+
167
+ **3. Sepia Image Treatment**:
168
+
169
+ - Default state: `filter: sepia(0.6) contrast(0.95) brightness(0.9)`
170
+ - Hover state: `filter: sepia(0) contrast(1) brightness(1)`
171
+ - Transition: `duration-700 ease-out`
172
+ - Purpose: Images appear as aged photographs that reveal full color on interaction
173
+
174
+ **4. Decorative Patterns**:
175
+
176
+ **Ornate Corner Flourishes** (for major frames and cards):
177
+
178
+ ```css
179
+ /* Top-left and bottom-right brass corners */
180
+ .ornate-frame::before,
181
+ .ornate-frame::after {
182
+ content: "";
183
+ position: absolute;
184
+ width: 40px;
185
+ height: 40px;
186
+ border: 2px solid #C9A962;
187
+ }
188
+
189
+ .ornate-frame::before {
190
+ top: -1px;
191
+ left: -1px;
192
+ border-right: none;
193
+ border-bottom: none;
194
+ }
195
+
196
+ .ornate-frame::after {
197
+ bottom: -1px;
198
+ right: -1px;
199
+ border-left: none;
200
+ border-top: none;
201
+ }
202
+ ```
203
+
204
+ **Ornate Divider** (section separators):
205
+
206
+ ```css
207
+ /* Gradient line with centered decorative glyph */
208
+ .ornate-divider {
209
+ height: 1px;
210
+ background: linear-gradient(90deg, transparent 0%, #4A3F35 20%, #C9A962 50%, #4A3F35 80%, transparent 100%);
211
+ }
212
+
213
+ .ornate-divider::before {
214
+ content: "✶"; /* or other decorative Unicode character */
215
+ position: absolute;
216
+ left: 50%;
217
+ top: 50%;
218
+ transform: translate(-50%, -50%);
219
+ color: #C9A962;
220
+ font-size: 12px;
221
+ background: #1C1714;
222
+ padding: 0 12px;
223
+ }
224
+ ```
225
+
226
+ ---
227
+
228
+ ## Section Patterns
229
+
230
+ ### Product Detail Section
231
+
232
+ This section serves as a formal proclamation or manifesto, positioned after stats to elaborate on the value proposition.
233
+
234
+ **Structure**:
235
+
236
+ - Container: Ornate frame with corner flourishes
237
+ - Background: `#251E19/50` on rounded border
238
+ - Header: Centered "Proclamation" label with flanking brass lines
239
+ - Headline: Large serif (4xl-6xl) centered with tight line-height
240
+ - Ornate divider: Full decorative divider with centered glyph
241
+ - Body: Multi-paragraph content with drop cap on first paragraph
242
+ - Spacing: Generous padding (p-8 to p-12), centered max-width (max-w-4xl)
243
+
244
+ **Typography**:
245
+
246
+ - Label: Cinzel, uppercase, brass color, wide tracking
247
+ - Headline: Cormorant Garamond, extra large, standard color
248
+ - Body: Text-lg, muted foreground color, relaxed leading
249
+ - First paragraph: Drop cap effect automatically applied
250
+
251
+ This creates a "certificate of excellence" feeling - formal, centered, and authoritative.
252
+
253
+ ---
254
+
255
+ ## Component Styling Principles
256
+
257
+ ### Buttons
258
+
259
+ **Visual Treatment**:
260
+
261
+ - Font: Cinzel (display font)
262
+ - Text: Uppercase with `tracking-[0.15em]`
263
+ - Size: Small text (`text-xs`) with generous padding for dignified presence
264
+ - Effect: Engraved text shadow for pressed-metal appearance
265
+
266
+ **Primary Button** (brass, main actions):
267
+
268
+ - Background: Brass gradient (`linear-gradient(180deg, #D4B872 0%, #C9A962 50%, #B8953F 100%)`)
269
+ - Text: Dark mahogany (`#1C1714`) for maximum contrast on brass
270
+ - Radius: `4px` (rounded)
271
+ - Shadow: Inset highlights and depth shadows (see shadow system)
272
+ - Hover: Increase brightness to 110%, add brass glow shadow
273
+ - Active: Deeper inset shadow for pressed effect
274
+
275
+ **Secondary Button** (outlined, alternative actions):
276
+
277
+ - Background: Transparent
278
+ - Border: `2px solid #C9A962` (brass)
279
+ - Text: Brass (`#C9A962`)
280
+ - Hover: Transform to crimson - `border: #8B2635`, `bg: #8B2635`, `text: #E8DFD4`
281
+ - Purpose: Offers elegant alternative that can dramatically transform
282
+
283
+ **Ghost Button** (minimal, tertiary actions):
284
+
285
+ - No background or border
286
+ - Text: Brass with hover underline
287
+ - Underline offset: `4px` for breathing room
288
+ - Hover: Brighten to `#D4B872` with underline
289
+
290
+ **Button Sizes**:
291
+
292
+ - Default: `h-12 px-8`
293
+ - Small: `h-10 px-6`
294
+ - Large: `h-14 px-10`
295
+
296
+ ### Cards & Containers
297
+
298
+ **Structure**:
299
+
300
+ - Background: `#251E19` (aged oak - one layer above page background)
301
+ - Border: `1px solid #4A3F35` (wood grain)
302
+ - Radius: `4px` (rounded)
303
+ - Padding: `p-8` to `p-12` depending on content density
304
+ - Position: Relative (for corner flourishes)
305
+
306
+ **Corner Flourish Pattern**:
307
+
308
+ - Apply `.corner-flourish` class
309
+ - Creates subtle brass corner brackets (24px × 24px)
310
+ - Opacity: 0.6 default, 1.0 on hover
311
+ - Purpose: Frames content like a certificate or portrait
312
+
313
+ **Hover Behavior**:
314
+
315
+ - Border: Transition to `#C9A962/50` (brass with transparency)
316
+ - Shadow: Add `0 8px 24px rgba(0,0,0,0.3)` for lift effect
317
+ - Duration: `300ms` ease
318
+
319
+ **Special Card Treatments**:
320
+
321
+ 1. **Certificate/Ledger Style** (pricing cards):
322
+
323
+ - Double border effect using box-shadow inset
324
+ - Brass corner accents using pseudo-elements as triangular brackets
325
+ - Featured tier gets brass border and ring
326
+ 2. **Arch-Top Image Cards** (blog, features):
327
+
328
+ - Image container uses arch-top border-radius
329
+ - Image has sepia filter with hover reveal
330
+ - Scale image slightly on card hover (`scale-105`)
331
+ 3. **Wax Seal Badges** (featured items):
332
+
333
+ - Circular crimson badge positioned at top-right
334
+ - Radial gradient for dimensional wax appearance
335
+ - Contains icon (typically star)
336
+ - Position: `-top-3 absolute right-6`
337
+
338
+ ### Form Inputs
339
+
340
+ **Text Inputs**:
341
+
342
+ - Background: `#251E19` (aged oak)
343
+ - Border: `1px solid #4A3F35` (wood grain)
344
+ - Text: `#E8DFD4` (parchment), Crimson Pro font
345
+ - Placeholder: Italic serif, `#9C8B7A` (faded ink)
346
+ - Height: `h-12` (48px)
347
+ - Padding: `px-4 py-2`
348
+ - Radius: `4px` (rounded)
349
+
350
+ **Focus State**:
351
+
352
+ - Border: `#C9A962` (brass)
353
+ - Ring: `ring-2 ring-[#C9A962]/30` with offset
354
+ - No outline, rely on ring for accessibility
355
+
356
+ **Labels**:
357
+
358
+ - Position: Above input
359
+ - Font: Cinzel, uppercase, small tracking
360
+ - Color: `#9C8B7A` or brass for important fields
361
+
362
+ ### Interactive States
363
+
364
+ **Hover States**:
365
+
366
+ - Links: Brass text with expanded letter-spacing (tracking increase from 0.2em to 0.25em)
367
+ - Cards: Brass border tint, shadow lift, corner flourish opacity increase
368
+ - Buttons: Brightness increase or color transformation (secondary transforms to crimson)
369
+ - Images: Sepia filter removal over 700ms with subtle scale (105%)
370
+ - Stats: Number scales to 110%, label changes to brass, background darkens
371
+ - Logo: Subtle scale to 105%
372
+ - FAQ toggles: Rotate 180deg on open with color transformation
373
+
374
+ **Focus States** (keyboard navigation):
375
+
376
+ - Ring: `ring-2 ring-[#C9A962]` with `ring-offset-2 ring-offset-[#1C1714]`
377
+ - Must be clearly visible against all backgrounds
378
+ - No outline removal - accessibility critical
379
+
380
+ **Active/Pressed States**:
381
+
382
+ - Buttons: Deeper inset shadow
383
+ - Links: Slightly darker brass tone
384
+ - Cards: No special treatment (hover is sufficient)
385
+
386
+ **Disabled States**:
387
+
388
+ - Opacity: `0.5`
389
+ - Pointer events: `none`
390
+ - No color change - opacity handles it
391
+
392
+ ---
393
+
394
+ ## Layout Principles
395
+
396
+ ### Spacing Rhythm
397
+
398
+ **Base Grid**: 8px spacing system
399
+
400
+ - Micro spacing (icon gaps, inline elements): `gap-2` to `gap-4` (8px-16px)
401
+ - Element spacing (card internals): `gap-4` to `gap-8` (16px-32px)
402
+ - Section spacing (between major blocks): `gap-8` to `gap-12` (32px-48px)
403
+ - Vertical section padding: `py-24` to `py-32` (96px-128px)
404
+
405
+ **Content Width**:
406
+
407
+ - Standard content: `max-w-6xl` (1152px)
408
+ - Narrow content (blog posts, forms): `max-w-4xl` (896px)
409
+ - Full-width sections: `max-w-7xl` (1280px) or full viewport for backgrounds
410
+
411
+ **Grid Patterns**:
412
+
413
+ - Three-column: `grid-cols-1 md:grid-cols-3` (features, pricing, benefits)
414
+ - Two-column: `grid-cols-1 lg:grid-cols-2` (testimonials, hero split)
415
+ - Four-column: `grid-cols-2 md:grid-cols-4` (stats bar)
416
+
417
+ **Asymmetry & Balance**:
418
+
419
+ - Hero sections favor 60/40 or 7/5 column splits
420
+ - Text can slightly "bleed" into adjacent columns for dynamic feel
421
+ - Alternate left/right alignment in timeline-style sections
422
+
423
+ ### Section Separators
424
+
425
+ **Border Separators**:
426
+
427
+ - Full-width border: `border-y border-[#4A3F35]`
428
+ - Background: Often pair with `bg-[#251E19]/30` or `bg-[#251E19]/50` for subtle panel effect
429
+ - Use between major sections to create rhythm
430
+
431
+ **Ornate Dividers**:
432
+
433
+ - Use within sections to separate subsections
434
+ - Width: `w-64` centered or full-width
435
+ - Include decorative glyph at center
436
+
437
+ **Visual Breathing Room**:
438
+
439
+ - Allow generous vertical space between sections (96px-128px)
440
+ - Don't pack content tightly - academia values space and contemplation
441
+
442
+ ---
443
+
444
+ ## The "Bold Factor" (Non-Genericness)
445
+
446
+ These are the **mandatory signature elements** that define Academia/Classical. A design is not complete without these:
447
+
448
+ ### 1. **Arch-Topped Images**
449
+
450
+ Every featured image must use the cathedral arch border-radius (`40% 40% 0 0 / 20% 20% 0 0`). This single element transforms modern web imagery into architectural references of classical libraries and Gothic buildings.
451
+
452
+ ### 2. **Sepia-to-Color Image Transitions**
453
+
454
+ All images start with sepia filter (0.6) and transition to full color on hover over 700ms. This creates the magical effect of "aged photographs coming to life" when users interact.
455
+
456
+ ### 3. **Roman Numeral Volume System**
457
+
458
+ Every major section must be prefixed with "Volume I", "Volume II", etc. using Roman numerals. List items and sub-elements use standalone Roman numerals (I, II, III...). Use Cinzel font, uppercase, brass color for all numbering.
459
+
460
+ ### 4. **Drop Cap Introductions**
461
+
462
+ Opening paragraphs of major sections should feature massive brass drop caps using Cinzel font at `text-7xl`, creating that illuminated manuscript feeling.
463
+
464
+ ### 5. **Corner Flourishes**
465
+
466
+ Major frames (hero section) must have large brass corner brackets (40px). Cards should have subtle corner flourishes (24px). This frames content like certificates and portraits.
467
+
468
+ ### 6. **Ornate Dividers with Glyphs**
469
+
470
+ Section breaks use gradient dividers (transparent → wood grain → brass → wood grain → transparent) with a centered decorative Unicode character (✶, ❧, ✤, ❦).
471
+
472
+ ### 7. **Wax Seal Badges**
473
+
474
+ Featured or highlighted items get circular crimson badges with radial gradients and inset shadows, containing a centered star icon. This mimics traditional wax seals on important documents.
475
+
476
+ ### 8. **Brass Interactive Elements**
477
+
478
+ ALL interactive elements (buttons, links, focus rings, hover states) must use the brass color (#C9A962) or brass gradient. This is non-negotiable - brass is the interactive color language.
479
+
480
+ ### 9. **Engraved Text Effects**
481
+
482
+ Buttons and special headings use dual text-shadow (dark below, light above) to create pressed-into-metal engraved appearance.
483
+
484
+ ### 10. **Texture Overlays**
485
+
486
+ Page must include both subtle paper texture (3% opacity noise) and vignette effect (radial gradient darkening edges). These are fixed overlays that create atmospheric depth.
487
+
488
+ ---
489
+
490
+ ## Animation & Motion
491
+
492
+ **Motion Philosophy**: Dignified, deliberate, and smooth. Nothing should feel snappy, bouncy, or playful. Motion should feel like the weight of leather-bound books, the swing of brass lamps, the turn of old pages.
493
+
494
+ **Timing Functions**:
495
+
496
+ - Default: `ease-out` (natural deceleration)
497
+ - Never use: `ease-in-out` (too mechanical), `bounce`, `spring` (too playful)
498
+
499
+ **Duration Hierarchy**:
500
+
501
+ - Fast interactions (button press, focus): `150ms`
502
+ - Standard transitions (hover, border changes): `300ms`
503
+ - Deliberate transitions (cards lifting, border color): `500ms`
504
+ - Dramatic reveals (sepia to color, scale): `700ms`
505
+
506
+ **Transform Patterns**:
507
+
508
+ - Hover scale: `scale-105` or `scale-[1.02]` (subtle, never dramatic)
509
+ - Hover lift: Increase shadow, don't translate vertically
510
+ - No rotation transforms (except for chevron icons)
511
+ - No slide-in or slide-out animations
512
+
513
+ **Signature Animation - Brass Shimmer** (optional enhancement):
514
+ Subtle brightness oscillation on brass buttons:
515
+
516
+ ```
517
+ hover: brightness-110
518
+ animation: Gentle pulse between 100% and 110% over 2s
519
+ ```
520
+
521
+ **Respect Motion Preferences**:
522
+
523
+ ```css
524
+ @media (prefers-reduced-motion: reduce) {
525
+ * {
526
+ animation-duration: 0.01ms !important;
527
+ animation-iteration-count: 1 !important;
528
+ transition-duration: 0.01ms !important;
529
+ }
530
+ }
531
+ ```
532
+
533
+ ---
534
+
535
+ ## Iconography
536
+
537
+ **Icon Library**: Use Lucide React or similar minimal icon set
538
+
539
+ **Styling Rules**:
540
+
541
+ - Stroke width: `1.5` (thin, elegant lines)
542
+ - Color: Brass (`#C9A962`) for decorative icons
543
+ - Size: `h-4 w-4` to `h-6 w-6` depending on context
544
+ - Containers: Often enclosed in circular or shield-shaped containers with brass border
545
+
546
+ **Engraved Icon Treatment** (optional):
547
+
548
+ - Place icons in circular containers: `rounded-full border border-[#C9A962]/30 bg-[#1C1714]`
549
+ - Size: `h-12 w-12` with centered icon `h-5 w-5`
550
+ - Creates "carved medallion" effect
551
+
552
+ **Icon Usage**:
553
+
554
+ - Feature icons: Educational symbols (book, scroll, graduation cap, quill)
555
+ - Button icons: Actions (chevrons, external link, check marks)
556
+ - Decorative icons: Stars for ratings, quotes for testimonials
557
+
558
+ ---
559
+
560
+ ## Anti-Patterns (What to Avoid)
561
+
562
+ ### Do NOT:
563
+
564
+ 1. **Use sans-serif fonts** anywhere except for extreme edge cases (accessibility overrides)
565
+ 2. **Use bright, saturated colors** - everything should feel aged and warm
566
+ 3. **Use sharp, geometric shapes** - favor organic curves and traditional architecture
567
+ 4. **Overuse decorative elements** - restraint is scholarly; excess is gaudy
568
+ 5. **Use modern gradients** (except brass metallic effect) - no vibrant color transitions
569
+ 6. **Ignore the arch-top pattern** - flat-top images break the aesthetic
570
+ 7. **Skip Roman numerals** - they're essential to the classical academic vibe
571
+ 8. **Use pure black (#000000)** - always use warm dark browns
572
+ 9. **Use pure white (#FFFFFF)** - always use warm cream tones
573
+ 10. **Add playful animations** - no bouncing, no elastic effects, no whimsy
574
+ 11. **Forget sepia filters** - images must feel aged by default
575
+ 12. **Use thin borders everywhere** - let backgrounds do separation work, borders for emphasis
576
+ 13. **Mix cold and warm tones** - this is a warm palette exclusively
577
+
578
+ ### Common Mistakes:
579
+
580
+ - **Too many corner flourishes** - reserve for hero and cards, not every element
581
+ - **Overusing crimson** - it's for special emphasis only, brass should dominate
582
+ - **Insufficient spacing** - academia needs breathing room for contemplation
583
+ - **Missing texture overlays** - these add essential atmospheric depth
584
+ - **Forgetting focus states** - keyboard navigation must have visible brass rings
585
+ - **Inconsistent font usage** - Cormorant for headings, Crimson for body, Cinzel for labels/display
586
+
587
+ ---
588
+
589
+ ## Responsive Strategy
590
+
591
+ ### Mobile (< 768px):
592
+
593
+ - **Stack all columns vertically** - maintain hierarchy
594
+ - **Touch targets** - Minimum 48px height for interactive elements (FAQ buttons 40px, general links 48px min-height)
595
+ - **Simplify decorative elements** - hide large corner flourishes, keep small ones
596
+ - **Maintain typography** - reduce sizes slightly (text-lg becomes text-base) but keep font choices
597
+ - **Full-width cards** - preserve arch-tops on images
598
+ - **Single-line borders** - simplify double-border effects
599
+ - **Reduce spacing** - py-16 instead of py-24 for sections, reduce internal padding (pl-6 instead of pl-10)
600
+ - **Simplify navigation** - hamburger menu with same serif styling
601
+ - **Form elements** - Stack email input and button vertically, ensure full-width buttons on mobile
602
+
603
+ ### Tablet (768px - 1024px):
604
+
605
+ - **Two-column grids** where appropriate (features, testimonials)
606
+ - **Partial decorative elements** - show corner flourishes on cards
607
+ - **Maintain most effects** - keep sepia transitions, brass interactions
608
+ - **Flexible spacing** - scale between mobile and desktop values
609
+
610
+ ### Desktop (> 1024px):
611
+
612
+ - **Full ornate experience** - all decorative elements visible
613
+ - **Three-column grids** - features, pricing, benefits
614
+ - **Maximum visual richness** - large corner flourishes, full texture overlays
615
+ - **Generous spacing** - full py-24 to py-32 section padding
616
+
617
+ ### Responsive Image Strategy:
618
+
619
+ - Arch-tops work at all sizes - maintain the effect
620
+ - Use `aspect-[3/4]` or `aspect-[4/5]` for portraits, `aspect-[4/3]` for landscapes
621
+ - Always apply sepia filter at all viewport sizes
622
+
623
+ ---
624
+
625
+ ## Accessibility Considerations
626
+
627
+ ### Contrast Requirements:
628
+
629
+ - **Primary text on background**: 8.5:1 (exceeds WCAG AAA)
630
+ - **Secondary text on background**: 4.5:1 minimum (meets WCAG AA)
631
+ - **Brass on dark backgrounds**: 7:1 (excellent)
632
+ - **Dark text on brass buttons**: 8:1 (excellent)
633
+
634
+ ### Focus Indicators:
635
+
636
+ - **Always visible**: 2px brass ring with 2px offset
637
+ - **High contrast**: Brass (#C9A962) against all backgrounds
638
+ - **Never remove**: Critical for keyboard navigation
639
+ - **Ring offset**: Uses background color for clear separation
640
+
641
+ ### Motion Preferences:
642
+
643
+ - Respect `prefers-reduced-motion` media query
644
+ - Disable or drastically reduce transition durations
645
+ - Maintain functionality without motion
646
+
647
+ ### Semantic HTML:
648
+
649
+ - Use proper heading hierarchy (h1 → h2 → h3)
650
+ - Use `<nav>` for navigation, `<main>` for content, `<footer>` for footer
651
+ - Use `<button>` for actions, `<a>` for navigation
652
+ - Use `aria-label` for icon-only buttons
653
+
654
+ ### Screen Reader Considerations:
655
+
656
+ - Decorative elements (flourishes, dividers) should have `aria-hidden="true"`
657
+ - Images must have descriptive alt text
658
+ - Form inputs must have associated labels
659
+ - Focus order must be logical
660
+
661
+ ---
662
+
663
+ ## Implementation Constraints
664
+
665
+ ### Technology Stack:
666
+
667
+ - **CSS Framework**: Tailwind CSS v4+ with arbitrary value syntax `[#C9A962]`
668
+ - **Fonts**: Google Fonts (Cormorant Garamond, Crimson Pro, Cinzel)
669
+ - **Icons**: Lucide React or similar minimal icon set
670
+ - **Custom CSS**: Required for textures, flourishes, and complex decorative elements
671
+
672
+ ### Custom CSS Requirements:
673
+
674
+ The following cannot be achieved with Tailwind alone and require custom CSS:
675
+
676
+ - Paper texture overlay (SVG noise filter)
677
+ - Vignette radial gradient overlay
678
+ - Corner flourishes (pseudo-elements)
679
+ - Ornate dividers with centered glyphs
680
+ - Wax seal badge (complex radial gradient)
681
+ - Drop cap styling (::first-letter pseudo-element)
682
+ - Arch-top border-radius (complex multi-value syntax)
683
+
684
+ ### Performance Considerations:
685
+
686
+ - Fixed overlays (texture, vignette) use single elements, not per-component
687
+ - Sepia filters are GPU-accelerated transforms
688
+ - Minimize custom fonts to three families
689
+ - Use font-display: swap for Google Fonts
690
+
691
+ ### Browser Support:
692
+
693
+ - Modern browsers (last 2 versions of Chrome, Firefox, Safari, Edge)
694
+ - CSS Grid and Flexbox required
695
+ - CSS custom properties for theme tokens
696
+ - Border-radius complex syntax for arch-tops
697
+
698
+ ---
699
+
700
+ ## Design Token Reference (Quick Copy)
701
+
702
+ ```javascript
703
+ export const academiaTokens = {
704
+ colors: {
705
+ background: "#1C1714",
706
+ backgroundAlt: "#251E19",
707
+ foreground: "#E8DFD4",
708
+ muted: "#3D332B",
709
+ mutedForeground: "#9C8B7A",
710
+ accent: "#C9A962",
711
+ accentSecondary: "#8B2635",
712
+ border: "#4A3F35",
713
+ },
714
+ fonts: {
715
+ heading: "'Cormorant Garamond', serif",
716
+ body: "'Crimson Pro', serif",
717
+ display: "'Cinzel', serif",
718
+ },
719
+ radius: {
720
+ default: "4px",
721
+ arch: "40% 40% 0 0 / 20% 20% 0 0",
722
+ },
723
+ transitions: {
724
+ fast: "150ms",
725
+ base: "300ms",
726
+ slow: "500ms",
727
+ dramatic: "700ms",
728
+ },
729
+ spacing: {
730
+ section: ["py-24", "py-32"],
731
+ card: ["p-8", "p-12"],
732
+ element: ["gap-4", "gap-8"],
733
+ },
734
+ effects: {
735
+ sepia: "sepia(0.6) contrast(0.95) brightness(0.9)",
736
+ brassGradient: "linear-gradient(180deg, #D4B872 0%, #C9A962 50%, #B8953F 100%)",
737
+ engraved: "1px 1px 1px rgba(0,0,0,0.4), -1px -1px 1px rgba(255,255,255,0.1)",
738
+ },
739
+ };
740
+ ```
741
+
742
+ ---
743
+
744
+ ## Summary
745
+
746
+ Academia/Classical is defined by its **material authenticity** (aged paper, dark wood, polished brass), **typographic excellence** (three distinct serifs used purposefully), and **signature architectural elements** (arch-tops, corner flourishes, Roman numerals).
747
+
748
+ The style succeeds when every element feels like it could exist in a physical 19th-century university library. It fails when it feels like a generic dark theme with serifs tacked on.
749
+
750
+ The brass/gold accent color is the interactive language. The sepia-to-color transition is the magical moment. The arch-topped images are the architectural signature. Together, these create a cohesive, prestigious, scholarly experience that feels timeless and trustworthy.
751
+ `</design-system>`