@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,731 @@
1
+ /* Hex — Shelfglow Domains
2
+ * Premium editorial design for a literary book recommendation site.
3
+ */
4
+
5
+ @reference 'tailwindcss';
6
+ @reference './tokens.css';
7
+
8
+ /* ── Reading typography ───────────────────────────────────────────────
9
+ * Serif (Lora) for all reading surfaces. Sans (Source Sans 3) for UI.
10
+ */
11
+
12
+ [data-rig-prose],
13
+ [data-rig-article-layout-content],
14
+ [data-rig-static-page],
15
+ [data-rig-article-header-description],
16
+ [data-rig-featured-card-description],
17
+ [data-rig-category-header-description],
18
+ [data-rig-category-card-description],
19
+ [data-rig-article-card-description] {
20
+ font-family: var(--font-serif);
21
+ }
22
+
23
+ /* ═══════════════════════════════════════════════════════════════════
24
+ Category accent colors
25
+ ═══════════════════════════════════════════════════════════════════ */
26
+
27
+ [data-category='recommendations'] {
28
+ --card-accent: #d4960a;
29
+ }
30
+ [data-category='genre-guides'] {
31
+ --card-accent: #2d8659;
32
+ }
33
+ [data-category='device-reviews'] {
34
+ --card-accent: #3a7ca5;
35
+ }
36
+ [data-category='reading-guides'] {
37
+ --card-accent: #c46a2a;
38
+ }
39
+ [data-category='culture'] {
40
+ --card-accent: #8b3a6a;
41
+ }
42
+
43
+ /* ═══════════════════════════════════════════════════════════════════
44
+ Mobile-first fluid design
45
+ All spacing, typography, and layout scales smoothly from 320px up.
46
+ ═══════════════════════════════════════════════════════════════════ */
47
+
48
+ /* ── Fluid typography — clamp between mobile and desktop ──────────── */
49
+
50
+ h1 {
51
+ font-size: clamp(1.75rem, 1.25rem + 2.5vw, 2.5rem);
52
+ }
53
+
54
+ h2 {
55
+ font-size: clamp(1.375rem, 1rem + 1.875vw, 2rem);
56
+ }
57
+
58
+ [data-rig-article-header-title] {
59
+ font-size: clamp(1.5rem, 1rem + 2.5vw, 2.5rem);
60
+ }
61
+
62
+ [data-rig-section-title] {
63
+ font-size: clamp(1.25rem, 1rem + 1.25vw, 1.5rem);
64
+ }
65
+
66
+ [data-rig-category-header-title] {
67
+ font-size: clamp(1.75rem, 1.25rem + 2.5vw, 2.5rem);
68
+ }
69
+
70
+ /* ── Fluid section spacing ────────────────────────────────────────── */
71
+
72
+ [data-rig-section] {
73
+ padding: clamp(2rem, 1.5rem + 2.5vw, 4rem) clamp(1rem, 0.5rem + 2.5vw, 1.5rem);
74
+ }
75
+
76
+ [data-rig-section-header] {
77
+ margin-bottom: clamp(1.5rem, 1rem + 1.5vw, 2.5rem);
78
+ }
79
+
80
+ /* ── Mobile touch targets and font floor ──────────────────────────── */
81
+
82
+ @media (max-width: 640px) {
83
+ /* Nav links — 44px minimum touch target */
84
+ [data-rig-site-nav-mobile-link] {
85
+ padding: 0.75rem 1rem;
86
+ font-size: 0.9375rem;
87
+ min-height: 2.75rem;
88
+ }
89
+
90
+ /* Breadcrumbs — readable on small screens */
91
+ [data-rig-breadcrumbs-item] {
92
+ font-size: 0.75rem;
93
+ }
94
+
95
+ [data-rig-breadcrumbs-current] {
96
+ display: -webkit-box;
97
+ -webkit-line-clamp: 1;
98
+ -webkit-box-orient: vertical;
99
+ overflow: hidden;
100
+ max-width: 12rem;
101
+ }
102
+
103
+ /* Card visual — shorter on mobile */
104
+ [data-rig-card-visual] {
105
+ height: 6rem;
106
+ }
107
+
108
+ /* Card photo — shorter on mobile */
109
+ [data-rig-card-photo] {
110
+ height: 8rem;
111
+ }
112
+
113
+ /* CTA banner — tighter */
114
+ [data-rig-cta-banner] {
115
+ padding: 2rem 1rem;
116
+ }
117
+
118
+ /* Static page — tighter on mobile */
119
+ [data-rig-static-page] {
120
+ padding: 1.5rem 1rem;
121
+ }
122
+
123
+ /* Article layout — tighter horizontal padding */
124
+ [data-rig-article-layout] {
125
+ padding: 1.5rem 1rem;
126
+ }
127
+
128
+ /* TOC — hidden on mobile (sidebar already hidden) */
129
+ [data-rig-toc] {
130
+ font-size: 0.8125rem;
131
+ }
132
+
133
+ /* Product card — pros/cons text readable */
134
+ [data-rig-product-card-pros],
135
+ [data-rig-product-card-cons] {
136
+ font-size: 0.875rem;
137
+ }
138
+
139
+ /* Footer brand — slightly smaller */
140
+ [data-rig-site-footer-brand] {
141
+ font-size: 1.25rem;
142
+ }
143
+ }
144
+
145
+ /* ── Newsletter form stacking on small screens ────────────────────── */
146
+
147
+ @media (max-width: 480px) {
148
+ [data-rig-newsletter-form-body] {
149
+ flex-direction: column;
150
+ gap: 0.75rem;
151
+ }
152
+
153
+ [data-rig-newsletter-form-body] [data-rig-input] {
154
+ border-radius: var(--radius, 6px);
155
+ }
156
+
157
+ [data-rig-newsletter-form-body] [data-rig-button] {
158
+ border-radius: var(--radius, 6px);
159
+ width: 100%;
160
+ justify-content: center;
161
+ padding: 0.875rem;
162
+ }
163
+ }
164
+
165
+ /* ═══════════════════════════════════════════════════════════════════
166
+ Hero — warm parchment gradient, centered, compact
167
+ ═══════════════════════════════════════════════════════════════════ */
168
+
169
+ [data-rig-hero] {
170
+ background: linear-gradient(170deg, #f8f5ef 0%, #f0e8d8 40%, #e8dcc8 100%);
171
+ border-bottom: 1px solid var(--color-border);
172
+ }
173
+
174
+ [data-rig-hero][data-layout='centered'] [data-rig-hero-content] {
175
+ padding: clamp(2.5rem, 2rem + 3vw, 4rem) clamp(1.5rem, 1rem + 2vw, 2rem);
176
+ }
177
+
178
+ [data-rig-hero] h1 {
179
+ color: var(--color-primary);
180
+ }
181
+
182
+ [data-rig-hero-eyebrow] {
183
+ font-family: var(--font-sans);
184
+ font-size: 0.75rem;
185
+ font-weight: 600;
186
+ letter-spacing: 0.12em;
187
+ text-transform: uppercase;
188
+ color: var(--color-accent);
189
+ display: inline-block;
190
+ }
191
+
192
+ [data-rig-hero-description] {
193
+ font-family: var(--font-serif);
194
+ font-size: clamp(1rem, 0.875rem + 0.5vw, 1.125rem);
195
+ line-height: 1.7;
196
+ color: var(--color-muted-foreground);
197
+ }
198
+
199
+ /* ═══════════════════════════════════════════════════════════════════
200
+ Cards — editorial depth, smooth transitions, category color
201
+ ═══════════════════════════════════════════════════════════════════ */
202
+
203
+ [data-rig-card] {
204
+ padding: 0;
205
+ display: flex;
206
+ flex-direction: column;
207
+ align-items: stretch;
208
+ text-align: left;
209
+ box-shadow:
210
+ 0 1px 3px rgba(22, 22, 22, 0.06),
211
+ 0 1px 2px rgba(22, 22, 22, 0.04);
212
+ border-color: color-mix(in srgb, var(--color-border) 80%, transparent);
213
+ transition:
214
+ transform 0.25s cubic-bezier(0.4, 0, 0.2, 1),
215
+ box-shadow 0.25s cubic-bezier(0.4, 0, 0.2, 1),
216
+ border-color 0.2s ease;
217
+ overflow: hidden;
218
+ }
219
+
220
+ [data-rig-card][data-interactive]:hover {
221
+ border-color: var(--card-accent, var(--color-primary));
222
+ box-shadow:
223
+ 0 12px 28px rgba(22, 22, 22, 0.1),
224
+ 0 4px 10px rgba(22, 22, 22, 0.06);
225
+ transform: translateY(-4px);
226
+ }
227
+
228
+ /* Card visual — stronger gradient, larger icon */
229
+ [data-rig-card-visual] {
230
+ background: linear-gradient(
231
+ 140deg,
232
+ color-mix(in srgb, var(--card-accent, var(--color-primary)) 28%, var(--color-background)) 0%,
233
+ color-mix(in srgb, var(--card-accent, var(--color-primary)) 14%, var(--color-background)) 60%,
234
+ color-mix(in srgb, var(--card-accent, var(--color-primary)) 8%, var(--color-card)) 100%
235
+ ) !important;
236
+ border-bottom: 2px solid
237
+ color-mix(in srgb, var(--card-accent, var(--color-primary)) 30%, transparent) !important;
238
+ }
239
+
240
+ [data-rig-card-visual] svg {
241
+ opacity: 0.4 !important;
242
+ color: var(--card-accent, var(--color-primary)) !important;
243
+ transition:
244
+ opacity 0.2s ease,
245
+ transform 0.3s ease;
246
+ }
247
+
248
+ [data-rig-card][data-interactive]:hover [data-rig-card-visual] svg {
249
+ opacity: 0.6 !important;
250
+ transform: scale(1.1);
251
+ }
252
+
253
+ /* ═══════════════════════════════════════════════════════════════════
254
+ Category cards — rich colored icon circles, hover glow
255
+ ═══════════════════════════════════════════════════════════════════ */
256
+
257
+ [data-rig-category-card-icon] {
258
+ background: color-mix(in srgb, var(--card-accent, var(--color-accent)) 18%, transparent);
259
+ color: var(--card-accent, var(--color-accent));
260
+ width: 3rem;
261
+ height: 3rem;
262
+ transition:
263
+ background-color 0.2s ease,
264
+ transform 0.2s ease;
265
+ }
266
+
267
+ [data-rig-card][data-interactive]:hover [data-rig-category-card-icon] {
268
+ background: color-mix(in srgb, var(--card-accent, var(--color-accent)) 28%, transparent);
269
+ transform: scale(1.05);
270
+ }
271
+
272
+ [data-rig-category-card-title] {
273
+ color: var(--card-accent, var(--color-foreground));
274
+ transition: color 0.2s ease;
275
+ }
276
+
277
+ /* ═══════════════════════════════════════════════════════════════════
278
+ Article card labels — category colored with dot separator
279
+ ═══════════════════════════════════════════════════════════════════ */
280
+
281
+ [data-rig-article-card-category] {
282
+ color: var(--card-accent, var(--color-primary));
283
+ font-weight: 700;
284
+ }
285
+
286
+ [data-rig-article-card-title] {
287
+ transition: color 0.15s ease;
288
+ }
289
+
290
+ [data-rig-card][data-interactive]:hover [data-rig-article-card-title],
291
+ [data-rig-card][data-interactive]:hover [data-rig-featured-card-title] {
292
+ color: var(--card-accent, var(--color-primary));
293
+ }
294
+
295
+ [data-rig-featured-card-category] {
296
+ color: var(--card-accent, var(--color-accent));
297
+ }
298
+
299
+ [data-rig-featured-card-category] svg {
300
+ color: var(--card-accent, var(--color-accent));
301
+ }
302
+
303
+ /* ═══════════════════════════════════════════════════════════════════
304
+ Article header — bold category badge, refined typography
305
+ ═══════════════════════════════════════════════════════════════════ */
306
+
307
+ [data-rig-article-header-category] {
308
+ color: #ffffff;
309
+ background: var(--color-accent);
310
+ padding: 0.375rem 0.875rem;
311
+ font-weight: 700;
312
+ transition: background-color 0.15s ease;
313
+ }
314
+
315
+ [data-rig-article-header-category]:hover {
316
+ background: color-mix(in srgb, var(--color-accent) 85%, #000);
317
+ }
318
+
319
+ [data-rig-article-header-category] svg {
320
+ color: #ffffff;
321
+ }
322
+
323
+ /* Drop cap on first paragraph of article prose */
324
+ [data-rig-article-layout-content] [data-rig-prose] > p:first-of-type::first-letter {
325
+ font-family: var(--font-heading);
326
+ font-size: 3.5em;
327
+ float: left;
328
+ line-height: 0.8;
329
+ margin-right: 0.1em;
330
+ margin-top: 0.05em;
331
+ color: var(--color-primary);
332
+ font-weight: 700;
333
+ }
334
+
335
+ /* ═══════════════════════════════════════════════════════════════════
336
+ Sections — accent bars, warm alternation, refined headers
337
+ ═══════════════════════════════════════════════════════════════════ */
338
+
339
+ [data-rig-section-accent] {
340
+ background: var(--color-accent);
341
+ height: 3px;
342
+ width: 4rem;
343
+ }
344
+
345
+ [data-rig-section-title] {
346
+ color: var(--color-primary);
347
+ }
348
+
349
+ [data-rig-section-subtitle] {
350
+ font-family: var(--font-serif);
351
+ font-style: italic;
352
+ }
353
+
354
+ [data-rig-section][data-variant='alternate'] {
355
+ background: linear-gradient(180deg, #f3ede1 0%, #f0e9dc 100%);
356
+ border-top: 1px solid var(--color-border);
357
+ border-bottom: 1px solid var(--color-border);
358
+ }
359
+
360
+ /* ═══════════════════════════════════════════════════════════════════
361
+ Prose — rich blockquotes, vivid links, refined reading
362
+ ═══════════════════════════════════════════════════════════════════ */
363
+
364
+ [data-rig-article-layout-content] [data-rig-prose] blockquote {
365
+ border-left: 4px solid var(--color-accent);
366
+ background: color-mix(in srgb, var(--color-accent) 8%, transparent);
367
+ font-style: italic;
368
+ }
369
+
370
+ [data-rig-prose] a {
371
+ color: #2d6b8a;
372
+ text-decoration-color: color-mix(in srgb, #2d6b8a 40%, transparent);
373
+ transition:
374
+ color 0.15s ease,
375
+ text-decoration-color 0.15s ease;
376
+ }
377
+
378
+ [data-rig-prose] a:hover {
379
+ color: var(--color-accent);
380
+ text-decoration-color: var(--color-accent);
381
+ }
382
+
383
+ /* Horizontal rules as decorative dividers */
384
+ [data-rig-prose] hr {
385
+ border: none;
386
+ height: 1px;
387
+ background: linear-gradient(
388
+ 90deg,
389
+ transparent 0%,
390
+ var(--color-border) 20%,
391
+ var(--color-accent) 50%,
392
+ var(--color-border) 80%,
393
+ transparent 100%
394
+ );
395
+ }
396
+
397
+ /* ═══════════════════════════════════════════════════════════════════
398
+ TOC — refined sidebar with accent active state
399
+ ═══════════════════════════════════════════════════════════════════ */
400
+
401
+ [data-rig-toc] {
402
+ padding: 1.25rem;
403
+ background: color-mix(in srgb, var(--color-muted) 30%, transparent);
404
+ border-radius: var(--radius, 6px);
405
+ border: 1px solid var(--color-border);
406
+ }
407
+
408
+ [data-rig-toc-link] {
409
+ transition:
410
+ color 0.15s ease,
411
+ border-color 0.15s ease;
412
+ }
413
+
414
+ [data-rig-toc-link][data-active] {
415
+ color: var(--color-accent);
416
+ border-left-color: var(--color-accent);
417
+ font-weight: 600;
418
+ }
419
+
420
+ /* ═══════════════════════════════════════════════════════════════════
421
+ Product card — vivid rating badge
422
+ ═══════════════════════════════════════════════════════════════════ */
423
+
424
+ [data-rig-product-card-rating] {
425
+ background: var(--color-accent);
426
+ color: #161616;
427
+ font-weight: 800;
428
+ }
429
+
430
+ /* ═══════════════════════════════════════════════════════════════════
431
+ Newsletter CTA — dramatic dark section with gold accent
432
+ ═══════════════════════════════════════════════════════════════════ */
433
+
434
+ [data-rig-cta-banner][data-variant='card'] {
435
+ background: linear-gradient(160deg, #1e2d45 0%, #2a3a55 40%, #3d4f6e 100%);
436
+ color: #f8f5ef;
437
+ border: none;
438
+ position: relative;
439
+ overflow: hidden;
440
+ }
441
+
442
+ /* Gold decorative glow */
443
+ [data-rig-cta-banner][data-variant='card']::before {
444
+ content: '';
445
+ position: absolute;
446
+ top: -50%;
447
+ right: -20%;
448
+ width: 60%;
449
+ height: 200%;
450
+ background: radial-gradient(
451
+ ellipse,
452
+ color-mix(in srgb, var(--color-accent) 10%, transparent) 0%,
453
+ transparent 70%
454
+ );
455
+ pointer-events: none;
456
+ }
457
+
458
+ [data-rig-cta-banner][data-variant='card'] h2,
459
+ [data-rig-cta-banner][data-variant='card'] [data-rig-newsletter-heading] {
460
+ color: var(--color-accent);
461
+ position: relative;
462
+ }
463
+
464
+ [data-rig-cta-banner][data-variant='card'] p,
465
+ [data-rig-cta-banner][data-variant='card'] [data-rig-newsletter-description] {
466
+ color: rgba(248, 245, 239, 0.8);
467
+ position: relative;
468
+ }
469
+
470
+ /* Newsletter form — input + button inline */
471
+ [data-rig-newsletter-form-body] {
472
+ display: flex;
473
+ gap: 0;
474
+ max-width: 28rem;
475
+ margin: 0 auto;
476
+ }
477
+
478
+ [data-rig-newsletter-form-body] [data-rig-input] {
479
+ flex: 1;
480
+ border-radius: var(--radius, 6px) 0 0 var(--radius, 6px);
481
+ min-width: 0;
482
+ }
483
+
484
+ [data-rig-newsletter-form-body] [data-rig-button] {
485
+ border-radius: 0 var(--radius, 6px) var(--radius, 6px) 0;
486
+ white-space: nowrap;
487
+ flex-shrink: 0;
488
+ }
489
+
490
+ /* Newsletter form input styling inside dark banner */
491
+ [data-rig-cta-banner][data-variant='card'] input {
492
+ background: rgba(255, 255, 255, 0.1);
493
+ border: 1px solid rgba(255, 255, 255, 0.2);
494
+ color: #ffffff;
495
+ border-radius: var(--radius, 6px);
496
+ padding: 0.75rem 1rem;
497
+ }
498
+
499
+ [data-rig-cta-banner][data-variant='card'] input::placeholder {
500
+ color: rgba(255, 255, 255, 0.5);
501
+ }
502
+
503
+ [data-rig-cta-banner][data-variant='card'] input:focus {
504
+ border-color: var(--color-accent);
505
+ outline: none;
506
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--color-accent) 30%, transparent);
507
+ }
508
+
509
+ [data-rig-cta-banner][data-variant='card'] [data-rig-button] {
510
+ background: var(--color-accent);
511
+ color: #161616;
512
+ border-color: var(--color-accent);
513
+ }
514
+
515
+ /* ═══════════════════════════════════════════════════════════════════
516
+ Footer — deep navy, gold headings, refined grid
517
+ ═══════════════════════════════════════════════════════════════════ */
518
+
519
+ [data-rig-site-footer] {
520
+ background: linear-gradient(180deg, #1a2840 0%, #121c2e 100%);
521
+ }
522
+
523
+ [data-rig-site-footer-grid] h3,
524
+ [data-rig-site-footer-grid] h4 {
525
+ color: var(--color-accent) !important;
526
+ font-family: var(--font-heading);
527
+ letter-spacing: 0.08em;
528
+ }
529
+
530
+ [data-rig-site-footer-grid] a {
531
+ transition: color 0.15s ease;
532
+ }
533
+
534
+ [data-rig-site-footer-grid] a:hover {
535
+ color: var(--color-accent);
536
+ }
537
+
538
+ [data-rig-site-footer-brand] {
539
+ font-family: var(--font-heading);
540
+ font-size: 1.5rem;
541
+ letter-spacing: 0.02em;
542
+ }
543
+
544
+ [data-rig-site-footer-tagline] {
545
+ font-family: var(--font-serif);
546
+ font-style: italic;
547
+ line-height: 1.7;
548
+ }
549
+
550
+ [data-rig-site-footer-copyright] {
551
+ border-top: 1px solid rgba(255, 255, 255, 0.08);
552
+ padding-top: 1.5rem;
553
+ }
554
+
555
+ /* ═══════════════════════════════════════════════════════════════════
556
+ Buttons — bold and refined
557
+ ═══════════════════════════════════════════════════════════════════ */
558
+
559
+ [data-rig-button] {
560
+ padding: 0.75rem 1.5rem;
561
+ font-size: 0.875rem;
562
+ font-family: var(--font-sans);
563
+ font-weight: 600;
564
+ letter-spacing: 0.02em;
565
+ transition:
566
+ background-color 0.2s ease,
567
+ color 0.2s ease,
568
+ border-color 0.2s ease,
569
+ box-shadow 0.2s ease,
570
+ transform 0.15s ease;
571
+ }
572
+
573
+ [data-rig-button]:active {
574
+ transform: scale(0.97);
575
+ }
576
+
577
+ [data-rig-button][data-variant='primary'] {
578
+ background: var(--color-accent);
579
+ color: #161616;
580
+ border-color: var(--color-accent);
581
+ box-shadow: 0 2px 8px color-mix(in srgb, var(--color-accent) 30%, transparent);
582
+ }
583
+
584
+ [data-rig-button][data-variant='primary']:hover {
585
+ background: color-mix(in srgb, var(--color-accent) 85%, #000);
586
+ box-shadow: 0 4px 16px color-mix(in srgb, var(--color-accent) 40%, transparent);
587
+ }
588
+
589
+ [data-rig-button][data-variant='secondary'] {
590
+ border: 2px solid var(--color-primary);
591
+ color: var(--color-primary);
592
+ background: transparent;
593
+ }
594
+
595
+ [data-rig-button][data-variant='secondary']:hover {
596
+ background: var(--color-primary);
597
+ color: #ffffff;
598
+ box-shadow: 0 2px 8px color-mix(in srgb, var(--color-primary) 25%, transparent);
599
+ }
600
+
601
+ /* ═══════════════════════════════════════════════════════════════════
602
+ Breadcrumbs
603
+ ═══════════════════════════════════════════════════════════════════ */
604
+
605
+ [data-rig-breadcrumbs] {
606
+ font-family: var(--font-sans);
607
+ }
608
+
609
+ /* ═══════════════════════════════════════════════════════════════════
610
+ Nav — editorial serif brand, gold active state
611
+ ═══════════════════════════════════════════════════════════════════ */
612
+
613
+ [data-rig-site-nav-brand-link] {
614
+ font-family: var(--font-heading);
615
+ letter-spacing: 0.02em;
616
+ }
617
+
618
+ [data-rig-site-nav-link] {
619
+ transition:
620
+ color 0.15s ease,
621
+ background-color 0.15s ease;
622
+ }
623
+
624
+ [data-rig-site-nav-link]:hover {
625
+ color: var(--color-accent);
626
+ }
627
+
628
+ [data-rig-site-nav-link][data-active] {
629
+ background: color-mix(in srgb, var(--color-accent) 15%, transparent);
630
+ color: #161616;
631
+ }
632
+
633
+ [data-rig-site-nav][data-variant='pill'] [data-rig-site-nav-link][data-active] {
634
+ background: var(--color-accent);
635
+ color: #161616;
636
+ }
637
+
638
+ /* ═══════════════════════════════════════════════════════════════════
639
+ Reading progress bar
640
+ ═══════════════════════════════════════════════════════════════════ */
641
+
642
+ [data-rig-reading-progress-bar] {
643
+ background: linear-gradient(90deg, var(--color-primary), var(--color-accent));
644
+ }
645
+
646
+ /* ═══════════════════════════════════════════════════════════════════
647
+ Affiliate notice — warm accent
648
+ ═══════════════════════════════════════════════════════════════════ */
649
+
650
+ [data-rig-affiliate-notice] {
651
+ background: color-mix(in srgb, var(--color-accent) 8%, transparent);
652
+ border-left: 3px solid var(--color-accent);
653
+ }
654
+
655
+ /* ═══════════════════════════════════════════════════════════════════
656
+ Scrollbar
657
+ ═══════════════════════════════════════════════════════════════════ */
658
+
659
+ ::-webkit-scrollbar-thumb {
660
+ background: color-mix(in srgb, var(--color-primary) 20%, transparent);
661
+ }
662
+
663
+ ::-webkit-scrollbar-thumb:hover {
664
+ background: color-mix(in srgb, var(--color-primary) 40%, transparent);
665
+ }
666
+
667
+ /* ═══════════════════════════════════════════════════════════════════
668
+ Related articles — hover accent
669
+ ═══════════════════════════════════════════════════════════════════ */
670
+
671
+ [data-rig-related-link]:hover {
672
+ border-color: var(--color-accent);
673
+ }
674
+
675
+ [data-rig-related-category] {
676
+ color: var(--color-accent);
677
+ }
678
+
679
+ /* ═══════════════════════════════════════════════════════════════════
680
+ Article header — refined bottom border with ornament
681
+ ═══════════════════════════════════════════════════════════════════ */
682
+
683
+ [data-rig-article-header] {
684
+ position: relative;
685
+ }
686
+
687
+ [data-rig-article-header]::after {
688
+ content: '~';
689
+ display: block;
690
+ text-align: center;
691
+ font-family: var(--font-heading);
692
+ font-size: 1.5rem;
693
+ color: var(--color-accent);
694
+ margin-top: 1.5rem;
695
+ letter-spacing: 0.5em;
696
+ }
697
+
698
+ /* ═══════════════════════════════════════════════════════════════════
699
+ Category header — refined with accent underline
700
+ ═══════════════════════════════════════════════════════════════════ */
701
+
702
+ [data-rig-category-header-title] {
703
+ display: inline-block;
704
+ }
705
+
706
+ [data-rig-category-header-title]::after {
707
+ content: '';
708
+ display: block;
709
+ width: 4rem;
710
+ height: 3px;
711
+ background: var(--card-accent, var(--color-accent));
712
+ margin-top: 0.75rem;
713
+ border-radius: 2px;
714
+ }
715
+
716
+ /* ═══════════════════════════════════════════════════════════════════
717
+ Static page title — decorative underline
718
+ ═══════════════════════════════════════════════════════════════════ */
719
+
720
+ [data-rig-static-page-title] {
721
+ border-bottom-color: var(--color-accent);
722
+ }
723
+
724
+ /* ═══════════════════════════════════════════════════════════════════
725
+ Error page — warm character
726
+ ═══════════════════════════════════════════════════════════════════ */
727
+
728
+ [data-rig-error-code] {
729
+ color: var(--color-accent);
730
+ font-family: var(--font-heading);
731
+ }