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,155 @@
1
+ @charset "UTF-8";
2
+ @import 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Caveat:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap';
3
+ :root, :root[data-theme=graphite] {
4
+ color-scheme: light dark;
5
+ /* Surfaces — silver (light) / dark aluminum (dark) */
6
+ --paper: light-dark(#F2F4F6, #1A1A1C);
7
+ --paper-raised: light-dark(#FFF, #242426);
8
+ --paper-sunk: light-dark(#E2E5E8, #141416);
9
+ --paper-glass: light-dark(rgba(255, 255, 255, 0.72), rgba(36, 36, 38, 0.72));
10
+ /* Ink — cool near-black / warm white */
11
+ --ink: light-dark(#1A1F26, #F5F5F7);
12
+ --ink-soft: light-dark(#3A4048, #C7C7CC);
13
+ --ink-faint: light-dark(#5E646D, #98989D);
14
+ --graphite: light-dark(#2A2F36, #AEAEB2);
15
+ --muted: light-dark(#878D95, #6A6A6E);
16
+ /* Construction lines — translucent ink (light) / translucent white (dark) */
17
+ --guide: light-dark(rgba(26, 31, 38, 0.16), rgba(255, 255, 255, 0.16));
18
+ --guide-soft: light-dark(rgba(26, 31, 38, 0.08), rgba(255, 255, 255, 0.08));
19
+ --hair: light-dark(rgba(26, 31, 38, 0.12), rgba(255, 255, 255, 0.12));
20
+ --hair-soft: light-dark(rgba(26, 31, 38, 0.06), rgba(255, 255, 255, 0.06));
21
+ /* Primary accent — cool blue-gray (light) / Apple dark blue (dark) */
22
+ --ai: light-dark(#4A6585, #0A84FF);
23
+ --ai-ink: light-dark(#2F4866, #409CFF);
24
+ --ai-wash: light-dark(rgba(74, 101, 133, 0.10), rgba(10, 132, 255, 0.14));
25
+ /* Seal */
26
+ --shu: light-dark(#C24D40, #FF453A);
27
+ --shu-wash: light-dark(rgba(194, 77, 64, 0.10), rgba(255, 69, 58, 0.14));
28
+ /* Draft / marginalia */
29
+ --ochre: light-dark(#B5873A, #FF9F0A);
30
+ --ochre-wash: light-dark(rgba(181, 135, 58, 0.10), rgba(255, 159, 10, 0.12));
31
+ /* Code surface */
32
+ --code-bg: light-dark(#F6F7F9, #0D0D0F);
33
+ --code-ink: light-dark(#1A1F26, #E8E8ED);
34
+ --code-muted: light-dark(#666B73, #818186);
35
+ --code-accent: light-dark(#87652B, #FFB86C);
36
+ --code-green: light-dark(#3D7746, #A8E6A1);
37
+ --code-blue: light-dark(#4A6585, #9AD4F7);
38
+ /* Typography — SF stack, identical */
39
+ --font-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
40
+ --font-script: 'Caveat', 'Shadows Into Light', cursive;
41
+ --font-serif: 'New York', 'Iowan Old Style', 'Cormorant Garamond', Georgia, serif;
42
+ --font-sans: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
43
+ --font-mono: 'JetBrains Mono', 'SF Mono', 'SFMono-Regular', ui-monospace, Menlo, Consolas, monospace;
44
+ /* Radius — identical */
45
+ --r-sm: 6px;
46
+ --r-md: 10px;
47
+ --r-lg: 14px;
48
+ /* Shadows — restrained / deep drop on dark */
49
+ --shadow-sm: 0 1px 2px light-dark(rgba(26, 31, 38, 0.05), rgba(0, 0, 0, 0.35));
50
+ --shadow-md: 0 4px 14px light-dark(rgba(26, 31, 38, 0.07), rgba(0, 0, 0, 0.45));
51
+ --shadow-lg: 0 12px 32px light-dark(rgba(26, 31, 38, 0.10), rgba(0, 0, 0, 0.55));
52
+ --shadow-xl: 0 20px 50px light-dark(rgba(26, 31, 38, 0.13), rgba(0, 0, 0, 0.65));
53
+ --shadow-2xl: 0 28px 70px light-dark(rgba(26, 31, 38, 0.17), rgba(0, 0, 0, 0.75));
54
+ /* Blur — graphite doesn't use it */
55
+ --blur-sm: none;
56
+ --blur-md: none;
57
+ --blur-lg: none;
58
+ /* Glow — inset rim-highlight that sells milled metal in BOTH modes */
59
+ --glow-sm: inset 0 1px 0 light-dark(rgba(255, 255, 255, 0.50), rgba(255, 255, 255, 0.06));
60
+ --glow-md: inset 0 1px 0 light-dark(rgba(255, 255, 255, 0.65), rgba(255, 255, 255, 0.08)),
61
+ 0 1px 3px light-dark(rgba(26, 31, 38, 0.06), rgba(0, 0, 0, 0.35));
62
+ --glow-lg: inset 0 1px 0 light-dark(rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0.10)),
63
+ 0 12px 32px light-dark(rgba(26, 31, 38, 0.10), rgba(0, 0, 0, 0.55));
64
+ /* Motion — Apple-snappy, identical */
65
+ --duration-fast: 160ms;
66
+ --duration-normal: 220ms;
67
+ --duration-slow: 340ms;
68
+ --ease: cubic-bezier(0.25, 0.1, 0.25, 1);
69
+ /* Semantic aliases */
70
+ --background-default: var(--paper);
71
+ --background-subtle: var(--paper-sunk);
72
+ --background-navbar: var(--paper-raised);
73
+ --surface-default: var(--paper);
74
+ --surface-raised: var(--paper-raised);
75
+ --surface-sunk: var(--paper-sunk);
76
+ --surface-muted: var(--paper-sunk);
77
+ --surface-subtle: var(--paper-raised);
78
+ --surface-emphasis: var(--ink);
79
+ --surface-glass: var(--paper-glass);
80
+ --text-primary: var(--ink);
81
+ --text-secondary: var(--ink-soft);
82
+ --text-muted: var(--ink-faint);
83
+ --text-tertiary: var(--muted);
84
+ --text-inverse: var(--paper);
85
+ --text-link: var(--ai);
86
+ --text-link-hover: var(--ai-ink);
87
+ --border-default: var(--hair);
88
+ --border-subtle: var(--hair-soft);
89
+ --border-emphasis: var(--ink);
90
+ --border-focus: var(--ai);
91
+ --interactive-hover: light-dark(rgba(26, 31, 38, 0.04), rgba(255, 255, 255, 0.06));
92
+ --interactive-active: light-dark(rgba(26, 31, 38, 0.08), rgba(255, 255, 255, 0.10));
93
+ --brand-primary: var(--ai);
94
+ --brand-primary-hover: var(--ai-ink);
95
+ --action-primary-default: var(--ai);
96
+ --action-primary-hover: var(--ai-ink);
97
+ --action-primary-active: var(--ai-ink);
98
+ --action-primary-wash: var(--ai-wash);
99
+ --action-secondary-default: var(--shu);
100
+ --action-secondary-hover: var(--shu);
101
+ --action-secondary-active: var(--shu);
102
+ --action-secondary-wash: var(--shu-wash);
103
+ --action-tertiary-default: var(--ochre);
104
+ --action-tertiary-hover: var(--ochre);
105
+ --action-tertiary-active: var(--ochre);
106
+ --action-tertiary-wash: var(--ochre-wash);
107
+ --feedback-info: var(--ai);
108
+ --feedback-success: var(--code-green);
109
+ --feedback-warning: var(--ochre);
110
+ --feedback-error: var(--shu);
111
+ --info-default: var(--ai);
112
+ --info-subtle: light-dark(rgba(74, 101, 133, 0.10), rgba(10, 132, 255, 0.14));
113
+ --info-text: light-dark(var(--ai-ink), #409CFF);
114
+ --success-default: light-dark(#28A745, #30D158);
115
+ --success-subtle: light-dark(rgba(40, 167, 69, 0.10), rgba(48, 209, 88, 0.14));
116
+ --success-text: light-dark(#1B7530, #5FE37F);
117
+ --warning-default: var(--ochre);
118
+ --warning-subtle: light-dark(rgba(181, 135, 58, 0.10), rgba(255, 159, 10, 0.14));
119
+ --warning-text: light-dark(#7A5A22, #FFB340);
120
+ --error-default: var(--shu);
121
+ --error-subtle: light-dark(rgba(194, 77, 64, 0.10), rgba(255, 69, 58, 0.14));
122
+ --error-text: light-dark(#8A2F25, #FF6961);
123
+ /* Library scales — identical */
124
+ /* Spacing rhythm — THE knob for how dense or airy this theme feels.
125
+ The numbered scale is the source of truth: every component reads
126
+ var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
127
+ are emitted by the library as references to these, so they follow
128
+ automatically. Change a value here and the whole page re-proportions.
129
+ Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
130
+ --space-0: 0; /* flush */
131
+ --space-1: 0.5rem; /* tight inner gap */
132
+ --space-2: 0.75rem; /* control padding */
133
+ --space-3: 0.875rem; /* (no t-shirt) */
134
+ --space-4: 1rem; /* default rhythm */
135
+ --space-5: 1.5rem; /* section gap */
136
+ --space-6: 2rem; /* block gap */
137
+ --space-7: 3rem; /* major gap */
138
+ --space-8: 4rem; /* page section */
139
+ --space-9: 6rem; /* hero rhythm */
140
+ --radius-sm: var(--r-sm);
141
+ --radius-md: var(--r-md);
142
+ --radius-lg: var(--r-lg);
143
+ --radius-xl: 0.75rem;
144
+ --radius-full: 9999px;
145
+ --font-primary: var(--font-sans);
146
+ --font-size-base: 1rem;
147
+ --line-height-normal: 1.5;
148
+ --font-weight-medium: 500;
149
+ --z-sticky: 1020;
150
+ --z-dropdown: 1030;
151
+ --z-backdrop: 1040;
152
+ --z-modal: 1050;
153
+ --z-popover: 1060;
154
+ --z-tooltip: 1070;
155
+ }
@@ -0,0 +1,223 @@
1
+ @charset "UTF-8";
2
+ /* ============================================================
3
+ THEME — Graphite (dark)
4
+ -----------------------------------------------------------
5
+ Standalone file for `[data-theme="graphite-dark"]` consumers.
6
+ This is the ONE FILE users swap to reskin their site.
7
+ Replace this file with any other theme.css to change the
8
+ entire look & feel. Tokens only — no component CSS lives here.
9
+
10
+ Mood: Space Gray MacBook aluminum + Xcode dark. Warm dark
11
+ grays — never purple-black, never gamery. The inset rim-
12
+ highlights on --glow-* are what sell the milled-metal edge.
13
+
14
+ TOKEN CONTRACT
15
+ -----------------------------------------------------------
16
+ Every theme MUST declare every variable in this file, even
17
+ if it sets it to a neutral value (e.g. --blur-md: none;).
18
+ That's what guarantees a clean one-file swap.
19
+
20
+ Slots:
21
+ Surfaces : --paper, --paper-raised, --paper-sunk, --paper-glass
22
+ Ink : --ink, --ink-soft, --ink-faint, --graphite, --muted
23
+ Lines : --guide, --guide-soft, --hair, --hair-soft
24
+ Primary : --ai, --ai-ink, --ai-wash (Apple system blue in graphite)
25
+ Seal : --shu, --shu-wash (Apple dark-mode red)
26
+ Accent : --ochre, --ochre-wash (Apple amber)
27
+ Code : --code-bg/ink/muted/accent/green/blue
28
+ Type : --font-display/script/serif/sans/mono
29
+ Radius : --r-sm, --r-md, --r-lg
30
+ Shadow : --shadow-sm, --shadow-md, --shadow-lg
31
+ Blur : --blur-sm, --blur-md, --blur-lg (glass only; else 'none')
32
+ Glow : --glow-sm, --glow-md, --glow-lg (rim-highlight / inset milled edge)
33
+ Motion : --duration-fast, --duration-normal, --duration-slow, --ease
34
+
35
+ DARK MODE NOTE
36
+ -----------------------------------------------------------
37
+ --paper* slots hold SURFACE color, --ink* slots hold TEXT
38
+ color. In Graphite, --paper is chassis-dark and --ink is
39
+ warm-white. The semantic is "background / foreground,"
40
+ not "light / dark" — nothing is renamed.
41
+ ============================================================ */
42
+ @import 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Caveat:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap';
43
+ :root, :root[data-theme=graphite-dark] {
44
+ color-scheme: dark;
45
+ /* Surfaces — milled aluminum chassis (dark) */
46
+ --paper: #1A1A1C;
47
+ --paper-raised: #242426;
48
+ --paper-sunk: #141416;
49
+ --paper-glass: rgba(36, 36, 38, 0.72);
50
+ /* Ink — warm whites on dark */
51
+ --ink: #F5F5F7;
52
+ --ink-soft: #C7C7CC;
53
+ --ink-faint: #98989D;
54
+ --graphite: #AEAEB2;
55
+ --muted: #6A6A6E;
56
+ /* Construction lines — translucent white hairlines */
57
+ --guide: rgba(255, 255, 255, 0.16);
58
+ --guide-soft: rgba(255, 255, 255, 0.08);
59
+ --hair: rgba(255, 255, 255, 0.12);
60
+ --hair-soft: rgba(255, 255, 255, 0.06);
61
+ /* Primary accent — Apple dark-mode system blue */
62
+ --ai: #0A84FF;
63
+ --ai-ink: #409CFF;
64
+ --ai-wash: rgba(10, 132, 255, 0.14);
65
+ /* Seal — Apple dark-mode red (reserve for emphasis) */
66
+ --shu: #FF453A;
67
+ --shu-wash: rgba(255, 69, 58, 0.14);
68
+ /* Draft / marginalia — Apple amber */
69
+ --ochre: #FF9F0A;
70
+ --ochre-wash: rgba(255, 159, 10, 0.12);
71
+ /* Code surface — Xcode deep */
72
+ --code-bg: #0D0D0F;
73
+ --code-ink: #E8E8ED;
74
+ --code-muted: #828287;
75
+ --code-accent: #FFB86C;
76
+ --code-green: #A8E6A1;
77
+ --code-blue: #9AD4F7;
78
+ /* Typography — SF system stack */
79
+ --font-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
80
+ --font-script: 'Caveat', 'Shadows Into Light', cursive;
81
+ --font-serif: 'New York', 'Iowan Old Style', 'Cormorant Garamond', Georgia, serif;
82
+ --font-sans: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
83
+ --font-mono: 'JetBrains Mono', 'SF Mono', 'SFMono-Regular', ui-monospace, Menlo, Consolas, monospace;
84
+ /* Radius — Apple UI standard */
85
+ --r-sm: 6px;
86
+ --r-md: 10px;
87
+ --r-lg: 14px;
88
+ /* Shadows — deep drop on black */
89
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.35);
90
+ --shadow-md: 0 4px 18px rgba(0, 0, 0, 0.45);
91
+ --shadow-lg: 0 12px 40px rgba(0, 0, 0, 0.55);
92
+ --shadow-xl: 0 20px 50px rgba(0, 0, 0, 0.65);
93
+ --shadow-2xl: 0 28px 70px rgba(0, 0, 0, 0.75);
94
+ /* Blur — graphite doesn't use it; declared so swap stays lossless */
95
+ --blur-sm: none;
96
+ --blur-md: none;
97
+ --blur-lg: none;
98
+ /* Glow — inset rim-highlight that sells milled aluminum */
99
+ --glow-sm: inset 0 1px 0 rgba(255, 255, 255, 0.06);
100
+ --glow-md: inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 1px 3px rgba(0, 0, 0, 0.35);
101
+ --glow-lg: inset 0 1px 0 rgba(255, 255, 255, 0.10), 0 12px 40px rgba(0, 0, 0, 0.55);
102
+ /* Motion — Apple-snappy */
103
+ --duration-fast: 160ms;
104
+ --duration-normal: 220ms;
105
+ --duration-slow: 340ms;
106
+ --ease: cubic-bezier(0.25, 0.1, 0.25, 1);
107
+ /* ----------------------------------------------------------
108
+ SEMANTIC ALIASES
109
+ -----------------------------------------------------------
110
+ Bridge the library's expected names to this theme's native
111
+ palette. Components can now write m.color(surface-default)
112
+ or var(--surface-default) and reskin with the theme
113
+ automatically.
114
+ ---------------------------------------------------------- */
115
+ /* Backgrounds (page-level) */
116
+ --background-default: var(--paper);
117
+ --background-subtle: var(--paper-sunk);
118
+ --background-navbar: var(--paper-raised);
119
+ /* Surfaces */
120
+ --surface-default: var(--paper);
121
+ --surface-raised: var(--paper-raised);
122
+ --surface-sunk: var(--paper-sunk);
123
+ --surface-muted: var(--paper-sunk);
124
+ --surface-subtle: var(--paper-raised);
125
+ --surface-emphasis: var(--ink);
126
+ --surface-glass: var(--paper-glass);
127
+ /* Text */
128
+ --text-primary: var(--ink);
129
+ --text-secondary: var(--ink-soft);
130
+ --text-muted: var(--ink-faint);
131
+ --text-tertiary: var(--muted);
132
+ --text-inverse: var(--paper);
133
+ --text-link: var(--ai);
134
+ --text-link-hover: var(--ai-ink);
135
+ /* Borders */
136
+ --border-default: var(--hair);
137
+ --border-subtle: var(--hair-soft);
138
+ --border-emphasis: var(--ink);
139
+ --border-focus: var(--ai);
140
+ /* Interactive (hover / active wash layers) — translucent WHITE on dark */
141
+ --interactive-hover: rgba(255, 255, 255, 0.06);
142
+ --interactive-active: rgba(255, 255, 255, 0.10);
143
+ /* Brand (identity — action-primary usually references these) */
144
+ --brand-primary: var(--ai);
145
+ --brand-primary-hover: var(--ai-ink);
146
+ /* Action (primary / secondary / tertiary) */
147
+ --action-primary-default: var(--ai);
148
+ --action-primary-hover: var(--ai-ink);
149
+ --action-primary-active: var(--ai-ink);
150
+ --action-primary-wash: var(--ai-wash);
151
+ --action-secondary-default: var(--shu);
152
+ --action-secondary-hover: var(--shu);
153
+ --action-secondary-active: var(--shu);
154
+ --action-secondary-wash: var(--shu-wash);
155
+ --action-tertiary-default: var(--ochre);
156
+ --action-tertiary-hover: var(--ochre);
157
+ --action-tertiary-active: var(--ochre);
158
+ --action-tertiary-wash: var(--ochre-wash);
159
+ /* Feedback / status (high-level semantic) */
160
+ --feedback-info: var(--ai);
161
+ --feedback-success: var(--code-green);
162
+ --feedback-warning: var(--ochre);
163
+ --feedback-error: var(--shu);
164
+ /* Status — info (three-part: default / subtle / text) */
165
+ --info-default: var(--ai);
166
+ --info-subtle: rgba(10, 132, 255, 0.14);
167
+ --info-text: #409CFF;
168
+ /* Status — success (Apple dark-mode green) */
169
+ --success-default: #30D158;
170
+ --success-subtle: rgba(48, 209, 88, 0.14);
171
+ --success-text: #5FE37F;
172
+ /* Status — warning */
173
+ --warning-default: var(--ochre);
174
+ --warning-subtle: rgba(255, 159, 10, 0.14);
175
+ --warning-text: #FFB340;
176
+ /* Status — error */
177
+ --error-default: var(--shu);
178
+ --error-subtle: rgba(255, 69, 58, 0.14);
179
+ --error-text: #FF6961;
180
+ /* ----------------------------------------------------------
181
+ LIBRARY SCALES (space / radius / type / motion / z)
182
+ -----------------------------------------------------------
183
+ The library mixins emit var(--space-<key>), var(--radius-<key>),
184
+ var(--font-primary), var(--font-size-<key>), var(--z-<key>), …
185
+ Themes declare the slots so those mixins always resolve.
186
+ ---------------------------------------------------------- */
187
+ /* Space scale (rem for accessibility) */
188
+ /* Spacing rhythm — THE knob for how dense or airy this theme feels.
189
+ The numbered scale is the source of truth: every component reads
190
+ var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
191
+ are emitted by the library as references to these, so they follow
192
+ automatically. Change a value here and the whole page re-proportions.
193
+ Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
194
+ --space-0: 0; /* flush */
195
+ --space-1: 0.5rem; /* tight inner gap */
196
+ --space-2: 0.75rem; /* control padding */
197
+ --space-3: 0.875rem; /* (no t-shirt) */
198
+ --space-4: 1rem; /* default rhythm */
199
+ --space-5: 1.5rem; /* section gap */
200
+ --space-6: 2rem; /* block gap */
201
+ --space-7: 3rem; /* major gap */
202
+ --space-8: 4rem; /* page section */
203
+ --space-9: 6rem; /* hero rhythm */
204
+ /* Radius alias — mirrors --r-* with standard names so
205
+ `m.radius(size)` in the library finds --radius-<size>. */
206
+ --radius-sm: var(--r-sm);
207
+ --radius-md: var(--r-md);
208
+ --radius-lg: var(--r-lg);
209
+ --radius-xl: 0.75rem;
210
+ --radius-full: 9999px;
211
+ /* Typography — base body font + key scale slots */
212
+ --font-primary: var(--font-sans);
213
+ --font-size-base: 1rem;
214
+ --line-height-normal: 1.5;
215
+ --font-weight-medium: 500;
216
+ /* Z-index layers */
217
+ --z-sticky: 1020;
218
+ --z-dropdown: 1030;
219
+ --z-backdrop: 1040;
220
+ --z-modal: 1050;
221
+ --z-popover: 1060;
222
+ --z-tooltip: 1070;
223
+ }
@@ -0,0 +1,191 @@
1
+ @charset "UTF-8";
2
+ /* ============================================================
3
+ THEME — Graphite Light
4
+ -----------------------------------------------------------
5
+ Light companion to Graphite (dark machined-aluminum). Same
6
+ design language: SF system stack, Apple-snappy motion,
7
+ AppKit radii (6/10/14), restrained shadows. Only the COLOR
8
+ palette inverts — the chassis becomes brushed silver
9
+ instead of milled space-gray.
10
+
11
+ Mood: brushed-silver day-mode. Cool neutrals (never warm,
12
+ never paper), very thin hairlines, minimal lifted shadows
13
+ to suggest precision-machined surfaces. Same blue-gray
14
+ accent (Apple system blue, light variant).
15
+
16
+ Opt-in via `<html data-theme="graphite-light">`. Pair with
17
+ graphite/theme.css to ship a project with a default dark
18
+ aluminum mode and an opt-in light brushed-silver mode.
19
+ ============================================================ */
20
+ @import 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Caveat:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap';
21
+ :root, :root[data-theme=graphite-light] {
22
+ color-scheme: light;
23
+ /* Surfaces — brushed silver chassis (light) */
24
+ --paper: #F2F4F6;
25
+ --paper-raised: #FFF;
26
+ --paper-sunk: #E2E5E8;
27
+ --paper-glass: rgba(255, 255, 255, 0.72);
28
+ /* Ink — cool near-black */
29
+ --ink: #1A1F26;
30
+ --ink-soft: #3A4048;
31
+ --ink-faint: #5E646D;
32
+ --graphite: #2A2F36;
33
+ --muted: #878D95;
34
+ /* Construction lines — translucent ink hairlines */
35
+ --guide: rgba(26, 31, 38, 0.16);
36
+ --guide-soft: rgba(26, 31, 38, 0.08);
37
+ --hair: rgba(26, 31, 38, 0.12);
38
+ --hair-soft: rgba(26, 31, 38, 0.06);
39
+ /* Primary accent — cool blue-gray (Apple system blue, light) */
40
+ --ai: #4A6585;
41
+ --ai-ink: #2F4866;
42
+ --ai-wash: rgba(74, 101, 133, 0.10);
43
+ /* Seal — restrained warm red */
44
+ --shu: #C24D40;
45
+ --shu-wash: rgba(194, 77, 64, 0.10);
46
+ /* Draft / marginalia — warm gold */
47
+ --ochre: #B5873A;
48
+ --ochre-wash: rgba(181, 135, 58, 0.10);
49
+ /* Code surface — light Xcode */
50
+ --code-bg: #F6F7F9;
51
+ --code-ink: #1A1F26;
52
+ --code-muted: #656A72;
53
+ --code-accent: #86642B;
54
+ --code-green: #3F7A48;
55
+ --code-blue: #4A6585;
56
+ /* Typography — match Graphite (SF system stack) */
57
+ --font-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
58
+ --font-script: 'Caveat', 'Shadows Into Light', cursive;
59
+ --font-serif: 'New York', 'Iowan Old Style', 'Cormorant Garamond', Georgia, serif;
60
+ --font-sans: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
61
+ --font-mono: 'JetBrains Mono', 'SF Mono', 'SFMono-Regular', ui-monospace, Menlo, Consolas, monospace;
62
+ /* Radius — match Graphite (Apple UI standard) */
63
+ --r-sm: 6px;
64
+ --r-md: 10px;
65
+ --r-lg: 14px;
66
+ /* Shadows — restrained, lifted (machined precision) */
67
+ --shadow-sm: 0 1px 2px rgba(26, 31, 38, 0.05);
68
+ --shadow-md: 0 4px 14px rgba(26, 31, 38, 0.07);
69
+ --shadow-lg: 0 12px 32px rgba(26, 31, 38, 0.10);
70
+ --shadow-xl: 0 20px 50px rgba(26, 31, 38, 0.13);
71
+ --shadow-2xl: 0 28px 70px rgba(26, 31, 38, 0.17);
72
+ /* Blur — graphite doesn't use it */
73
+ --blur-sm: none;
74
+ --blur-md: none;
75
+ --blur-lg: none;
76
+ /* Glow — inset rim-highlight (sells brushed metal even in light) */
77
+ --glow-sm: inset 0 1px 0 rgba(255, 255, 255, 0.50);
78
+ --glow-md: inset 0 1px 0 rgba(255, 255, 255, 0.65), 0 1px 3px rgba(26, 31, 38, 0.06);
79
+ --glow-lg: inset 0 1px 0 rgba(255, 255, 255, 0.75), 0 12px 32px rgba(26, 31, 38, 0.10);
80
+ /* Motion — Apple-snappy, match Graphite */
81
+ --duration-fast: 160ms;
82
+ --duration-normal: 220ms;
83
+ --duration-slow: 340ms;
84
+ --ease: cubic-bezier(0.25, 0.1, 0.25, 1);
85
+ /* ----------------------------------------------------------
86
+ SEMANTIC ALIASES
87
+ ---------------------------------------------------------- */
88
+ /* Backgrounds */
89
+ --background-default: var(--paper);
90
+ --background-subtle: var(--paper-sunk);
91
+ --background-navbar: var(--paper-raised);
92
+ /* Surfaces */
93
+ --surface-default: var(--paper);
94
+ --surface-raised: var(--paper-raised);
95
+ --surface-sunk: var(--paper-sunk);
96
+ --surface-muted: var(--paper-sunk);
97
+ --surface-subtle: var(--paper-raised);
98
+ --surface-emphasis: var(--ink);
99
+ --surface-glass: var(--paper-glass);
100
+ /* Text */
101
+ --text-primary: var(--ink);
102
+ --text-secondary: var(--ink-soft);
103
+ --text-muted: var(--ink-faint);
104
+ --text-tertiary: var(--muted);
105
+ --text-inverse: var(--paper);
106
+ --text-link: var(--ai);
107
+ --text-link-hover: var(--ai-ink);
108
+ /* Borders */
109
+ --border-default: var(--hair);
110
+ --border-subtle: var(--hair-soft);
111
+ --border-emphasis: var(--ink);
112
+ --border-focus: var(--ai);
113
+ /* Interactive — translucent ink wash on light silver */
114
+ --interactive-hover: rgba(26, 31, 38, 0.04);
115
+ --interactive-active: rgba(26, 31, 38, 0.08);
116
+ /* Brand */
117
+ --brand-primary: var(--ai);
118
+ --brand-primary-hover: var(--ai-ink);
119
+ /* Action triplets */
120
+ --action-primary-default: var(--ai);
121
+ --action-primary-hover: var(--ai-ink);
122
+ --action-primary-active: var(--ai-ink);
123
+ --action-primary-wash: var(--ai-wash);
124
+ --action-secondary-default: var(--shu);
125
+ --action-secondary-hover: var(--shu);
126
+ --action-secondary-active: var(--shu);
127
+ --action-secondary-wash: var(--shu-wash);
128
+ --action-tertiary-default: var(--ochre);
129
+ --action-tertiary-hover: var(--ochre);
130
+ --action-tertiary-active: var(--ochre);
131
+ --action-tertiary-wash: var(--ochre-wash);
132
+ /* Feedback */
133
+ --feedback-info: var(--ai);
134
+ --feedback-success: var(--code-green);
135
+ --feedback-warning: var(--ochre);
136
+ --feedback-error: var(--shu);
137
+ /* Status — info */
138
+ --info-default: var(--ai);
139
+ --info-subtle: rgba(74, 101, 133, 0.10);
140
+ --info-text: var(--ai-ink);
141
+ /* Status — success (Apple light-mode green) */
142
+ --success-default: #28A745;
143
+ --success-subtle: rgba(40, 167, 69, 0.10);
144
+ --success-text: #1B7530;
145
+ /* Status — warning */
146
+ --warning-default: var(--ochre);
147
+ --warning-subtle: rgba(181, 135, 58, 0.10);
148
+ --warning-text: #7A5A22;
149
+ /* Status — error */
150
+ --error-default: var(--shu);
151
+ --error-subtle: rgba(194, 77, 64, 0.10);
152
+ --error-text: #8A2F25;
153
+ /* ----------------------------------------------------------
154
+ LIBRARY SCALES
155
+ ---------------------------------------------------------- */
156
+ /* Space scale */
157
+ /* Spacing rhythm — THE knob for how dense or airy this theme feels.
158
+ The numbered scale is the source of truth: every component reads
159
+ var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
160
+ are emitted by the library as references to these, so they follow
161
+ automatically. Change a value here and the whole page re-proportions.
162
+ Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
163
+ --space-0: 0; /* flush */
164
+ --space-1: 0.5rem; /* tight inner gap */
165
+ --space-2: 0.75rem; /* control padding */
166
+ --space-3: 0.875rem; /* (no t-shirt) */
167
+ --space-4: 1rem; /* default rhythm */
168
+ --space-5: 1.5rem; /* section gap */
169
+ --space-6: 2rem; /* block gap */
170
+ --space-7: 3rem; /* major gap */
171
+ --space-8: 4rem; /* page section */
172
+ --space-9: 6rem; /* hero rhythm */
173
+ /* Radius alias */
174
+ --radius-sm: var(--r-sm);
175
+ --radius-md: var(--r-md);
176
+ --radius-lg: var(--r-lg);
177
+ --radius-xl: 0.75rem;
178
+ --radius-full: 9999px;
179
+ /* Typography */
180
+ --font-primary: var(--font-sans);
181
+ --font-size-base: 1rem;
182
+ --line-height-normal: 1.5;
183
+ --font-weight-medium: 500;
184
+ /* Z-index */
185
+ --z-sticky: 1020;
186
+ --z-dropdown: 1030;
187
+ --z-backdrop: 1040;
188
+ --z-modal: 1050;
189
+ --z-popover: 1060;
190
+ --z-tooltip: 1070;
191
+ }