@amulet-laboratories/hex 0.3.0 → 0.5.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 (189) hide show
  1. package/dist/beacon.css +1 -0
  2. package/dist/brass.css +5 -0
  3. package/dist/cardinal.css +5 -0
  4. package/dist/citron.css +5 -0
  5. package/dist/clover.css +5 -0
  6. package/dist/cobalt.css +5 -0
  7. package/dist/copper.css +5 -0
  8. package/dist/cypress.css +5 -0
  9. package/dist/damson.css +5 -0
  10. package/dist/fern.css +5 -0
  11. package/dist/forge.css +2 -2
  12. package/dist/garden.css +2 -2
  13. package/dist/greyline.css +2 -2
  14. package/dist/harbor.css +5 -0
  15. package/dist/hearth.css +5 -0
  16. package/dist/hex.css +2 -2
  17. package/dist/iris.css +5 -0
  18. package/dist/juniper.css +5 -0
  19. package/dist/lagoon.css +5 -0
  20. package/dist/ochre.css +5 -0
  21. package/dist/orchid.css +5 -0
  22. package/dist/quartz.css +5 -0
  23. package/dist/roast.css +5 -0
  24. package/dist/sienna.css +5 -0
  25. package/dist/slate.css +5 -0
  26. package/dist/spacewizard.css +2 -2
  27. package/dist/vesper.css +5 -0
  28. package/dist/voltaic.css +1 -0
  29. package/package.json +73 -53
  30. package/src/index.css +3 -3
  31. package/src/scoped/index.css +13 -13
  32. package/src/scoped/themes/{kbcv.css → cardinal.css} +17 -1
  33. package/src/scoped/themes/citron.css +105 -0
  34. package/src/scoped/themes/{compass.css → clover.css} +26 -13
  35. package/src/scoped/themes/{vscode.css → cobalt.css} +10 -5
  36. package/src/scoped/themes/{undertow.css → copper.css} +16 -1
  37. package/src/scoped/themes/{tidemark.css → cypress.css} +24 -11
  38. package/src/scoped/themes/{aldricpace.css → harbor.css} +15 -3
  39. package/src/scoped/themes/hearth.css +134 -0
  40. package/src/scoped/themes/{briarcove.css → iris.css} +13 -2
  41. package/src/scoped/themes/juniper.css +121 -0
  42. package/src/scoped/themes/{duskline.css → lagoon.css} +25 -9
  43. package/src/scoped/themes/{saltsignal.css → ochre.css} +23 -10
  44. package/src/scoped/themes/{marenlys.css → orchid.css} +26 -9
  45. package/src/scoped/themes/{briarcovelib.css → sienna.css} +20 -7
  46. package/src/scoped/themes/{lanternhouse.css → vesper.css} +27 -6
  47. package/src/scoped/tokens.css +2 -0
  48. package/src/shared/components/content.css +772 -0
  49. package/src/shared/components/core.css +88 -720
  50. package/src/shared/components/data.css +24 -126
  51. package/src/shared/components/editor.css +33 -164
  52. package/src/shared/components/extras.css +30 -346
  53. package/src/shared/components/layout.css +21 -369
  54. package/src/shared/components/lists.css +11 -114
  55. package/src/shared/components/menus.css +10 -146
  56. package/src/shared/components/nav.css +112 -501
  57. package/src/shared/components/prose.css +12 -180
  58. package/src/shared/components/shell.css +22 -259
  59. package/src/shared/components/spatial.css +15 -47
  60. package/src/shared/components/temporal.css +28 -68
  61. package/src/shared/components/web.css +42 -1037
  62. package/src/shared/tokens.css +37 -0
  63. package/src/shared/utilities.css +52 -3
  64. package/src/themes/beacon/base.css +59 -0
  65. package/src/themes/beacon/index.css +11 -0
  66. package/src/themes/beacon/tokens.css +219 -0
  67. package/src/themes/brass/base.css +179 -0
  68. package/src/themes/brass/components.css +23 -0
  69. package/src/themes/brass/domains.css +731 -0
  70. package/src/themes/brass/tokens.css +208 -0
  71. package/src/themes/{kbcv → cardinal}/tokens.css +5 -0
  72. package/src/themes/citron/base.css +232 -0
  73. package/src/themes/citron/tokens.css +136 -0
  74. package/src/themes/{vscode → cobalt}/tokens.css +5 -5
  75. package/src/themes/damson/base.css +179 -0
  76. package/src/themes/damson/components.css +23 -0
  77. package/src/themes/damson/domains.css +731 -0
  78. package/src/themes/damson/tokens.css +208 -0
  79. package/src/themes/{quizbit → fern}/base.css +21 -27
  80. package/src/themes/fern/components.css +23 -0
  81. package/src/themes/fern/domains.css +731 -0
  82. package/src/themes/fern/tokens.css +208 -0
  83. package/src/themes/{aldricpace → harbor}/tokens.css +5 -0
  84. package/src/themes/hearth/base.css +111 -0
  85. package/src/themes/hearth/components.css +22 -0
  86. package/src/themes/hearth/domains.css +19 -0
  87. package/src/themes/hearth/tokens.css +179 -0
  88. package/src/themes/juniper/base.css +111 -0
  89. package/src/themes/juniper/components.css +22 -0
  90. package/src/themes/juniper/domains.css +19 -0
  91. package/src/themes/juniper/tokens.css +171 -0
  92. package/src/themes/lagoon/index.css +6 -0
  93. package/src/themes/{duskline → lagoon}/tokens.css +5 -0
  94. package/src/themes/ochre/index.css +6 -0
  95. package/src/themes/{saltsignal → ochre}/tokens.css +8 -8
  96. package/src/themes/orchid/index.css +6 -0
  97. package/src/themes/{marenlys → orchid}/tokens.css +8 -3
  98. package/src/themes/quartz/base.css +114 -0
  99. package/src/themes/quartz/components.css +23 -0
  100. package/src/themes/quartz/domains.css +731 -0
  101. package/src/themes/quartz/index.css +6 -0
  102. package/src/themes/quartz/tokens.css +208 -0
  103. package/src/themes/roast/base.css +114 -0
  104. package/src/themes/roast/components.css +23 -0
  105. package/src/themes/roast/domains.css +731 -0
  106. package/src/themes/roast/index.css +6 -0
  107. package/src/themes/roast/tokens.css +208 -0
  108. package/src/themes/sienna/index.css +6 -0
  109. package/src/themes/slate/base.css +207 -0
  110. package/src/themes/slate/components.css +23 -0
  111. package/src/themes/slate/domains.css +731 -0
  112. package/src/themes/slate/index.css +6 -0
  113. package/src/themes/slate/tokens.css +208 -0
  114. package/src/themes/vesper/index.css +6 -0
  115. package/src/themes/{lanternhouse → vesper}/tokens.css +5 -0
  116. package/dist/aldricpace.css +0 -5
  117. package/dist/briarcove.css +0 -5
  118. package/dist/briarcovelib.css +0 -5
  119. package/dist/compass.css +0 -5
  120. package/dist/duskline.css +0 -5
  121. package/dist/kbcv.css +0 -5
  122. package/dist/lanternhouse.css +0 -5
  123. package/dist/marenlys.css +0 -5
  124. package/dist/quizbit.css +0 -5
  125. package/dist/saltsignal.css +0 -5
  126. package/dist/tidemark.css +0 -5
  127. package/dist/undertow.css +0 -5
  128. package/dist/vscode.css +0 -5
  129. package/src/scoped/themes/quizbit.css +0 -101
  130. package/src/themes/quizbit/tokens.css +0 -132
  131. /package/src/themes/{aldricpace → brass}/index.css +0 -0
  132. /package/src/themes/{kbcv → cardinal}/base.css +0 -0
  133. /package/src/themes/{kbcv → cardinal}/components.css +0 -0
  134. /package/src/themes/{kbcv → cardinal}/domains.css +0 -0
  135. /package/src/themes/{briarcove → cardinal}/index.css +0 -0
  136. /package/src/themes/{quizbit → citron}/components.css +0 -0
  137. /package/src/themes/{quizbit → citron}/domains.css +0 -0
  138. /package/src/themes/{briarcovelib → citron}/index.css +0 -0
  139. /package/src/themes/{compass → clover}/base.css +0 -0
  140. /package/src/themes/{compass → clover}/components.css +0 -0
  141. /package/src/themes/{compass → clover}/domains.css +0 -0
  142. /package/src/themes/{compass → clover}/index.css +0 -0
  143. /package/src/themes/{compass → clover}/tokens.css +0 -0
  144. /package/src/themes/{vscode → cobalt}/base.css +0 -0
  145. /package/src/themes/{vscode → cobalt}/components.css +0 -0
  146. /package/src/themes/{vscode → cobalt}/domains.css +0 -0
  147. /package/src/themes/{vscode → cobalt}/index.css +0 -0
  148. /package/src/themes/{undertow → copper}/base.css +0 -0
  149. /package/src/themes/{undertow → copper}/components.css +0 -0
  150. /package/src/themes/{undertow → copper}/domains.css +0 -0
  151. /package/src/themes/{duskline → copper}/index.css +0 -0
  152. /package/src/themes/{undertow → copper}/tokens.css +0 -0
  153. /package/src/themes/{tidemark → cypress}/base.css +0 -0
  154. /package/src/themes/{tidemark → cypress}/components.css +0 -0
  155. /package/src/themes/{tidemark → cypress}/domains.css +0 -0
  156. /package/src/themes/{kbcv → cypress}/index.css +0 -0
  157. /package/src/themes/{tidemark → cypress}/tokens.css +0 -0
  158. /package/src/themes/{lanternhouse → damson}/index.css +0 -0
  159. /package/src/themes/{marenlys → fern}/index.css +0 -0
  160. /package/src/themes/{aldricpace → harbor}/base.css +0 -0
  161. /package/src/themes/{aldricpace → harbor}/components.css +0 -0
  162. /package/src/themes/{aldricpace → harbor}/domains.css +0 -0
  163. /package/src/themes/{quizbit → harbor}/index.css +0 -0
  164. /package/src/themes/{saltsignal → hearth}/index.css +0 -0
  165. /package/src/themes/{briarcove → iris}/base.css +0 -0
  166. /package/src/themes/{briarcove → iris}/components.css +0 -0
  167. /package/src/themes/{briarcove → iris}/domains.css +0 -0
  168. /package/src/themes/{tidemark → iris}/index.css +0 -0
  169. /package/src/themes/{briarcove → iris}/tokens.css +0 -0
  170. /package/src/themes/{undertow → juniper}/index.css +0 -0
  171. /package/src/themes/{duskline → lagoon}/base.css +0 -0
  172. /package/src/themes/{duskline → lagoon}/components.css +0 -0
  173. /package/src/themes/{duskline → lagoon}/domains.css +0 -0
  174. /package/src/themes/{saltsignal → ochre}/base.css +0 -0
  175. /package/src/themes/{saltsignal → ochre}/components.css +0 -0
  176. /package/src/themes/{saltsignal → ochre}/domains.css +0 -0
  177. /package/src/themes/{marenlys → orchid}/base.css +0 -0
  178. /package/src/themes/{marenlys → orchid}/components.css +0 -0
  179. /package/src/themes/{marenlys → orchid}/domains.css +0 -0
  180. /package/src/themes/{briarcovelib → sienna}/base.css +0 -0
  181. /package/src/themes/{briarcovelib → sienna}/components.css +0 -0
  182. /package/src/themes/{briarcovelib → sienna}/domains.css +0 -0
  183. /package/src/themes/{briarcovelib → sienna}/tokens.css +0 -0
  184. /package/src/themes/{lanternhouse → vesper}/base.css +0 -0
  185. /package/src/themes/{lanternhouse → vesper}/components.css +0 -0
  186. /package/src/themes/{lanternhouse → vesper}/domains.css +0 -0
  187. /package/src/themes/{andrewpassanisi → voltaic}/base.css +0 -0
  188. /package/src/themes/{andrewpassanisi → voltaic}/index.css +0 -0
  189. /package/src/themes/{andrewpassanisi → voltaic}/tokens.css +0 -0
@@ -0,0 +1,208 @@
1
+ /* Hex — Burrowtail Design Tokens
2
+ * Pet care warmth. Soft amber leadership with dusty teal accents.
3
+ * Friendly, approachable, nature-grounded — suited for pet services and animal care.
4
+ *
5
+ * Full palette (10 swatch colors):
6
+ * #F8F6F2 warm light gray — background
7
+ * #FFFFFF white — card, popover
8
+ * #F0ECE4 warm beige — secondary
9
+ * #E6E0D6 light taupe — muted
10
+ * #DCD5C8 warm border — borders
11
+ * #7A6E5E warm muted — muted foreground
12
+ * #2C2418 warm dark brown — foreground text
13
+ * #B88F42 soft amber — primary, ring
14
+ * #548383 dusty teal — accent
15
+ * #A07A30 darker amber — hover
16
+ *
17
+ * @theme feeds Tailwind v4 utility generation (bg-background, text-foreground, etc.)
18
+ * :root provides standalone CSS custom property access for non-Tailwind consumers.
19
+ */
20
+
21
+ @theme {
22
+ /* Surface colors */
23
+ --color-background: #f8f6f2;
24
+ --color-foreground: #2c2418;
25
+ --color-card: #ffffff;
26
+ --color-card-foreground: #2c2418;
27
+ --color-popover: #ffffff;
28
+ --color-popover-foreground: #2c2418;
29
+
30
+ /* Brand */
31
+ --color-primary: #b88f42;
32
+ --color-primary-foreground: #ffffff;
33
+
34
+ /* Soft accents */
35
+ --color-secondary: #f0ece4;
36
+ --color-secondary-foreground: #2c2418;
37
+ --color-muted: #e6e0d6;
38
+ --color-muted-foreground: #7a6e5e;
39
+ --color-accent: #548383;
40
+ --color-accent-foreground: #ffffff;
41
+
42
+ /* Semantic status */
43
+ --color-destructive: #dc2626;
44
+ --color-destructive-foreground: #ffffff;
45
+ --color-success: #16a34a;
46
+ --color-warning: #d97706;
47
+ --color-info: #2563eb;
48
+
49
+ /* Borders and focus */
50
+ --color-border: #dcd5c8;
51
+ --color-input: #dcd5c8;
52
+ --color-ring: #b88f42;
53
+
54
+ /* Typography */
55
+ --font-sans: 'Source Sans 3', ui-sans-serif, system-ui, sans-serif;
56
+ --font-mono: 'JetBrains Mono', ui-monospace, monospace;
57
+ --font-serif: 'Lora', ui-serif, Georgia, serif;
58
+ --font-heading: 'Bitter', ui-serif, Georgia, serif;
59
+ --font-heading: 'Lora', ui-serif, Georgia, serif;
60
+
61
+ /* Typography — IDE-density type scale */
62
+ --font-size-2xs: 0.625rem;
63
+ --font-size-2xs--line-height: 1.25;
64
+ --font-size-xs: 0.75rem;
65
+ --font-size-xs--line-height: 1.5;
66
+ --font-size-sm: 0.8125rem;
67
+ --font-size-sm--line-height: 1.5;
68
+ --font-size-base: 0.875rem;
69
+ --font-size-base--line-height: 1.5;
70
+ --font-size-lg: 1.125rem;
71
+ --font-size-lg--line-height: 1.25;
72
+ --font-size-xl: 1.25rem;
73
+ --font-size-xl--line-height: 1.25;
74
+
75
+ /* Display font family */
76
+ --font-display: var(--font-serif);
77
+ --font-heading: 'Bitter', ui-serif, Georgia, serif;
78
+
79
+ --radius: 8px;
80
+ }
81
+
82
+ :root {
83
+ --background: #f8f6f2;
84
+ --foreground: #2c2418;
85
+ --card: #ffffff;
86
+ --card-foreground: #2c2418;
87
+ --popover: #ffffff;
88
+ --popover-foreground: #2c2418;
89
+ --primary: #b88f42;
90
+ --primary-foreground: #ffffff;
91
+ --secondary: #f0ece4;
92
+ --secondary-foreground: #2c2418;
93
+ --muted: #e6e0d6;
94
+ --muted-foreground: #7a6e5e;
95
+ --accent: #548383;
96
+ --accent-foreground: #ffffff;
97
+ --destructive: #dc2626;
98
+ --destructive-foreground: #ffffff;
99
+ --success: #16a34a;
100
+ --warning: #d97706;
101
+ --info: #2563eb;
102
+ --border: #dcd5c8;
103
+ --input: #dcd5c8;
104
+ --ring: #b88f42;
105
+
106
+ /* Color token bridge -- component CSS uses var(--color-*) */
107
+ --color-background: #f8f6f2;
108
+ --color-foreground: #2c2418;
109
+ --color-card: #ffffff;
110
+ --color-card-foreground: #2c2418;
111
+ --color-popover: #ffffff;
112
+ --color-popover-foreground: #2c2418;
113
+ --color-primary: #b88f42;
114
+ --color-primary-foreground: #ffffff;
115
+ --color-secondary: #f0ece4;
116
+ --color-secondary-foreground: #2c2418;
117
+ --color-muted: #e6e0d6;
118
+ --color-muted-foreground: #7a6e5e;
119
+ --color-accent: #548383;
120
+ --color-accent-foreground: #ffffff;
121
+ --color-destructive: #dc2626;
122
+ --color-destructive-foreground: #ffffff;
123
+ --color-success: #16a34a;
124
+ --color-warning: #d97706;
125
+ --color-info: #2563eb;
126
+ --color-border: #dcd5c8;
127
+ --color-input: #dcd5c8;
128
+ --color-ring: #b88f42;
129
+ --font-sans: 'Source Sans 3', ui-sans-serif, system-ui, sans-serif;
130
+ --font-serif: 'Lora', ui-serif, Georgia, serif;
131
+ --font-heading: 'Bitter', ui-serif, Georgia, serif;
132
+ --font-mono: 'JetBrains Mono', ui-monospace, monospace;
133
+ --font-heading: 'Lora', ui-serif, Georgia, serif;
134
+ --radius: 8px;
135
+
136
+ /* Typography — IDE-density type scale */
137
+ --font-size-2xs: 0.625rem;
138
+ --font-size-2xs--line-height: 1.25;
139
+ --font-size-xs: 0.75rem;
140
+ --font-size-xs--line-height: 1.5;
141
+ --font-size-sm: 0.8125rem;
142
+ --font-size-sm--line-height: 1.5;
143
+ --font-size-base: 0.875rem;
144
+ --font-size-base--line-height: 1.5;
145
+ --font-size-lg: 1.125rem;
146
+ --font-size-lg--line-height: 1.25;
147
+ --font-size-xl: 1.25rem;
148
+ --font-size-xl--line-height: 1.25;
149
+
150
+ /* Display font family */
151
+ --font-display: var(--font-serif);
152
+ --font-heading: 'Bitter', ui-serif, Georgia, serif;
153
+
154
+ --radius: 8px;
155
+
156
+ /* Typography — IDE-density type scale (shorthand aliases) */
157
+ --text-2xs: 0.625rem;
158
+ --text-xs: 0.75rem;
159
+ --text-sm: 0.8125rem;
160
+ --text-base: 0.875rem;
161
+ --text-lg: 1.125rem;
162
+ --text-xl: 1.25rem;
163
+ --leading-tight: 1.25;
164
+ --leading-snug: 1.375;
165
+ --leading-normal: 1.5;
166
+ --leading-relaxed: 1.625;
167
+ --weight-normal: 400;
168
+ --weight-medium: 500;
169
+ --weight-semibold: 600;
170
+ --weight-bold: 700;
171
+ --tracking-tight: -0.01em;
172
+ --tracking-normal: 0;
173
+ --tracking-wide: 0.05em;
174
+ --tracking-wider: 0.08em;
175
+ --font-display: var(--font-serif);
176
+ --font-heading: 'Bitter', ui-serif, Georgia, serif;
177
+ --font-sans: 'Source Sans 3', ui-sans-serif, system-ui, sans-serif;
178
+ --font-mono: 'JetBrains Mono', ui-monospace, monospace;
179
+ --font-serif: 'Lora', ui-serif, Georgia, serif;
180
+ --font-heading: 'Bitter', ui-serif, Georgia, serif;
181
+ --font-heading: 'Lora', ui-serif, Georgia, serif;
182
+
183
+ /* ── Named palette aliases ──────────────────────────────────────────────
184
+ * All 10 swatch colors available for direct template use.
185
+ */
186
+ --td-light-gray: #f8f6f2;
187
+ --td-white: #ffffff;
188
+ --td-beige: #f0ece4;
189
+ --td-taupe: #e6e0d6;
190
+ --td-border: #dcd5c8;
191
+ --td-muted: #7a6e5e;
192
+ --td-dark: #2c2418;
193
+ --td-amber: #b88f42;
194
+ --td-teal: #548383;
195
+ --td-amber-hover: #a07a30;
196
+
197
+ /* ── Rig component token bridge ─────────────────────────────────────────
198
+ * Overrides shared/tokens.css defaults where the Burrowtail palette needs
199
+ * values that can't be derived directly from --color-* semantics.
200
+ */
201
+
202
+ /* Button — darker amber for hover feedback */
203
+ --rig-button-hover-bg: #a07a30;
204
+
205
+ /* Scrollbar — warm brown tint for light mode */
206
+ --rig-scrollbar-thumb: rgba(44, 36, 24, 0.12);
207
+ --rig-scrollbar-thumb-hover: rgba(44, 36, 24, 0.25);
208
+ }
@@ -73,6 +73,11 @@
73
73
  --font-display: var(--font-sans);
74
74
 
75
75
  --radius: 6px;
76
+
77
+ /* Tracking — letter-spacing for heading typography */
78
+ --tracking-heading: 0.15em;
79
+ --tracking-display: 0.2em;
80
+ --tracking-caps: 0.3em;
76
81
  }
77
82
 
78
83
  :root {
@@ -0,0 +1,232 @@
1
+ /* Hex — Quizbit Base Styles
2
+ * SNES retro arcade aesthetic.
3
+ * VT323 CRT headings, RPG dialog borders, scanlines, gold glow, pixel snap.
4
+ */
5
+
6
+ @reference 'tailwindcss';
7
+ @reference './tokens.css';
8
+
9
+ /* ── Base ── */
10
+ html {
11
+ font-size: 16px;
12
+ }
13
+
14
+ html,
15
+ body {
16
+ @apply bg-background text-foreground font-sans;
17
+
18
+ color-scheme: dark;
19
+ /* Intentionally no font-smoothing — sharper edges = more CRT feel */
20
+ }
21
+
22
+ body {
23
+ font-size: 16px;
24
+ font-weight: 400;
25
+ line-height: 1.6;
26
+ letter-spacing: 0.01em;
27
+ position: relative;
28
+ }
29
+
30
+ /* ── Scanline overlay ── */
31
+ body::after {
32
+ content: '';
33
+ position: fixed;
34
+ inset: 0;
35
+ pointer-events: none;
36
+ z-index: 9999;
37
+ background: repeating-linear-gradient(
38
+ to bottom,
39
+ transparent 0px,
40
+ transparent 2px,
41
+ rgba(0, 0, 0, 0.06) 2px,
42
+ rgba(0, 0, 0, 0.06) 4px
43
+ );
44
+ mix-blend-mode: multiply;
45
+ }
46
+
47
+ /* ── Headings — reset margins, keep font-family flexible ──
48
+ * Tailwind utilities (text-xl, font-bold, etc.) override font-family
49
+ * and weight, so base headings only reset margin/padding.
50
+ * Opt-in to VT323 CRT display style via `.heading-display`. */
51
+ h1,
52
+ h2,
53
+ h3 {
54
+ margin: 0;
55
+ padding: 0;
56
+ }
57
+
58
+ /* Opt-in VT323 CRT display heading — apply with class="heading-display" */
59
+ .heading-display {
60
+ font-family: var(--font-heading);
61
+ font-weight: 400;
62
+ letter-spacing: 0.04em;
63
+ text-shadow:
64
+ 0 0 10px rgba(248, 216, 72, 0.4),
65
+ 0 0 30px rgba(248, 216, 72, 0.15),
66
+ 2px 2px 0 rgba(0, 0, 0, 0.6);
67
+ }
68
+
69
+ h1.heading-display {
70
+ color: var(--color-primary);
71
+ font-size: 2.5rem;
72
+ line-height: 1.2;
73
+ }
74
+
75
+ h2.heading-display {
76
+ color: var(--color-foreground);
77
+ font-size: 1.75rem;
78
+ line-height: 1.3;
79
+ text-shadow:
80
+ 0 0 8px rgba(248, 216, 72, 0.2),
81
+ 2px 2px 0 rgba(0, 0, 0, 0.5);
82
+ }
83
+
84
+ h3.heading-display {
85
+ color: var(--color-foreground);
86
+ font-size: 1.375rem;
87
+ line-height: 1.4;
88
+ letter-spacing: 0.02em;
89
+ text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.4);
90
+ }
91
+
92
+ /* ── RPG dialog box borders — double pixel frame ── */
93
+ [class*='rounded-2xl'][class*='border'],
94
+ [class*='rounded-xl'][class*='border'],
95
+ details[class*='border'] {
96
+ border-width: 2px;
97
+ border-color: var(--color-border);
98
+ box-shadow:
99
+ inset 0 0 0 1px var(--color-background),
100
+ inset 0 0 0 3px var(--color-border),
101
+ 0 4px 16px rgba(0, 0, 0, 0.3);
102
+ }
103
+
104
+ /* ── Blinking RPG cursor ── */
105
+ @keyframes rpg-blink {
106
+ 0%,
107
+ 100% {
108
+ opacity: 1;
109
+ }
110
+ 50% {
111
+ opacity: 0;
112
+ }
113
+ }
114
+
115
+ /* Cursor on interactive summaries — details toggle only.
116
+ * Buttons/links handle their own icons via template SVGs;
117
+ * injecting a pseudo-element breaks flex alignment on those. */
118
+ summary::before {
119
+ content: '\25B6'; /* ▶ */
120
+ display: inline-block;
121
+ margin-right: 0.5em;
122
+ color: var(--color-primary);
123
+ font-size: 0.75em;
124
+ animation: rpg-blink 1s steps(1) infinite;
125
+ text-shadow: 0 0 6px rgba(248, 216, 72, 0.5);
126
+ }
127
+
128
+ /* ── Step transitions — pixel-snap on elements without Tailwind transitions.
129
+ * Elements with class="transition" use Tailwind's timing; these
130
+ * provide the retro step-snap only for unstyled interactive elements. */
131
+ summary {
132
+ transition-timing-function: steps(3);
133
+ transition-duration: 0.1s;
134
+ }
135
+
136
+ a:not([class*='transition']),
137
+ button:not([class*='transition']) {
138
+ transition-timing-function: steps(3);
139
+ transition-duration: 0.1s;
140
+ }
141
+
142
+ /* ── Scrollbar — pixel style ── */
143
+ ::-webkit-scrollbar {
144
+ width: 10px;
145
+ height: 10px;
146
+ }
147
+
148
+ ::-webkit-scrollbar-track {
149
+ background: var(--color-background);
150
+ border-left: 2px solid var(--color-border);
151
+ }
152
+
153
+ ::-webkit-scrollbar-thumb {
154
+ background: var(--rig-scrollbar-thumb);
155
+ border: 2px solid var(--color-border);
156
+ border-radius: 0;
157
+ }
158
+
159
+ ::-webkit-scrollbar-thumb:hover {
160
+ background: var(--rig-scrollbar-thumb-hover);
161
+ }
162
+
163
+ /* ── Focus — sharp pixel ring ── */
164
+ *:focus-visible {
165
+ outline: 2px solid var(--color-ring);
166
+ outline-offset: 2px;
167
+ }
168
+
169
+ /* ── Selection — gold highlight ── */
170
+ ::selection {
171
+ background: color-mix(in srgb, var(--color-primary) 35%, transparent);
172
+ color: var(--color-foreground);
173
+ }
174
+
175
+ /* ── Smooth scrolling ── */
176
+ html {
177
+ scroll-behavior: smooth;
178
+ }
179
+
180
+ /* ── Reduced motion — respect user preference ── */
181
+ @media (prefers-reduced-motion: reduce) {
182
+ *,
183
+ *::before,
184
+ *::after {
185
+ animation-duration: 0.01ms !important;
186
+ animation-iteration-count: 1 !important;
187
+ transition-duration: 0.01ms !important;
188
+ scroll-behavior: auto !important;
189
+ }
190
+
191
+ body::after {
192
+ display: none; /* Remove scanlines for reduced motion */
193
+ }
194
+ }
195
+
196
+ /* ── Firefox scrollbar ── */
197
+ * {
198
+ scrollbar-width: thin;
199
+ scrollbar-color: var(--rig-scrollbar-thumb) transparent;
200
+ }
201
+
202
+ /* ── Links — gold with step hover ──
203
+ * Inside @layer base so Tailwind @layer utilities (text-*, bg-*) override it.
204
+ * NuxtLink "buttons" with explicit text-/bg- utility classes keep their colors. */
205
+ @layer base {
206
+ a {
207
+ color: var(--color-primary);
208
+ text-decoration: none;
209
+ transition: color 0.1s steps(2);
210
+ }
211
+
212
+ a:hover {
213
+ color: var(--quizbit-gold-light);
214
+ text-shadow: 0 0 8px rgba(248, 216, 72, 0.3);
215
+ }
216
+
217
+ /* NuxtLink rendered as <a> with a solid primary background — force dark text.
218
+ * Tailwind utilities on <a> lose to the bare `a` rule above without this. */
219
+ a[class*='bg-primary'] {
220
+ color: var(--color-primary-foreground);
221
+ }
222
+
223
+ a[class*='bg-primary']:hover {
224
+ color: var(--color-primary-foreground);
225
+ text-shadow: none;
226
+ }
227
+ }
228
+
229
+ /* ── Progress bars — pixel-stepped fill ── */
230
+ [role='progressbar'] > div {
231
+ transition-timing-function: steps(8) !important;
232
+ }
@@ -0,0 +1,136 @@
1
+ /* Hex — Quizbit Design Tokens
2
+ * SNES retro pixel game palette.
3
+ * Deep indigo backgrounds, gold UI highlights, hot magenta accent, chunky pixel aesthetic.
4
+ * Inspired by Chrono Trigger / FF6 / Super Mario World menu screens.
5
+ *
6
+ * @theme feeds Tailwind v4 utility generation (bg-background, text-foreground, etc.)
7
+ * :root provides standalone CSS custom property access for non-Tailwind consumers.
8
+ */
9
+
10
+ @theme {
11
+ /* Surface colors — dark indigo RPG menu */
12
+ --color-background: #0a0a1e;
13
+ --color-foreground: #e8e8f0;
14
+ --color-card: #161638;
15
+ --color-card-foreground: #e8e8f0;
16
+ --color-popover: #161638;
17
+ --color-popover-foreground: #e8e8f0;
18
+
19
+ /* Brand — SNES gold cursor / select */
20
+ --color-primary: #f8d848;
21
+ --color-primary-foreground: #0a0a1e;
22
+
23
+ /* Soft accents — muted indigo shelf */
24
+ --color-secondary: #282850;
25
+ --color-secondary-foreground: #e8e8f0;
26
+ --color-muted: #282850;
27
+ --color-muted-foreground: #a4a4c8;
28
+ --color-accent: #f868d8;
29
+ --color-accent-foreground: #0a0a1e;
30
+
31
+ /* Semantic status — classic RPG HUD colors */
32
+ --color-destructive: #f04848;
33
+ --color-destructive-foreground: #0a0a1e;
34
+ --color-success: #58d858;
35
+ --color-warning: #f89838;
36
+ --color-info: #38a8e8;
37
+
38
+ /* Borders and focus — pixel-border blue */
39
+ --color-border: #303068;
40
+ --color-input: #303068;
41
+ --color-ring: #f8d848;
42
+
43
+ /* Typography — VT323 headings, Space Grotesk body */
44
+ --font-sans: 'Space Grotesk', system-ui, -apple-system, sans-serif;
45
+ --font-serif: 'Space Grotesk', system-ui, -apple-system, sans-serif;
46
+ --font-mono: 'VT323', 'JetBrains Mono', ui-monospace, monospace;
47
+
48
+ /* Radius — pixel-sharp, no rounding */
49
+ --radius: 0px;
50
+
51
+ /* Typography scale */
52
+ --font-size-2xs: 0.625rem;
53
+ --font-size-2xs--line-height: 1.25;
54
+ --font-size-xs: 0.75rem;
55
+ --font-size-xs--line-height: 1.5;
56
+ --font-size-sm: 0.875rem;
57
+ --font-size-sm--line-height: 1.5;
58
+ --font-size-base: 1rem;
59
+ --font-size-base--line-height: 1.5;
60
+ --font-size-lg: 1.125rem;
61
+ --font-size-lg--line-height: 1.25;
62
+ --font-size-xl: 1.25rem;
63
+ --font-size-xl--line-height: 1.25;
64
+
65
+ /* Display font — CRT terminal heading */
66
+ --font-display: 'VT323', 'Courier New', monospace;
67
+ --font-heading: 'VT323', 'Courier New', monospace;
68
+ }
69
+
70
+ :root {
71
+ --background: #0a0a1e;
72
+ --foreground: #e8e8f0;
73
+ --card: #161638;
74
+ --card-foreground: #e8e8f0;
75
+ --popover: #161638;
76
+ --popover-foreground: #e8e8f0;
77
+ --primary: #f8d848;
78
+ --primary-foreground: #0a0a1e;
79
+ --secondary: #282850;
80
+ --secondary-foreground: #e8e8f0;
81
+ --muted: #282850;
82
+ --muted-foreground: #a4a4c8;
83
+ --accent: #f868d8;
84
+ --accent-foreground: #0a0a1e;
85
+ --destructive: #f04848;
86
+ --destructive-foreground: #0a0a1e;
87
+ --success: #58d858;
88
+ --warning: #f89838;
89
+ --info: #38a8e8;
90
+ --border: #303068;
91
+ --input: #303068;
92
+ --ring: #f8d848;
93
+
94
+ /* Typography scale shorthand aliases */
95
+ --text-2xs: 0.625rem;
96
+ --text-xs: 0.75rem;
97
+ --text-sm: 0.875rem;
98
+ --text-base: 1rem;
99
+ --text-lg: 1.125rem;
100
+ --text-xl: 1.25rem;
101
+ --leading-tight: 1.25;
102
+ --leading-snug: 1.375;
103
+ --leading-normal: 1.5;
104
+ --leading-relaxed: 1.625;
105
+ --weight-normal: 400;
106
+ --weight-medium: 500;
107
+ --weight-semibold: 600;
108
+ --weight-bold: 700;
109
+ --tracking-tight: -0.01em;
110
+ --tracking-normal: 0;
111
+ --tracking-wide: 0.05em;
112
+ --font-display: 'VT323', 'Courier New', monospace;
113
+ --font-heading: 'VT323', 'Courier New', monospace;
114
+ --font-sans: 'Space Grotesk', system-ui, -apple-system, sans-serif;
115
+ --font-serif: 'Space Grotesk', system-ui, -apple-system, sans-serif;
116
+ --font-mono: 'VT323', 'JetBrains Mono', ui-monospace, monospace;
117
+
118
+ /* ── Named palette aliases ──
119
+ * Direct references to the SNES swatch.
120
+ */
121
+ --quizbit-indigo: #0a0a1e;
122
+ --quizbit-indigo-light: #161638;
123
+ --quizbit-gold: #f8d848;
124
+ --quizbit-gold-light: #ffe878;
125
+ --quizbit-pixel-white: #e8e8f0;
126
+ --quizbit-lavender: #a4a4c8;
127
+ --quizbit-magenta: #f868d8;
128
+ --quizbit-green: #58d858;
129
+ --quizbit-red: #f04848;
130
+ --quizbit-cyan: #38a8e8;
131
+
132
+ /* ── Rig component token bridge ── */
133
+ --rig-button-hover-bg: #303068;
134
+ --rig-scrollbar-thumb: rgba(248, 216, 72, 0.18);
135
+ --rig-scrollbar-thumb-hover: rgba(248, 216, 72, 0.35);
136
+ }
@@ -134,26 +134,26 @@
134
134
  --vsc-button-bg: #0078d4;
135
135
  --vsc-button-fg: #ffffff;
136
136
  --vsc-button-hover-bg: #026ec1;
137
- --vsc-button-border: rgba(255, 255, 255, 0.1);
137
+ --vsc-button-border: var(--color-border);
138
138
  --vsc-button-secondary-bg: transparent;
139
139
  --vsc-button-secondary-fg: #cccccc;
140
140
  --vsc-button-secondary-hover-bg: #2b2b2b;
141
141
 
142
142
  /* Input */
143
143
  --vsc-input-bg: #313131;
144
- --vsc-input-border: #3c3c3c;
144
+ --vsc-input-border: var(--color-border);
145
145
  --vsc-input-fg: #cccccc;
146
146
  --vsc-input-placeholder: #989898;
147
147
 
148
148
  /* Dropdown / Select */
149
149
  --vsc-dropdown-bg: #313131;
150
- --vsc-dropdown-border: #3c3c3c;
150
+ --vsc-dropdown-border: var(--color-border);
151
151
  --vsc-dropdown-fg: #cccccc;
152
152
  --vsc-dropdown-list-bg: #1f1f1f;
153
153
 
154
154
  /* Checkbox */
155
155
  --vsc-checkbox-bg: #313131;
156
- --vsc-checkbox-border: #3c3c3c;
156
+ --vsc-checkbox-border: var(--color-border);
157
157
 
158
158
  /* Badge */
159
159
  --vsc-badge-bg: #616161;
@@ -212,7 +212,7 @@
212
212
 
213
213
  /* Widget */
214
214
  --vsc-widget-bg: #202020;
215
- --vsc-widget-border: #313131;
215
+ --vsc-widget-border: var(--color-border);
216
216
 
217
217
  /* Scrollbar */
218
218
  --vsc-scrollbar-thumb: rgba(121, 121, 121, 0.4);