css-is-awesome 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/AGENTS.md +343 -0
  2. package/CHANGELOG.md +1036 -0
  3. package/CLAUDE.md +9 -0
  4. package/CONTRACT.md +580 -0
  5. package/GEMINI.md +9 -0
  6. package/LICENSE +21 -0
  7. package/LICENSE-third-party +88 -0
  8. package/MIGRATION.md +312 -0
  9. package/README.md +380 -0
  10. package/ROADMAP.md +714 -0
  11. package/THEMING.md +290 -0
  12. package/THREE-TIERS.md +158 -0
  13. package/VERSIONING.md +200 -0
  14. package/_index.scss +34 -0
  15. package/api.scss +16 -0
  16. package/bin/README.md +57 -0
  17. package/bin/cia.cjs +114 -0
  18. package/bin/migrate-bootstrap.cjs +427 -0
  19. package/bin/migrate-tailwind.cjs +832 -0
  20. package/css-is-awesome.instructions.md +533 -0
  21. package/dist/css-is-awesome.core.css +598 -0
  22. package/dist/css-is-awesome.core.min.css +1 -0
  23. package/dist/css-is-awesome.css +3733 -0
  24. package/dist/css-is-awesome.min.css +1 -0
  25. package/dist/css-is-awesome.utilities.css +2445 -0
  26. package/dist/css-is-awesome.utilities.min.css +1 -0
  27. package/dist/tokens.css +508 -0
  28. package/dist/tokens.d.ts +266 -0
  29. package/dist/tokens.min.css +1 -0
  30. package/figma-tokens/README.md +57 -0
  31. package/figma-tokens/primitives-brand.scss +121 -0
  32. package/figma-tokens/semantic-dark.scss +61 -0
  33. package/figma-tokens/semantic-light.scss +61 -0
  34. package/figma-tokens/tokens.json +144 -0
  35. package/llm.txt +183 -0
  36. package/mcp/server.cjs +1495 -0
  37. package/package.json +199 -0
  38. package/public/icons/README.md +278 -0
  39. package/public/icons/arrow-right.svg +4 -0
  40. package/public/icons/check.svg +4 -0
  41. package/public/icons/chevron-down.svg +4 -0
  42. package/public/icons/close.svg +4 -0
  43. package/public/icons/core/arrow-down.svg +13 -0
  44. package/public/icons/core/arrow-left.svg +13 -0
  45. package/public/icons/core/arrow-right.svg +13 -0
  46. package/public/icons/core/arrow-up.svg +13 -0
  47. package/public/icons/core/bell.svg +13 -0
  48. package/public/icons/core/calendar.svg +15 -0
  49. package/public/icons/core/check.svg +12 -0
  50. package/public/icons/core/chevron-down.svg +12 -0
  51. package/public/icons/core/chevron-left.svg +12 -0
  52. package/public/icons/core/chevron-right.svg +12 -0
  53. package/public/icons/core/chevron-up.svg +12 -0
  54. package/public/icons/core/clock.svg +13 -0
  55. package/public/icons/core/close.svg +13 -0
  56. package/public/icons/core/copy.svg +13 -0
  57. package/public/icons/core/download.svg +14 -0
  58. package/public/icons/core/edit.svg +13 -0
  59. package/public/icons/core/error.svg +14 -0
  60. package/public/icons/core/external-link.svg +14 -0
  61. package/public/icons/core/eye-off.svg +15 -0
  62. package/public/icons/core/eye.svg +13 -0
  63. package/public/icons/core/filter.svg +12 -0
  64. package/public/icons/core/heart.svg +12 -0
  65. package/public/icons/core/help.svg +14 -0
  66. package/public/icons/core/home.svg +13 -0
  67. package/public/icons/core/info.svg +14 -0
  68. package/public/icons/core/loading.svg +12 -0
  69. package/public/icons/core/lock.svg +13 -0
  70. package/public/icons/core/mail.svg +13 -0
  71. package/public/icons/core/menu.svg +14 -0
  72. package/public/icons/core/message.svg +12 -0
  73. package/public/icons/core/minus.svg +12 -0
  74. package/public/icons/core/more-horizontal.svg +14 -0
  75. package/public/icons/core/pause.svg +13 -0
  76. package/public/icons/core/play.svg +12 -0
  77. package/public/icons/core/plus.svg +13 -0
  78. package/public/icons/core/refresh.svg +15 -0
  79. package/public/icons/core/save.svg +14 -0
  80. package/public/icons/core/search.svg +13 -0
  81. package/public/icons/core/settings.svg +13 -0
  82. package/public/icons/core/share.svg +14 -0
  83. package/public/icons/core/sort.svg +15 -0
  84. package/public/icons/core/star.svg +12 -0
  85. package/public/icons/core/success.svg +13 -0
  86. package/public/icons/core/trash.svg +16 -0
  87. package/public/icons/core/unlock.svg +13 -0
  88. package/public/icons/core/upload.svg +14 -0
  89. package/public/icons/core/user.svg +13 -0
  90. package/public/icons/core/users.svg +15 -0
  91. package/public/icons/core/warning.svg +14 -0
  92. package/public/icons/download.svg +4 -0
  93. package/public/icons/edit.svg +4 -0
  94. package/public/icons/menu.svg +4 -0
  95. package/public/icons/search.svg +4 -0
  96. package/public/theme.css +4179 -0
  97. package/public/themes/README.md +102 -0
  98. package/public/themes/boilerplate/theme.css +154 -0
  99. package/public/themes/boilerplate-dark/theme.css +171 -0
  100. package/public/themes/boilerplate-light/theme.css +171 -0
  101. package/public/themes/cupertino/theme.css +165 -0
  102. package/public/themes/cupertino-dark/theme.css +200 -0
  103. package/public/themes/cupertino-light/theme.css +227 -0
  104. package/public/themes/glass/theme.css +190 -0
  105. package/public/themes/glass-dark/theme.css +201 -0
  106. package/public/themes/glass-light/theme.css +229 -0
  107. package/public/themes/graphite/theme.css +155 -0
  108. package/public/themes/graphite-dark/theme.css +223 -0
  109. package/public/themes/graphite-light/theme.css +191 -0
  110. package/public/themes/press/theme.css +189 -0
  111. package/public/themes/press-dark/theme.css +199 -0
  112. package/public/themes/press-light/theme.css +235 -0
  113. package/public/themes/prism/theme.css +159 -0
  114. package/public/themes/prism-dark/theme.css +185 -0
  115. package/public/themes/prism-light/theme.css +188 -0
  116. package/public/themes/sketchbook/theme.css +152 -0
  117. package/public/themes/sketchbook-dark/theme.css +194 -0
  118. package/public/themes/sketchbook-light/theme.css +188 -0
  119. package/public/themes/terminal/theme.css +159 -0
  120. package/public/themes/terminal-dark/theme.css +229 -0
  121. package/public/themes/terminal-light/theme.css +152 -0
  122. package/scripts/README.md +70 -0
  123. package/scripts/icon-contract.json +67 -0
  124. package/scripts/icon-validator.js +205 -0
  125. package/scripts/prepare-dist.mjs +65 -0
  126. package/scripts/theme-a11y.js +415 -0
  127. package/scripts/theme-contract.json +171 -0
  128. package/scripts/theme-validator.js +674 -0
  129. package/scss/README.md +55 -0
  130. package/scss/_animations-utilities.scss +107 -0
  131. package/scss/_animations.scss +248 -0
  132. package/scss/_app-styles.scss +15 -0
  133. package/scss/_generator.scss +174 -0
  134. package/scss/_icons.scss +475 -0
  135. package/scss/_index.scss +17 -0
  136. package/scss/_layout.scss +597 -0
  137. package/scss/_mixins.scss +1036 -0
  138. package/scss/_system.scss +291 -0
  139. package/scss/_utilities.scss +377 -0
  140. package/scss/api.scss +61 -0
  141. package/scss/components/_accordion.scss +72 -0
  142. package/scss/components/_buttons.scss +171 -0
  143. package/scss/components/_copy-button.scss +69 -0
  144. package/scss/components/_data.scss +190 -0
  145. package/scss/components/_feedback.scss +197 -0
  146. package/scss/components/_forms.scss +272 -0
  147. package/scss/components/_index.scss +17 -0
  148. package/scss/components/_navigation.scss +186 -0
  149. package/scss/components/_overlay.scss +259 -0
  150. package/scss/components/_stepper.scss +159 -0
  151. package/scss/components/_tabs.scss +72 -0
  152. package/scss/core.scss +54 -0
  153. package/scss/examples/_theming.scss +107 -0
  154. package/scss/examples/_usage.scss +317 -0
  155. package/scss/main.scss +64 -0
  156. package/scss/recipes/README.md +110 -0
  157. package/scss/recipes/_bare-tags.scss +232 -0
  158. package/scss/recipes/_recipe-template.md +119 -0
  159. package/scss/recipes/combobox.md +509 -0
  160. package/scss/recipes/dialog.md +265 -0
  161. package/scss/recipes/print-to-pdf.md +263 -0
  162. package/scss/theme/README.md +67 -0
  163. package/scss/theme/_brand.scss +18 -0
  164. package/scss/theme/_colors-dark.scss +68 -0
  165. package/scss/theme/_colors-light.scss +70 -0
  166. package/scss/theme/_components.scss +94 -0
  167. package/scss/theme/_icons.scss +104 -0
  168. package/scss/theme/_index.scss +62 -0
  169. package/scss/theme/_shadows.scss +65 -0
  170. package/scss/theme/_shape.scss +13 -0
  171. package/scss/theme/_typography.scss +9 -0
  172. package/scss/theme/registry.json +447 -0
  173. package/scss/themes/boilerplate-dark.scss +212 -0
  174. package/scss/themes/boilerplate-light.scss +209 -0
  175. package/scss/themes/boilerplate.scss +181 -0
  176. package/scss/themes/cupertino-dark.scss +238 -0
  177. package/scss/themes/cupertino-light.scss +266 -0
  178. package/scss/themes/cupertino.scss +194 -0
  179. package/scss/themes/glass-dark.scss +238 -0
  180. package/scss/themes/glass-light.scss +266 -0
  181. package/scss/themes/glass.scss +220 -0
  182. package/scss/themes/graphite-dark.scss +260 -0
  183. package/scss/themes/graphite-light.scss +228 -0
  184. package/scss/themes/graphite.scss +182 -0
  185. package/scss/themes/press-dark.scss +237 -0
  186. package/scss/themes/press-light.scss +273 -0
  187. package/scss/themes/press.scss +241 -0
  188. package/scss/themes/prism-dark.scss +217 -0
  189. package/scss/themes/prism-light.scss +220 -0
  190. package/scss/themes/prism.scss +190 -0
  191. package/scss/themes/sketchbook-dark.scss +231 -0
  192. package/scss/themes/sketchbook-light.scss +231 -0
  193. package/scss/themes/sketchbook.scss +178 -0
  194. package/scss/themes/terminal-dark.scss +267 -0
  195. package/scss/themes/terminal-light.scss +175 -0
  196. package/scss/themes/terminal.scss +185 -0
  197. package/scss/tokens.scss +23 -0
  198. package/scss/utilities-only.scss +4 -0
@@ -0,0 +1,159 @@
1
+ @charset "UTF-8";
2
+ @import 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap';
3
+ :root, :root[data-theme=prism] {
4
+ color-scheme: light dark;
5
+ /* Surfaces */
6
+ --paper: light-dark(#fff, #09090b);
7
+ --paper-raised: light-dark(#fff, #18181b);
8
+ --paper-sunk: light-dark(#f4f4f5, #27272a);
9
+ --paper-glass: light-dark(rgba(255, 255, 255, 0.80), rgba(24, 24, 27, 0.80));
10
+ /* Ink — zinc neutral ramp */
11
+ --ink: light-dark(#09090b, #fafafa);
12
+ --ink-soft: light-dark(#27272a, #e4e4e7);
13
+ --ink-faint: light-dark(#52525b, #a1a1aa);
14
+ --graphite: light-dark(#18181b, #f4f4f5);
15
+ --muted: light-dark(#71717a, #71717a);
16
+ /* Lines */
17
+ --guide: light-dark(#d4d4d8, #3f3f46);
18
+ --guide-soft: light-dark(#e4e4e7, #27272a);
19
+ --hair: light-dark(#e4e4e7, #27272a);
20
+ --hair-soft: light-dark(#f4f4f5, #18181b);
21
+ /* Primary accent — refined blue (brighter for dark) */
22
+ --ai: light-dark(#2563eb, #3b82f6);
23
+ --ai-ink: light-dark(#1d4ed8, #60a5fa);
24
+ --ai-wash: light-dark(#eff6ff, #1e3a8a);
25
+ /* Seal — red */
26
+ --shu: light-dark(#dc2626, #ef4444);
27
+ --shu-wash: light-dark(#fef2f2, #450a0a);
28
+ /* Tertiary — amber */
29
+ --ochre: light-dark(#ca8a04, #eab308);
30
+ --ochre-wash: light-dark(#fefce8, #422006);
31
+ /* Code surface */
32
+ --code-bg: light-dark(#fafafa, #0a0a0a);
33
+ --code-ink: light-dark(#18181b, #e4e4e7);
34
+ --code-muted: light-dark(#6B6B73, #808089);
35
+ --code-accent: light-dark(#C1410C, #fb923c);
36
+ --code-green: light-dark(#117D39, #4ade80);
37
+ --code-blue: light-dark(#2462EB, #60a5fa);
38
+ /* Typography — identical across modes */
39
+ --font-display: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
40
+ --font-script: 'Inter', cursive;
41
+ --font-serif: Georgia, 'Times New Roman', Times, serif;
42
+ --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
43
+ --font-mono: 'JetBrains Mono', 'SF Mono', 'Roboto Mono', Consolas, Menlo, monospace;
44
+ /* Radius — identical */
45
+ --r-sm: 4px;
46
+ --r-md: 6px;
47
+ --r-lg: 8px;
48
+ /* Shadow — extremely subtle, heavier on dark */
49
+ --shadow-sm: 0 1px 1px light-dark(rgba(9, 9, 11, 0.03), rgba(0, 0, 0, 0.30));
50
+ --shadow-md: 0 1px 2px light-dark(rgba(9, 9, 11, 0.05), rgba(0, 0, 0, 0.40));
51
+ --shadow-lg: 0 4px 12px -4px light-dark(rgba(9, 9, 11, 0.08), rgba(0, 0, 0, 0.60));
52
+ --shadow-xl: 0 16px 32px -16px light-dark(rgba(9, 9, 11, 0.15), rgba(0, 0, 0, 0.70));
53
+ --shadow-2xl: 0 0 0 1px light-dark(#e4e4e7, #27272a), 0 8px 24px -8px light-dark(rgba(9, 9, 11, 0.12), rgba(0, 0, 0, 0.60));
54
+ /* Blur / glow — Prism uses neither */
55
+ --blur-sm: none;
56
+ --blur-md: none;
57
+ --blur-lg: none;
58
+ --glow-sm: 0 0 0 transparent;
59
+ --glow-md: 0 0 0 transparent;
60
+ --glow-lg: 0 0 0 transparent;
61
+ /* Motion — fast + crisp, identical */
62
+ --duration-fast: 100ms;
63
+ --duration-normal: 150ms;
64
+ --duration-slow: 250ms;
65
+ --ease: cubic-bezier(.32, .72, 0, 1);
66
+ /* Semantic aliases */
67
+ --background-default: var(--paper);
68
+ --background-subtle: var(--paper-sunk);
69
+ --background-navbar: var(--paper-raised);
70
+ --surface-default: var(--paper);
71
+ --surface-raised: var(--paper-raised);
72
+ --surface-sunk: var(--paper-sunk);
73
+ --surface-muted: var(--paper-sunk);
74
+ --surface-subtle: var(--paper-raised);
75
+ --surface-emphasis: var(--ink);
76
+ --surface-glass: var(--paper-glass);
77
+ --text-primary: var(--ink);
78
+ --text-secondary: var(--ink-soft);
79
+ --text-muted: var(--ink-faint);
80
+ --text-tertiary: var(--muted);
81
+ --text-inverse: var(--paper);
82
+ --text-link: var(--ai);
83
+ --text-link-hover: var(--ai-ink);
84
+ --border-default: var(--hair);
85
+ --border-subtle: var(--hair-soft);
86
+ --border-emphasis: var(--guide);
87
+ --border-focus: var(--ai);
88
+ --interactive-hover: light-dark(rgba(9, 9, 11, 0.05), rgba(255, 255, 255, 0.05));
89
+ --interactive-active: light-dark(rgba(9, 9, 11, 0.10), rgba(255, 255, 255, 0.10));
90
+ --brand-primary: var(--ai);
91
+ --brand-primary-hover: var(--ai-ink);
92
+ --action-primary-default: var(--ai);
93
+ --action-primary-hover: var(--ai-ink);
94
+ --action-primary-active: var(--ai-ink);
95
+ --action-primary-wash: var(--ai-wash);
96
+ --action-secondary-default: var(--shu);
97
+ --action-secondary-hover: var(--shu);
98
+ --action-secondary-active: var(--shu);
99
+ --action-secondary-wash: var(--shu-wash);
100
+ --action-tertiary-default: var(--ochre);
101
+ --action-tertiary-hover: var(--ochre);
102
+ --action-tertiary-active: var(--ochre);
103
+ --action-tertiary-wash: var(--ochre-wash);
104
+ --feedback-info: var(--ai);
105
+ --feedback-success: light-dark(#16a34a, #22c55e);
106
+ --feedback-warning: var(--ochre);
107
+ --feedback-error: var(--shu);
108
+ --info-default: var(--ai);
109
+ --info-subtle: var(--ai-wash);
110
+ --info-text: light-dark(var(--ai-ink), #85BFFF);
111
+ --success-default: light-dark(#16a34a, #22c55e);
112
+ --success-subtle: light-dark(#f0fdf4, #14532d);
113
+ --success-text: light-dark(#15803d, #4ade80);
114
+ --warning-default: light-dark(#ca8a04, #eab308);
115
+ --warning-subtle: light-dark(#fefce8, #422006);
116
+ --warning-text: light-dark(#854d0e, #fde047);
117
+ --error-default: light-dark(#dc2626, #ef4444);
118
+ --error-subtle: light-dark(#fef2f2, #450a0a);
119
+ --error-text: light-dark(#b91c1c, #fca5a5);
120
+ /* Library scales — identical */
121
+ /* Spacing rhythm — THE knob for how dense or airy this theme feels.
122
+ The numbered scale is the source of truth: every component reads
123
+ var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
124
+ are emitted by the library as references to these, so they follow
125
+ automatically. Change a value here and the whole page re-proportions.
126
+ Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
127
+ --space-0: 0; /* flush */
128
+ --space-1: 0.5rem; /* tight inner gap */
129
+ --space-2: 0.75rem; /* control padding */
130
+ --space-3: 0.875rem; /* (no t-shirt) */
131
+ --space-4: 1rem; /* default rhythm */
132
+ --space-5: 1.5rem; /* section gap */
133
+ --space-6: 2rem; /* block gap */
134
+ --space-7: 3rem; /* major gap */
135
+ --space-8: 4rem; /* page section */
136
+ --space-9: 6rem; /* hero rhythm */
137
+ --radius-sm: var(--r-sm);
138
+ --radius-md: var(--r-md);
139
+ --radius-lg: var(--r-lg);
140
+ --radius-xl: 12px;
141
+ --radius-full: 9999px;
142
+ --font-primary: var(--font-sans);
143
+ --font-size-base: 1rem;
144
+ --line-height-normal: 1.5;
145
+ --font-weight-medium: 500;
146
+ --z-sticky: 1020;
147
+ --z-dropdown: 1030;
148
+ --z-backdrop: 1040;
149
+ --z-modal: 1050;
150
+ --z-popover: 1060;
151
+ --z-tooltip: 1070;
152
+ /* Component overrides — border-driven, tight radii */
153
+ --btn-radius: var(--r-md);
154
+ --card-radius: var(--r-md);
155
+ --card-shadow: var(--shadow-sm);
156
+ --card-border: 1px solid var(--hair);
157
+ --input-radius: var(--r-md);
158
+ --modal-radius: var(--r-lg);
159
+ }
@@ -0,0 +1,185 @@
1
+ @charset "UTF-8";
2
+ /* ============================================================
3
+ THEME — Prism Dark
4
+ -----------------------------------------------------------
5
+ Dark companion to Prism Light. Same Vercel/Linear/Radix UI
6
+ philosophy: neutral grays, refined blue accent (brighter
7
+ for dark surfaces), border-driven, tight radii.
8
+
9
+ Opt-in via `<html data-theme="prism-dark">`. Does not match
10
+ `:root` — pair with prism-light's theme.css to get a default
11
+ light mode and an opt-in dark mode in the same project.
12
+ ============================================================ */
13
+ @import 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap';
14
+ :root, :root[data-theme=prism-dark] {
15
+ color-scheme: dark;
16
+ /* Surfaces — Zinc dark ramp */
17
+ --paper: #09090b;
18
+ --paper-raised: #18181b;
19
+ --paper-sunk: #27272a;
20
+ --paper-glass: rgba(24, 24, 27, 0.80);
21
+ /* Ink — inverted neutrals */
22
+ --ink: #fafafa;
23
+ --ink-soft: #e4e4e7;
24
+ --ink-faint: #a1a1aa;
25
+ --graphite: #f4f4f5;
26
+ --muted: #71717a;
27
+ /* Lines — dark borders */
28
+ --guide: #3f3f46;
29
+ --guide-soft: #27272a;
30
+ --hair: #27272a;
31
+ --hair-soft: #18181b;
32
+ /* Primary accent — brighter blue for dark surfaces */
33
+ --ai: #3b82f6;
34
+ --ai-ink: #60a5fa;
35
+ --ai-wash: #1e3a8a;
36
+ /* Seal — red */
37
+ --shu: #ef4444;
38
+ --shu-wash: #450a0a;
39
+ /* Tertiary — amber */
40
+ --ochre: #eab308;
41
+ --ochre-wash: #422006;
42
+ /* Code — dark syntax surface */
43
+ --code-bg: #0a0a0a;
44
+ --code-ink: #e4e4e7;
45
+ --code-muted: #808089;
46
+ --code-accent: #fb923c;
47
+ --code-green: #4ade80;
48
+ --code-blue: #60a5fa;
49
+ /* Typography */
50
+ --font-display: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
51
+ --font-script: 'Inter', cursive;
52
+ --font-serif: Georgia, 'Times New Roman', Times, serif;
53
+ --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
54
+ --font-mono: 'JetBrains Mono', 'SF Mono', 'Roboto Mono', Consolas, Menlo, monospace;
55
+ /* Radius */
56
+ --r-sm: 4px;
57
+ --r-md: 6px;
58
+ --r-lg: 8px;
59
+ /* Shadow — heavier for dark backgrounds */
60
+ --shadow-sm: 0 1px 1px rgba(0, 0, 0, .3);
61
+ --shadow-md: 0 1px 2px rgba(0, 0, 0, .4);
62
+ --shadow-lg: 0 4px 12px -4px rgba(0, 0, 0, .6);
63
+ --shadow-xl: 0 16px 32px -16px rgba(0, 0, 0, .7);
64
+ --shadow-2xl: 0 0 0 1px #27272a, 0 8px 24px -8px rgba(0, 0, 0, .6);
65
+ /* Blur */
66
+ --blur-sm: none;
67
+ --blur-md: none;
68
+ --blur-lg: none;
69
+ /* Glow */
70
+ --glow-sm: 0 0 0 transparent;
71
+ --glow-md: 0 0 0 transparent;
72
+ --glow-lg: 0 0 0 transparent;
73
+ /* Motion */
74
+ --duration-fast: 100ms;
75
+ --duration-normal: 150ms;
76
+ --duration-slow: 250ms;
77
+ --ease: cubic-bezier(.32, .72, 0, 1);
78
+ /* Backgrounds */
79
+ --background-default: var(--paper);
80
+ --background-subtle: var(--paper-sunk);
81
+ --background-navbar: var(--paper-raised);
82
+ /* Surfaces (semantic) */
83
+ --surface-default: var(--paper);
84
+ --surface-raised: var(--paper-raised);
85
+ --surface-sunk: var(--paper-sunk);
86
+ --surface-muted: var(--paper-sunk);
87
+ --surface-subtle: var(--paper-raised);
88
+ --surface-emphasis: var(--ink);
89
+ --surface-glass: var(--paper-glass);
90
+ /* Text */
91
+ --text-primary: var(--ink);
92
+ --text-secondary: var(--ink-soft);
93
+ --text-muted: var(--ink-faint);
94
+ --text-tertiary: var(--muted);
95
+ --text-inverse: var(--paper);
96
+ --text-link: var(--ai);
97
+ --text-link-hover: var(--ai-ink);
98
+ /* Borders */
99
+ --border-default: var(--hair);
100
+ --border-subtle: var(--hair-soft);
101
+ --border-emphasis: var(--guide);
102
+ --border-focus: var(--ai);
103
+ /* Interactive overlays — light wash on dark */
104
+ --interactive-hover: rgba(255, 255, 255, 0.05);
105
+ --interactive-active: rgba(255, 255, 255, 0.10);
106
+ /* Brand */
107
+ --brand-primary: var(--ai);
108
+ --brand-primary-hover: var(--ai-ink);
109
+ /* Action triplets */
110
+ --action-primary-default: var(--ai);
111
+ --action-primary-hover: var(--ai-ink);
112
+ --action-primary-active: var(--ai-ink);
113
+ --action-primary-wash: var(--ai-wash);
114
+ --action-secondary-default: var(--shu);
115
+ --action-secondary-hover: var(--shu);
116
+ --action-secondary-active: var(--shu);
117
+ --action-secondary-wash: var(--shu-wash);
118
+ --action-tertiary-default: var(--ochre);
119
+ --action-tertiary-hover: var(--ochre);
120
+ --action-tertiary-active: var(--ochre);
121
+ --action-tertiary-wash: var(--ochre-wash);
122
+ /* Feedback */
123
+ --feedback-info: var(--ai);
124
+ --feedback-success: #22c55e;
125
+ --feedback-warning: var(--ochre);
126
+ --feedback-error: var(--shu);
127
+ /* Status — info */
128
+ --info-default: var(--ai);
129
+ --info-subtle: var(--ai-wash);
130
+ --info-text: #85BFFF;
131
+ /* Status — success */
132
+ --success-default: #22c55e;
133
+ --success-subtle: #14532d;
134
+ --success-text: #4ade80;
135
+ /* Status — warning */
136
+ --warning-default: #eab308;
137
+ --warning-subtle: #422006;
138
+ --warning-text: #fde047;
139
+ /* Status — error */
140
+ --error-default: #ef4444;
141
+ --error-subtle: #450a0a;
142
+ --error-text: #fca5a5;
143
+ /* Space scale */
144
+ /* Spacing rhythm — THE knob for how dense or airy this theme feels.
145
+ The numbered scale is the source of truth: every component reads
146
+ var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
147
+ are emitted by the library as references to these, so they follow
148
+ automatically. Change a value here and the whole page re-proportions.
149
+ Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
150
+ --space-0: 0; /* flush */
151
+ --space-1: 0.5rem; /* tight inner gap */
152
+ --space-2: 0.75rem; /* control padding */
153
+ --space-3: 0.875rem; /* (no t-shirt) */
154
+ --space-4: 1rem; /* default rhythm */
155
+ --space-5: 1.5rem; /* section gap */
156
+ --space-6: 2rem; /* block gap */
157
+ --space-7: 3rem; /* major gap */
158
+ --space-8: 4rem; /* page section */
159
+ --space-9: 6rem; /* hero rhythm */
160
+ /* Radius alias */
161
+ --radius-sm: var(--r-sm);
162
+ --radius-md: var(--r-md);
163
+ --radius-lg: var(--r-lg);
164
+ --radius-xl: 12px;
165
+ --radius-full: 9999px;
166
+ /* Typography */
167
+ --font-primary: var(--font-sans);
168
+ --font-size-base: 1rem;
169
+ --line-height-normal: 1.5;
170
+ --font-weight-medium: 500;
171
+ /* Z-index layers */
172
+ --z-sticky: 1020;
173
+ --z-dropdown: 1030;
174
+ --z-backdrop: 1040;
175
+ --z-modal: 1050;
176
+ --z-popover: 1060;
177
+ --z-tooltip: 1070;
178
+ /* Component overrides */
179
+ --btn-radius: var(--r-md);
180
+ --card-radius: var(--r-md);
181
+ --card-shadow: var(--shadow-sm);
182
+ --card-border: 1px solid var(--hair);
183
+ --input-radius: var(--r-md);
184
+ --modal-radius: var(--r-lg);
185
+ }
@@ -0,0 +1,188 @@
1
+ @charset "UTF-8";
2
+ /* ============================================================
3
+ THEME — Prism Light
4
+ -----------------------------------------------------------
5
+ Clean component-library aesthetic inspired by Vercel,
6
+ Linear, Radix UI, shadcn/ui. Neutral grays do the heavy
7
+ lifting, single restrained refined-blue accent,
8
+ border-driven (not shadow-driven), generous whitespace.
9
+
10
+ Long-term default theme for boilerplate-derived projects.
11
+ Pairs with `prism-dark` (separate file).
12
+
13
+ Sketchbook is css-is-awesome's brand theme. This is one
14
+ of the shipped consumer themes.
15
+ ============================================================ */
16
+ @import 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap';
17
+ :root, :root[data-theme=prism-light] {
18
+ color-scheme: light;
19
+ /* Surfaces */
20
+ --paper: #fff;
21
+ --paper-raised: #fff;
22
+ --paper-sunk: #f4f4f5;
23
+ --paper-glass: rgba(255, 255, 255, 0.80);
24
+ /* Ink — Zinc neutral ramp */
25
+ --ink: #09090b;
26
+ --ink-soft: #27272a;
27
+ --ink-faint: #52525b;
28
+ --graphite: #18181b;
29
+ --muted: #71717a;
30
+ /* Lines */
31
+ --guide: #d4d4d8;
32
+ --guide-soft: #e4e4e7;
33
+ --hair: #e4e4e7;
34
+ --hair-soft: #f4f4f5;
35
+ /* Primary accent — refined blue */
36
+ --ai: #2563eb;
37
+ --ai-ink: #1d4ed8;
38
+ --ai-wash: #eff6ff;
39
+ /* Seal — red (used for error / secondary) */
40
+ --shu: #dc2626;
41
+ --shu-wash: #fef2f2;
42
+ /* Tertiary — amber (used for warning) */
43
+ --ochre: #ca8a04;
44
+ --ochre-wash: #fefce8;
45
+ /* Code — light syntax surface */
46
+ --code-bg: #fafafa;
47
+ --code-ink: #18181b;
48
+ --code-muted: #71717a;
49
+ --code-accent: #c2410c;
50
+ --code-green: #117C38;
51
+ --code-blue: #2563eb;
52
+ /* Typography */
53
+ --font-display: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
54
+ --font-script: 'Inter', cursive;
55
+ --font-serif: Georgia, 'Times New Roman', Times, serif;
56
+ --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
57
+ --font-mono: 'JetBrains Mono', 'SF Mono', 'Roboto Mono', Consolas, Menlo, monospace;
58
+ /* Radius */
59
+ --r-sm: 4px;
60
+ --r-md: 6px;
61
+ --r-lg: 8px;
62
+ /* Shadow — extremely subtle */
63
+ --shadow-sm: 0 1px 1px rgba(9, 9, 11, .03);
64
+ --shadow-md: 0 1px 2px rgba(9, 9, 11, .05);
65
+ --shadow-lg: 0 4px 12px -4px rgba(9, 9, 11, .08);
66
+ --shadow-xl: 0 16px 32px -16px rgba(9, 9, 11, .15);
67
+ --shadow-2xl: 0 0 0 1px #e4e4e7, 0 8px 24px -8px rgba(9, 9, 11, .12);
68
+ /* Blur — Prism doesn't use frosted surfaces */
69
+ --blur-sm: none;
70
+ --blur-md: none;
71
+ --blur-lg: none;
72
+ /* Glow — Prism doesn't use glow effects */
73
+ --glow-sm: 0 0 0 transparent;
74
+ --glow-md: 0 0 0 transparent;
75
+ --glow-lg: 0 0 0 transparent;
76
+ /* Motion — fast and crisp */
77
+ --duration-fast: 100ms;
78
+ --duration-normal: 150ms;
79
+ --duration-slow: 250ms;
80
+ --ease: cubic-bezier(.32, .72, 0, 1);
81
+ /* Backgrounds */
82
+ --background-default: var(--paper);
83
+ --background-subtle: var(--paper-sunk);
84
+ --background-navbar: var(--paper-raised);
85
+ /* Surfaces (semantic) */
86
+ --surface-default: var(--paper);
87
+ --surface-raised: var(--paper-raised);
88
+ --surface-sunk: var(--paper-sunk);
89
+ --surface-muted: var(--paper-sunk);
90
+ --surface-subtle: var(--paper-raised);
91
+ --surface-emphasis: var(--ink);
92
+ --surface-glass: var(--paper-glass);
93
+ /* Text */
94
+ --text-primary: var(--ink);
95
+ --text-secondary: var(--ink-soft);
96
+ --text-muted: var(--ink-faint);
97
+ --text-tertiary: var(--muted);
98
+ --text-inverse: var(--paper);
99
+ --text-link: var(--ai);
100
+ --text-link-hover: var(--ai-ink);
101
+ /* Borders */
102
+ --border-default: var(--hair);
103
+ --border-subtle: var(--hair-soft);
104
+ --border-emphasis: var(--guide);
105
+ --border-focus: var(--ai);
106
+ /* Interactive overlays */
107
+ --interactive-hover: rgba(9, 9, 11, 0.05);
108
+ --interactive-active: rgba(9, 9, 11, 0.10);
109
+ /* Brand */
110
+ --brand-primary: var(--ai);
111
+ --brand-primary-hover: var(--ai-ink);
112
+ /* Action triplets */
113
+ --action-primary-default: var(--ai);
114
+ --action-primary-hover: var(--ai-ink);
115
+ --action-primary-active: var(--ai-ink);
116
+ --action-primary-wash: var(--ai-wash);
117
+ --action-secondary-default: var(--shu);
118
+ --action-secondary-hover: var(--shu);
119
+ --action-secondary-active: var(--shu);
120
+ --action-secondary-wash: var(--shu-wash);
121
+ --action-tertiary-default: var(--ochre);
122
+ --action-tertiary-hover: var(--ochre);
123
+ --action-tertiary-active: var(--ochre);
124
+ --action-tertiary-wash: var(--ochre-wash);
125
+ /* Feedback */
126
+ --feedback-info: var(--ai);
127
+ --feedback-success: #16a34a;
128
+ --feedback-warning: var(--ochre);
129
+ --feedback-error: var(--shu);
130
+ /* Status — info */
131
+ --info-default: var(--ai);
132
+ --info-subtle: var(--ai-wash);
133
+ --info-text: var(--ai-ink);
134
+ /* Status — success */
135
+ --success-default: #16a34a;
136
+ --success-subtle: #f0fdf4;
137
+ --success-text: #15803d;
138
+ /* Status — warning */
139
+ --warning-default: #ca8a04;
140
+ --warning-subtle: #fefce8;
141
+ --warning-text: #854d0e;
142
+ /* Status — error */
143
+ --error-default: #dc2626;
144
+ --error-subtle: #fef2f2;
145
+ --error-text: #b91c1c;
146
+ /* Space scale */
147
+ /* Spacing rhythm — THE knob for how dense or airy this theme feels.
148
+ The numbered scale is the source of truth: every component reads
149
+ var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
150
+ are emitted by the library as references to these, so they follow
151
+ automatically. Change a value here and the whole page re-proportions.
152
+ Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
153
+ --space-0: 0; /* flush */
154
+ --space-1: 0.5rem; /* tight inner gap */
155
+ --space-2: 0.75rem; /* control padding */
156
+ --space-3: 0.875rem; /* (no t-shirt) */
157
+ --space-4: 1rem; /* default rhythm */
158
+ --space-5: 1.5rem; /* section gap */
159
+ --space-6: 2rem; /* block gap */
160
+ --space-7: 3rem; /* major gap */
161
+ --space-8: 4rem; /* page section */
162
+ --space-9: 6rem; /* hero rhythm */
163
+ /* Radius alias */
164
+ --radius-sm: var(--r-sm);
165
+ --radius-md: var(--r-md);
166
+ --radius-lg: var(--r-lg);
167
+ --radius-xl: 12px;
168
+ --radius-full: 9999px;
169
+ /* Typography */
170
+ --font-primary: var(--font-sans);
171
+ --font-size-base: 1rem;
172
+ --line-height-normal: 1.5;
173
+ --font-weight-medium: 500;
174
+ /* Z-index layers */
175
+ --z-sticky: 1020;
176
+ --z-dropdown: 1030;
177
+ --z-backdrop: 1040;
178
+ --z-modal: 1050;
179
+ --z-popover: 1060;
180
+ --z-tooltip: 1070;
181
+ /* Component overrides — Prism is border-driven and tightly rounded */
182
+ --btn-radius: var(--r-md);
183
+ --card-radius: var(--r-md);
184
+ --card-shadow: var(--shadow-sm);
185
+ --card-border: 1px solid var(--hair);
186
+ --input-radius: var(--r-md);
187
+ --modal-radius: var(--r-lg);
188
+ }
@@ -0,0 +1,152 @@
1
+ @charset "UTF-8";
2
+ @import 'https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=Caveat:wght@400;500;600;700&family=Noto+Serif+JP:wght@400;500;700&family=Noto+Sans+JP:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500;700&display=swap';
3
+ :root, :root[data-theme=sketchbook] {
4
+ color-scheme: light dark;
5
+ /* Surfaces — warm paper / warm charcoal paper */
6
+ --paper: light-dark(#F7F3EA, #1A1815);
7
+ --paper-raised: light-dark(#FDFAF2, #2A2520);
8
+ --paper-sunk: light-dark(#ECE5D3, #11100E);
9
+ --paper-glass: light-dark(rgba(253, 250, 242, 0.75), rgba(42, 37, 32, 0.78));
10
+ /* Ink — warm pencil + sumi / warm cream */
11
+ --ink: light-dark(#2A241E, #F4EFE2);
12
+ --ink-soft: light-dark(#4A4037, #D8D0BE);
13
+ --ink-faint: light-dark(#726858, #A89E89);
14
+ --graphite: light-dark(#3A332B, #E8E0CE);
15
+ --muted: light-dark(#948977, #7A715F);
16
+ /* Construction lines */
17
+ --guide: light-dark(#C9BDA5, #4A4239);
18
+ --guide-soft: light-dark(#DDD4C0, #382F27);
19
+ --hair: light-dark(#D4CCBB, #3F362C);
20
+ --hair-soft: light-dark(#E8E2D4, #2A241E);
21
+ /* Primary accent — indigo (lifted for dark paper) */
22
+ --ai: light-dark(#1F3A5F, #6E8FBF);
23
+ --ai-ink: light-dark(#14263F, #8DA8D1);
24
+ --ai-wash: light-dark(#E5EBF1, #1F2B3F);
25
+ /* Seal — vermilion (warm, brightens slightly on dark) */
26
+ --shu: light-dark(#C1272D, #E36148);
27
+ --shu-wash: light-dark(#F6E3E1, #3A1A14);
28
+ /* Draft / marginalia — warm gold */
29
+ --ochre: light-dark(#A37B30, #D4A04B);
30
+ --ochre-wash: light-dark(#F0E5CC, #382B14);
31
+ /* Code surface — inverts intentionally */
32
+ --code-bg: light-dark(#2B2420, #F7F3EA);
33
+ --code-ink: light-dark(#F7F3EA, #2B2420);
34
+ --code-muted: light-dark(#A39787, #6B5E50);
35
+ --code-accent: light-dark(#E5B660, #836327);
36
+ --code-green: light-dark(#A8B86C, #537136);
37
+ --code-blue: light-dark(#94AFC9, #1F3A5F);
38
+ /* Typography — identical across modes */
39
+ --font-display: 'DM Serif Display', 'Playfair Display', 'Cormorant Garamond', Georgia, serif;
40
+ --font-script: 'Caveat', 'Shadows Into Light', cursive;
41
+ --font-serif: 'Noto Serif JP', 'Cormorant Garamond', Georgia, serif;
42
+ --font-sans: 'Noto Sans JP', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
43
+ --font-mono: 'JetBrains Mono', 'SFMono-Regular', Consolas, Menlo, monospace;
44
+ /* Radius — identical */
45
+ --r-sm: 2px;
46
+ --r-md: 3px;
47
+ --r-lg: 6px;
48
+ /* Shadows — ink bleeding through paper / deep drop on charcoal */
49
+ --shadow-sm: 0 1px 2px light-dark(rgba(42, 36, 30, 0.06), rgba(0, 0, 0, 0.35));
50
+ --shadow-md: 0 4px 18px light-dark(rgba(42, 36, 30, 0.08), rgba(0, 0, 0, 0.45));
51
+ --shadow-lg: 0 12px 40px light-dark(rgba(42, 36, 30, 0.12), rgba(0, 0, 0, 0.55));
52
+ --shadow-xl: 0 20px 50px light-dark(rgba(42, 36, 30, 0.16), rgba(0, 0, 0, 0.65));
53
+ --shadow-2xl: 0 28px 70px light-dark(rgba(42, 36, 30, 0.22), rgba(0, 0, 0, 0.75));
54
+ /* Blur / glow — paper themes don't use either */
55
+ --blur-sm: none;
56
+ --blur-md: none;
57
+ --blur-lg: none;
58
+ --glow-sm: 0 0 0 transparent;
59
+ --glow-md: 0 0 0 transparent;
60
+ --glow-lg: 0 0 0 transparent;
61
+ /* Motion — editorial pace, identical */
62
+ --duration-fast: 180ms;
63
+ --duration-normal: 240ms;
64
+ --duration-slow: 380ms;
65
+ --ease: cubic-bezier(0.33, 0.66, 0.33, 1);
66
+ /* Semantic aliases */
67
+ --background-default: var(--paper);
68
+ --background-subtle: var(--paper-sunk);
69
+ --background-navbar: var(--paper-raised);
70
+ --surface-default: var(--paper);
71
+ --surface-raised: var(--paper-raised);
72
+ --surface-sunk: var(--paper-sunk);
73
+ --surface-muted: var(--paper-sunk);
74
+ --surface-subtle: var(--paper-raised);
75
+ --surface-emphasis: var(--ink);
76
+ --surface-glass: var(--paper-glass);
77
+ --text-primary: var(--ink);
78
+ --text-secondary: var(--ink-soft);
79
+ --text-muted: var(--ink-faint);
80
+ --text-tertiary: var(--muted);
81
+ --text-inverse: var(--paper);
82
+ --text-link: var(--ai);
83
+ --text-link-hover: var(--ai-ink);
84
+ --border-default: var(--hair);
85
+ --border-subtle: var(--hair-soft);
86
+ --border-emphasis: light-dark(var(--ink), var(--guide));
87
+ --border-focus: var(--ai);
88
+ --interactive-hover: light-dark(rgba(42, 36, 30, 0.06), rgba(244, 239, 226, 0.06));
89
+ --interactive-active: light-dark(rgba(42, 36, 30, 0.12), rgba(244, 239, 226, 0.12));
90
+ --brand-primary: var(--ai);
91
+ --brand-primary-hover: var(--ai-ink);
92
+ --action-primary-default: var(--ai);
93
+ --action-primary-hover: var(--ai-ink);
94
+ --action-primary-active: var(--ai-ink);
95
+ --action-primary-wash: var(--ai-wash);
96
+ --action-secondary-default: var(--shu);
97
+ --action-secondary-hover: var(--shu);
98
+ --action-secondary-active: var(--shu);
99
+ --action-secondary-wash: var(--shu-wash);
100
+ --action-tertiary-default: var(--ochre);
101
+ --action-tertiary-hover: var(--ochre);
102
+ --action-tertiary-active: var(--ochre);
103
+ --action-tertiary-wash: var(--ochre-wash);
104
+ --feedback-info: var(--ai);
105
+ --feedback-success: var(--code-green);
106
+ --feedback-warning: var(--ochre);
107
+ --feedback-error: var(--shu);
108
+ --info-default: var(--ai);
109
+ --info-subtle: var(--ai-wash);
110
+ --info-text: var(--ai-ink);
111
+ --success-default: light-dark(#5A7A3A, #8DA86A);
112
+ --success-subtle: light-dark(#EAEFDC, #1F2B14);
113
+ --success-text: light-dark(#3F5627, #B8CC8E);
114
+ --warning-default: var(--ochre);
115
+ --warning-subtle: var(--ochre-wash);
116
+ --warning-text: light-dark(#6B4E1E, #E8BF6E);
117
+ --error-default: var(--shu);
118
+ --error-subtle: var(--shu-wash);
119
+ --error-text: light-dark(#7A1A1F, #F08A72);
120
+ /* Library scales — identical */
121
+ /* Spacing rhythm — THE knob for how dense or airy this theme feels.
122
+ The numbered scale is the source of truth: every component reads
123
+ var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
124
+ are emitted by the library as references to these, so they follow
125
+ automatically. Change a value here and the whole page re-proportions.
126
+ Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
127
+ --space-0: 0; /* flush */
128
+ --space-1: 0.5rem; /* tight inner gap */
129
+ --space-2: 0.75rem; /* control padding */
130
+ --space-3: 0.875rem; /* (no t-shirt) */
131
+ --space-4: 1rem; /* default rhythm */
132
+ --space-5: 1.5rem; /* section gap */
133
+ --space-6: 2rem; /* block gap */
134
+ --space-7: 3rem; /* major gap */
135
+ --space-8: 4rem; /* page section */
136
+ --space-9: 6rem; /* hero rhythm */
137
+ --radius-sm: var(--r-sm);
138
+ --radius-md: var(--r-md);
139
+ --radius-lg: var(--r-lg);
140
+ --radius-xl: 0.75rem;
141
+ --radius-full: 9999px;
142
+ --font-primary: var(--font-sans);
143
+ --font-size-base: 1rem;
144
+ --line-height-normal: 1.5;
145
+ --font-weight-medium: 500;
146
+ --z-sticky: 1020;
147
+ --z-dropdown: 1030;
148
+ --z-backdrop: 1040;
149
+ --z-modal: 1050;
150
+ --z-popover: 1060;
151
+ --z-tooltip: 1070;
152
+ }