@motion-proto/live-tokens 0.6.2 → 0.8.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 (232) hide show
  1. package/README.md +14 -13
  2. package/dist-plugin/index.cjs +854 -226
  3. package/dist-plugin/index.d.cts +2 -1
  4. package/dist-plugin/index.d.ts +2 -1
  5. package/dist-plugin/index.js +852 -225
  6. package/package.json +26 -40
  7. package/src/{styles → app}/site.css +1 -1
  8. package/src/{component-editor → editor/component-editor}/BadgeEditor.svelte +8 -82
  9. package/src/{component-editor → editor/component-editor}/CalloutEditor.svelte +4 -4
  10. package/src/{component-editor → editor/component-editor}/CardEditor.svelte +28 -76
  11. package/src/{component-editor → editor/component-editor}/CollapsibleSectionEditor.svelte +37 -30
  12. package/src/{component-editor → editor/component-editor}/CornerBadgeEditor.svelte +31 -93
  13. package/src/{component-editor → editor/component-editor}/DialogEditor.svelte +60 -57
  14. package/src/editor/component-editor/ImageEditor.svelte +30 -0
  15. package/src/{component-editor → editor/component-editor}/InlineEditActionsEditor.svelte +6 -4
  16. package/src/editor/component-editor/MenuSelectEditor.svelte +160 -0
  17. package/src/{component-editor → editor/component-editor}/NotificationEditor.svelte +67 -38
  18. package/src/{component-editor → editor/component-editor}/ProgressBarEditor.svelte +5 -4
  19. package/src/{component-editor → editor/component-editor}/RadioButtonEditor.svelte +3 -3
  20. package/src/editor/component-editor/SectionDividerEditor.svelte +565 -0
  21. package/src/{component-editor → editor/component-editor}/SegmentedControlEditor.svelte +2 -2
  22. package/src/{component-editor → editor/component-editor}/StandardButtonsEditor.svelte +29 -21
  23. package/src/{component-editor → editor/component-editor}/TabBarEditor.svelte +9 -14
  24. package/src/{component-editor → editor/component-editor}/TableEditor.svelte +9 -18
  25. package/src/{component-editor → editor/component-editor}/TooltipEditor.svelte +11 -47
  26. package/src/editor/component-editor/editors.d.ts +10 -0
  27. package/src/{component-editor → editor/component-editor}/registry.ts +28 -18
  28. package/src/{component-editor → editor/component-editor}/scaffolding/AngleDial.svelte +54 -15
  29. package/src/{component-editor → editor/component-editor}/scaffolding/ComponentEditorBase.svelte +3 -51
  30. package/src/{component-editor → editor/component-editor}/scaffolding/ComponentFileManager.svelte +151 -424
  31. package/src/{component-editor → editor/component-editor}/scaffolding/ComponentFileMenu.svelte +18 -170
  32. package/src/{component-editor → editor/component-editor}/scaffolding/ComponentsTab.svelte +2 -2
  33. package/src/{component-editor → editor/component-editor}/scaffolding/CopyFromMenu.svelte +44 -4
  34. package/src/{component-editor → editor/component-editor}/scaffolding/FieldsetWrapper.svelte +1 -1
  35. package/src/{component-editor → editor/component-editor}/scaffolding/LinkageChart.svelte +6 -6
  36. package/src/{component-editor → editor/component-editor}/scaffolding/LinkedBlock.svelte +6 -12
  37. package/src/editor/component-editor/scaffolding/NonStylableConfig.svelte +38 -0
  38. package/src/editor/component-editor/scaffolding/RadialShapePad.svelte +483 -0
  39. package/src/{component-editor → editor/component-editor}/scaffolding/SaveAsDialog.svelte +66 -12
  40. package/src/editor/component-editor/scaffolding/ShadowBackdrop.svelte +85 -0
  41. package/src/editor/component-editor/scaffolding/ShadowBackdropControls.svelte +132 -0
  42. package/src/editor/component-editor/scaffolding/StateBlock.svelte +345 -0
  43. package/src/{component-editor → editor/component-editor}/scaffolding/TokenLayout.svelte +17 -12
  44. package/src/{component-editor → editor/component-editor}/scaffolding/TypeEditor.svelte +13 -1
  45. package/src/editor/component-editor/scaffolding/VariantGroup.svelte +858 -0
  46. package/src/{component-editor → editor/component-editor}/scaffolding/buildTypeGroupTokens.ts +1 -0
  47. package/src/{component-editor → editor/component-editor}/scaffolding/editorContext.ts +19 -9
  48. package/src/{component-editor → editor/component-editor}/scaffolding/linkedBlock.ts +2 -2
  49. package/src/{component-editor → editor/component-editor}/scaffolding/types.ts +25 -0
  50. package/src/{lib → editor/core/components}/componentConfigKeys.ts +8 -0
  51. package/src/{lib → editor/core/components}/componentConfigService.ts +3 -3
  52. package/src/{lib → editor/core/components}/componentPersist.ts +11 -9
  53. package/src/editor/core/flashStatus.ts +30 -0
  54. package/src/{lib → editor/core/fonts}/fontLoader.ts +2 -2
  55. package/src/{lib → editor/core/fonts}/fontMigration.ts +4 -4
  56. package/src/{lib → editor/core/fonts}/fontParse.ts +1 -1
  57. package/src/editor/core/manifests/manifestService.ts +171 -0
  58. package/src/editor/core/palettes/familySwap.ts +99 -0
  59. package/src/{lib → editor/core/palettes}/paletteDerivation.ts +71 -2
  60. package/src/{lib → editor/core/palettes}/tokenRegistry.ts +9 -6
  61. package/src/editor/core/productionPulse.ts +37 -0
  62. package/src/{lib → editor/core/routing}/router.ts +1 -1
  63. package/src/{lib/files/versionedFileResource.ts → editor/core/storage/files/versionedFileResourceClient.ts} +8 -1
  64. package/src/{lib → editor/core/store}/editorCore.ts +24 -8
  65. package/src/{lib → editor/core/store}/editorPersistence.ts +3 -3
  66. package/src/{lib → editor/core/store}/editorRenderer.ts +2 -2
  67. package/src/{lib → editor/core/store}/editorStore.ts +222 -28
  68. package/src/{lib → editor/core/store}/editorTypes.ts +56 -13
  69. package/src/editor/core/store/gradientSource.ts +192 -0
  70. package/src/editor/core/themes/migrations/2026-05-19-collapsiblesection-drop-frame-surface.ts +28 -0
  71. package/src/editor/core/themes/migrations/2026-05-19-sectiondivider-rich-gradient.ts +35 -0
  72. package/src/editor/core/themes/migrations/2026-05-20-sectiondivider-slim-variants.ts +82 -0
  73. package/src/editor/core/themes/migrations/2026-05-21-sectiondivider-spacing-to-padding.ts +24 -0
  74. package/src/editor/core/themes/migrations/2026-05-22-sectiondivider-intrinsics-to-css.ts +81 -0
  75. package/src/{lib → editor/core/themes}/migrations/index.ts +10 -0
  76. package/src/{lib → editor/core/themes}/slices/columns.ts +2 -2
  77. package/src/{lib → editor/core/themes}/slices/components.ts +20 -6
  78. package/src/{lib → editor/core/themes}/slices/fonts.ts +1 -1
  79. package/src/{lib → editor/core/themes}/slices/gradients.ts +89 -14
  80. package/src/{lib → editor/core/themes}/slices/overlays.ts +1 -1
  81. package/src/{lib → editor/core/themes}/slices/palettes.ts +1 -1
  82. package/src/{lib → editor/core/themes}/slices/shadows.ts +3 -3
  83. package/src/{lib → editor/core/themes}/themeInit.ts +8 -8
  84. package/src/{lib → editor/core/themes}/themeService.ts +6 -6
  85. package/src/{lib → editor/core/themes}/themeTypes.ts +67 -8
  86. package/src/editor/index.ts +69 -0
  87. package/src/{lib → editor/overlay}/ColumnsOverlay.svelte +0 -1
  88. package/src/{lib → editor/overlay}/LiveEditorOverlay.svelte +80 -129
  89. package/src/{lib → editor/overlay}/columnsOverlay.ts +2 -2
  90. package/src/{pages → editor/pages}/ComponentEditorPage.svelte +12 -12
  91. package/src/{pages → editor/pages}/Editor.svelte +4 -4
  92. package/src/{pages → editor/pages}/EditorShell.svelte +18 -36
  93. package/src/{styles → editor/styles}/ui-editor.css +43 -22
  94. package/src/{styles → editor/styles}/ui-form-controls.css +23 -24
  95. package/src/{ui → editor/ui}/BezierCurveEditor.svelte +119 -68
  96. package/src/{ui → editor/ui}/ColorEditPanel.svelte +13 -13
  97. package/src/{ui → editor/ui}/EditorViewSwitcher.svelte +7 -6
  98. package/src/editor/ui/FileLoadList.svelte +367 -0
  99. package/src/editor/ui/FilePill.svelte +80 -0
  100. package/src/editor/ui/FontStackEditor.svelte +499 -0
  101. package/src/editor/ui/GradientEditor.svelte +690 -0
  102. package/src/{ui → editor/ui}/GradientStopPicker.svelte +12 -4
  103. package/src/editor/ui/ManifestFileManager.svelte +438 -0
  104. package/src/{ui → editor/ui}/PaletteEditor.svelte +180 -673
  105. package/src/editor/ui/ProjectFontsSection.svelte +638 -0
  106. package/src/{ui → editor/ui}/SurfacesTab.svelte +3 -3
  107. package/src/{ui → editor/ui}/TextTab.svelte +3 -3
  108. package/src/editor/ui/ThemeFileManager.svelte +783 -0
  109. package/src/{ui → editor/ui}/UICopyPopover.svelte +4 -4
  110. package/src/{ui → editor/ui}/UIFontFamilySelector.svelte +6 -7
  111. package/src/{ui → editor/ui}/UIFontSizeSelector.svelte +4 -1
  112. package/src/editor/ui/UIInfoPopover.svelte +243 -0
  113. package/src/editor/ui/UILetterSpacingSelector.svelte +65 -0
  114. package/src/{ui → editor/ui}/UILineHeightSelector.svelte +5 -5
  115. package/src/{ui → editor/ui}/UILinkToggle.svelte +2 -2
  116. package/src/{ui → editor/ui}/UIPaddingSelector.svelte +6 -6
  117. package/src/{ui → editor/ui}/UIPaletteSelector.svelte +57 -30
  118. package/src/editor/ui/UIPillButton.svelte +168 -0
  119. package/src/{ui → editor/ui}/UIRadio.svelte +2 -2
  120. package/src/{ui → editor/ui}/UIRelinkConfirmPopover.svelte +4 -4
  121. package/src/editor/ui/UISegmentedControl.svelte +114 -0
  122. package/src/editor/ui/UISquareButton.svelte +172 -0
  123. package/src/{ui → editor/ui}/UITokenSelector.svelte +14 -11
  124. package/src/{ui → editor/ui}/UIVariantSelector.svelte +1 -1
  125. package/src/{ui → editor/ui}/VariablesTab.svelte +46 -17
  126. package/src/{ui → editor/ui}/palette/GradientStopEditor.svelte +13 -13
  127. package/src/{ui → editor/ui}/palette/OverridesPanel.svelte +24 -47
  128. package/src/{ui → editor/ui}/palette/PaletteBase.svelte +11 -8
  129. package/src/{ui → editor/ui}/palette/paletteEditorState.ts +1 -1
  130. package/src/editor/ui/palette/paletteMath.ts +275 -0
  131. package/src/{ui → editor/ui}/sections/ColumnsSection.svelte +137 -18
  132. package/src/{ui → editor/ui}/sections/GradientsSection.svelte +8 -8
  133. package/src/{ui → editor/ui}/sections/OverlaysSection.svelte +18 -18
  134. package/src/{ui → editor/ui}/sections/ShadowsSection.svelte +23 -23
  135. package/src/{ui → editor/ui}/sections/TokenScaleTable.svelte +3 -3
  136. package/src/{components → system/components}/Badge.svelte +0 -36
  137. package/src/{components → system/components}/Button.svelte +2 -2
  138. package/src/{components → system/components}/Card.svelte +34 -60
  139. package/src/{components → system/components}/CollapsibleSection.svelte +25 -2
  140. package/src/{components → system/components}/CornerBadge.svelte +8 -24
  141. package/src/{components → system/components}/Dialog.svelte +1 -1
  142. package/src/system/components/FloatingTokenTags.css +275 -0
  143. package/src/system/components/FloatingTokenTags.svelte +543 -0
  144. package/src/{components → system/components}/InlineEditActions.svelte +6 -4
  145. package/src/system/components/MenuSelect.svelte +229 -0
  146. package/src/{components → system/components}/Notification.svelte +8 -1
  147. package/src/{components → system/components}/ProgressBar.svelte +29 -11
  148. package/src/system/components/SectionDivider.svelte +560 -0
  149. package/src/{components → system/components}/SegmentedControl.svelte +49 -43
  150. package/src/{components → system/components}/TabBar.svelte +81 -65
  151. package/src/{components → system/components}/Table.svelte +17 -3
  152. package/src/{components → system/components}/Tooltip.svelte +6 -4
  153. package/src/system/styles/CONVENTIONS.md +178 -0
  154. package/src/system/styles/fonts.css +20 -0
  155. package/src/system/styles/tokens.css +601 -0
  156. package/src/system/styles/tokens.generated.css +544 -0
  157. package/src/component-editor/ImageEditor.svelte +0 -74
  158. package/src/component-editor/SectionDividerEditor.svelte +0 -265
  159. package/src/component-editor/scaffolding/DividerEditor.svelte +0 -94
  160. package/src/component-editor/scaffolding/GradientCard.svelte +0 -296
  161. package/src/component-editor/scaffolding/NonStylableConfig.svelte +0 -62
  162. package/src/component-editor/scaffolding/ShadowBackdrop.svelte +0 -37
  163. package/src/component-editor/scaffolding/ShadowBackdropControls.svelte +0 -61
  164. package/src/component-editor/scaffolding/StateBlock.svelte +0 -132
  165. package/src/component-editor/scaffolding/VariantGroup.svelte +0 -310
  166. package/src/components/SectionDivider.svelte +0 -483
  167. package/src/data/google-fonts.json +0 -75
  168. package/src/lib/index.ts +0 -68
  169. package/src/lib/presetService.ts +0 -214
  170. package/src/lib/productionPulse.ts +0 -32
  171. package/src/styles/fonts.css +0 -30
  172. package/src/styles/tokens.css +0 -1324
  173. package/src/ui/FontStackEditor.svelte +0 -361
  174. package/src/ui/GradientEditor.svelte +0 -470
  175. package/src/ui/PresetFileManager.svelte +0 -1116
  176. package/src/ui/ProjectFontsSection.svelte +0 -645
  177. package/src/ui/ThemeFileManager.svelte +0 -1020
  178. package/src/ui/UnsavedComponentsDialog.svelte +0 -315
  179. /package/src/{component-editor → editor/component-editor}/index.ts +0 -0
  180. /package/src/{component-editor → editor/component-editor}/scaffolding/DemoHeader.svelte +0 -0
  181. /package/src/{component-editor → editor/component-editor}/scaffolding/componentSectionType.ts +0 -0
  182. /package/src/{component-editor → editor/component-editor}/scaffolding/componentSources.ts +0 -0
  183. /package/src/{component-editor → editor/component-editor}/scaffolding/defaultSections.ts +0 -0
  184. /package/src/{component-editor → editor/component-editor}/scaffolding/siblings.ts +0 -0
  185. /package/src/{lib → editor/core}/cssVarSync.ts +0 -0
  186. /package/src/{lib → editor/core/palettes}/oklch.ts +0 -0
  187. /package/src/{lib → editor/core/routing}/navLinkTypes.ts +0 -0
  188. /package/src/{lib → editor/core/routing}/parentRouteStore.ts +0 -0
  189. /package/src/{lib → editor/core/storage}/storage.ts +0 -0
  190. /package/src/{lib → editor/core/store}/editorConfig.ts +0 -0
  191. /package/src/{lib → editor/core/store}/editorConfigStore.ts +0 -0
  192. /package/src/{lib → editor/core/store}/editorKeybindings.ts +0 -0
  193. /package/src/{lib → editor/core/store}/editorViewStore.ts +0 -0
  194. /package/src/{lib → editor/core/themes}/migrations/2026-04-24-component-prefix-and-suffix-renames.ts +0 -0
  195. /package/src/{lib → editor/core/themes}/migrations/2026-04-24-legacy-keys-and-bg-to-canvas.ts +0 -0
  196. /package/src/{lib → editor/core/themes}/migrations/2026-04-27-segmentedcontrol-disabled-flatten.ts +0 -0
  197. /package/src/{lib → editor/core/themes}/migrations/2026-05-08-collapsiblesection-frame-and-cleanup.ts +0 -0
  198. /package/src/{lib → editor/core/themes}/migrations/2026-05-08-collapsiblesection-variant-namespace.ts +0 -0
  199. /package/src/{lib → editor/core/themes}/migrations/2026-05-10-sectiondivider-gradient-stops.ts +0 -0
  200. /package/src/{lib → editor/core/themes}/migrations/2026-05-13-primary-to-brand.ts +0 -0
  201. /package/src/{lib → editor/core/themes}/parsers/globalRootBlock.ts +0 -0
  202. /package/src/{lib → editor/core/themes}/slices/domainVars.ts +0 -0
  203. /package/src/{lib → editor/overlay}/overlayState.ts +0 -0
  204. /package/src/{pages → editor/pages}/ComponentEditorPage.svelte.d.ts +0 -0
  205. /package/src/{pages → editor/pages}/Editor.svelte.d.ts +0 -0
  206. /package/src/{ui → editor/ui}/Toggle.svelte +0 -0
  207. /package/src/{ui → editor/ui}/UIDialog.svelte +0 -0
  208. /package/src/{ui → editor/ui}/UIFontWeightSelector.svelte +0 -0
  209. /package/src/{ui → editor/ui}/UIOptionItem.svelte +0 -0
  210. /package/src/{ui → editor/ui}/UIOptionList.svelte +0 -0
  211. /package/src/{ui → editor/ui}/UIRadioGroup.svelte +0 -0
  212. /package/src/{lib → editor/ui}/copyPopover.ts +0 -0
  213. /package/src/{ui → editor/ui}/curveEngine.ts +0 -0
  214. /package/src/{ui → editor/ui}/index.ts +0 -0
  215. /package/src/{ui → editor/ui}/keepInViewport.ts +0 -0
  216. /package/src/{ui → editor/ui}/palette/ScaleCurveEditor.svelte +0 -0
  217. /package/src/{lib → editor/ui}/scrollSection.ts +0 -0
  218. /package/src/{ui → editor/ui}/sections/tokenScales.ts +0 -0
  219. /package/src/{ui → editor/ui}/variantScales.ts +0 -0
  220. /package/src/{assets → system/assets}/newspaper.webp +0 -0
  221. /package/src/{assets → system/assets}/offering.webp +0 -0
  222. /package/src/{components → system/components}/Callout.svelte +0 -0
  223. /package/src/{components → system/components}/Image.svelte +0 -0
  224. /package/src/{components → system/components}/RadioButton.svelte +0 -0
  225. /package/src/{components → system/components}/types.ts +0 -0
  226. /package/src/{styles → system/styles}/_padding.scss +0 -0
  227. /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-italic-latin-ext.woff2 +0 -0
  228. /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-italic-latin.woff2 +0 -0
  229. /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-roman-latin-ext.woff2 +0 -0
  230. /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-roman-latin.woff2 +0 -0
  231. /package/src/{styles → system/styles}/fonts/Manrope/Manrope-latin-ext.woff2 +0 -0
  232. /package/src/{styles → system/styles}/fonts/Manrope/Manrope-latin.woff2 +0 -0
@@ -0,0 +1,601 @@
1
+ /* RuneGoblin design tokens. Component tokens live in component-configs/*. */
2
+ /* @font-face rules live in fonts.css (copied verbatim). */
3
+
4
+ /* Module font fallback. :where() = 0 specificity so components override. */
5
+ :where(*:not([class*="fa-"])) {
6
+ font-family: var(--font-sans);
7
+ }
8
+
9
+ :root {
10
+ /* COLOR RAMPS — palette swatches 100–950. Editor overrides at runtime. */
11
+
12
+ /* Neutral */
13
+ --color-neutral-100: #dde6ec;
14
+ --color-neutral-200: #c4cdd3;
15
+ --color-neutral-300: #a8b1b7;
16
+ --color-neutral-400: #8b949a;
17
+ --color-neutral-500: #70787e;
18
+ --color-neutral-600: #555e63;
19
+ --color-neutral-700: #3c4449;
20
+ --color-neutral-800: #252c31;
21
+ --color-neutral-850: #0f161a;
22
+ --color-neutral-900: #020407;
23
+ --color-neutral-950: #000000;
24
+
25
+ /* Alternate */
26
+ --color-alternate-100: #e9e3e0;
27
+ --color-alternate-200: #d2ccc8;
28
+ --color-alternate-300: #b7b1ad;
29
+ --color-alternate-400: #9b9693;
30
+ --color-alternate-500: #817b78;
31
+ --color-alternate-600: #67625f;
32
+ --color-alternate-700: #4f4a47;
33
+ --color-alternate-800: #373330;
34
+ --color-alternate-850: #221d1b;
35
+ --color-alternate-900: #0e0b08;
36
+ --color-alternate-950: #030101;
37
+
38
+ /* Canvas */
39
+ --color-canvas-100: #cecfe5;
40
+ --color-canvas-200: #abacc2;
41
+ --color-canvas-300: #8d8da4;
42
+ --color-canvas-400: #727289;
43
+ --color-canvas-500: #5a5a72;
44
+ --color-canvas-600: #45455c;
45
+ --color-canvas-700: #33324a;
46
+ --color-canvas-800: #232239;
47
+ --color-canvas-850: #15142b;
48
+ --color-canvas-900: #0b081f;
49
+ --color-canvas-950: #040215;
50
+
51
+ /* Brand */
52
+ --color-brand-100: #ffbad3;
53
+ --color-brand-200: #ff7bb3;
54
+ --color-brand-300: #ec4495;
55
+ --color-brand-400: #cf0b7a;
56
+ --color-brand-500: #a80062;
57
+ --color-brand-600: #84004b;
58
+ --color-brand-700: #640038;
59
+ --color-brand-800: #490027;
60
+ --color-brand-850: #320019;
61
+ --color-brand-900: #1f000d;
62
+ --color-brand-950: #100005;
63
+
64
+ /* Accent */
65
+ --color-accent-100: #98e1dd;
66
+ --color-accent-200: #70beba;
67
+ --color-accent-300: #4ba09c;
68
+ --color-accent-400: #248582;
69
+ --color-accent-500: #006b69;
70
+ --color-accent-600: #005351;
71
+ --color-accent-700: #003e3d;
72
+ --color-accent-800: #002c2b;
73
+ --color-accent-850: #001d1c;
74
+ --color-accent-900: #00100f;
75
+ --color-accent-950: #000606;
76
+
77
+ /* Special */
78
+ --color-special-100: #d2c8ff;
79
+ --color-special-200: #b19cff;
80
+ --color-special-300: #9673f5;
81
+ --color-special-400: #7d54db;
82
+ --color-special-500: #6634c4;
83
+ --color-special-600: #5407af;
84
+ --color-special-700: #3f0088;
85
+ --color-special-800: #2d0064;
86
+ --color-special-850: #1d0046;
87
+ --color-special-900: #10002d;
88
+ --color-special-950: #060019;
89
+
90
+ /* Success */
91
+ --color-success-100: #92e9a3;
92
+ --color-success-200: #69c67e;
93
+ --color-success-300: #42a75d;
94
+ --color-success-400: #0e8c3f;
95
+ --color-success-500: #007030;
96
+ --color-success-600: #005723;
97
+ --color-success-700: #004119;
98
+ --color-success-800: #002f0f;
99
+ --color-success-850: #001e08;
100
+ --color-success-900: #001103;
101
+ --color-success-950: #000701;
102
+
103
+ /* Warning */
104
+ --color-warning-100: #ffc57d;
105
+ --color-warning-200: #e29f44;
106
+ --color-warning-300: #c47f03;
107
+ --color-warning-400: #a06600;
108
+ --color-warning-500: #805100;
109
+ --color-warning-600: #643e00;
110
+ --color-warning-700: #4c2e00;
111
+ --color-warning-800: #362000;
112
+ --color-warning-850: #241300;
113
+ --color-warning-900: #150900;
114
+ --color-warning-950: #090300;
115
+
116
+ /* Info */
117
+ --color-info-100: #b4d4ff;
118
+ --color-info-200: #76b0ff;
119
+ --color-info-300: #398efa;
120
+ --color-info-400: #0571e0;
121
+ --color-info-500: #0059b6;
122
+ --color-info-600: #00458f;
123
+ --color-info-700: #00336d;
124
+ --color-info-800: #002350;
125
+ --color-info-850: #001637;
126
+ --color-info-900: #000b23;
127
+ --color-info-950: #000413;
128
+
129
+ /* Danger */
130
+ --color-danger-100: #ffbeb8;
131
+ --color-danger-200: #ff847d;
132
+ --color-danger-300: #ec5552;
133
+ --color-danger-400: #d02d33;
134
+ --color-danger-500: #b0001c;
135
+ --color-danger-600: #8a0013;
136
+ --color-danger-700: #6a000c;
137
+ --color-danger-800: #4d0006;
138
+ --color-danger-850: #350003;
139
+ --color-danger-900: #210001;
140
+ --color-danger-950: #110000;
141
+
142
+ /* CSS keyword `transparent` for no-fill slots. */
143
+ --color-transparent: transparent;
144
+
145
+ /* Boolean visibility slot targets (e.g. --button-shimmer). */
146
+ --shimmer-on: block;
147
+ --shimmer-off: none;
148
+
149
+ /* PAGE BACKGROUND — canvas behind all UI. */
150
+ --page-bg: #15142b;
151
+ --page-bg-attachment: scroll;
152
+
153
+ /* SURFACES — 7-point scales, lowest → highest. */
154
+
155
+ /* Neutral */
156
+ --surface-neutral-lowest: #040c13;
157
+ --surface-neutral-lower: #162027;
158
+ --surface-neutral-low: #2c353c;
159
+ --surface-neutral: #434c52;
160
+ --surface-neutral-high: #5c6369;
161
+ --surface-neutral-higher: #767c81;
162
+ --surface-neutral-highest: #91969a;
163
+
164
+ /* Alternate surfaces */
165
+ --surface-alternate-lowest: #100907;
166
+ --surface-alternate-lower: #231d19;
167
+ --surface-alternate-low: #39322f;
168
+ --surface-alternate: #4f4946;
169
+ --surface-alternate-high: #66615e;
170
+ --surface-alternate-higher: #7f7a78;
171
+ --surface-alternate-highest: #989492;
172
+
173
+ /* Canvas */
174
+ --surface-canvas-lowest: #0a0523;
175
+ --surface-canvas-lower: #1c1a37;
176
+ --surface-canvas-low: #31304c;
177
+ --surface-canvas: #474761;
178
+ --surface-canvas-high: #5f6077;
179
+ --surface-canvas-higher: #79798e;
180
+ --surface-canvas-highest: #9393a5;
181
+
182
+ /* Brand */
183
+ --surface-brand-lowest: #1d000c;
184
+ --surface-brand-lower: #3e0020;
185
+ --surface-brand-low: #620037;
186
+ --surface-brand: #89004e;
187
+ --surface-brand-high: #b10067;
188
+ --surface-brand-higher: #cf3480;
189
+ --surface-brand-highest: #e0649a;
190
+
191
+ /* Accent */
192
+ --surface-accent-lowest: #000f0e;
193
+ --surface-accent-lower: #002423;
194
+ --surface-accent-low: #003c3b;
195
+ --surface-accent: #005654;
196
+ --surface-accent-high: #00716f;
197
+ --surface-accent-higher: #3b8a87;
198
+ --surface-accent-highest: #66a29f;
199
+
200
+ /* Special */
201
+ --surface-special-lowest: #0f002b;
202
+ --surface-special-lower: #250055;
203
+ --surface-special-low: #3d0084;
204
+ --surface-special: #5700b7;
205
+ --surface-special-high: #6c3bcb;
206
+ --surface-special-higher: #8161d8;
207
+ --surface-special-highest: #9983e4;
208
+
209
+ /* Success */
210
+ --surface-success-lowest: #001003;
211
+ --surface-success-lower: #00270b;
212
+ --surface-success-low: #004018;
213
+ --surface-success: #005a25;
214
+ --surface-success-high: #007733;
215
+ --surface-success-higher: #32914d;
216
+ --surface-success-highest: #61a870;
217
+
218
+ /* Warning */
219
+ --surface-warning-lowest: #140800;
220
+ --surface-warning-lower: #2d1a00;
221
+ --surface-warning-low: #4a2c00;
222
+ --surface-warning: #684100;
223
+ --surface-warning-high: #885600;
224
+ --surface-warning-higher: #a96c00;
225
+ --surface-warning-highest: #be8a46;
226
+
227
+ /* Info */
228
+ --surface-info-lowest: #000a21;
229
+ --surface-info-lower: #001d44;
230
+ --surface-info-low: #00316b;
231
+ --surface-info: #004894;
232
+ --surface-info-high: #36639f;
233
+ --surface-info-higher: #5d7da8;
234
+ --surface-info-highest: #8497b1;
235
+
236
+ /* Danger */
237
+ --surface-danger-lowest: #1f0001;
238
+ --surface-danger-lower: #410004;
239
+ --surface-danger-low: #67000b;
240
+ --surface-danger: #8f0014;
241
+ --surface-danger-high: #ba001e;
242
+ --surface-danger-higher: #cf4443;
243
+ --surface-danger-highest: #df6e68;
244
+
245
+ /* Overlays — 7-point semi-transparent scale. */
246
+ --overlay-lowest: rgba(20, 3, 0, 0.12);
247
+ --overlay-lower: rgba(20, 3, 0, 0.25);
248
+ --overlay-low: rgba(20, 3, 0, 0.38);
249
+ --overlay: rgba(20, 3, 0, 0.51);
250
+ --overlay-high: rgba(20, 3, 0, 0.64);
251
+ --overlay-higher: rgba(20, 3, 0, 0.77);
252
+ --overlay-highest: rgba(20, 3, 0, 0.9);
253
+
254
+ /* BORDERS — 5-point scales, faint → strong. */
255
+
256
+ /* Neutral */
257
+ --border-neutral-faint: #1c2327;
258
+ --border-neutral-subtle: #3a4146;
259
+ --border-neutral: #5a6267;
260
+ --border-neutral-medium: #7c848b;
261
+ --border-neutral-strong: #a0a9af;
262
+
263
+ /* Alternate */
264
+ --border-alternate-faint: #25201e;
265
+ --border-alternate-subtle: #443e3c;
266
+ --border-alternate: #655f5c;
267
+ --border-alternate-medium: #88827f;
268
+ --border-alternate-strong: #aca6a3;
269
+
270
+ /* Canvas */
271
+ --border-canvas-faint: #1f1f34;
272
+ --border-canvas-subtle: #3d3d54;
273
+ --border-canvas: #5d5e76;
274
+ --border-canvas-medium: #80809b;
275
+ --border-canvas-strong: #a4a5c0;
276
+
277
+ /* Brand */
278
+ --border-brand-faint: #430024;
279
+ --border-brand-subtle: #760043;
280
+ --border-brand: #ae0065;
281
+ --border-brand-medium: #e9008a;
282
+ --border-brand-strong: #ff6cad;
283
+
284
+ /* Accent */
285
+ --border-accent-faint: #002827;
286
+ --border-accent-subtle: #004a48;
287
+ --border-accent: #006f6d;
288
+ --border-accent-medium: #259592;
289
+ --border-accent-strong: #54bbb7;
290
+
291
+ /* Special */
292
+ --border-special-faint: #29005c;
293
+ --border-special-subtle: #4b009f;
294
+ --border-special: #6b34ce;
295
+ --border-special-medium: #8c5df8;
296
+ --border-special-strong: #ac93ff;
297
+
298
+ /* Success */
299
+ --border-success-faint: #002a0d;
300
+ --border-success-subtle: #004e1f;
301
+ --border-success: #007532;
302
+ --border-success-medium: #069e46;
303
+ --border-success-strong: #47c46b;
304
+
305
+ /* Warning */
306
+ --border-warning-faint: #321c00;
307
+ --border-warning-subtle: #5a3700;
308
+ --border-warning: #855400;
309
+ --border-warning-medium: #b37300;
310
+ --border-warning-strong: #e49400;
311
+
312
+ /* Info */
313
+ --border-info-faint: #00204a;
314
+ --border-info-subtle: #003d81;
315
+ --border-info: #005dbd;
316
+ --border-info-medium: #007efc;
317
+ --border-info-strong: #69a9ff;
318
+
319
+ /* Danger */
320
+ --border-danger-faint: #470005;
321
+ --border-danger-subtle: #7c0010;
322
+ --border-danger: #b6001d;
323
+ --border-danger-medium: #ea3039;
324
+ --border-danger-strong: #ff7872;
325
+
326
+ /* TEXT — 5-point hierarchy, primary → disabled. */
327
+
328
+ /* Neutral */
329
+ --text-primary: #ffffff;
330
+ --text-secondary: #c2cacf;
331
+ --text-tertiary: #7e8285;
332
+ --text-muted: #4e4f50;
333
+ --text-disabled: #383838;
334
+ --text-inverted: var(--color-neutral-900);
335
+
336
+ /* Canvas */
337
+ --text-canvas: #9595c6;
338
+ --text-canvas-secondary: #6b6b89;
339
+ --text-canvas-tertiary: #4e4f5e;
340
+ --text-canvas-muted: #3c3c41;
341
+ --text-canvas-disabled: #343435;
342
+
343
+ /* Brand */
344
+ --text-brand: #ff75b1;
345
+ --text-brand-secondary: #df2d88;
346
+ --text-brand-tertiary: #953b63;
347
+ --text-brand-muted: #5c3846;
348
+ --text-brand-disabled: #403337;
349
+
350
+ /* Accent */
351
+ --text-accent: #009d9a;
352
+ --text-accent-secondary: #1f7673;
353
+ --text-accent-tertiary: #2d5351;
354
+ --text-accent-muted: #2c3837;
355
+ --text-accent-disabled: #292a2a;
356
+
357
+ /* Special */
358
+ --text-special: #baa9ff;
359
+ --text-special-secondary: #8665e0;
360
+ --text-special-tertiary: #5c4e8b;
361
+ --text-special-muted: #3e3a4f;
362
+ --text-special-disabled: #303032;
363
+
364
+ /* Success */
365
+ --text-success: #88f2a0;
366
+ --text-success-secondary: #2f974e;
367
+ --text-success-tertiary: #31673e;
368
+ --text-success-muted: #2c4530;
369
+ --text-success-disabled: #263429;
370
+
371
+ /* Warning */
372
+ --text-warning: #ffd19a;
373
+ --text-warning-secondary: #dd9324;
374
+ --text-warning-tertiary: #967042;
375
+ --text-warning-muted: #605345;
376
+ --text-warning-disabled: #454442;
377
+
378
+ /* Info */
379
+ --text-info: #8fbeff;
380
+ --text-info-secondary: #2f81e8;
381
+ --text-info-tertiary: #365d90;
382
+ --text-info-muted: #344051;
383
+ --text-info-disabled: #303133;
384
+
385
+ /* Danger */
386
+ --text-danger: #ff635f;
387
+ --text-danger-secondary: #bb292f;
388
+ --text-danger-tertiary: #813b37;
389
+ --text-danger-muted: #543b39;
390
+ --text-danger-disabled: #3c3939;
391
+
392
+ /* Border Radius */
393
+ --radius-none: 0;
394
+ --radius-sm: 0.125rem; /* 2px */
395
+ --radius-md: 0.25rem; /* 4px */
396
+ --radius-lg: 0.375rem; /* 6px */
397
+ --radius-xl: 0.5rem; /* 8px */
398
+ --radius-2xl: 0.625rem; /* 10px */
399
+ --radius-3xl: 0.75rem; /* 12px */
400
+ --radius-4xl: 1.25rem; /* 20px */
401
+ --radius-full: 9999px;
402
+
403
+ /* Border Width */
404
+ --border-width-0: 0;
405
+ --border-width-1: 1px;
406
+ --border-width-2: 2px;
407
+ --border-width-3: 3px;
408
+ --border-width-4: 4px;
409
+ --border-width-5: 5px;
410
+ --border-width-6: 6px;
411
+ --border-width-8: 8px;
412
+ --border-width-10: 10px;
413
+ --border-width-12: 12px;
414
+ --border-width-16: 16px;
415
+ --border-width-20: 20px;
416
+ --border-width-24: 24px;
417
+
418
+ /* Icon sizing (square) */
419
+ --size-icon-sm: 1rem; /* 16px */
420
+ --size-icon-md: 1.25rem; /* 20px */
421
+ --size-icon-lg: 1.5rem; /* 24px */
422
+ --size-icon-xl: 2rem; /* 32px */
423
+ --size-icon-2xl: 4rem; /* 64px */
424
+ --size-icon-3xl: 6rem; /* 96px */
425
+ --size-icon-4xl: 8rem; /* 128px */
426
+
427
+ /* Spacing */
428
+ --space-0: 0;
429
+ --space-2: 0.125rem; /* 2px */
430
+ --space-4: 0.25rem; /* 4px */
431
+ --space-6: 0.375rem; /* 6px */
432
+ --space-8: 0.5rem; /* 8px */
433
+ --space-10: 0.625rem; /* 10px */
434
+ --space-12: 0.75rem; /* 12px */
435
+ --space-16: 1rem; /* 16px */
436
+ --space-20: 1.25rem; /* 20px */
437
+ --space-24: 1.5rem; /* 24px */
438
+ --space-32: 2rem; /* 32px */
439
+ --space-48: 3rem; /* 48px */
440
+ --space-64: 4rem; /* 64px */
441
+ --space-80: 5rem; /* 80px */
442
+ --space-96: 6rem; /* 96px */
443
+ --space-full: 100%;
444
+
445
+ /* Dot fill ratios — inner-dot as % of outer ring (radio/checkbox). */
446
+ --dot-size-0: 0%;
447
+ --dot-size-25: 25%;
448
+ --dot-size-50: 50%;
449
+ --dot-size-75: 75%;
450
+ --dot-size-100: 100%;
451
+
452
+ /* Backdrop blur radii (for backdrop-filter). */
453
+ --blur-none: 0;
454
+ --blur-sm: 4px;
455
+ --blur-md: 8px;
456
+ --blur-lg: 16px;
457
+ --blur-xl: 24px;
458
+ --blur-2xl: 32px;
459
+
460
+ /* COLUMN LAYOUT — 12-col grid. Drives the dev overlay; consume via
461
+ grid-template-columns: repeat(var(--columns-count), 1fr) etc.
462
+ --columns-margin = side gutters (0 = flush). */
463
+ --columns-count: 12;
464
+ --columns-max-width: 1440px;
465
+ --columns-gutter: clamp(0.5rem, 1.5vw, 1.5rem);
466
+ --columns-margin: 0;
467
+
468
+ /* Font Families */
469
+ --font-display: "Arvo", serif;
470
+ --font-sans: "Manrope", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, sans-serif;
471
+ --font-serif: "GFS Didot", serif;
472
+ --font-mono: "fira-code", ui-monospace, "SF Mono", Menlo, Consolas, monospace, monospace;
473
+
474
+ /* Font Sizes */
475
+ --font-size-xs: 0.75rem; /* 12px */
476
+ --font-size-sm: 0.875rem; /* 14px */
477
+ --font-size-md: 1rem; /* 16px */
478
+ --font-size-lg: 1.125rem; /* 18px */
479
+ --font-size-xl: 1.25rem; /* 20px */
480
+ --font-size-2xl: 1.5rem; /* 24px */
481
+ --font-size-3xl: 1.875rem; /* 30px */
482
+ --font-size-4xl: 2.25rem; /* 36px */
483
+ --font-size-5xl: 3rem; /* 48px */
484
+ --font-size-6xl: 3.5rem; /* 56px */
485
+ --font-size-7xl: 4.5rem; /* 72px */
486
+
487
+ /* Icon glyph sizes — parallel to the type scale. */
488
+ --icon-size-xs: 0.875rem; /* 14px */
489
+ --icon-size-sm: 1rem; /* 16px */
490
+ --icon-size-md: 1.125rem; /* 18px */
491
+ --icon-size-lg: 1.25rem; /* 20px */
492
+ --icon-size-xl: 1.375rem; /* 22px */
493
+ --icon-size-2xl: 1.625rem; /* 26px */
494
+ --icon-size-3xl: 2rem; /* 32px */
495
+ --icon-size-4xl: 2.5rem; /* 40px */
496
+ --icon-size-5xl: 3rem; /* 48px */
497
+ --icon-size-6xl: 3.5rem; /* 56px */
498
+
499
+ /* Font Weights */
500
+ --font-weight-thin: 100;
501
+ --font-weight-extralight: 200;
502
+ --font-weight-light: 300;
503
+ --font-weight-normal: 400;
504
+ --font-weight-medium: 500;
505
+ --font-weight-semibold: 600;
506
+ --font-weight-bold: 700;
507
+ --font-weight-extrabold: 800;
508
+ --font-weight-black: 900;
509
+
510
+ /* Gradients — fallbacks until the editor hydrates. Match
511
+ makeDefaultGradients(). */
512
+ --gradient-1: linear-gradient(90deg, var(--color-brand-500) 0%, var(--color-accent-500) 100%);
513
+ --gradient-2: linear-gradient(135deg, var(--color-brand-500) 0%, var(--color-special-500) 100%);
514
+ --gradient-3: linear-gradient(90deg, var(--color-success-500) 0%, var(--color-info-500) 100%);
515
+ --gradient-4: linear-gradient(45deg, var(--color-danger-500) 0%, var(--color-warning-500) 100%);
516
+
517
+ /* Gradient angle + stop primitives — aliasable like any other token. */
518
+ --gradient-angle-horizontal: 90deg;
519
+ --gradient-angle-diagonal: 135deg;
520
+ --gradient-angle-vertical: 180deg;
521
+ --gradient-stop-start: 0%;
522
+ --gradient-stop-mid: 50%;
523
+ --gradient-stop-end: 100%;
524
+
525
+ /* Shadows (elevation scale) */
526
+ --shadow-none: none;
527
+ --shadow-sm: 1px 1px 2px 0px hsla(237, 18%, 3%, 0.9);
528
+ --shadow-md: 3px 3px 6px 0px hsla(237, 18%, 3%, 0.9);
529
+ --shadow-lg: 5px 5px 9px 0px hsla(237, 18%, 3%, 0.9);
530
+ --shadow-xl: 6px 7px 13px 0px hsla(237, 18%, 3%, 0.9);
531
+ --shadow-2xl: 8px 9px 16px 0px hsla(237, 18%, 3%, 0.9);
532
+
533
+ /* Focus rings (box-shadow outline) */
534
+ --ring-focus-sm: 0 0 0 2px hsla(0, 78%, 60%, 0.1);
535
+ --ring-focus-md: 0 0 0 3px hsla(0, 78%, 60%, 0.1);
536
+ --ring-focus-lg: 0 0 0 4px hsla(0, 78%, 60%, 0.1);
537
+
538
+ /* Durations */
539
+ --duration-75: 75ms;
540
+ --duration-150: 150ms;
541
+ --duration-200: 200ms;
542
+ --duration-300: 300ms;
543
+ --duration-500: 500ms;
544
+ --duration-750: 750ms;
545
+ --duration-1000: 1000ms;
546
+
547
+ /* Z-Index Layers */
548
+ --z-base: 0;
549
+ --z-dropdown: 100;
550
+ --z-sticky: 200;
551
+ --z-overlay: 1000;
552
+ --z-modal: 1100;
553
+ --z-popover: 1200;
554
+ --z-tooltip: 1300;
555
+
556
+ /* Line Heights */
557
+ --line-height-xs: 1;
558
+ --line-height-sm: 1.25;
559
+ --line-height-md: 1.5;
560
+ --line-height-lg: 1.75;
561
+ --line-height-xl: 2;
562
+
563
+ /* Letter Spacing — 5-point, symmetric around normal (0). */
564
+ --letter-spacing-tighter: -0.04em;
565
+ --letter-spacing-tight: -0.02em;
566
+ --letter-spacing-normal: 0;
567
+ --letter-spacing-wide: 0.04em;
568
+ --letter-spacing-wider: 0.08em;
569
+
570
+ /* Text alternate */
571
+ --text-alternate: #ffffff;
572
+ --text-alternate-secondary: #d6d0ce;
573
+ --text-alternate-tertiary: #8a8786;
574
+ --text-alternate-muted: #545352;
575
+ --text-alternate-disabled: #3b3b3b;
576
+ }
577
+
578
+ /* RESPONSIVE TYPE SCALE — display sizes (2xl–6xl) shrink on small
579
+ viewports; body sizes (xs–xl) stay constant. */
580
+
581
+ @media (max-width: 768px) {
582
+ :root {
583
+ --font-size-2xl: 1.375rem; /* 22px */
584
+ --font-size-3xl: 1.625rem; /* 26px */
585
+ --font-size-4xl: 1.875rem; /* 30px */
586
+ --font-size-5xl: 2.25rem; /* 36px */
587
+ --font-size-6xl: 2.5rem; /* 40px */
588
+ --font-size-7xl: 3rem; /* 48px */
589
+ }
590
+ }
591
+
592
+ @media (max-width: 480px) {
593
+ :root {
594
+ --font-size-2xl: 1.25rem; /* 20px */
595
+ --font-size-3xl: 1.5rem; /* 24px */
596
+ --font-size-4xl: 1.75rem; /* 28px */
597
+ --font-size-5xl: 2rem; /* 32px */
598
+ --font-size-6xl: 2.25rem; /* 36px */
599
+ --font-size-7xl: 2.625rem; /* 42px */
600
+ }
601
+ }