@amulet-laboratories/hex 0.3.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 (149) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +120 -0
  3. package/dist/aldricpace.css +5 -0
  4. package/dist/briarcove.css +5 -0
  5. package/dist/briarcovelib.css +5 -0
  6. package/dist/compass.css +5 -0
  7. package/dist/duskline.css +5 -0
  8. package/dist/forge.css +5 -0
  9. package/dist/garden.css +5 -0
  10. package/dist/greyline.css +5 -0
  11. package/dist/hex.css +5 -0
  12. package/dist/kbcv.css +5 -0
  13. package/dist/lanternhouse.css +5 -0
  14. package/dist/marenlys.css +5 -0
  15. package/dist/quizbit.css +5 -0
  16. package/dist/saltsignal.css +5 -0
  17. package/dist/scoped.css +1 -0
  18. package/dist/spacewizard.css +5 -0
  19. package/dist/tidemark.css +5 -0
  20. package/dist/undertow.css +5 -0
  21. package/dist/vscode.css +5 -0
  22. package/package.json +119 -0
  23. package/src/index.css +10 -0
  24. package/src/scoped/bridge.css +47 -0
  25. package/src/scoped/index.css +51 -0
  26. package/src/scoped/themes/aldricpace.css +115 -0
  27. package/src/scoped/themes/briarcove.css +123 -0
  28. package/src/scoped/themes/briarcovelib.css +111 -0
  29. package/src/scoped/themes/compass.css +111 -0
  30. package/src/scoped/themes/duskline.css +117 -0
  31. package/src/scoped/themes/forge.css +123 -0
  32. package/src/scoped/themes/garden.css +123 -0
  33. package/src/scoped/themes/greyline.css +116 -0
  34. package/src/scoped/themes/kbcv.css +111 -0
  35. package/src/scoped/themes/lanternhouse.css +111 -0
  36. package/src/scoped/themes/marenlys.css +112 -0
  37. package/src/scoped/themes/quizbit.css +101 -0
  38. package/src/scoped/themes/saltsignal.css +114 -0
  39. package/src/scoped/themes/spacewizard.css +115 -0
  40. package/src/scoped/themes/tidemark.css +119 -0
  41. package/src/scoped/themes/undertow.css +113 -0
  42. package/src/scoped/themes/vscode.css +230 -0
  43. package/src/scoped/tokens.css +21 -0
  44. package/src/shared/a11y.css +175 -0
  45. package/src/shared/components/core.css +1654 -0
  46. package/src/shared/components/data.css +418 -0
  47. package/src/shared/components/editor.css +358 -0
  48. package/src/shared/components/extras.css +897 -0
  49. package/src/shared/components/layout.css +663 -0
  50. package/src/shared/components/lists.css +278 -0
  51. package/src/shared/components/menus.css +377 -0
  52. package/src/shared/components/nav.css +943 -0
  53. package/src/shared/components/prose.css +302 -0
  54. package/src/shared/components/shell.css +528 -0
  55. package/src/shared/components/spatial.css +184 -0
  56. package/src/shared/components/temporal.css +191 -0
  57. package/src/shared/components/web.css +1689 -0
  58. package/src/shared/rig-defaults.css +121 -0
  59. package/src/shared/scroll-animations.css +176 -0
  60. package/src/shared/tokens.css +125 -0
  61. package/src/shared/utilities.css +204 -0
  62. package/src/themes/aldricpace/base.css +114 -0
  63. package/src/themes/aldricpace/components.css +22 -0
  64. package/src/themes/aldricpace/domains.css +19 -0
  65. package/src/themes/aldricpace/index.css +6 -0
  66. package/src/themes/aldricpace/tokens.css +169 -0
  67. package/src/themes/andrewpassanisi/base.css +192 -0
  68. package/src/themes/andrewpassanisi/index.css +11 -0
  69. package/src/themes/andrewpassanisi/tokens.css +136 -0
  70. package/src/themes/briarcove/base.css +170 -0
  71. package/src/themes/briarcove/components.css +27 -0
  72. package/src/themes/briarcove/domains.css +72 -0
  73. package/src/themes/briarcove/index.css +6 -0
  74. package/src/themes/briarcove/tokens.css +179 -0
  75. package/src/themes/briarcovelib/base.css +111 -0
  76. package/src/themes/briarcovelib/components.css +22 -0
  77. package/src/themes/briarcovelib/domains.css +19 -0
  78. package/src/themes/briarcovelib/index.css +6 -0
  79. package/src/themes/briarcovelib/tokens.css +167 -0
  80. package/src/themes/compass/base.css +112 -0
  81. package/src/themes/compass/components.css +22 -0
  82. package/src/themes/compass/domains.css +19 -0
  83. package/src/themes/compass/index.css +6 -0
  84. package/src/themes/compass/tokens.css +167 -0
  85. package/src/themes/duskline/base.css +167 -0
  86. package/src/themes/duskline/components.css +27 -0
  87. package/src/themes/duskline/domains.css +72 -0
  88. package/src/themes/duskline/index.css +6 -0
  89. package/src/themes/duskline/tokens.css +171 -0
  90. package/src/themes/forge/base.css +165 -0
  91. package/src/themes/forge/components.css +24 -0
  92. package/src/themes/forge/domains.css +72 -0
  93. package/src/themes/forge/index.css +6 -0
  94. package/src/themes/forge/tokens.css +178 -0
  95. package/src/themes/garden/base.css +167 -0
  96. package/src/themes/garden/components.css +27 -0
  97. package/src/themes/garden/domains.css +72 -0
  98. package/src/themes/garden/index.css +6 -0
  99. package/src/themes/garden/tokens.css +178 -0
  100. package/src/themes/greyline/base.css +165 -0
  101. package/src/themes/greyline/components.css +24 -0
  102. package/src/themes/greyline/domains.css +70 -0
  103. package/src/themes/greyline/index.css +6 -0
  104. package/src/themes/greyline/tokens.css +161 -0
  105. package/src/themes/kbcv/base.css +112 -0
  106. package/src/themes/kbcv/components.css +22 -0
  107. package/src/themes/kbcv/domains.css +19 -0
  108. package/src/themes/kbcv/index.css +6 -0
  109. package/src/themes/kbcv/tokens.css +167 -0
  110. package/src/themes/lanternhouse/base.css +170 -0
  111. package/src/themes/lanternhouse/components.css +27 -0
  112. package/src/themes/lanternhouse/domains.css +72 -0
  113. package/src/themes/lanternhouse/index.css +6 -0
  114. package/src/themes/lanternhouse/tokens.css +167 -0
  115. package/src/themes/marenlys/base.css +181 -0
  116. package/src/themes/marenlys/components.css +27 -0
  117. package/src/themes/marenlys/domains.css +72 -0
  118. package/src/themes/marenlys/index.css +6 -0
  119. package/src/themes/marenlys/tokens.css +167 -0
  120. package/src/themes/quizbit/base.css +120 -0
  121. package/src/themes/quizbit/components.css +27 -0
  122. package/src/themes/quizbit/domains.css +7 -0
  123. package/src/themes/quizbit/index.css +6 -0
  124. package/src/themes/quizbit/tokens.css +132 -0
  125. package/src/themes/saltsignal/base.css +168 -0
  126. package/src/themes/saltsignal/components.css +27 -0
  127. package/src/themes/saltsignal/domains.css +72 -0
  128. package/src/themes/saltsignal/index.css +6 -0
  129. package/src/themes/saltsignal/tokens.css +170 -0
  130. package/src/themes/spacewizard/base.css +165 -0
  131. package/src/themes/spacewizard/components.css +24 -0
  132. package/src/themes/spacewizard/domains.css +70 -0
  133. package/src/themes/spacewizard/index.css +6 -0
  134. package/src/themes/spacewizard/tokens.css +160 -0
  135. package/src/themes/tidemark/base.css +169 -0
  136. package/src/themes/tidemark/components.css +27 -0
  137. package/src/themes/tidemark/domains.css +72 -0
  138. package/src/themes/tidemark/index.css +6 -0
  139. package/src/themes/tidemark/tokens.css +175 -0
  140. package/src/themes/undertow/base.css +114 -0
  141. package/src/themes/undertow/components.css +22 -0
  142. package/src/themes/undertow/domains.css +19 -0
  143. package/src/themes/undertow/index.css +6 -0
  144. package/src/themes/undertow/tokens.css +171 -0
  145. package/src/themes/vscode/base.css +104 -0
  146. package/src/themes/vscode/components.css +24 -0
  147. package/src/themes/vscode/domains.css +132 -0
  148. package/src/themes/vscode/index.css +13 -0
  149. package/src/themes/vscode/tokens.css +346 -0
@@ -0,0 +1,121 @@
1
+ /* Hex — Default Rig Component Token Bridge
2
+ *
3
+ * Maps every --rig-* semantic token to a sensible --color-* default.
4
+ * Themes inherit these automatically — they only need to override values
5
+ * where the theme's visual identity diverges from the generic mapping.
6
+ *
7
+ * VSCode overrides nearly all of these for 1:1 IDE fidelity.
8
+ * Hexrig and Garden override only a handful (hover-bg, scrollbar).
9
+ */
10
+
11
+ :root {
12
+ /* ── Button ──────────────────────────────────────────────────── */
13
+ --rig-button-bg: var(--color-primary);
14
+ --rig-button-fg: var(--color-primary-foreground);
15
+ --rig-button-hover-bg: var(--color-primary);
16
+ --rig-button-hover-fg: var(--color-foreground);
17
+ --rig-button-border: transparent;
18
+ --rig-button-secondary-bg: transparent;
19
+ --rig-button-secondary-fg: var(--color-foreground);
20
+ --rig-button-secondary-hover-bg: var(--color-accent);
21
+ --rig-button-secondary-hover-fg: var(--color-accent-foreground);
22
+
23
+ /* ── Input / Textarea ────────────────────────────────────────── */
24
+ --rig-input-bg: var(--color-secondary);
25
+ --rig-input-border: var(--color-input);
26
+ --rig-input-fg: var(--color-foreground);
27
+ --rig-input-placeholder: var(--color-muted-foreground);
28
+
29
+ /* ── Dropdown / Select ───────────────────────────────────────── */
30
+ --rig-dropdown-bg: var(--color-secondary);
31
+ --rig-dropdown-border: var(--color-input);
32
+ --rig-dropdown-fg: var(--color-foreground);
33
+ --rig-dropdown-list-bg: var(--color-background);
34
+
35
+ /* ── Checkbox / Radio ────────────────────────────────────────── */
36
+ --rig-checkbox-bg: var(--color-secondary);
37
+ --rig-checkbox-border: var(--color-input);
38
+
39
+ /* ── Badge ───────────────────────────────────────────────────── */
40
+ --rig-badge-bg: var(--color-secondary);
41
+ --rig-badge-fg: var(--color-foreground);
42
+
43
+ /* ── Description / Muted text ────────────────────────────────── */
44
+ --rig-description-fg: var(--color-muted-foreground);
45
+
46
+ /* ── Keybinding ──────────────────────────────────────────────── */
47
+ --rig-keybinding-fg: var(--color-foreground);
48
+
49
+ /* ── Progress ────────────────────────────────────────────────── */
50
+ --rig-progress-bg: var(--color-primary);
51
+
52
+ /* ── List / Tree ─────────────────────────────────────────────── */
53
+ --rig-list-hover-bg: var(--color-accent);
54
+ --rig-list-active-bg: var(--color-primary);
55
+ --rig-list-active-fg: var(--color-primary-foreground);
56
+ --rig-list-inactive-bg: var(--color-accent);
57
+
58
+ /* ── Activity Bar ────────────────────────────────────────────── */
59
+ --rig-activitybar-bg: var(--color-muted);
60
+ --rig-activitybar-border: var(--color-border);
61
+ --rig-activitybar-fg: var(--color-foreground);
62
+ --rig-activitybar-inactive-fg: var(--color-muted-foreground);
63
+ --rig-activitybar-active-border: var(--color-primary);
64
+ --rig-activitybar-badge-bg: var(--color-primary);
65
+ --rig-activitybar-badge-fg: var(--color-primary-foreground);
66
+
67
+ /* ── Sidebar ─────────────────────────────────────────────────── */
68
+ --rig-sidebar-bg: var(--color-muted);
69
+ --rig-sidebar-fg: var(--color-foreground);
70
+ --rig-sidebar-border: var(--color-border);
71
+ --rig-sidebar-section-header-border: var(--color-border);
72
+
73
+ /* ── Panel ───────────────────────────────────────────────────── */
74
+ --rig-panel-border: var(--color-border);
75
+ --rig-panel-title-active-border: var(--color-primary);
76
+ --rig-panel-title-active-fg: var(--color-foreground);
77
+ --rig-panel-title-inactive-fg: var(--color-muted-foreground);
78
+
79
+ /* ── Editor Tabs ─────────────────────────────────────────────── */
80
+ --rig-tab-active-bg: var(--color-background);
81
+ --rig-tab-active-fg: var(--color-foreground);
82
+ --rig-tab-active-border-top: var(--color-primary);
83
+ --rig-tab-inactive-bg: var(--color-muted);
84
+ --rig-tab-inactive-fg: var(--color-muted-foreground);
85
+ --rig-tab-border: var(--color-border);
86
+ --rig-editor-group-header-bg: var(--color-muted);
87
+
88
+ /* ── Editor ──────────────────────────────────────────────────── */
89
+ --rig-editor-bg: var(--color-background);
90
+ --rig-editor-fg: var(--color-foreground);
91
+ --rig-editor-line-number-fg: var(--color-muted-foreground);
92
+
93
+ /* ── Status Bar ──────────────────────────────────────────────── */
94
+ --rig-statusbar-bg: var(--color-muted);
95
+ --rig-statusbar-fg: var(--color-foreground);
96
+ --rig-statusbar-border: var(--color-border);
97
+ --rig-statusbar-hover-bg: var(--color-accent);
98
+
99
+ /* ── Quick Input / Command Palette ───────────────────────────── */
100
+ --rig-quickinput-bg: var(--color-popover);
101
+
102
+ /* ── Menu ────────────────────────────────────────────────────── */
103
+ --rig-menu-bg: var(--color-background);
104
+ --rig-menu-selection-bg: var(--color-primary);
105
+
106
+ /* ── Notification ────────────────────────────────────────────── */
107
+ --rig-notification-bg: var(--color-background);
108
+ --rig-notification-fg: var(--color-foreground);
109
+ --rig-notification-border: var(--color-border);
110
+
111
+ /* ── Widget (popover, tooltip, dropdown panels) ──────────────── */
112
+ --rig-widget-bg: var(--color-popover);
113
+ --rig-widget-border: var(--color-border);
114
+
115
+ /* ── Scrollbar ───────────────────────────────────────────────── */
116
+ --rig-scrollbar-thumb: rgba(128, 128, 128, 0.3);
117
+ --rig-scrollbar-thumb-hover: rgba(128, 128, 128, 0.5);
118
+
119
+ /* ── Sash / Resizer ──────────────────────────────────────────── */
120
+ --rig-sash-hover: var(--color-primary);
121
+ }
@@ -0,0 +1,176 @@
1
+ /* Hex — Shared Scroll Animation Utilities
2
+ * Reusable scroll-driven animation classes for marketing themes.
3
+ * These use CSS scroll-timeline features (view()) for zero-JS animations.
4
+ *
5
+ * Classes:
6
+ * .scroll-reveal — basic fade + rise on scroll into view
7
+ * .scroll-reveal-blur — fade + rise + blur entry/exit (bidirectional)
8
+ * .scroll-stagger — parent container that delays children
9
+ * .scroll-draw — SVG stroke-draw on scroll into view
10
+ * .parallax-slow — slow scroll-driven Y translation
11
+ * .parallax-mid — medium scroll-driven Y translation
12
+ *
13
+ * All animations respect prefers-reduced-motion.
14
+ */
15
+
16
+ /* ───────── Basic scroll reveal (entry only) ───────── */
17
+
18
+ @keyframes scroll-fade-in {
19
+ from {
20
+ opacity: 0;
21
+ transform: translateY(20px);
22
+ }
23
+
24
+ to {
25
+ opacity: 1;
26
+ transform: translateY(0);
27
+ }
28
+ }
29
+
30
+ .scroll-reveal {
31
+ animation: scroll-fade-in linear both;
32
+ animation-timeline: view();
33
+ animation-range: entry 10% cover 30%;
34
+ }
35
+
36
+ /* ───────── Advanced scroll reveal with blur (entry + exit) ───────── */
37
+
38
+ @keyframes scroll-reveal-blur-in {
39
+ from {
40
+ opacity: 0;
41
+ filter: blur(6px);
42
+ transform: translateY(24px);
43
+ }
44
+
45
+ to {
46
+ opacity: 1;
47
+ filter: blur(0);
48
+ transform: translateY(0);
49
+ }
50
+ }
51
+
52
+ @keyframes scroll-reveal-blur-out {
53
+ from {
54
+ opacity: 1;
55
+ filter: blur(0);
56
+ transform: translateY(0);
57
+ }
58
+
59
+ to {
60
+ opacity: 0;
61
+ filter: blur(6px);
62
+ transform: translateY(-24px);
63
+ }
64
+ }
65
+
66
+ .scroll-reveal-blur {
67
+ animation:
68
+ scroll-reveal-blur-in linear both,
69
+ scroll-reveal-blur-out linear both;
70
+ animation-timeline: view(), view();
71
+ animation-range:
72
+ entry 5% cover 25%,
73
+ exit 0% exit 30%;
74
+ }
75
+
76
+ /* ───────── Stagger children utility ───────── */
77
+
78
+ .scroll-stagger > :nth-child(1) {
79
+ animation-delay: 0ms;
80
+ }
81
+ .scroll-stagger > :nth-child(2) {
82
+ animation-delay: 80ms;
83
+ }
84
+ .scroll-stagger > :nth-child(3) {
85
+ animation-delay: 160ms;
86
+ }
87
+ .scroll-stagger > :nth-child(4) {
88
+ animation-delay: 240ms;
89
+ }
90
+ .scroll-stagger > :nth-child(5) {
91
+ animation-delay: 320ms;
92
+ }
93
+ .scroll-stagger > :nth-child(6) {
94
+ animation-delay: 400ms;
95
+ }
96
+
97
+ /* ───────── SVG scroll-draw ───────── */
98
+
99
+ @keyframes scroll-draw-in {
100
+ from {
101
+ stroke-dashoffset: 1;
102
+ }
103
+
104
+ to {
105
+ stroke-dashoffset: 0;
106
+ }
107
+ }
108
+
109
+ .scroll-draw path,
110
+ .scroll-draw line,
111
+ .scroll-draw polyline,
112
+ .scroll-draw polygon,
113
+ .scroll-draw circle,
114
+ .scroll-draw ellipse {
115
+ stroke-dasharray: 1;
116
+ stroke-dashoffset: 1;
117
+ animation: scroll-draw-in linear both;
118
+ animation-timeline: view();
119
+ animation-range: entry 20% cover 50%;
120
+ }
121
+
122
+ /* ───────── Parallax drift ───────── */
123
+
124
+ @keyframes parallax-drift {
125
+ from {
126
+ transform: translateY(var(--parallax-distance, 40px));
127
+ }
128
+
129
+ to {
130
+ transform: translateY(calc(var(--parallax-distance, 40px) * -1));
131
+ }
132
+ }
133
+
134
+ .parallax-slow {
135
+ --parallax-distance: 30px;
136
+ animation: parallax-drift linear both;
137
+ animation-timeline: scroll();
138
+ }
139
+
140
+ .parallax-mid {
141
+ --parallax-distance: 60px;
142
+ animation: parallax-drift linear both;
143
+ animation-timeline: scroll();
144
+ }
145
+
146
+ /* ───────── Reduced motion ───────── */
147
+
148
+ @media (prefers-reduced-motion: reduce) {
149
+ .scroll-reveal,
150
+ .scroll-reveal-blur {
151
+ animation: none;
152
+ opacity: 1;
153
+ filter: none;
154
+ transform: none;
155
+ }
156
+
157
+ .scroll-stagger > * {
158
+ animation-delay: 0ms !important;
159
+ }
160
+
161
+ .scroll-draw path,
162
+ .scroll-draw line,
163
+ .scroll-draw polyline,
164
+ .scroll-draw polygon,
165
+ .scroll-draw circle,
166
+ .scroll-draw ellipse {
167
+ animation: none;
168
+ stroke-dashoffset: 0;
169
+ }
170
+
171
+ .parallax-slow,
172
+ .parallax-mid {
173
+ animation: none;
174
+ transform: none;
175
+ }
176
+ }
@@ -0,0 +1,125 @@
1
+ /* Hex — Semantic Component Tokens
2
+ * Defines --rig-* tokens used by all shared component CSS.
3
+ * Themes override these by defining their own --rig-* values.
4
+ * Default values fall back to base shadcn/Tailwind tokens so components
5
+ * render reasonably even without a specific theme loaded.
6
+ */
7
+
8
+ :root {
9
+ /* ── Activity Bar ── */
10
+ --rig-activitybar-bg: var(--color-muted);
11
+ --rig-activitybar-border: var(--color-border);
12
+ --rig-activitybar-fg: var(--color-foreground);
13
+ --rig-activitybar-inactive-fg: var(--color-muted-foreground);
14
+ --rig-activitybar-active-border: var(--color-primary);
15
+ --rig-activitybar-active-border-width: 2px;
16
+ --rig-activitybar-active-fg: var(--color-foreground);
17
+
18
+ /* ── Sidebar ── */
19
+ --rig-sidebar-active-bg: color-mix(in srgb, var(--color-foreground) 8%, transparent);
20
+
21
+ /* ── Badge ── */
22
+ --rig-badge-bg: var(--color-primary);
23
+ --rig-badge-fg: var(--color-primary-foreground);
24
+ --rig-activitybar-badge-bg: var(--color-primary);
25
+ --rig-activitybar-badge-fg: var(--color-primary-foreground);
26
+
27
+ /* ── Button ── */
28
+ --rig-button-bg: var(--color-primary);
29
+ --rig-button-fg: var(--color-primary-foreground);
30
+ --rig-button-hover-bg: color-mix(in srgb, var(--color-primary) 85%, black);
31
+ --rig-button-border: var(--color-border);
32
+ --rig-button-secondary-bg: transparent;
33
+ --rig-button-secondary-fg: var(--color-foreground);
34
+ --rig-button-secondary-hover-bg: var(--color-accent);
35
+
36
+ /* ── Checkbox ── */
37
+ --rig-checkbox-bg: var(--color-input);
38
+ --rig-checkbox-border: var(--color-border);
39
+
40
+ /* ── Muted / Description text ── */
41
+ --rig-description-fg: var(--color-muted-foreground);
42
+
43
+ /* ── Search highlight ── */
44
+ --rig-highlight-bg: var(--color-warning);
45
+ --rig-highlight-fg: var(--color-background);
46
+
47
+ /* ── Dropdown ── */
48
+ --rig-dropdown-bg: var(--color-popover);
49
+ --rig-dropdown-border: var(--color-border);
50
+ --rig-dropdown-fg: var(--color-foreground);
51
+ --rig-dropdown-list-bg: var(--color-background);
52
+
53
+ /* ── Editor ── */
54
+ --rig-editor-bg: var(--color-background);
55
+ --rig-editor-fg: var(--color-foreground);
56
+ --rig-editor-group-header-bg: var(--color-muted);
57
+ --rig-editor-line-number-fg: var(--color-muted-foreground);
58
+
59
+ /* ── Input ── */
60
+ --rig-input-bg: var(--color-input);
61
+ --rig-input-border: var(--color-border);
62
+ --rig-input-fg: var(--color-foreground);
63
+ --rig-input-placeholder: var(--color-muted-foreground);
64
+
65
+ /* ── Keybinding ── */
66
+ --rig-keybinding-fg: var(--color-foreground);
67
+
68
+ /* ── List ── */
69
+ --rig-list-active-bg: var(--color-primary);
70
+ --rig-list-active-fg: var(--color-primary-foreground);
71
+ --rig-list-hover-bg: color-mix(in srgb, var(--color-foreground) 4%, transparent);
72
+ --rig-list-inactive-bg: color-mix(in srgb, var(--color-foreground) 6%, transparent);
73
+
74
+ /* ── Menu ── */
75
+ --rig-menu-bg: var(--color-popover);
76
+ --rig-menu-selection-bg: var(--color-primary);
77
+
78
+ /* ── Notification / Overlay ── */
79
+ --rig-notification-bg: var(--color-popover);
80
+ --rig-notification-fg: var(--color-foreground);
81
+ --rig-notification-border: var(--color-border);
82
+
83
+ /* ── Panel ── */
84
+ --rig-panel-border: var(--color-border);
85
+ --rig-panel-title-active-border: var(--color-primary);
86
+ --rig-panel-title-active-fg: var(--color-foreground);
87
+ --rig-panel-title-inactive-fg: var(--color-muted-foreground);
88
+
89
+ /* ── Progress ── */
90
+ --rig-progress-bg: var(--color-primary);
91
+
92
+ /* ── Quick Input ── */
93
+ --rig-quickinput-bg: var(--color-popover);
94
+
95
+ /* ── Sash ── */
96
+ --rig-sash-hover: var(--color-primary);
97
+
98
+ /* ── Scrollbar ── */
99
+ --rig-scrollbar-thumb: color-mix(in srgb, var(--color-foreground) 15%, transparent);
100
+ --rig-scrollbar-thumb-hover: color-mix(in srgb, var(--color-foreground) 28%, transparent);
101
+
102
+ /* ── Sidebar ── */
103
+ --rig-sidebar-bg: var(--color-muted);
104
+ --rig-sidebar-border: var(--color-border);
105
+ --rig-sidebar-fg: var(--color-foreground);
106
+ --rig-sidebar-section-header-border: var(--color-border);
107
+
108
+ /* ── Status Bar ── */
109
+ --rig-statusbar-bg: var(--color-muted);
110
+ --rig-statusbar-border: var(--color-border);
111
+ --rig-statusbar-fg: var(--color-foreground);
112
+ --rig-statusbar-hover-bg: color-mix(in srgb, var(--color-foreground) 10%, transparent);
113
+
114
+ /* ── Tabs ── */
115
+ --rig-tab-active-bg: var(--color-background);
116
+ --rig-tab-active-border-top: var(--color-primary);
117
+ --rig-tab-active-fg: var(--color-foreground);
118
+ --rig-tab-border: var(--color-border);
119
+ --rig-tab-inactive-bg: var(--color-muted);
120
+ --rig-tab-inactive-fg: var(--color-muted-foreground);
121
+
122
+ /* ── Widget ── */
123
+ --rig-widget-bg: var(--color-popover);
124
+ --rig-widget-border: var(--color-border);
125
+ }
@@ -0,0 +1,204 @@
1
+ /* Hex — Shared Utility Classes
2
+ * Reusable decorative and interactive utilities for marketing themes.
3
+ * All utilities use CSS custom properties for per-use parameterization.
4
+ *
5
+ * Classes:
6
+ * .paper-grain — fractal noise overlay (add to body or container)
7
+ * .link-slide — sliding underline on hover
8
+ * .heading-glow — text-shadow luminous haze
9
+ * .ornament-float — drop-shadow for decorative elements
10
+ *
11
+ * All respect prefers-reduced-motion where applicable.
12
+ */
13
+
14
+ /* ───────── Paper grain overlay ───────── */
15
+
16
+ .paper-grain::after {
17
+ content: '';
18
+ position: fixed;
19
+ inset: 0;
20
+ z-index: 9999;
21
+ pointer-events: none;
22
+ opacity: var(--paper-grain-opacity, 0.06);
23
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
24
+ background-repeat: repeat;
25
+ background-size: 256px 256px;
26
+ }
27
+
28
+ /* ───────── Sliding underline links ───────── */
29
+
30
+ .link-slide {
31
+ position: relative;
32
+ display: inline-block;
33
+ text-decoration: none;
34
+ }
35
+
36
+ .link-slide::after {
37
+ content: '';
38
+ position: absolute;
39
+ bottom: -2px;
40
+ left: 0;
41
+ width: 100%;
42
+ height: 1px;
43
+ background: var(--link-slide-color, var(--color-primary));
44
+ transform: scaleX(0);
45
+ transform-origin: left;
46
+ transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
47
+ }
48
+
49
+ .link-slide:hover::after {
50
+ transform: scaleX(1);
51
+ }
52
+
53
+ /* ───────── Heading glow ───────── */
54
+
55
+ .heading-glow {
56
+ text-shadow:
57
+ 0 0 30px var(--heading-glow-color, color-mix(in srgb, var(--color-primary) 20%, transparent)),
58
+ 0 0 60px
59
+ var(--heading-glow-color-faint, color-mix(in srgb, var(--color-primary) 6%, transparent));
60
+ }
61
+
62
+ /* ───────── Ornament float shadow ───────── */
63
+
64
+ .ornament-float {
65
+ filter: drop-shadow(1px 2px 3px rgba(0, 0, 0, 0.25));
66
+ }
67
+
68
+ /* ───────── CTA button variants ───────── */
69
+
70
+ [data-rig-button][data-variant='cta'],
71
+ [data-rig-button][data-variant='cta-light'] {
72
+ cursor: pointer;
73
+ }
74
+
75
+ [data-rig-button][data-variant='cta'] {
76
+ font-family: var(--font-mono, monospace);
77
+ font-size: 0.8125rem;
78
+ font-weight: 500;
79
+ text-transform: uppercase;
80
+ letter-spacing: 0.1em;
81
+ text-decoration: none;
82
+ color: var(--color-primary-foreground);
83
+ background: var(--color-primary);
84
+ padding: 1rem 2.25rem;
85
+ border: 1px solid transparent;
86
+ border-radius: var(--radius, 4px);
87
+ box-shadow:
88
+ 0 1px 2px rgba(0, 0, 0, 0.2),
89
+ 0 2px 8px color-mix(in srgb, var(--color-primary) 15%, transparent);
90
+ transition:
91
+ background 0.3s cubic-bezier(0.22, 1, 0.36, 1),
92
+ color 0.3s cubic-bezier(0.22, 1, 0.36, 1),
93
+ border-color 0.3s cubic-bezier(0.22, 1, 0.36, 1),
94
+ transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),
95
+ box-shadow 0.3s cubic-bezier(0.22, 1, 0.36, 1);
96
+ }
97
+
98
+ [data-rig-button][data-variant='cta']:hover {
99
+ background: color-mix(in srgb, var(--color-primary) 85%, white);
100
+ transform: translateY(-1px);
101
+ box-shadow:
102
+ 0 2px 4px rgba(0, 0, 0, 0.25),
103
+ 0 4px 16px color-mix(in srgb, var(--color-primary) 20%, transparent);
104
+ }
105
+
106
+ [data-rig-button][data-variant='cta']:active {
107
+ transform: translateY(0.5px);
108
+ box-shadow:
109
+ 0 1px 1px rgba(0, 0, 0, 0.2),
110
+ 0 1px 4px color-mix(in srgb, var(--color-primary) 10%, transparent);
111
+ transition-duration: 0.1s;
112
+ }
113
+
114
+ [data-rig-button][data-variant='cta-light'] {
115
+ font-family: var(--font-mono, monospace);
116
+ font-size: 0.8125rem;
117
+ font-weight: 500;
118
+ text-transform: uppercase;
119
+ letter-spacing: 0.1em;
120
+ text-decoration: none;
121
+ background: transparent;
122
+ border: 1px solid var(--color-foreground);
123
+ color: var(--color-foreground);
124
+ padding: 1rem 2.25rem;
125
+ border-radius: var(--radius, 4px);
126
+ box-shadow:
127
+ 0 1px 2px rgba(0, 0, 0, 0.15),
128
+ 0 2px 8px color-mix(in srgb, var(--color-foreground) 6%, transparent);
129
+ transition:
130
+ background 0.3s cubic-bezier(0.22, 1, 0.36, 1),
131
+ color 0.3s cubic-bezier(0.22, 1, 0.36, 1),
132
+ border-color 0.3s cubic-bezier(0.22, 1, 0.36, 1),
133
+ transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),
134
+ box-shadow 0.3s cubic-bezier(0.22, 1, 0.36, 1);
135
+ }
136
+
137
+ [data-rig-button][data-variant='cta-light']:hover {
138
+ background: var(--color-foreground);
139
+ color: var(--color-background);
140
+ transform: translateY(-1px);
141
+ box-shadow:
142
+ 0 2px 4px rgba(0, 0, 0, 0.2),
143
+ 0 4px 16px color-mix(in srgb, var(--color-foreground) 12%, transparent);
144
+ }
145
+
146
+ [data-rig-button][data-variant='cta-light']:active {
147
+ transform: translateY(0.5px);
148
+ box-shadow:
149
+ 0 1px 1px rgba(0, 0, 0, 0.15),
150
+ 0 1px 4px color-mix(in srgb, var(--color-foreground) 5%, transparent);
151
+ transition-duration: 0.1s;
152
+ }
153
+
154
+ /* ───────── Focus rings for CTAs ───────── */
155
+
156
+ [data-rig-button][data-variant='cta']:focus-visible,
157
+ [data-rig-button][data-variant='cta-light']:focus-visible {
158
+ outline: 2px solid var(--color-ring, var(--color-primary));
159
+ outline-offset: 3px;
160
+ }
161
+
162
+ /* ───────── Decorative backgrounds ───────── */
163
+
164
+ .bg-scrim-soft {
165
+ background: linear-gradient(
166
+ to bottom,
167
+ color-mix(in srgb, var(--color-background) 82%, transparent),
168
+ color-mix(in srgb, var(--color-background) 92%, transparent)
169
+ );
170
+ }
171
+
172
+ .bg-stripe-primary {
173
+ background: repeating-linear-gradient(
174
+ 90deg,
175
+ var(--color-primary) 0,
176
+ var(--color-primary) 1px,
177
+ transparent 1px,
178
+ transparent 60px
179
+ );
180
+ }
181
+
182
+ /* ───────── Typography utilities ───────── */
183
+
184
+ .font-smallcaps {
185
+ font-variant: small-caps;
186
+ }
187
+
188
+ /* ───────── Reduced motion ───────── */
189
+
190
+ @media (prefers-reduced-motion: reduce) {
191
+ [data-rig-button][data-variant='cta']:hover,
192
+ [data-rig-button][data-variant='cta-light']:hover {
193
+ transform: none;
194
+ }
195
+
196
+ [data-rig-button][data-variant='cta']:active,
197
+ [data-rig-button][data-variant='cta-light']:active {
198
+ transform: none;
199
+ }
200
+
201
+ .link-slide::after {
202
+ transition: none;
203
+ }
204
+ }