get-shit-pretty 0.6.2 → 0.6.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.
- package/README.md +7 -12
- package/bin/install.js +96 -71
- package/gsp/agents/gsp-accessibility-auditor.md +3 -3
- package/gsp/agents/gsp-ascii-artist.md +1 -1
- package/gsp/agents/gsp-brand-auditor.md +2 -2
- package/gsp/agents/gsp-brand-engineer.md +131 -0
- package/gsp/agents/gsp-brand-strategist.md +2 -2
- package/gsp/agents/gsp-brand-syncer.md +8 -7
- package/gsp/agents/gsp-builder.md +48 -5
- package/gsp/agents/gsp-campaign-director.md +2 -3
- package/gsp/agents/gsp-creative-director.md +80 -0
- package/gsp/agents/gsp-critic.md +99 -17
- package/gsp/agents/gsp-designer.md +51 -4
- package/gsp/agents/gsp-project-researcher.md +3 -3
- package/gsp/agents/gsp-researcher.md +4 -4
- package/gsp/agents/gsp-reviewer.md +2 -2
- package/gsp/agents/gsp-scoper.md +2 -2
- package/gsp/hooks/hooks.json +5 -5
- package/gsp/references/design-trends.md +4 -4
- package/gsp/references/phase-transitions.md +12 -12
- package/gsp/references/questioning.md +1 -1
- package/gsp/references/token-mapping.md +329 -0
- package/gsp/skills/gsp-3d/SKILL.md +112 -0
- package/gsp/skills/gsp-accessibility/SKILL.md +11 -11
- package/gsp/skills/gsp-accessibility-audit/SKILL.md +6 -7
- package/gsp/skills/gsp-add-reference/SKILL.md +1 -1
- package/gsp/skills/gsp-art/SKILL.md +1 -1
- package/gsp/skills/gsp-brand-audit/SKILL.md +3 -3
- package/gsp/skills/gsp-brand-guidelines/SKILL.md +233 -0
- package/gsp/skills/gsp-brand-identity/SKILL.md +27 -18
- package/gsp/skills/gsp-brand-refine/SKILL.md +29 -22
- package/gsp/skills/gsp-brand-research/SKILL.md +2 -2
- package/gsp/skills/gsp-brand-strategy/SKILL.md +3 -3
- package/gsp/skills/gsp-brand-sync/SKILL.md +7 -7
- package/gsp/skills/gsp-color/SKILL.md +105 -0
- package/gsp/skills/gsp-design-system/SKILL.md +4 -4
- package/gsp/skills/gsp-doctor/SKILL.md +25 -18
- package/gsp/skills/gsp-help/SKILL.md +28 -28
- package/gsp/skills/gsp-icons/SKILL.md +108 -0
- package/gsp/skills/gsp-images/SKILL.md +197 -0
- package/gsp/skills/gsp-launch/SKILL.md +2 -3
- package/gsp/skills/gsp-logo/SKILL.md +173 -0
- package/gsp/skills/gsp-palette/SKILL.md +13 -13
- package/gsp/skills/gsp-pretty/SKILL.md +2 -2
- package/gsp/skills/gsp-progress/SKILL.md +20 -20
- package/gsp/skills/gsp-project-brief/SKILL.md +7 -8
- package/gsp/skills/gsp-project-build/SKILL.md +21 -21
- package/gsp/skills/gsp-project-critique/SKILL.md +13 -14
- package/gsp/skills/gsp-project-design/SKILL.md +17 -17
- package/gsp/skills/gsp-project-research/SKILL.md +5 -6
- package/gsp/skills/gsp-project-review/SKILL.md +7 -9
- package/gsp/skills/gsp-scaffold/SKILL.md +3 -3
- package/gsp/skills/gsp-start/SKILL.md +14 -14
- package/gsp/skills/gsp-style/SKILL.md +41 -43
- package/gsp/skills/gsp-style/styles/INDEX.yml +1 -1
- package/gsp/skills/gsp-style/styles/academia.yml +80 -0
- package/gsp/skills/gsp-style/styles/art-deco.yml +81 -0
- package/gsp/skills/gsp-style/styles/bauhaus.yml +78 -0
- package/gsp/skills/gsp-style/styles/bold-typography.yml +73 -0
- package/gsp/skills/gsp-style/styles/botanical.yml +78 -0
- package/gsp/skills/gsp-style/styles/claymorphism.yml +84 -0
- package/gsp/skills/gsp-style/styles/cyberpunk.yml +87 -0
- package/gsp/skills/gsp-style/styles/enterprise.yml +81 -0
- package/gsp/skills/gsp-style/styles/flat-design.yml +67 -0
- package/gsp/skills/gsp-style/styles/fluent.yml +82 -0
- package/gsp/skills/gsp-style/styles/glassmorphism.yml +83 -0
- package/gsp/skills/gsp-style/styles/humanist-literary.yml +74 -0
- package/gsp/skills/gsp-style/styles/industrial.yml +82 -0
- package/gsp/skills/gsp-style/styles/kinetic.yml +94 -0
- package/gsp/skills/gsp-style/styles/liquid-glass.yml +91 -0
- package/gsp/skills/gsp-style/styles/luxury.yml +83 -0
- package/gsp/skills/gsp-style/styles/material.yml +83 -0
- package/gsp/skills/gsp-style/styles/maximalism.yml +92 -0
- package/gsp/skills/gsp-style/styles/minimal-dark.yml +75 -0
- package/gsp/skills/gsp-style/styles/modern-dark.yml +88 -0
- package/gsp/skills/gsp-style/styles/monochrome.yml +68 -0
- package/gsp/skills/gsp-style/styles/neubrutalism.yml +83 -0
- package/gsp/skills/gsp-style/styles/neumorphism.yml +77 -0
- package/gsp/skills/gsp-style/styles/newsprint.yml +81 -0
- package/gsp/skills/gsp-style/styles/organic.yml +77 -0
- package/gsp/skills/gsp-style/styles/playful-geometric.yml +90 -0
- package/gsp/skills/gsp-style/styles/professional.yml +67 -0
- package/gsp/skills/gsp-style/styles/retro.yml +85 -0
- package/gsp/skills/gsp-style/styles/saas.yml +83 -0
- package/gsp/skills/gsp-style/styles/sketch.yml +86 -0
- package/gsp/skills/gsp-style/styles/swiss-minimalist.yml +69 -0
- package/gsp/skills/gsp-style/styles/terminal.yml +83 -0
- package/gsp/skills/gsp-style/styles/vaporwave.yml +84 -0
- package/gsp/skills/gsp-style/styles/web3.yml +82 -0
- package/gsp/skills/gsp-textures/SKILL.md +132 -0
- package/gsp/skills/gsp-typescale/SKILL.md +11 -11
- package/gsp/skills/gsp-typography/SKILL.md +108 -0
- package/gsp/skills/gsp-update/SKILL.md +1 -2
- package/gsp/skills/gsp-video/SKILL.md +101 -0
- package/gsp/templates/branding/config.json +1 -1
- package/gsp/templates/branding/roadmap.md +9 -9
- package/gsp/templates/exports-index.md +8 -8
- package/gsp/templates/phases/build.md +1 -1
- package/gsp/templates/phases/design.md +1 -1
- package/gsp/templates/phases/patterns.md +60 -71
- package/gsp/templates/phases/style.md +158 -0
- package/gsp/templates/projects/config.json +1 -1
- package/gsp/templates/projects/roadmap.md +7 -7
- package/gsp/templates/projects/state.md +1 -1
- package/package.json +1 -2
- package/.claude-plugin/plugin.json +0 -24
- package/gsp/agents/gsp-identity-designer.md +0 -74
- package/gsp/agents/gsp-pattern-architect.md +0 -189
- package/gsp/prompts/01-design-system-architect.md +0 -19
- package/gsp/prompts/02-brand-identity-creator.md +0 -16
- package/gsp/prompts/03-ui-ux-pattern-master.md +0 -21
- package/gsp/prompts/04-marketing-asset-factory.md +0 -14
- package/gsp/prompts/05-implementation-spec-expert.md +0 -15
- package/gsp/prompts/06-design-critique-partner.md +0 -14
- package/gsp/prompts/07-design-trend-synthesizer.md +0 -3
- package/gsp/prompts/08-accessibility-auditor.md +0 -23
- package/gsp/prompts/09-design-to-code-translator.md +0 -49
- package/gsp/prompts/10-project-scoper.md +0 -17
- package/gsp/prompts/11-deliverable-reviewer.md +0 -18
- package/gsp/prompts/12-project-researcher.md +0 -18
- package/gsp/skills/gsp-brand-patterns/SKILL.md +0 -240
|
@@ -54,5 +54,72 @@ dark_mode:
|
|
|
54
54
|
surface: "#303030"
|
|
55
55
|
on-background: "#FAFAFA"
|
|
56
56
|
|
|
57
|
+
intensity:
|
|
58
|
+
variance: 3 # rigid grid, predictable layout, geometric purity
|
|
59
|
+
motion: 3 # snappy scale transforms and color shifts, no spectacle
|
|
60
|
+
density: 5 # balanced — functional, not airy, not packed
|
|
61
|
+
|
|
62
|
+
patterns:
|
|
63
|
+
card:
|
|
64
|
+
border: "none"
|
|
65
|
+
shadow: "none — zero shadows, ever"
|
|
66
|
+
radius: "{shape.border-radius-md}"
|
|
67
|
+
background: "{color.surface} or soft color tint (blue-50, green-50)"
|
|
68
|
+
padding: "p-6 to p-8"
|
|
69
|
+
button-primary:
|
|
70
|
+
background: "{color.primary}"
|
|
71
|
+
border: "none"
|
|
72
|
+
text: "weight 500, sentence case"
|
|
73
|
+
radius: "{shape.border-radius-sm}"
|
|
74
|
+
button-secondary:
|
|
75
|
+
background: "{color.surface}"
|
|
76
|
+
border: "none"
|
|
77
|
+
text: "weight 500, {color.on-background}"
|
|
78
|
+
radius: "{shape.border-radius-sm}"
|
|
79
|
+
input:
|
|
80
|
+
border: "none resting, border-2 solid {color.primary} on focus"
|
|
81
|
+
radius: "{shape.border-radius-sm}"
|
|
82
|
+
background: "{color.surface}"
|
|
83
|
+
focus: "border-2 {color.primary} — hard border, no glow ring"
|
|
84
|
+
badge:
|
|
85
|
+
shape: "rounded-full, solid accent background"
|
|
86
|
+
text: "text-xs, font-medium, sentence case"
|
|
87
|
+
nav:
|
|
88
|
+
style: "clean horizontal, solid background blocks"
|
|
89
|
+
links: "font-medium, hover darkens background"
|
|
90
|
+
layout:
|
|
91
|
+
archetype: "color-block-grid"
|
|
92
|
+
max-width: "max-w-7xl"
|
|
93
|
+
section-spacing: "py-16 to py-24"
|
|
94
|
+
grid-gap: "gap-6 to gap-8"
|
|
95
|
+
surfaces: "solid color blocks define sections — no texture, no grain"
|
|
96
|
+
decoration: "large geometric shapes (circles, squares) at low opacity, absolute positioned"
|
|
97
|
+
|
|
98
|
+
constraints:
|
|
99
|
+
never:
|
|
100
|
+
- "box-shadow of any kind — zero shadows on any element"
|
|
101
|
+
- "gradients on buttons or cards — solid fills only"
|
|
102
|
+
- "backdrop-blur or glass effects — conflicts with flat 2D aesthetic"
|
|
103
|
+
- "textures, grain, or noise overlays — surfaces are clean and solid"
|
|
104
|
+
- "3D transforms or perspective — everything exists on one plane"
|
|
105
|
+
- "thin subtle borders for structure — use color blocks instead"
|
|
106
|
+
always:
|
|
107
|
+
- "solid flat color fills for backgrounds and interactive elements"
|
|
108
|
+
- "consistent border-radius across same-level components"
|
|
109
|
+
- "color contrast as the primary hierarchy tool"
|
|
110
|
+
- "geometric shapes for decorative elements (circles, squares, rectangles)"
|
|
111
|
+
- "sharp color transitions between sections — never blurred or gradual"
|
|
112
|
+
|
|
113
|
+
effects:
|
|
114
|
+
interaction-vocabulary: [scale-pop, color-shift, color-fill, icon-scale]
|
|
115
|
+
hover:
|
|
116
|
+
card: "scale-pop — scale-[1.02], background color intensifies"
|
|
117
|
+
button: "color-shift — background darkens one shade"
|
|
118
|
+
active:
|
|
119
|
+
button: "scale-pop — scale-[0.97], instant press feedback"
|
|
120
|
+
focus:
|
|
121
|
+
general: "ring-2 ring-{color.primary} ring-offset-2 — solid outline, no glow"
|
|
122
|
+
transition: "duration-150 to duration-200, ease"
|
|
123
|
+
|
|
57
124
|
compatibility: [bauhaus, swiss-minimalist]
|
|
58
125
|
clashes: [glassmorphism, neumorphism, liquid-glass]
|
|
@@ -59,5 +59,87 @@ dark_mode:
|
|
|
59
59
|
on-background: "#FFFFFF"
|
|
60
60
|
border-color: "#404040"
|
|
61
61
|
|
|
62
|
+
intensity:
|
|
63
|
+
variance: 2 # strict grid alignment, consistent density, OS-level predictability
|
|
64
|
+
motion: 3 # fast hover states (100ms), medium flyouts (250-350ms), no ambient animation
|
|
65
|
+
density: 7 # compact by design — 14px base, tight spacing, dashboard-oriented
|
|
66
|
+
|
|
67
|
+
patterns:
|
|
68
|
+
card:
|
|
69
|
+
border: "{shape.border-width} solid {shape.border-color}"
|
|
70
|
+
shadow: "{elevation.shadow-sm} resting, {elevation.shadow-md} on hover"
|
|
71
|
+
radius: "{shape.border-radius-md}"
|
|
72
|
+
background: "{color.surface}"
|
|
73
|
+
padding: "p-4 to p-6"
|
|
74
|
+
button-primary:
|
|
75
|
+
background: "{color.primary}"
|
|
76
|
+
border: "none"
|
|
77
|
+
shadow: "none"
|
|
78
|
+
text: "weight 500, sentence case, white"
|
|
79
|
+
radius: "{shape.border-radius-sm}"
|
|
80
|
+
hover: "bg darkens to {color.secondary}"
|
|
81
|
+
pressed: "bg darkens further to {color.accent}, scale-[0.98]"
|
|
82
|
+
button-secondary:
|
|
83
|
+
background: "{color.surface}"
|
|
84
|
+
border: "{shape.border-width} solid {shape.border-color}"
|
|
85
|
+
text: "weight 500, sentence case, {color.on-background}"
|
|
86
|
+
radius: "{shape.border-radius-sm}"
|
|
87
|
+
hover: "background shifts to neutral-light grey tint"
|
|
88
|
+
focus: "double ring — 2px whitespace + 2px brand ring"
|
|
89
|
+
input:
|
|
90
|
+
border: "{shape.border-width} solid {shape.border-color}"
|
|
91
|
+
radius: "{shape.border-radius-sm}"
|
|
92
|
+
background: "{color.background} or light grey fill"
|
|
93
|
+
focus: "bottom border becomes 2px thick {color.primary} bar"
|
|
94
|
+
label: "text-sm font-medium above input"
|
|
95
|
+
badge:
|
|
96
|
+
shape: "{shape.border-radius-sm}"
|
|
97
|
+
text: "text-xs font-medium"
|
|
98
|
+
background: "neutral subtle tint"
|
|
99
|
+
nav:
|
|
100
|
+
style: "left-rail vertical or horizontal tabs"
|
|
101
|
+
selection: "3px vertical brand-colored pill on active item"
|
|
102
|
+
hover: "bg-neutral-subtle behind item content"
|
|
103
|
+
item-radius: "rounded-md (6px)"
|
|
104
|
+
layout:
|
|
105
|
+
archetype: "density-driven-grid"
|
|
106
|
+
max-width: "container responsive"
|
|
107
|
+
section-spacing: "py-12 to py-16"
|
|
108
|
+
grid-gap: "gap-4 to gap-6"
|
|
109
|
+
surfaces: "solid opaque — acrylic reserved for temporary surfaces only"
|
|
110
|
+
depth: "elevation via shadow levels (2/4/8/16), not transparency"
|
|
111
|
+
|
|
112
|
+
constraints:
|
|
113
|
+
never:
|
|
114
|
+
- "rounded-full on cards or containers — reserved for avatars only"
|
|
115
|
+
- "colored shadows — all shadows neutral black at low opacity"
|
|
116
|
+
- "gradient backgrounds on buttons — solid brand color only"
|
|
117
|
+
- "decorative blur shapes or ambient orbs — Fluent uses materials, not decoration"
|
|
118
|
+
- "heavy drop shadows on cards — subtle diffused elevation only"
|
|
119
|
+
- "bouncy or spring animations — deceleration curves only"
|
|
120
|
+
- "large border-radius (>12px) on standard cards — 8px is surface radius"
|
|
121
|
+
- "uppercase text on buttons or body — sentence case throughout"
|
|
122
|
+
always:
|
|
123
|
+
- "double focus ring (whitespace + brand) on interactive elements"
|
|
124
|
+
- "Rest/Hover/Pressed/Disabled state model on every control"
|
|
125
|
+
- "acrylic (backdrop-blur-[20px]) only on temporary surfaces (menus, flyouts)"
|
|
126
|
+
- "semantic token naming (Brand, Neutral, Surface) not visual descriptions"
|
|
127
|
+
- "thin 1px borders on all card surfaces"
|
|
128
|
+
- "4px control radius on buttons/inputs, 8px on cards/panels"
|
|
129
|
+
|
|
130
|
+
effects:
|
|
131
|
+
interaction-vocabulary: [state-darken, underline-focus, subtle-lift, slide-in]
|
|
132
|
+
hover:
|
|
133
|
+
card: "subtle-lift — shadow steps from shadow-2 to shadow-4"
|
|
134
|
+
button: "state-darken — background darkens one step"
|
|
135
|
+
nav-item: "bg-neutral-subtle appears behind content"
|
|
136
|
+
link: "underline-focus — underline appears"
|
|
137
|
+
active:
|
|
138
|
+
button: "state-darken — background darkens further, optional scale-[0.98]"
|
|
139
|
+
focus:
|
|
140
|
+
general: "double ring — 2px white gap + 2px ring-{color.primary}"
|
|
141
|
+
input: "underline-focus — bottom border thickens to 2px {color.primary}"
|
|
142
|
+
transition: "duration-100 hover, duration-250 to duration-350 flyouts, decelerate curve"
|
|
143
|
+
|
|
62
144
|
compatibility: [professional, enterprise]
|
|
63
145
|
clashes: [neubrutalism, vaporwave, retro]
|
|
@@ -60,5 +60,88 @@ dark_mode:
|
|
|
60
60
|
surface: "rgba(255, 255, 255, 0.08)"
|
|
61
61
|
on-background: "#E2E8F0"
|
|
62
62
|
|
|
63
|
+
intensity:
|
|
64
|
+
variance: 5
|
|
65
|
+
motion: 6
|
|
66
|
+
density: 4
|
|
67
|
+
|
|
68
|
+
patterns:
|
|
69
|
+
card:
|
|
70
|
+
background: "rgba(255,255,255,0.12)"
|
|
71
|
+
blur: "backdrop-blur-[12px] backdrop-saturate-[180%]"
|
|
72
|
+
border: "1px solid rgba(255,255,255,0.20)"
|
|
73
|
+
shadow: "{elevation.shadow-md} with inset highlight"
|
|
74
|
+
radius: "{shape.border-radius-md}"
|
|
75
|
+
highlight: "inset 0 1px 0 rgba(255,255,255,0.40) — top-edge refraction"
|
|
76
|
+
button-primary:
|
|
77
|
+
background: "{color.primary}"
|
|
78
|
+
border: "none"
|
|
79
|
+
shadow: "glow — 0 0 20px {color.primary}/40, 0 0 60px {color.primary}/15"
|
|
80
|
+
text: "weight 600, sentence case"
|
|
81
|
+
radius: "{shape.border-radius-sm}"
|
|
82
|
+
button-secondary:
|
|
83
|
+
background: "rgba(255,255,255,0.08)"
|
|
84
|
+
blur: "backdrop-blur-[8px]"
|
|
85
|
+
border: "1px solid rgba(255,255,255,0.20)"
|
|
86
|
+
text: "weight 500"
|
|
87
|
+
radius: "{shape.border-radius-sm}"
|
|
88
|
+
input:
|
|
89
|
+
background: "rgba(255,255,255,0.08)"
|
|
90
|
+
blur: "backdrop-blur-[8px]"
|
|
91
|
+
border: "1px solid rgba(255,255,255,0.15)"
|
|
92
|
+
radius: "{shape.border-radius-sm}"
|
|
93
|
+
focus: "border-white/40, glow ring"
|
|
94
|
+
badge:
|
|
95
|
+
background: "glass or primary-tinted glass"
|
|
96
|
+
shape: "rounded-full"
|
|
97
|
+
text: "text-xs font-medium"
|
|
98
|
+
nav:
|
|
99
|
+
background: "glass panel at 0.15 alpha"
|
|
100
|
+
blur: "backdrop-blur-[16px]"
|
|
101
|
+
border: "1px solid rgba(255,255,255,0.15)"
|
|
102
|
+
position: "sticky frosted"
|
|
103
|
+
layout:
|
|
104
|
+
archetype: "layered-glass"
|
|
105
|
+
max-width: "max-w-7xl"
|
|
106
|
+
section-spacing: "py-20 to py-32"
|
|
107
|
+
grid-gap: "gap-6 to gap-8"
|
|
108
|
+
surfaces: "dark canvas required — glass does not read on light"
|
|
109
|
+
decoration: "gradient orbs, ambient blobs behind glass panels"
|
|
110
|
+
depth: "surface alpha scale: 0.04→0.08→0.12→0.15→0.18→0.22 by z-level"
|
|
111
|
+
|
|
112
|
+
constraints:
|
|
113
|
+
never:
|
|
114
|
+
- "hard-offset shadows — all shadows diffused and ambient"
|
|
115
|
+
- "opaque card backgrounds — surfaces must be translucent"
|
|
116
|
+
- "light page background — glass requires dark canvas to read"
|
|
117
|
+
- "thick borders (>1px) — hairline only for glass edge definition"
|
|
118
|
+
- "flat shadowless elements — everything needs depth cues"
|
|
119
|
+
- "surface alpha above 0.22 — becomes opaque, kills glass"
|
|
120
|
+
- "surface alpha below 0.04 — disappears into background"
|
|
121
|
+
- "backdrop-blur on scrolling containers — fixed/sticky elements only"
|
|
122
|
+
always:
|
|
123
|
+
- "backdrop-filter: blur + saturate on every glass surface"
|
|
124
|
+
- "hairline border (1px rgba(255,255,255,0.15-0.30)) on glass panels"
|
|
125
|
+
- "inset highlight on primary glass surfaces (top-edge refraction)"
|
|
126
|
+
- "-webkit-backdrop-filter prefix for Safari"
|
|
127
|
+
- "dark background canvas — deep slate or darker"
|
|
128
|
+
- "surface alpha hierarchy matching z-depth"
|
|
129
|
+
|
|
130
|
+
effects:
|
|
131
|
+
interaction-vocabulary: [glow-intensify, alpha-step, soft-scale, spotlight-border]
|
|
132
|
+
hover:
|
|
133
|
+
card: "alpha-step — border opacity 0.20→0.30, surface brightens"
|
|
134
|
+
button-primary: "glow-intensify — glow radius and opacity increase"
|
|
135
|
+
glass-surface: "alpha-step — surface opacity increases one level"
|
|
136
|
+
active:
|
|
137
|
+
button: "soft-scale — scale-[0.97], glow dims"
|
|
138
|
+
focus:
|
|
139
|
+
general: "glow ring — ring-2 ring-{color.primary}/50 with ambient glow"
|
|
140
|
+
transition: "duration-200 to duration-300, cubic-bezier(0.4, 0, 0.2, 1)"
|
|
141
|
+
ambient:
|
|
142
|
+
- "orb-drift — gradient blobs drift slowly behind glass panels"
|
|
143
|
+
- "color-shift — background blob hues rotate subtly"
|
|
144
|
+
- "glow-pulse — primary elements pulse glow at rest"
|
|
145
|
+
|
|
63
146
|
compatibility: [aurora-gradients, liquid-glass]
|
|
64
147
|
clashes: [neubrutalism, claymorphism]
|
|
@@ -54,5 +54,79 @@ dark_mode:
|
|
|
54
54
|
surface: "#2A2926"
|
|
55
55
|
on-background: "#E8E6E0"
|
|
56
56
|
|
|
57
|
+
intensity:
|
|
58
|
+
variance: 2 # predictable, centered, calm — the interface recedes for content
|
|
59
|
+
motion: 2 # minimal and snappy — fast fades, no spectacle, text is the show
|
|
60
|
+
density: 2 # airy — generous padding, relaxed spacing, paper-like breathing room
|
|
61
|
+
|
|
62
|
+
patterns:
|
|
63
|
+
card:
|
|
64
|
+
border: "{shape.border-width} solid {shape.border-color}"
|
|
65
|
+
shadow: "{elevation.shadow-sm} — barely there, flat tile feel"
|
|
66
|
+
radius: "{shape.border-radius-md}"
|
|
67
|
+
background: "{color.surface}"
|
|
68
|
+
button-primary:
|
|
69
|
+
background: "{color.primary}"
|
|
70
|
+
border: "none"
|
|
71
|
+
shadow: "none"
|
|
72
|
+
text: "weight 500, sentence case, {typography.font-family-secondary}"
|
|
73
|
+
radius: "{shape.border-radius-lg} — pill shape"
|
|
74
|
+
button-secondary:
|
|
75
|
+
background: "transparent"
|
|
76
|
+
border: "{shape.border-width} solid {shape.border-color}"
|
|
77
|
+
text: "weight 500, sentence case, {color.on-background}"
|
|
78
|
+
radius: "{shape.border-radius-lg} — pill shape"
|
|
79
|
+
input:
|
|
80
|
+
border: "{shape.border-width} solid {shape.border-color}"
|
|
81
|
+
radius: "{shape.border-radius-md}"
|
|
82
|
+
background: "{color.background}"
|
|
83
|
+
focus: "border deepens slightly — no glowing rings, no blue outlines"
|
|
84
|
+
height: "generous — text-lg input, p-4 to p-6 padding"
|
|
85
|
+
badge:
|
|
86
|
+
shape: "rounded-full pill"
|
|
87
|
+
text: "text-sm, sans-serif, weight 500, muted tones"
|
|
88
|
+
nav:
|
|
89
|
+
style: "clean horizontal, minimal — recedes behind content"
|
|
90
|
+
links: "sans-serif, weight 500, hover deepens color subtly"
|
|
91
|
+
layout:
|
|
92
|
+
archetype: "centered-editorial"
|
|
93
|
+
max-width: "max-w-3xl for text, max-w-5xl for wider layouts"
|
|
94
|
+
section-spacing: "py-16 to py-24 — calm, not cavernous"
|
|
95
|
+
grid-gap: "gap-4 to gap-8"
|
|
96
|
+
surfaces: "clean warm off-white — no texture, no grain, no patterns"
|
|
97
|
+
typography-focus: "serif display at text-4xl to text-5xl, generous line-height"
|
|
98
|
+
|
|
99
|
+
constraints:
|
|
100
|
+
never:
|
|
101
|
+
- "pure black (#000000) or pure white (#FFFFFF) — warm charcoal and eggshell only"
|
|
102
|
+
- "glowing focus rings or neon outlines — focus is subtle border deepening"
|
|
103
|
+
- "jarring gradients or drop shadows — everything flat and calm"
|
|
104
|
+
- "uppercase text on body or buttons — sentence case throughout"
|
|
105
|
+
- "saturated SaaS blues or teals — warm muted palette only"
|
|
106
|
+
- "heavy decorative elements — the interface must recede for content"
|
|
107
|
+
- "bouncy spring animations — snappy or instant, never playful"
|
|
108
|
+
- "dense layouts or tight spacing — generous padding is essential"
|
|
109
|
+
always:
|
|
110
|
+
- "serif font for display headings (Merriweather/Tiempos), sans for UI"
|
|
111
|
+
- "warm off-white background (#FAF9F6) — never cold or stark"
|
|
112
|
+
- "terracotta (#DA7756) reserved exclusively for primary submit actions"
|
|
113
|
+
- "generous input padding — text areas feel spacious and inviting"
|
|
114
|
+
- "thin delicate borders (1px) — never heavy or prominent"
|
|
115
|
+
- "content-first hierarchy — UI chrome recedes, text breathes"
|
|
116
|
+
|
|
117
|
+
effects:
|
|
118
|
+
interaction-vocabulary: [subtle-darken, gentle-fade, quiet-deepen]
|
|
119
|
+
hover:
|
|
120
|
+
card: "subtle-darken — background shifts to muted, barely perceptible"
|
|
121
|
+
button: "subtle-darken — opacity-90 or slight background darken"
|
|
122
|
+
link: "quiet-deepen — color deepens, optional underline appears"
|
|
123
|
+
chip: "subtle-darken — bg-muted/50, fast and quiet"
|
|
124
|
+
active:
|
|
125
|
+
button: "subtle-darken — slight darken, no scale or transform"
|
|
126
|
+
focus:
|
|
127
|
+
input: "border deepens — warm border color intensifies, no ring"
|
|
128
|
+
general: "ring-1 ring-{color.border} — barely visible, warm"
|
|
129
|
+
transition: "duration-100 to duration-150, ease"
|
|
130
|
+
|
|
57
131
|
compatibility: [professional, botanical, academia]
|
|
58
132
|
clashes: [cyberpunk, maximalism, retro]
|
|
@@ -59,5 +59,87 @@ dark_mode:
|
|
|
59
59
|
surface: "#3D4446"
|
|
60
60
|
on-background: "#DFE6E9"
|
|
61
61
|
|
|
62
|
+
intensity:
|
|
63
|
+
variance: 5 # asymmetric hero splits, slight testimonial rotation, but grid-mounted precision
|
|
64
|
+
motion: 5 # mechanical spring bounce, button press physics, LED pulse, grayscale-to-color
|
|
65
|
+
density: 6 # utilitarian density — functional, organized, not wasteful with space
|
|
66
|
+
|
|
67
|
+
patterns:
|
|
68
|
+
card:
|
|
69
|
+
border: "none — depth from neumorphic dual shadows"
|
|
70
|
+
shadow: "{elevation.shadow-md}"
|
|
71
|
+
radius: "{shape.border-radius-lg}"
|
|
72
|
+
background: "{color.background}"
|
|
73
|
+
detail: "corner screw radial gradients (12px from edges), vent slots (3x pill divs) top-right"
|
|
74
|
+
button-primary:
|
|
75
|
+
background: "{color.primary}"
|
|
76
|
+
border: "1px solid rgba(255,255,255,0.2) rim highlight"
|
|
77
|
+
shadow: "4px 4px 8px rgba(166,50,60,0.4), -4px -4px 8px rgba(255,100,110,0.4)"
|
|
78
|
+
text: "uppercase, tracking-wide, weight 700, white"
|
|
79
|
+
radius: "{shape.border-radius-md}"
|
|
80
|
+
button-secondary:
|
|
81
|
+
background: "{color.background}"
|
|
82
|
+
border: "none"
|
|
83
|
+
shadow: "{elevation.shadow-sm}"
|
|
84
|
+
text: "{color.on-background}, uppercase, tracking-wide"
|
|
85
|
+
radius: "{shape.border-radius-md}"
|
|
86
|
+
input:
|
|
87
|
+
border: "none — depth from recessed inset shadow only"
|
|
88
|
+
radius: "{shape.border-radius-md}"
|
|
89
|
+
background: "{color.background}"
|
|
90
|
+
focus: "accent glow ring appears — 0 0 0 2px {color.primary}"
|
|
91
|
+
shadow: "inset 4px 4px 8px #babecc, inset -4px -4px 8px #ffffff"
|
|
92
|
+
font: "monospace for technical data entry feel"
|
|
93
|
+
badge:
|
|
94
|
+
shape: "rounded-full, small (8-12px)"
|
|
95
|
+
text: "monospace uppercase tracking-wide text-xs"
|
|
96
|
+
decoration: "LED glow shadow — 0 0 10px rgba(color, 0.6), animate-pulse"
|
|
97
|
+
nav:
|
|
98
|
+
style: "sticky neumorphic bar with ghost button links"
|
|
99
|
+
background: "{color.background}"
|
|
100
|
+
shadow: "{elevation.shadow-sm}"
|
|
101
|
+
detail: "LED status indicator (green pulse) with monospace label"
|
|
102
|
+
layout:
|
|
103
|
+
archetype: "bolted-chassis"
|
|
104
|
+
max-width: "max-w-[72rem]"
|
|
105
|
+
section-spacing: "py-24"
|
|
106
|
+
grid-gap: "gap-6 to gap-8"
|
|
107
|
+
surfaces: "noise texture overlay (SVG fractal, 20-30% opacity, mix-blend-overlay) — never flat"
|
|
108
|
+
decoration: "carbon fiber texture on dark panels, CRT scanlines on screens, connector pipes between steps"
|
|
109
|
+
detail: "corner screws, vent slots, LED indicators, push-pins on testimonials"
|
|
110
|
+
|
|
111
|
+
constraints:
|
|
112
|
+
never:
|
|
113
|
+
- "flat surfaces without noise texture — matte plastic micro-texture is mandatory"
|
|
114
|
+
- "pure black (#000) in shadows — use cool blue-grey (#babecc) for neumorphic pairs"
|
|
115
|
+
- "sharp 90-degree corners on large elements — soft injection-molded radii (4px-24px)"
|
|
116
|
+
- "colored gradients on backgrounds — monochromatic chassis only (except dark panels)"
|
|
117
|
+
- "missing manufacturing details — screws, vents, and LEDs are DNA, not decoration"
|
|
118
|
+
- "smooth organic easing — mechanical spring bounce (cubic-bezier 0.175, 0.885, 0.32, 1.275)"
|
|
119
|
+
always:
|
|
120
|
+
- "neumorphic dual shadows (dark bottom-right + light top-left) on every panel"
|
|
121
|
+
- "active states reverse shadow to inset + translate-y-[2px] — button press physics"
|
|
122
|
+
- "noise texture overlay on page background"
|
|
123
|
+
- "carbon fiber texture on dark technical panels"
|
|
124
|
+
- "LED status indicators with pulse animation and glow shadow"
|
|
125
|
+
- "corner screw details on cards (radial gradient at 12px from edges)"
|
|
126
|
+
- "monospace font on all numeric displays, labels, badges, and metadata"
|
|
127
|
+
|
|
128
|
+
effects:
|
|
129
|
+
interaction-vocabulary: [mechanical-press, spring-lift, led-glow, grayscale-reveal]
|
|
130
|
+
hover:
|
|
131
|
+
card: "spring-lift — -translate-y-1, shadow upgrades to floating, spring easing"
|
|
132
|
+
button: "brightness-110, shadow maintained"
|
|
133
|
+
icon: "spring-lift — scale-110 + rotate-12 via group-hover"
|
|
134
|
+
image: "grayscale-reveal — grayscale-0 transition over 500ms"
|
|
135
|
+
active:
|
|
136
|
+
button: "mechanical-press — translate-y-[2px], shadow inverts to inset, 150ms fast"
|
|
137
|
+
focus:
|
|
138
|
+
general: "ring-2 ring-{color.primary} ring-offset-2"
|
|
139
|
+
transition: "duration-150 to duration-300, cubic-bezier(0.175, 0.885, 0.32, 1.275)"
|
|
140
|
+
ambient:
|
|
141
|
+
- "led-glow — animate-pulse on status indicators with colored glow shadow"
|
|
142
|
+
- "radar-sweep — animate-spin with conic-gradient on benefits section (4s)"
|
|
143
|
+
|
|
62
144
|
compatibility: [terminal, monochrome]
|
|
63
145
|
clashes: [botanical, glassmorphism, liquid-glass]
|
|
@@ -47,6 +47,100 @@ tokens:
|
|
|
47
47
|
duration-normal: "300ms"
|
|
48
48
|
easing: "cubic-bezier(0.4, 0, 0.2, 1)"
|
|
49
49
|
|
|
50
|
+
intensity:
|
|
51
|
+
variance: 7 # asymmetric type layouts, sticky scroll stacking, uneven column widths
|
|
52
|
+
motion: 10 # marquees never stop, scroll-triggered parallax, scale transforms — motion IS the style
|
|
53
|
+
density: 4 # brutalist sparse — extreme type scale creates visual weight without density
|
|
54
|
+
|
|
55
|
+
patterns:
|
|
56
|
+
card:
|
|
57
|
+
border: "{shape.border-width} solid {shape.border-color}"
|
|
58
|
+
shadow: "none — completely flat, depth from color layering only"
|
|
59
|
+
radius: "0px — sharp corners, no exceptions"
|
|
60
|
+
background: "{color.background}"
|
|
61
|
+
hover: "color-flood — background fills {color.secondary}, all text inverts to black"
|
|
62
|
+
internal: "large title top (text-3xl), muted description, decorative number in bg"
|
|
63
|
+
button-primary:
|
|
64
|
+
background: "{color.secondary}"
|
|
65
|
+
border: "none"
|
|
66
|
+
shadow: "none"
|
|
67
|
+
text: "uppercase tracking-tighter font-bold {color.on-primary}"
|
|
68
|
+
radius: "0px"
|
|
69
|
+
size: "h-14 px-8 default, h-20 px-12 large"
|
|
70
|
+
button-secondary:
|
|
71
|
+
background: "transparent"
|
|
72
|
+
border: "{shape.border-width} solid {shape.border-color}"
|
|
73
|
+
shadow: "none"
|
|
74
|
+
text: "uppercase tracking-tighter font-bold {color.on-background}"
|
|
75
|
+
radius: "0px"
|
|
76
|
+
fill: "hover fills {color.on-background}, text inverts to {color.background} — hard color flip"
|
|
77
|
+
input:
|
|
78
|
+
border: "border-b-2 only — bottom border, no box"
|
|
79
|
+
radius: "0px"
|
|
80
|
+
background: "transparent"
|
|
81
|
+
text: "text-4xl bold uppercase tracking-tighter — oversized dramatic inputs"
|
|
82
|
+
focus: "border-bottom becomes {color.secondary}, no ring"
|
|
83
|
+
height: "h-24 — extra tall for drama"
|
|
84
|
+
badge:
|
|
85
|
+
shape: "sharp rectangle, border-2, no radius"
|
|
86
|
+
text: "text-xs uppercase tracking-widest font-bold"
|
|
87
|
+
decoration: "none — minimal, structural"
|
|
88
|
+
nav:
|
|
89
|
+
logo: "uppercase tracking-tighter font-bold, accent color highlight"
|
|
90
|
+
links: "uppercase text-sm, hover shifts to {color.secondary}"
|
|
91
|
+
mobile: "minimal, sharp-cornered menu"
|
|
92
|
+
layout:
|
|
93
|
+
archetype: "kinetic-poster"
|
|
94
|
+
max-width: "max-w-[95vw] — push to edges, never conservative"
|
|
95
|
+
section-spacing: "py-32 — dramatic breathing room"
|
|
96
|
+
grid-gap: "gap-8 standard, gap-px with colored bg for hairline dividers"
|
|
97
|
+
asymmetry: "sticky scroll card stacking, overlapping elements, uneven columns"
|
|
98
|
+
surfaces: "flat solid colors only — no gradients, no patterns, SVG noise at 0.03 opacity"
|
|
99
|
+
decoration: "massive background numbers (8-12rem) in muted tone as graphic shapes"
|
|
100
|
+
dividers: "full-width border-top/bottom in {shape.border-color}, accent bg flips for contrast"
|
|
101
|
+
|
|
102
|
+
constraints:
|
|
103
|
+
never:
|
|
104
|
+
- "border-radius above 2px — sharp corners are non-negotiable"
|
|
105
|
+
- "drop shadows of any kind — completely flat, no depth effects"
|
|
106
|
+
- "gradients on backgrounds — solid colors only"
|
|
107
|
+
- "serif or script fonts — geometric sans (Space Grotesk/Inter) only"
|
|
108
|
+
- "small headlines below text-3xl — if it's a heading, it screams"
|
|
109
|
+
- "conservative max-widths (max-w-4xl, max-w-5xl) — content pushes wide"
|
|
110
|
+
- "standard section padding (py-16) — go bigger (py-32)"
|
|
111
|
+
- "pause-on-hover for marquees — motion is constant, never interrupted"
|
|
112
|
+
- "mixed case on display text — uppercase is mandatory for all headings/buttons/labels"
|
|
113
|
+
- "pure black (#000) or pure white (#FFF) — use rich black (#09090B) and off-white (#FAFAFA)"
|
|
114
|
+
always:
|
|
115
|
+
- "at least 2 infinite marquees per page — one fast (speed 60-80), one slower (speed 30-50)"
|
|
116
|
+
- "viewport-width typography on at least one headline — clamp(3rem, 12vw, 14rem)"
|
|
117
|
+
- "massive background numbers (8-12rem) in muted tone as decorative elements"
|
|
118
|
+
- "hard color inversions on card/section hover — full scheme flip, not gradual"
|
|
119
|
+
- "uppercase + tracking-tighter on all display text"
|
|
120
|
+
- "aggressive scale hierarchy — 8-10x difference between largest and smallest text"
|
|
121
|
+
- "sharp 0px border-radius on every element"
|
|
122
|
+
- "2px borders in subtle zinc/muted tones for structural definition"
|
|
123
|
+
|
|
124
|
+
effects:
|
|
125
|
+
interaction-vocabulary: [color-flood, scale-snap, slide-reveal, parallax-zoom, marquee-scroll]
|
|
126
|
+
hover:
|
|
127
|
+
card: "color-flood — background fills {color.secondary}, all text inverts to black, duration-300"
|
|
128
|
+
button-primary: "scale-snap — scale-105%, instant feel"
|
|
129
|
+
button-secondary: "color-flood — bg fills {color.on-background}, text inverts"
|
|
130
|
+
link: "text color shifts to {color.secondary}, underline appears"
|
|
131
|
+
benefit: "slide-reveal — title translates-x-8, description fades in from opacity-0"
|
|
132
|
+
active:
|
|
133
|
+
button: "scale-snap — scale-95%, tactile press"
|
|
134
|
+
focus:
|
|
135
|
+
input: "border-bottom color shifts to {color.secondary} — border-only focus indicator"
|
|
136
|
+
general: "ring-2 ring-{color.secondary} ring-offset-2 ring-offset-{color.background}"
|
|
137
|
+
transition: "duration-200 to duration-300, ease-in-out for interactions; linear for marquees"
|
|
138
|
+
ambient:
|
|
139
|
+
- "marquee-perpetual — infinite horizontal scroll at constant speed, no gradient edges, never pauses"
|
|
140
|
+
- "parallax-hero — useScroll scale 1.0->1.2, opacity 1.0->0 on hero (0-20% scroll)"
|
|
141
|
+
- "sticky-stack — cards position:sticky, physically stack as user scrolls"
|
|
142
|
+
- "noise-grain — SVG feTurbulence overlay at 0.03 opacity, fixed position, full viewport"
|
|
143
|
+
|
|
50
144
|
compatibility: [cyberpunk, bold-typography]
|
|
51
145
|
clashes: [swiss-minimalist, professional, botanical]
|
|
52
146
|
trend_ref: trends/kinetic-typography.md
|
|
@@ -62,5 +62,96 @@ dark_mode:
|
|
|
62
62
|
on-background: "#F5F5F7"
|
|
63
63
|
border-color: "rgba(255, 255, 255, 0.18)"
|
|
64
64
|
|
|
65
|
+
intensity:
|
|
66
|
+
variance: 3 # clean Apple grid layouts, consistent spacing, restrained composition
|
|
67
|
+
motion: 7 # fluid shape morphing between states, smooth 350ms transitions, specular animation
|
|
68
|
+
density: 4 # generous Apple-style whitespace, content breathes within glass surfaces
|
|
69
|
+
|
|
70
|
+
patterns:
|
|
71
|
+
card:
|
|
72
|
+
background: "{color.surface}"
|
|
73
|
+
blur: "backdrop-blur-[2px] backdrop-saturate-[180%]"
|
|
74
|
+
border: "1px solid {shape.border-color}"
|
|
75
|
+
shadow: "{elevation.shadow-md} with {glass.highlight}"
|
|
76
|
+
radius: "{shape.border-radius-md}"
|
|
77
|
+
inner-layer: "::after — backdrop-blur-[1px], bg-white/10, refraction edge shadow"
|
|
78
|
+
hover: "surface opacity steps 0.60→0.70, border 0.80→0.90, shadow deepens"
|
|
79
|
+
button-primary:
|
|
80
|
+
background: "{color.primary}"
|
|
81
|
+
border: "1px solid white/20"
|
|
82
|
+
shadow: "0 2px 8px {color.primary}/30, inset 0 1px 0 white/30 (specular highlight)"
|
|
83
|
+
text: "weight 600, sentence case, white"
|
|
84
|
+
radius: "{shape.border-radius-sm}"
|
|
85
|
+
hover: "bg darkens, shadow expands, specular brightens"
|
|
86
|
+
button-secondary:
|
|
87
|
+
background: "{color.surface}"
|
|
88
|
+
blur: "backdrop-blur-[2px] backdrop-saturate-[180%]"
|
|
89
|
+
border: "1px solid {shape.border-color}"
|
|
90
|
+
text: "weight 600, {color.primary}"
|
|
91
|
+
radius: "{shape.border-radius-sm}"
|
|
92
|
+
shadow: "{elevation.shadow-sm}, inset 0 2px 8px white/20"
|
|
93
|
+
input:
|
|
94
|
+
background: "rgba(255,255,255,0.40)"
|
|
95
|
+
blur: "backdrop-blur-[2px]"
|
|
96
|
+
border: "1px solid white/60"
|
|
97
|
+
radius: "{shape.border-radius-sm}"
|
|
98
|
+
focus: "bg steps to 0.60, border shifts to {color.primary}/50, ring glow 3px {color.primary}/20"
|
|
99
|
+
shadow: "inset 0 1px 3px rgba(0,0,0,0.06)"
|
|
100
|
+
badge:
|
|
101
|
+
shape: "rounded-full"
|
|
102
|
+
background: "{color.primary}/15"
|
|
103
|
+
text: "text-xs font-medium {color.primary}"
|
|
104
|
+
border: "1px solid {color.primary}/20"
|
|
105
|
+
blur: "backdrop-blur-[1px]"
|
|
106
|
+
nav:
|
|
107
|
+
background: "rgba(255,255,255,0.50)"
|
|
108
|
+
blur: "backdrop-blur-[4px] backdrop-saturate-[180%]"
|
|
109
|
+
border: "border-b border-white/60"
|
|
110
|
+
position: "fixed top-0, z-50"
|
|
111
|
+
shadow: "0 1px 0 rgba(0,0,0,0.04)"
|
|
112
|
+
layout:
|
|
113
|
+
archetype: "apple-clean-grid"
|
|
114
|
+
max-width: "max-w-7xl"
|
|
115
|
+
section-spacing: "py-16 to py-24"
|
|
116
|
+
grid-gap: "gap-3 to gap-4"
|
|
117
|
+
surfaces: "light background (#F2F2F7), pastel gradient washes (blue-200/30, purple-200/20)"
|
|
118
|
+
depth: "surface opacity scale: 0.40→0.50→0.60→0.70→0.80 by z-level"
|
|
119
|
+
background: "warm-neutral, never stark white — subtle color washes behind glass"
|
|
120
|
+
|
|
121
|
+
constraints:
|
|
122
|
+
never:
|
|
123
|
+
- "high blur (12px+) — that is glassmorphism, not Liquid Glass; 2px is the refractive sweet spot"
|
|
124
|
+
- "low-opacity borders (0.20) — borders must be 0.80+ for polished glass edge"
|
|
125
|
+
- "dark backgrounds as default — light mode (#F2F2F7) is canonical"
|
|
126
|
+
- "surfaces without specular highlights — inner shadows or ::after refraction required"
|
|
127
|
+
- "hard state swaps — all state changes must use fluid shape transitions"
|
|
128
|
+
- "bold neon background orbs — use pastel washes only (blue-200, purple-200)"
|
|
129
|
+
- "mixing glassmorphism high-blur with Liquid Glass high-opacity — they cancel out"
|
|
130
|
+
- "pure white (#FFFFFF) page backgrounds — use #F2F2F7 system grey"
|
|
131
|
+
always:
|
|
132
|
+
- "specular highlights (inset box-shadow or ::after) on every glass surface"
|
|
133
|
+
- "backdrop-blur at 2px (1-4px range) — refractive, not frosted"
|
|
134
|
+
- "strong borders (white/80+) for polished glass edge quality"
|
|
135
|
+
- "dual-layer construction (outer glass + inner ::after light layer)"
|
|
136
|
+
- "-webkit-backdrop-filter prefix for Safari"
|
|
137
|
+
- "fluid shape morphing between states (border-radius, scale, shadow transitions)"
|
|
138
|
+
- "surface opacity hierarchy matching z-depth"
|
|
139
|
+
|
|
140
|
+
effects:
|
|
141
|
+
interaction-vocabulary: [glass-brighten, specular-shift, fluid-morph, tactile-press, refraction-step]
|
|
142
|
+
hover:
|
|
143
|
+
card: "glass-brighten — surface 0.60→0.70, border 0.80→0.90, shadow deepens"
|
|
144
|
+
button-primary: "specular-shift — bg darkens, glow expands, inset highlight strengthens"
|
|
145
|
+
button-secondary: "glass-brighten — surface brightens, shadow deepens"
|
|
146
|
+
tab: "refraction-step — inactive→active with glass surface + specular emerging"
|
|
147
|
+
active:
|
|
148
|
+
button: "tactile-press — scale-[0.98], shadow contracts, specular dims"
|
|
149
|
+
focus:
|
|
150
|
+
general: "ring glow — 0 0 0 3px {color.primary}/20, border shifts to {color.primary}/50"
|
|
151
|
+
transition: "duration-200 to duration-350, cubic-bezier(0.2, 0.8, 0.2, 1)"
|
|
152
|
+
ambient:
|
|
153
|
+
- "specular-drift — inner light layer shifts subtly with scroll position"
|
|
154
|
+
- "pastel-wash — background gradient washes drift slowly for glass tinting"
|
|
155
|
+
|
|
65
156
|
compatibility: [glassmorphism, aurora-gradients]
|
|
66
157
|
clashes: [neubrutalism, terminal, cyberpunk]
|