anentrypoint-design 0.0.120 → 0.0.121

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 (201) hide show
  1. package/README.md +253 -253
  2. package/app-shell.css +594 -594
  3. package/colors_and_type.css +226 -226
  4. package/community.css +1222 -817
  5. package/dist/.nojekyll +0 -0
  6. package/dist/247420.css +2055 -1650
  7. package/dist/247420.js +15 -15
  8. package/dist/app-shell.css +594 -0
  9. package/dist/colors_and_type.css +197 -0
  10. package/dist/favicon.svg +1 -0
  11. package/dist/index.html +308 -0
  12. package/dist/preview/buttons.html +28 -0
  13. package/dist/preview/colors-core.html +45 -0
  14. package/dist/preview/colors-lore.html +28 -0
  15. package/dist/preview/colors-semantic.html +34 -0
  16. package/dist/preview/dateline.html +19 -0
  17. package/dist/preview/dropzone.html +30 -0
  18. package/dist/preview/file-grid.html +19 -0
  19. package/dist/preview/file-row.html +20 -0
  20. package/dist/preview/file-toolbar.html +40 -0
  21. package/dist/preview/file-viewer.html +31 -0
  22. package/dist/preview/header.html +24 -0
  23. package/dist/preview/icons-unicode.html +26 -0
  24. package/dist/preview/index-row.html +25 -0
  25. package/dist/preview/inputs.html +22 -0
  26. package/dist/preview/manifesto.html +52 -0
  27. package/dist/preview/motion-default.js +106 -0
  28. package/dist/preview/rules.html +16 -0
  29. package/dist/preview/spacing.html +18 -0
  30. package/dist/preview/stamps-lore.html +20 -0
  31. package/dist/preview/stamps.html +14 -0
  32. package/dist/preview/theme-ink.html +15 -0
  33. package/dist/preview/type-display.html +16 -0
  34. package/dist/preview/type-mono.html +15 -0
  35. package/dist/preview/type-prose.html +11 -0
  36. package/dist/preview/type-scale.html +20 -0
  37. package/dist/preview/wordmarks.html +28 -0
  38. package/dist/robots.txt +8 -0
  39. package/dist/site/content/globals/navigation.yaml +5 -0
  40. package/dist/site/content/globals/site.yaml +16 -0
  41. package/dist/site/content/pages/freddie.yaml +88 -0
  42. package/dist/site/content/pages/home.yaml +190 -0
  43. package/dist/site/theme.mjs +368 -0
  44. package/dist/sitemap.xml +31 -0
  45. package/dist/slides/deck-stage-overlay.js +63 -0
  46. package/dist/slides/deck-stage-state.js +81 -0
  47. package/dist/slides/deck-stage-style.js +117 -0
  48. package/dist/slides/deck-stage.js +159 -0
  49. package/dist/slides/index.html +276 -0
  50. package/dist/src/bootstrap.js +25 -0
  51. package/dist/src/components/chat.js +199 -0
  52. package/dist/src/components/community.js +167 -0
  53. package/dist/src/components/content.js +213 -0
  54. package/dist/src/components/files-modals.js +107 -0
  55. package/dist/src/components/files.js +118 -0
  56. package/dist/src/components/freddie/helpers.js +50 -0
  57. package/dist/src/components/freddie.js +33 -0
  58. package/dist/src/components/shell.js +117 -0
  59. package/dist/src/components/theme-toggle.js +70 -0
  60. package/dist/src/components.js +52 -0
  61. package/dist/src/debug.js +30 -0
  62. package/dist/src/deck-stage.js +21 -0
  63. package/dist/src/highlight.js +32 -0
  64. package/dist/src/index.js +86 -0
  65. package/dist/src/kits/os/about-app.js +52 -0
  66. package/dist/src/kits/os/app-panes.css +152 -0
  67. package/dist/src/kits/os/browser-app.js +58 -0
  68. package/dist/src/kits/os/files-app.js +44 -0
  69. package/dist/src/kits/os/freddie/helpers.js +59 -0
  70. package/dist/src/kits/os/freddie/pages-chat.js +143 -0
  71. package/dist/src/kits/os/freddie/pages-core.js +101 -0
  72. package/dist/src/kits/os/freddie/pages-os.js +51 -0
  73. package/dist/src/kits/os/freddie/pages-tools.js +183 -0
  74. package/dist/src/kits/os/freddie/routes.js +24 -0
  75. package/dist/src/kits/os/freddie-dashboard.css +51 -0
  76. package/dist/src/kits/os/freddie-dashboard.js +101 -0
  77. package/dist/src/kits/os/icons.js +17 -0
  78. package/dist/src/kits/os/index.js +5 -0
  79. package/dist/src/kits/os/launcher.css +61 -0
  80. package/dist/src/kits/os/launcher.js +79 -0
  81. package/dist/src/kits/os/monitor-app.js +34 -0
  82. package/dist/src/kits/os/shell.js +214 -0
  83. package/dist/src/kits/os/terminal-app.js +45 -0
  84. package/dist/src/kits/os/theme.css +412 -0
  85. package/dist/src/kits/os/validate.css +19 -0
  86. package/dist/src/kits/os/validator-app.js +55 -0
  87. package/dist/src/kits/os/wm.css +115 -0
  88. package/dist/src/kits/os/wm.js +111 -0
  89. package/dist/src/markdown.js +39 -0
  90. package/dist/src/motion.js +35 -0
  91. package/dist/src/page-html.js +196 -0
  92. package/dist/src/styles.js +25 -0
  93. package/dist/src/theme.js +99 -0
  94. package/dist/src/web-components/ds-chat.js +45 -0
  95. package/dist/ui_kits/aicat/README.md +7 -0
  96. package/dist/ui_kits/aicat/app.js +156 -0
  97. package/dist/ui_kits/aicat/index.html +26 -0
  98. package/dist/ui_kits/aicat/sample-square.png +0 -0
  99. package/dist/ui_kits/aicat/sample-svg.svg +1 -0
  100. package/dist/ui_kits/aicat/sample.pdf +32 -0
  101. package/dist/ui_kits/blog/README.md +3 -0
  102. package/dist/ui_kits/blog/index.html +90 -0
  103. package/dist/ui_kits/chat/README.md +5 -0
  104. package/dist/ui_kits/chat/app.js +110 -0
  105. package/dist/ui_kits/chat/index.html +26 -0
  106. package/dist/ui_kits/chat/sample-square.png +0 -0
  107. package/dist/ui_kits/chat/sample-svg.svg +1 -0
  108. package/dist/ui_kits/chat/sample.pdf +32 -0
  109. package/dist/ui_kits/community/app.js +134 -0
  110. package/dist/ui_kits/community/index.html +24 -0
  111. package/dist/ui_kits/dashboard/app.js +92 -0
  112. package/dist/ui_kits/dashboard/index.html +26 -0
  113. package/dist/ui_kits/docs/README.md +3 -0
  114. package/dist/ui_kits/docs/index.html +123 -0
  115. package/dist/ui_kits/error_404/app.js +56 -0
  116. package/dist/ui_kits/error_404/index.html +26 -0
  117. package/dist/ui_kits/file_browser/README.md +48 -0
  118. package/dist/ui_kits/file_browser/app.js +231 -0
  119. package/dist/ui_kits/file_browser/index.html +33 -0
  120. package/dist/ui_kits/gallery/app.js +121 -0
  121. package/dist/ui_kits/gallery/index.html +26 -0
  122. package/dist/ui_kits/homepage/README.md +7 -0
  123. package/dist/ui_kits/homepage/app.js +167 -0
  124. package/dist/ui_kits/homepage/index.html +46 -0
  125. package/dist/ui_kits/project_page/README.md +3 -0
  126. package/dist/ui_kits/project_page/app.js +154 -0
  127. package/dist/ui_kits/project_page/index.html +45 -0
  128. package/dist/ui_kits/search/app.js +107 -0
  129. package/dist/ui_kits/search/index.html +26 -0
  130. package/dist/ui_kits/settings/app.js +133 -0
  131. package/dist/ui_kits/settings/index.html +26 -0
  132. package/dist/ui_kits/signin/app.js +115 -0
  133. package/dist/ui_kits/signin/index.html +26 -0
  134. package/dist/ui_kits/slide_deck/app.js +174 -0
  135. package/dist/ui_kits/slide_deck/index.html +26 -0
  136. package/dist/ui_kits/system_primer/app.js +152 -0
  137. package/dist/ui_kits/system_primer/index.html +26 -0
  138. package/dist/ui_kits/terminal/app.js +150 -0
  139. package/dist/ui_kits/terminal/index.html +26 -0
  140. package/dist/vendor/webjsx/applyDiff.js +182 -0
  141. package/dist/vendor/webjsx/attributes.js +154 -0
  142. package/dist/vendor/webjsx/constants.js +4 -0
  143. package/dist/vendor/webjsx/createDOMElement.js +52 -0
  144. package/dist/vendor/webjsx/createElement.js +75 -0
  145. package/dist/vendor/webjsx/elementTags.js +115 -0
  146. package/dist/vendor/webjsx/factory.js +6 -0
  147. package/dist/vendor/webjsx/index.js +6 -0
  148. package/dist/vendor/webjsx/jsx-dev-runtime.js +2 -0
  149. package/dist/vendor/webjsx/jsx-runtime.js +30 -0
  150. package/dist/vendor/webjsx/jsx.js +2 -0
  151. package/dist/vendor/webjsx/package.json +39 -0
  152. package/dist/vendor/webjsx/renderSuspension.js +25 -0
  153. package/dist/vendor/webjsx/types.js +5 -0
  154. package/dist/vendor/webjsx/utils.js +84 -0
  155. package/package.json +80 -80
  156. package/src/bootstrap.js +25 -25
  157. package/src/components/chat.js +199 -199
  158. package/src/components/community.js +208 -190
  159. package/src/components/content.js +269 -269
  160. package/src/components/files-modals.js +107 -107
  161. package/src/components/files.js +118 -118
  162. package/src/components/freddie/helpers.js +50 -50
  163. package/src/components/freddie.js +33 -33
  164. package/src/components/overlays.js +151 -0
  165. package/src/components/shell.js +117 -117
  166. package/src/components/theme-toggle.js +70 -70
  167. package/src/components.js +57 -52
  168. package/src/debug.js +30 -30
  169. package/src/deck-stage.js +21 -21
  170. package/src/highlight.js +32 -32
  171. package/src/index.js +86 -86
  172. package/src/kits/os/about-app.js +52 -52
  173. package/src/kits/os/app-panes.css +152 -152
  174. package/src/kits/os/browser-app.js +58 -58
  175. package/src/kits/os/files-app.js +44 -44
  176. package/src/kits/os/freddie/helpers.js +59 -59
  177. package/src/kits/os/freddie/pages-chat.js +143 -143
  178. package/src/kits/os/freddie/pages-core.js +101 -101
  179. package/src/kits/os/freddie/pages-os.js +51 -51
  180. package/src/kits/os/freddie/pages-tools.js +183 -183
  181. package/src/kits/os/freddie/routes.js +24 -24
  182. package/src/kits/os/freddie-dashboard.css +51 -51
  183. package/src/kits/os/freddie-dashboard.js +101 -101
  184. package/src/kits/os/icons.js +17 -17
  185. package/src/kits/os/index.js +17 -17
  186. package/src/kits/os/launcher.css +61 -61
  187. package/src/kits/os/launcher.js +79 -79
  188. package/src/kits/os/monitor-app.js +34 -34
  189. package/src/kits/os/shell.js +214 -214
  190. package/src/kits/os/terminal-app.js +45 -45
  191. package/src/kits/os/theme.css +450 -450
  192. package/src/kits/os/validate.css +19 -19
  193. package/src/kits/os/validator-app.js +55 -55
  194. package/src/kits/os/wm.css +115 -115
  195. package/src/kits/os/wm.js +111 -111
  196. package/src/markdown.js +39 -39
  197. package/src/motion.js +35 -35
  198. package/src/page-html.js +196 -196
  199. package/src/styles.js +25 -25
  200. package/src/theme.js +99 -99
  201. package/src/web-components/ds-chat.js +116 -116
@@ -1,226 +1,226 @@
1
- /* ============================================================
2
- 247420 design system — colors + type
3
- Calm, readable, scope-prefixed at build time.
4
- Source-of-truth tokens. Component sheet lives in app-shell.css.
5
- ============================================================ */
6
-
7
- @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,400;0,500;0,600;0,700;1,400;1,700&family=Space+Grotesk:wght@300;400;500;600;700&display=swap');
8
-
9
- :root {
10
- /* Paper / Ink — cool stone scale; lets lore palette pop. */
11
- --paper: #F6F5F1;
12
- --paper-2: #ECEBE6;
13
- --paper-3: #DFDED9;
14
- --ink: #131318;
15
- --ink-2: #25252C;
16
- --ink-3: #6A6A70;
17
-
18
- /* Lore palette */
19
- --green: #247420;
20
- --green-2: #3A9A34;
21
- --green-deep: #133F10;
22
- --green-tint: #D9E5C8;
23
- --purple: #420247;
24
- --purple-2: #7F18A4;
25
- --purple-deep: #28002B;
26
- --purple-tint: #E4D3E5;
27
- --mascot: #E84B8A;
28
- --mascot-2: #FF3CA7;
29
- --mascot-tint: #F5D2DF;
30
-
31
- /* Signals */
32
- --sun: #F5C344;
33
- --flame: #FF5A1F;
34
- --sky: #3A6EFF;
35
- --warn: #E0241A;
36
- --live: var(--green);
37
-
38
- /* Semantic surfaces */
39
- --bg: var(--paper);
40
- --bg-2: var(--paper-2);
41
- --bg-3: var(--paper-3);
42
- --fg: var(--ink);
43
- --fg-2: var(--ink-2);
44
- --fg-3: var(--ink-3);
45
-
46
- --accent: var(--green);
47
- --accent-fg: var(--paper);
48
- --accent-tint: color-mix(in oklab, var(--accent) 18%, var(--bg));
49
-
50
- --panel-bg: var(--bg);
51
- --panel-bg-2: var(--bg-2);
52
- --panel-accent: var(--accent);
53
- --panel-0: var(--bg);
54
- --panel-1: var(--bg-2);
55
- --panel-2: var(--bg-3);
56
- --panel-3: color-mix(in oklab, var(--fg) 12%, transparent);
57
- --panel-text: var(--fg);
58
- --panel-text-2: var(--fg-2);
59
- --panel-text-3: var(--fg-3);
60
- --panel-accent-2: var(--accent-bright, var(--accent));
61
- --panel-shadow: 0 1px 0 color-mix(in oklab, var(--fg) 6%, transparent), 0 4px 14px color-mix(in oklab, var(--fg) 8%, transparent);
62
-
63
- /* Type — one family, used purposefully. Space Grotesk for everything
64
- non-mono. The display/narrow aliases stay so consumers that reference
65
- them keep working; they just resolve to the body font now. */
66
- --ff-display: 'Space Grotesk', system-ui, sans-serif;
67
- --ff-narrow: 'Space Grotesk', system-ui, sans-serif;
68
- --ff-body: 'Space Grotesk', system-ui, sans-serif;
69
- --ff-mono: 'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace;
70
-
71
- --fs-micro: 11px;
72
- --fs-tiny: 12px;
73
- --fs-xs: 13px;
74
- --fs-sm: 14px;
75
- --fs-body: 16px;
76
- --fs-lg: 18px;
77
- --fs-xl: 21px;
78
- --fs-h4: clamp(19px, 1.8cqi, 24px);
79
- --fs-h3: clamp(22px, 2.4cqi, 30px);
80
- --fs-h2: clamp(28px, 3.6cqi, 44px);
81
- --fs-h1: clamp(34px, 5cqi, 64px);
82
- --fs-hero: clamp(42px, 7cqi, 96px);
83
- --fs-mega: clamp(56px, 11cqi, 168px);
84
-
85
- --lh-tight: 1.05;
86
- --lh-snug: 1.2;
87
- --lh-base: 1.55;
88
- --lh-long: 1.7;
89
-
90
- --tr-caps: 0.06em;
91
- --tr-label: 0.10em;
92
- --tr-tight: -0.02em;
93
- --tr-tighter: -0.03em;
94
-
95
- /* Spacing (8pt) */
96
- --space-0: 0;
97
- --space-1: 4px;
98
- --space-2: 8px;
99
- --space-3: 16px;
100
- --space-4: 24px;
101
- --space-5: 32px;
102
- --space-6: 48px;
103
- --space-7: 64px;
104
- --space-8: 96px;
105
- --space-9: 128px;
106
- --space-10: 192px;
107
-
108
- --density: 1;
109
- --pad-y: calc(var(--space-5) * var(--density));
110
- --pad-x: calc(var(--space-5) * var(--density));
111
- --gutter: calc(var(--space-4) * var(--density));
112
-
113
- /* Borders — chunky or none */
114
- --bw-hair: 1px;
115
- --bw-rule: 2px;
116
- --bw-chunk: 4px;
117
- --bw-slab: 8px;
118
-
119
- --rule: color-mix(in oklab, currentColor 14%, transparent);
120
- --rule-strong: color-mix(in oklab, currentColor 28%, transparent);
121
-
122
- --r-1: 10px;
123
- --r-2: 14px;
124
- --r-3: 22px;
125
- --r-4: 32px;
126
- --r-pill: 999px;
127
-
128
- --dur-snap: 80ms;
129
- --dur-base: 160ms;
130
- --dur-slow: 280ms;
131
- --ease: cubic-bezier(0.2, 0, 0, 1);
132
-
133
- --z-header: 100;
134
- --z-overlay: 1000;
135
-
136
- --measure: 68ch;
137
- }
138
-
139
- [data-theme="ink"] {
140
- --bg: var(--ink);
141
- --bg-2: var(--ink-2);
142
- --bg-3: #34343C;
143
- --fg: var(--paper);
144
- --fg-2: var(--paper-2);
145
- --fg-3: #9A9AA2;
146
- --panel-bg: var(--bg);
147
- --panel-bg-2: var(--bg-2);
148
- --panel-0: var(--bg);
149
- --panel-1: var(--bg-2);
150
- --panel-2: var(--bg-3);
151
- --panel-3: color-mix(in oklab, var(--fg) 20%, transparent);
152
- --panel-text: var(--fg);
153
- --panel-text-2: var(--fg-2);
154
- --panel-text-3: var(--fg-3);
155
- --accent: var(--accent-bright, var(--green-2));
156
- --accent-fg: var(--ink);
157
- }
158
-
159
- @media (prefers-color-scheme: dark) {
160
- [data-theme="auto"] {
161
- --bg: var(--ink);
162
- --bg-2: var(--ink-2);
163
- --bg-3: #34343C;
164
- --fg: var(--paper);
165
- --fg-2: var(--paper-2);
166
- --fg-3: #9A9AA2;
167
- --panel-bg: var(--bg);
168
- --panel-bg-2: var(--bg-2);
169
- --panel-0: var(--bg);
170
- --panel-1: var(--bg-2);
171
- --panel-2: var(--bg-3);
172
- --panel-3: color-mix(in oklab, var(--fg) 20%, transparent);
173
- --panel-text: var(--fg);
174
- --panel-text-2: var(--fg-2);
175
- --panel-text-3: var(--fg-3);
176
- --accent: var(--accent-bright, var(--green-2));
177
- --accent-fg: var(--ink);
178
- }
179
- }
180
-
181
- /* Nested-scope safety: if .ds-247420 appears under another .ds-247420 (e.g.
182
- mount() added the class to an inner element while the ancestor html
183
- already had it), the inner element would otherwise re-trigger the root
184
- light defaults and detach from the ancestor's data-theme override. Force
185
- the inner element to inherit the ancestor's resolved tokens. */
186
- .ds-247420 .ds-247420 {
187
- --bg: inherit;
188
- --bg-2: inherit;
189
- --bg-3: inherit;
190
- --fg: inherit;
191
- --fg-2: inherit;
192
- --fg-3: inherit;
193
- --panel-bg: inherit;
194
- --panel-bg-2: inherit;
195
- --accent: inherit;
196
- --accent-fg: inherit;
197
- --panel-1: inherit;
198
- --panel-2: inherit;
199
- --panel-3: inherit;
200
- --panel-text: inherit;
201
- --panel-text-2: inherit;
202
- --panel-text-3: inherit;
203
- --panel-accent-2: inherit;
204
- --panel-shadow: inherit;
205
- }
206
-
207
- [data-density="compact"] { --density: 0.75; }
208
- [data-density="comfortable"] { --density: 1; }
209
- [data-density="spacious"] { --density: 1.35; }
210
-
211
- [data-accent="green"] { --accent: var(--green); --accent-bright: var(--green-2); --accent-fg: var(--paper); --panel-accent: var(--green); }
212
- [data-accent="purple"] { --accent: var(--purple); --accent-bright: #C277FF; --accent-fg: var(--paper); --panel-accent: var(--purple); }
213
- [data-accent="mascot"] { --accent: var(--mascot); --accent-bright: var(--mascot-2); --accent-fg: var(--ink); --panel-accent: var(--mascot); }
214
-
215
- /* Type-scale modifier — opt-in body/lg/xl bump for surfaces that want denser
216
- or larger reading sizes without a custom override. */
217
- [data-typescale="sm"] { --fs-body: 15px; --fs-lg: 17px; --fs-xl: 20px; }
218
- [data-typescale="lg"] { --fs-body: 17px; --fs-lg: 20px; --fs-xl: 24px; }
219
-
220
- /* Debug grid overlay — 8px mascot grid. Toggle via class on any container. */
221
- .with-grid-overlay {
222
- background-image:
223
- linear-gradient(to right, rgba(232,75,138,0.15) 1px, transparent 1px),
224
- linear-gradient(to bottom, rgba(232,75,138,0.15) 1px, transparent 1px);
225
- background-size: 8px 8px;
226
- }
1
+ /* ============================================================
2
+ 247420 design system — colors + type
3
+ Calm, readable, scope-prefixed at build time.
4
+ Source-of-truth tokens. Component sheet lives in app-shell.css.
5
+ ============================================================ */
6
+
7
+ @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,400;0,500;0,600;0,700;1,400;1,700&family=Space+Grotesk:wght@300;400;500;600;700&display=swap');
8
+
9
+ :root {
10
+ /* Paper / Ink — cool stone scale; lets lore palette pop. */
11
+ --paper: #F6F5F1;
12
+ --paper-2: #ECEBE6;
13
+ --paper-3: #DFDED9;
14
+ --ink: #131318;
15
+ --ink-2: #25252C;
16
+ --ink-3: #6A6A70;
17
+
18
+ /* Lore palette */
19
+ --green: #247420;
20
+ --green-2: #3A9A34;
21
+ --green-deep: #133F10;
22
+ --green-tint: #D9E5C8;
23
+ --purple: #420247;
24
+ --purple-2: #7F18A4;
25
+ --purple-deep: #28002B;
26
+ --purple-tint: #E4D3E5;
27
+ --mascot: #E84B8A;
28
+ --mascot-2: #FF3CA7;
29
+ --mascot-tint: #F5D2DF;
30
+
31
+ /* Signals */
32
+ --sun: #F5C344;
33
+ --flame: #FF5A1F;
34
+ --sky: #3A6EFF;
35
+ --warn: #E0241A;
36
+ --live: var(--green);
37
+
38
+ /* Semantic surfaces */
39
+ --bg: var(--paper);
40
+ --bg-2: var(--paper-2);
41
+ --bg-3: var(--paper-3);
42
+ --fg: var(--ink);
43
+ --fg-2: var(--ink-2);
44
+ --fg-3: var(--ink-3);
45
+
46
+ --accent: var(--green);
47
+ --accent-fg: var(--paper);
48
+ --accent-tint: color-mix(in oklab, var(--accent) 18%, var(--bg));
49
+
50
+ --panel-bg: var(--bg);
51
+ --panel-bg-2: var(--bg-2);
52
+ --panel-accent: var(--accent);
53
+ --panel-0: var(--bg);
54
+ --panel-1: var(--bg-2);
55
+ --panel-2: var(--bg-3);
56
+ --panel-3: color-mix(in oklab, var(--fg) 12%, transparent);
57
+ --panel-text: var(--fg);
58
+ --panel-text-2: var(--fg-2);
59
+ --panel-text-3: var(--fg-3);
60
+ --panel-accent-2: var(--accent-bright, var(--accent));
61
+ --panel-shadow: 0 1px 0 color-mix(in oklab, var(--fg) 6%, transparent), 0 4px 14px color-mix(in oklab, var(--fg) 8%, transparent);
62
+
63
+ /* Type — one family, used purposefully. Space Grotesk for everything
64
+ non-mono. The display/narrow aliases stay so consumers that reference
65
+ them keep working; they just resolve to the body font now. */
66
+ --ff-display: 'Space Grotesk', system-ui, sans-serif;
67
+ --ff-narrow: 'Space Grotesk', system-ui, sans-serif;
68
+ --ff-body: 'Space Grotesk', system-ui, sans-serif;
69
+ --ff-mono: 'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace;
70
+
71
+ --fs-micro: 11px;
72
+ --fs-tiny: 12px;
73
+ --fs-xs: 13px;
74
+ --fs-sm: 14px;
75
+ --fs-body: 16px;
76
+ --fs-lg: 18px;
77
+ --fs-xl: 21px;
78
+ --fs-h4: clamp(19px, 1.8cqi, 24px);
79
+ --fs-h3: clamp(22px, 2.4cqi, 30px);
80
+ --fs-h2: clamp(28px, 3.6cqi, 44px);
81
+ --fs-h1: clamp(34px, 5cqi, 64px);
82
+ --fs-hero: clamp(42px, 7cqi, 96px);
83
+ --fs-mega: clamp(56px, 11cqi, 168px);
84
+
85
+ --lh-tight: 1.05;
86
+ --lh-snug: 1.2;
87
+ --lh-base: 1.55;
88
+ --lh-long: 1.7;
89
+
90
+ --tr-caps: 0.06em;
91
+ --tr-label: 0.10em;
92
+ --tr-tight: -0.02em;
93
+ --tr-tighter: -0.03em;
94
+
95
+ /* Spacing (8pt) */
96
+ --space-0: 0;
97
+ --space-1: 4px;
98
+ --space-2: 8px;
99
+ --space-3: 16px;
100
+ --space-4: 24px;
101
+ --space-5: 32px;
102
+ --space-6: 48px;
103
+ --space-7: 64px;
104
+ --space-8: 96px;
105
+ --space-9: 128px;
106
+ --space-10: 192px;
107
+
108
+ --density: 1;
109
+ --pad-y: calc(var(--space-5) * var(--density));
110
+ --pad-x: calc(var(--space-5) * var(--density));
111
+ --gutter: calc(var(--space-4) * var(--density));
112
+
113
+ /* Borders — chunky or none */
114
+ --bw-hair: 1px;
115
+ --bw-rule: 2px;
116
+ --bw-chunk: 4px;
117
+ --bw-slab: 8px;
118
+
119
+ --rule: color-mix(in oklab, currentColor 14%, transparent);
120
+ --rule-strong: color-mix(in oklab, currentColor 28%, transparent);
121
+
122
+ --r-1: 10px;
123
+ --r-2: 14px;
124
+ --r-3: 22px;
125
+ --r-4: 32px;
126
+ --r-pill: 999px;
127
+
128
+ --dur-snap: 80ms;
129
+ --dur-base: 160ms;
130
+ --dur-slow: 280ms;
131
+ --ease: cubic-bezier(0.2, 0, 0, 1);
132
+
133
+ --z-header: 100;
134
+ --z-overlay: 1000;
135
+
136
+ --measure: 68ch;
137
+ }
138
+
139
+ [data-theme="ink"] {
140
+ --bg: var(--ink);
141
+ --bg-2: var(--ink-2);
142
+ --bg-3: #34343C;
143
+ --fg: var(--paper);
144
+ --fg-2: var(--paper-2);
145
+ --fg-3: #9A9AA2;
146
+ --panel-bg: var(--bg);
147
+ --panel-bg-2: var(--bg-2);
148
+ --panel-0: var(--bg);
149
+ --panel-1: var(--bg-2);
150
+ --panel-2: var(--bg-3);
151
+ --panel-3: color-mix(in oklab, var(--fg) 20%, transparent);
152
+ --panel-text: var(--fg);
153
+ --panel-text-2: var(--fg-2);
154
+ --panel-text-3: var(--fg-3);
155
+ --accent: var(--accent-bright, var(--green-2));
156
+ --accent-fg: var(--ink);
157
+ }
158
+
159
+ @media (prefers-color-scheme: dark) {
160
+ [data-theme="auto"] {
161
+ --bg: var(--ink);
162
+ --bg-2: var(--ink-2);
163
+ --bg-3: #34343C;
164
+ --fg: var(--paper);
165
+ --fg-2: var(--paper-2);
166
+ --fg-3: #9A9AA2;
167
+ --panel-bg: var(--bg);
168
+ --panel-bg-2: var(--bg-2);
169
+ --panel-0: var(--bg);
170
+ --panel-1: var(--bg-2);
171
+ --panel-2: var(--bg-3);
172
+ --panel-3: color-mix(in oklab, var(--fg) 20%, transparent);
173
+ --panel-text: var(--fg);
174
+ --panel-text-2: var(--fg-2);
175
+ --panel-text-3: var(--fg-3);
176
+ --accent: var(--accent-bright, var(--green-2));
177
+ --accent-fg: var(--ink);
178
+ }
179
+ }
180
+
181
+ /* Nested-scope safety: if .ds-247420 appears under another .ds-247420 (e.g.
182
+ mount() added the class to an inner element while the ancestor html
183
+ already had it), the inner element would otherwise re-trigger the root
184
+ light defaults and detach from the ancestor's data-theme override. Force
185
+ the inner element to inherit the ancestor's resolved tokens. */
186
+ .ds-247420 .ds-247420 {
187
+ --bg: inherit;
188
+ --bg-2: inherit;
189
+ --bg-3: inherit;
190
+ --fg: inherit;
191
+ --fg-2: inherit;
192
+ --fg-3: inherit;
193
+ --panel-bg: inherit;
194
+ --panel-bg-2: inherit;
195
+ --accent: inherit;
196
+ --accent-fg: inherit;
197
+ --panel-1: inherit;
198
+ --panel-2: inherit;
199
+ --panel-3: inherit;
200
+ --panel-text: inherit;
201
+ --panel-text-2: inherit;
202
+ --panel-text-3: inherit;
203
+ --panel-accent-2: inherit;
204
+ --panel-shadow: inherit;
205
+ }
206
+
207
+ [data-density="compact"] { --density: 0.75; }
208
+ [data-density="comfortable"] { --density: 1; }
209
+ [data-density="spacious"] { --density: 1.35; }
210
+
211
+ [data-accent="green"] { --accent: var(--green); --accent-bright: var(--green-2); --accent-fg: var(--paper); --panel-accent: var(--green); }
212
+ [data-accent="purple"] { --accent: var(--purple); --accent-bright: #C277FF; --accent-fg: var(--paper); --panel-accent: var(--purple); }
213
+ [data-accent="mascot"] { --accent: var(--mascot); --accent-bright: var(--mascot-2); --accent-fg: var(--ink); --panel-accent: var(--mascot); }
214
+
215
+ /* Type-scale modifier — opt-in body/lg/xl bump for surfaces that want denser
216
+ or larger reading sizes without a custom override. */
217
+ [data-typescale="sm"] { --fs-body: 15px; --fs-lg: 17px; --fs-xl: 20px; }
218
+ [data-typescale="lg"] { --fs-body: 17px; --fs-lg: 20px; --fs-xl: 24px; }
219
+
220
+ /* Debug grid overlay — 8px mascot grid. Toggle via class on any container. */
221
+ .with-grid-overlay {
222
+ background-image:
223
+ linear-gradient(to right, rgba(232,75,138,0.15) 1px, transparent 1px),
224
+ linear-gradient(to bottom, rgba(232,75,138,0.15) 1px, transparent 1px);
225
+ background-size: 8px 8px;
226
+ }