@conduction/docusaurus-preset 3.44.2 → 3.45.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 (88) hide show
  1. package/package.json +1 -1
  2. package/src/components/AgentTrace/AgentTrace.module.css +1 -1
  3. package/src/components/AiDisclosure/AiDisclosure.module.css +2 -2
  4. package/src/components/AppCrossLinks/AppCrossLinks.module.css +9 -9
  5. package/src/components/AppMock/AppMock.module.css +46 -46
  6. package/src/components/AppsGrid/AppsGrid.module.css +4 -4
  7. package/src/components/AppsPreview/AppsPreview.module.css +7 -7
  8. package/src/components/AtomZones/AtomZones.module.css +19 -19
  9. package/src/components/BlueprintRush/BlueprintRush.module.css +13 -13
  10. package/src/components/BuildMock/BuildMock.module.css +11 -11
  11. package/src/components/Clients/Clients.module.css +4 -4
  12. package/src/components/ContentCard/ContentCard.module.css +13 -13
  13. package/src/components/ContentDetailHero/ContentDetailHero.module.css +6 -6
  14. package/src/components/ContentTypeFilter/ContentTypeFilter.module.css +5 -5
  15. package/src/components/CtaBanner/CtaBanner.module.css +1 -1
  16. package/src/components/DeadlineDefender/DeadlineDefender.module.css +14 -14
  17. package/src/components/DetailHero/DetailHero.jsx +15 -0
  18. package/src/components/DetailHero/DetailHero.module.css +21 -11
  19. package/src/components/DiceDuel/DiceDuel.module.css +16 -16
  20. package/src/components/DownloadPanel/DownloadPanel.module.css +4 -4
  21. package/src/components/EmployeeCard/EmployeeCard.module.css +19 -19
  22. package/src/components/ExternalAppShelf/ExternalAppShelf.module.css +5 -5
  23. package/src/components/FAQ/FAQ.module.css +4 -4
  24. package/src/components/FacetedFilters/FacetedFilters.module.css +10 -10
  25. package/src/components/FeatureGrid/FeatureGrid.module.css +8 -8
  26. package/src/components/FeatureList/FeatureList.module.css +4 -4
  27. package/src/components/FeaturedCard/FeaturedCard.jsx +17 -0
  28. package/src/components/FeaturedCard/FeaturedCard.module.css +12 -3
  29. package/src/components/FlowMock/FlowMock.module.css +2 -2
  30. package/src/components/GameModal/GameModal.module.css +45 -40
  31. package/src/components/Hero/Hero.module.css +4 -4
  32. package/src/components/HexBackground/HexBackground.module.css +3 -3
  33. package/src/components/HexCard/HexCard.module.css +4 -4
  34. package/src/components/HexNetwork/HexNetwork.module.css +6 -6
  35. package/src/components/HiddenGame/HiddenGame.module.css +2 -2
  36. package/src/components/HowSteps/HowSteps.module.css +3 -3
  37. package/src/components/IntegrationIcon/IntegrationIcon.module.css +1 -1
  38. package/src/components/KanbanMock/KanbanMock.module.css +8 -8
  39. package/src/components/LeafCard/LeafCard.module.css +15 -15
  40. package/src/components/LeafMock/LeafMock.module.css +8 -8
  41. package/src/components/LockPick/LockPick.module.css +14 -14
  42. package/src/components/ManagedCommonGround/ManagedCommonGround.module.css +1 -1
  43. package/src/components/McpToolShelf/McpToolShelf.module.css +8 -8
  44. package/src/components/MockScene/MockScene.module.css +1 -1
  45. package/src/components/ModuleCard/ModuleCard.module.css +11 -11
  46. package/src/components/ModulePage/ModulePage.module.css +9 -9
  47. package/src/components/MonsterRun/MonsterRun.module.css +12 -12
  48. package/src/components/NewsletterCta/NewsletterCta.module.css +9 -9
  49. package/src/components/NextSteps/NextSteps.module.css +9 -9
  50. package/src/components/Outcomes/Outcomes.module.css +5 -5
  51. package/src/components/PaintByTokens/PaintByTokens.module.css +15 -15
  52. package/src/components/PairCard/PairCard.module.css +3 -3
  53. package/src/components/PartnerCard/PartnerCard.module.css +21 -21
  54. package/src/components/PartnerDirectory/PartnerDirectory.module.css +1 -1
  55. package/src/components/PartnerSidecard/PartnerSidecard.module.css +9 -9
  56. package/src/components/PipeFit/PipeFit.module.css +10 -10
  57. package/src/components/Pipeline/Pipeline.module.css +7 -7
  58. package/src/components/PlatformOverview/PlatformOverview.module.css +4 -4
  59. package/src/components/Prerequisites/Prerequisites.module.css +5 -5
  60. package/src/components/PullQuote/PullQuote.module.css +5 -5
  61. package/src/components/Reconcile/Reconcile.module.css +15 -15
  62. package/src/components/RecordRun/RecordRun.module.css +16 -16
  63. package/src/components/Redaction/Redaction.module.css +13 -13
  64. package/src/components/ReferenceCard/ReferenceCard.module.css +7 -7
  65. package/src/components/RelatedPosts/RelatedPosts.module.css +1 -1
  66. package/src/components/RotatingCards/RotatingCards.module.css +8 -8
  67. package/src/components/SetupSteps/SetupSteps.module.css +6 -6
  68. package/src/components/Showcase/Showcase.module.css +12 -12
  69. package/src/components/SidebarMock/SidebarMock.module.css +2 -2
  70. package/src/components/SolutionCard/SolutionCard.module.css +5 -5
  71. package/src/components/StampRush/StampRush.module.css +12 -12
  72. package/src/components/StatsStrip/StatsStrip.module.css +3 -3
  73. package/src/components/ThemeSeamMock/ThemeSeamMock.module.css +1 -1
  74. package/src/components/Troubleshooting/Troubleshooting.module.css +7 -7
  75. package/src/components/WidgetMock/WidgetMock.module.css +1 -1
  76. package/src/components/WidgetShelf/WidgetShelf.module.css +11 -11
  77. package/src/components/primitives/AuthorByline.module.css +5 -5
  78. package/src/components/primitives/Button.module.css +8 -8
  79. package/src/components/primitives/Card.module.css +3 -3
  80. package/src/components/primitives/Eyebrow.module.css +1 -1
  81. package/src/components/primitives/HexThumbnail.module.css +1 -1
  82. package/src/components/primitives/Pill.module.css +2 -2
  83. package/src/components/primitives/Section.module.css +2 -2
  84. package/src/components/primitives/SectionHead.module.css +2 -2
  85. package/src/css/brand.css +17 -17
  86. package/src/css/tokens.css +60 -0
  87. package/src/theme/ErrorPageContent/styles.module.css +9 -9
  88. package/src/theme/Navbar/styles.module.css +17 -17
@@ -32,8 +32,13 @@
32
32
  * icon={<svg>...</svg>}
33
33
  * iconColor="var(--c-blue-cobalt)"
34
34
  * illustration={<AppMock app="launchpad" />}
35
+ * game={<HiddenGame id="stamp-rush" unlock={...}><StampRush /></HiddenGame>}
35
36
  * />
36
37
  *
38
+ * `game` is the app's hidden mini-game. It renders across the full
39
+ * width of the hero, under the copy and the illustration, and shows
40
+ * nothing until the player finds it.
41
+ *
37
42
  * Each cta object also accepts `tone: "orange"` to flip the primary
38
43
  * (or secondary) variant to the KNVB-orange accent. Reserved for
39
44
  * product pages with an orange-leaning brand identity (launchpad).
@@ -95,6 +100,7 @@ export default function DetailHero({
95
100
  icon,
96
101
  iconColor,
97
102
  illustration,
103
+ game,
98
104
  className,
99
105
  appId,
100
106
  downloads,
@@ -393,6 +399,15 @@ export default function DetailHero({
393
399
  {hasIllustration && (
394
400
  <div className={styles.illustration}>{illustration}</div>
395
401
  )}
402
+
403
+ {/* The app's hidden mini-game, when it has one. It lives here
404
+ rather than further down the page because the way in is up
405
+ here too: you knock on the logo in this hero, and what you
406
+ unlocked should not be somewhere you have to scroll to find.
407
+ It spans both columns, so the game gets the width of the
408
+ hero instead of the width of the mock. While the game is
409
+ still hidden this renders nothing at all. */}
410
+ {game && <div className={styles.game}>{game}</div>}
396
411
  </div>
397
412
  </section>
398
413
  );
@@ -65,10 +65,10 @@
65
65
  font-size: 12px;
66
66
  letter-spacing: 0.04em;
67
67
  text-transform: uppercase;
68
- color: var(--c-cobalt-400);
68
+ color: var(--conduction-color-text-muted);
69
69
  margin-bottom: 24px;
70
70
  }
71
- .crumb a { color: var(--c-cobalt-400); text-decoration: none; }
71
+ .crumb a { color: var(--conduction-color-text-muted); text-decoration: none; }
72
72
  .crumb a:hover { color: var(--c-orange-knvb); }
73
73
  .sep { margin: 0 8px; color: var(--c-cobalt-200); }
74
74
 
@@ -110,16 +110,16 @@
110
110
  font-size: 11px;
111
111
  letter-spacing: 0.08em;
112
112
  text-transform: uppercase;
113
- color: var(--c-cobalt-700);
113
+ color: var(--conduction-color-text-body);
114
114
  }
115
- .versionBadge { color: var(--c-cobalt-400); }
115
+ .versionBadge { color: var(--conduction-color-text-muted); }
116
116
 
117
117
  /* Meta-row chip. Shared by the downloads counter and the "View on
118
118
  GitHub" link; both are usually <a> elements pointing at the app's
119
119
  repository, so the chip carries link resets + a hover state. */
120
120
  .downloadsBadge {
121
- color: var(--c-blue-cobalt);
122
- background: var(--c-cobalt-50);
121
+ color: var(--conduction-color-text-default);
122
+ background: var(--conduction-color-surface-subtle);
123
123
  border: 1px solid var(--c-cobalt-100);
124
124
  border-radius: var(--radius-sm);
125
125
  padding: 4px 10px;
@@ -128,8 +128,8 @@
128
128
  transition: background 120ms ease, border-color 120ms ease;
129
129
  }
130
130
  a.downloadsBadge:hover {
131
- color: var(--c-blue-cobalt);
132
- background: var(--c-cobalt-100);
131
+ color: var(--conduction-color-text-default);
132
+ background: var(--conduction-color-surface-sunken);
133
133
  border-color: var(--c-cobalt-200);
134
134
  }
135
135
  .downloadIcon {
@@ -153,7 +153,7 @@ a.downloadsBadge:hover {
153
153
  letter-spacing: -0.025em;
154
154
  line-height: 1.05;
155
155
  margin: 0 0 20px;
156
- color: var(--c-cobalt-900);
156
+ color: var(--conduction-color-text-strong);
157
157
  display: flex;
158
158
  align-items: center;
159
159
  gap: 22px;
@@ -199,7 +199,7 @@ a.downloadsBadge:hover {
199
199
  .tagline {
200
200
  font-size: 22px;
201
201
  line-height: 1.5;
202
- color: var(--c-cobalt-700);
202
+ color: var(--conduction-color-text-body);
203
203
  max-width: 60ch;
204
204
  margin: 0 0 32px;
205
205
  }
@@ -211,7 +211,7 @@ a.downloadsBadge:hover {
211
211
  .intro {
212
212
  font-size: 17px;
213
213
  line-height: 1.6;
214
- color: var(--c-cobalt-700);
214
+ color: var(--conduction-color-text-body);
215
215
  max-width: 70ch;
216
216
  margin: 0 0 32px;
217
217
  }
@@ -234,6 +234,16 @@ a.downloadsBadge:hover {
234
234
  width: 100%;
235
235
  }
236
236
  .illustration > * { width: 100%; max-width: 560px; }
237
+
238
+ /* The app's mini-game, across the whole hero rather than in the
239
+ illustration's column: the games are wide, and a card squeezed into
240
+ half a hero reads as an accident. Empty until the game is found, and
241
+ `:empty` keeps the margin off until then. */
242
+ .game {
243
+ grid-column: 1 / -1;
244
+ margin-top: 40px;
245
+ }
246
+ .game:empty { display: none; }
237
247
  @media (max-width: 900px) {
238
248
  .illustration { justify-content: flex-start; }
239
249
  }
@@ -8,7 +8,7 @@
8
8
  .dd {
9
9
  border: 1px solid var(--c-cobalt-100);
10
10
  border-radius: var(--radius-lg);
11
- background: white;
11
+ background: var(--conduction-color-surface-card);
12
12
  padding: clamp(16px, 3vw, 28px);
13
13
  font-family: var(--conduction-typography-font-family-body);
14
14
  }
@@ -35,7 +35,7 @@
35
35
  margin: 0 0 6px;
36
36
  font-size: 20px;
37
37
  font-weight: 700;
38
- color: var(--c-cobalt-900);
38
+ color: var(--conduction-color-text-strong);
39
39
  }
40
40
 
41
41
  .lede {
@@ -43,7 +43,7 @@
43
43
  max-width: 58ch;
44
44
  font-size: 14px;
45
45
  line-height: 1.5;
46
- color: var(--c-cobalt-700);
46
+ color: var(--conduction-color-text-body);
47
47
  }
48
48
 
49
49
  .hud {
@@ -57,22 +57,22 @@
57
57
  .hudPill {
58
58
  padding: 6px 10px;
59
59
  border-radius: var(--radius-pill);
60
- background: var(--c-cobalt-50);
61
- color: var(--c-cobalt-900);
60
+ background: var(--conduction-color-surface-subtle);
61
+ color: var(--conduction-color-text-strong);
62
62
  white-space: nowrap;
63
63
  }
64
64
 
65
65
  .field {
66
66
  padding: 16px;
67
67
  border-radius: var(--radius-md);
68
- background: var(--c-cobalt-50);
68
+ background: var(--conduction-color-surface-subtle);
69
69
  max-width: 560px;
70
70
  }
71
71
 
72
72
  .monster {
73
73
  margin: 0 0 8px;
74
74
  font-size: 15px;
75
- color: var(--c-cobalt-900);
75
+ color: var(--conduction-color-text-strong);
76
76
  }
77
77
 
78
78
  .wounds {
@@ -101,11 +101,11 @@
101
101
  height: 52px;
102
102
  border: 2px solid var(--c-cobalt-200);
103
103
  border-radius: var(--radius-md);
104
- background: white;
104
+ background: var(--conduction-color-surface-card);
105
105
  font-family: var(--conduction-typography-font-family-code);
106
106
  font-size: 20px;
107
107
  font-weight: 700;
108
- color: var(--c-cobalt-900);
108
+ color: var(--conduction-color-text-strong);
109
109
  cursor: pointer;
110
110
  transition: border-color 120ms ease, transform 120ms ease;
111
111
  }
@@ -124,7 +124,7 @@
124
124
  margin: 12px 0 0;
125
125
  font-family: var(--conduction-typography-font-family-code);
126
126
  font-size: 12px;
127
- color: var(--c-cobalt-700);
127
+ color: var(--conduction-color-text-body);
128
128
  min-height: 1.2em;
129
129
  }
130
130
 
@@ -153,8 +153,8 @@
153
153
  .strike:focus-visible { outline: 2px solid var(--c-cobalt-900); outline-offset: 2px; }
154
154
 
155
155
  .push {
156
- background: white;
157
- color: var(--c-cobalt-700);
156
+ background: var(--conduction-color-surface-card);
157
+ color: var(--conduction-color-text-body);
158
158
  border: 1px solid var(--c-cobalt-200);
159
159
  padding: 10px 18px;
160
160
  border-radius: var(--radius-md);
@@ -169,8 +169,8 @@
169
169
  .push:focus-visible { outline: 2px solid var(--c-blue-cobalt); outline-offset: 2px; }
170
170
 
171
171
  .start {
172
- background: white;
173
- color: var(--c-cobalt-700);
172
+ background: var(--conduction-color-surface-card);
173
+ color: var(--conduction-color-text-body);
174
174
  border: 1px solid var(--c-cobalt-200);
175
175
  padding: 10px 18px;
176
176
  border-radius: var(--radius-md);
@@ -179,13 +179,13 @@
179
179
  font-size: 14px;
180
180
  cursor: pointer;
181
181
  }
182
- .start:hover { border-color: var(--c-blue-cobalt); color: var(--c-blue-cobalt); }
182
+ .start:hover { border-color: var(--c-blue-cobalt); color: var(--conduction-color-text-default); }
183
183
  .start:focus-visible { outline: 2px solid var(--c-blue-cobalt); outline-offset: 2px; }
184
184
 
185
185
  .hint {
186
186
  margin: 0;
187
187
  flex-basis: 100%;
188
188
  font-size: 12px;
189
- color: var(--c-cobalt-400);
189
+ color: var(--conduction-color-text-muted);
190
190
  min-height: 1.4em;
191
191
  }
@@ -26,7 +26,7 @@
26
26
  the panel's own 56px internal padding and grid layout are
27
27
  untouched. */
28
28
  .section {
29
- background: var(--c-cobalt-50);
29
+ background: var(--conduction-color-surface-subtle);
30
30
  border-top: 1px solid var(--c-cobalt-100);
31
31
  border-bottom: 1px solid var(--c-cobalt-100);
32
32
  margin-top: -200px;
@@ -99,7 +99,7 @@
99
99
  }
100
100
 
101
101
  .card {
102
- background: white;
102
+ background: var(--conduction-color-surface-card);
103
103
  color: var(--conduction-color-text-default);
104
104
  border-radius: var(--radius-lg);
105
105
  padding: 36px;
@@ -114,14 +114,14 @@
114
114
  font-size: 20px;
115
115
  font-weight: 600;
116
116
  margin: 0;
117
- color: var(--c-blue-cobalt);
117
+ color: var(--conduction-color-text-default);
118
118
  letter-spacing: -0.005em;
119
119
  }
120
120
 
121
121
  .cardBody {
122
122
  font-size: 14px;
123
123
  line-height: 1.55;
124
- color: var(--c-cobalt-700);
124
+ color: var(--conduction-color-text-body);
125
125
  margin: 0;
126
126
  }
127
127
 
@@ -28,7 +28,7 @@
28
28
 
29
29
  /* Compact variant */
30
30
  .cardCompact {
31
- background: white;
31
+ background: var(--conduction-color-surface-card);
32
32
  border: 1px solid var(--c-cobalt-100);
33
33
  border-radius: var(--radius-lg);
34
34
  padding: 20px;
@@ -48,14 +48,14 @@
48
48
  color: inherit;
49
49
  }
50
50
  .info { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
51
- .name { font-size: 15px; font-weight: 600; color: var(--c-blue-cobalt); line-height: 1.2; }
52
- .role { font-family: var(--conduction-typography-font-family-code); font-size: 11px; color: var(--c-cobalt-400); letter-spacing: 0.05em; }
51
+ .name { font-size: 15px; font-weight: 600; color: var(--conduction-color-text-default); line-height: 1.2; }
52
+ .role { font-family: var(--conduction-typography-font-family-code); font-size: 11px; color: var(--conduction-color-text-muted); letter-spacing: 0.05em; }
53
53
  .linksRow { display: flex; gap: 8px; flex-shrink: 0; }
54
54
  .linksRow a {
55
55
  width: 26px; height: 26px;
56
56
  border-radius: var(--radius-sm);
57
- background: var(--c-cobalt-50);
58
- color: var(--c-cobalt-700);
57
+ background: var(--conduction-color-surface-subtle);
58
+ color: var(--conduction-color-text-body);
59
59
  display: inline-flex; align-items: center; justify-content: center;
60
60
  transition: all 140ms ease;
61
61
  }
@@ -64,7 +64,7 @@
64
64
 
65
65
  /* Photo variant */
66
66
  .cardPhoto {
67
- background: white;
67
+ background: var(--conduction-color-surface-card);
68
68
  border: 1px solid var(--c-cobalt-100);
69
69
  border-radius: var(--radius-lg);
70
70
  padding: 28px 24px;
@@ -76,16 +76,16 @@
76
76
  box-shadow: var(--shadow-1);
77
77
  font-family: var(--conduction-typography-font-family-body);
78
78
  }
79
- .cardPhoto .name { font-size: 19px; font-weight: 700; color: var(--c-cobalt-900); }
80
- .cardPhoto .role { font-size: 13px; color: var(--c-cobalt-700); font-family: var(--conduction-typography-font-family-body); letter-spacing: 0; max-width: 28ch; }
81
- .bio { font-size: 14px; color: var(--c-cobalt-700); line-height: 1.6; margin: 8px 0 0; max-width: 36ch; }
79
+ .cardPhoto .name { font-size: 19px; font-weight: 700; color: var(--conduction-color-text-strong); }
80
+ .cardPhoto .role { font-size: 13px; color: var(--conduction-color-text-body); font-family: var(--conduction-typography-font-family-body); letter-spacing: 0; max-width: 28ch; }
81
+ .bio { font-size: 14px; color: var(--conduction-color-text-body); line-height: 1.6; margin: 8px 0 0; max-width: 36ch; }
82
82
 
83
83
  .contacts { display: flex; gap: 10px; margin-top: 10px; }
84
84
  .contacts a {
85
85
  width: 32px; height: 32px;
86
86
  border-radius: var(--radius-sm);
87
- background: var(--c-cobalt-50);
88
- color: var(--c-cobalt-700);
87
+ background: var(--conduction-color-surface-subtle);
88
+ color: var(--conduction-color-text-body);
89
89
  display: inline-flex; align-items: center; justify-content: center;
90
90
  transition: all 140ms ease;
91
91
  }
@@ -94,7 +94,7 @@
94
94
 
95
95
  /* Detail variant */
96
96
  .cardDetail {
97
- background: white;
97
+ background: var(--conduction-color-surface-card);
98
98
  border: 1px solid var(--c-cobalt-100);
99
99
  border-radius: var(--radius-lg);
100
100
  padding: 32px;
@@ -112,23 +112,23 @@
112
112
  top: 0; right: 0;
113
113
  width: 140px; height: 160px;
114
114
  clip-path: var(--hex-pointy-top);
115
- background: var(--c-cobalt-50);
115
+ background: var(--conduction-color-surface-subtle);
116
116
  transform: translate(40px, -50px);
117
117
  z-index: 0;
118
118
  }
119
119
  .cardDetail > * { position: relative; z-index: 1; }
120
- .cardDetail .name { font-size: 20px; font-weight: 700; color: var(--c-cobalt-900); }
120
+ .cardDetail .name { font-size: 20px; font-weight: 700; color: var(--conduction-color-text-strong); }
121
121
  .cardDetail .role { font-size: 13px; }
122
122
  .appsLabel {
123
123
  font-family: var(--conduction-typography-font-family-code);
124
124
  font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase;
125
- color: var(--c-cobalt-400);
125
+ color: var(--conduction-color-text-muted);
126
126
  margin-bottom: 8px;
127
127
  }
128
128
  .appsList { display: flex; gap: 6px; flex-wrap: wrap; }
129
129
  .appPill {
130
- background: var(--c-cobalt-50);
131
- color: var(--c-cobalt-700);
130
+ background: var(--conduction-color-surface-subtle);
131
+ color: var(--conduction-color-text-body);
132
132
  padding: 4px 10px;
133
133
  border-radius: var(--radius-pill);
134
134
  font-size: 12px;
@@ -137,10 +137,10 @@
137
137
  .contactsInline { display: flex; flex-wrap: wrap; gap: 16px; }
138
138
  .contactsInline a {
139
139
  display: inline-flex; align-items: center; gap: 6px;
140
- font-size: 13px; color: var(--c-cobalt-700);
140
+ font-size: 13px; color: var(--conduction-color-text-body);
141
141
  text-decoration: none;
142
142
  }
143
- .contactsInline a:hover { color: var(--c-blue-cobalt); }
143
+ .contactsInline a:hover { color: var(--conduction-color-text-default); }
144
144
  .contactsInline svg { width: 14px; height: 14px; fill: #000000; stroke: none; }
145
145
 
146
146
  /* ============================================================
@@ -13,7 +13,7 @@
13
13
  }
14
14
 
15
15
  .card {
16
- background: white;
16
+ background: var(--conduction-color-surface-card);
17
17
  border: 1px solid var(--c-cobalt-100);
18
18
  border-radius: var(--radius-lg);
19
19
  padding: var(--space-4) var(--space-5);
@@ -60,7 +60,7 @@
60
60
  font-size: 16px;
61
61
  font-weight: 600;
62
62
  letter-spacing: -0.005em;
63
- color: var(--c-cobalt-900);
63
+ color: var(--conduction-color-text-strong);
64
64
  margin: 0;
65
65
  }
66
66
  .meta {
@@ -68,17 +68,17 @@
68
68
  font-size: 11px;
69
69
  letter-spacing: 0.06em;
70
70
  text-transform: uppercase;
71
- color: var(--c-cobalt-400);
71
+ color: var(--conduction-color-text-muted);
72
72
  }
73
73
  .desc {
74
74
  font-size: 14px;
75
75
  line-height: 1.5;
76
- color: var(--c-cobalt-700);
76
+ color: var(--conduction-color-text-body);
77
77
  margin: 4px 0 0;
78
78
  }
79
79
 
80
80
  .arrow {
81
- color: var(--c-cobalt-400);
81
+ color: var(--conduction-color-text-muted);
82
82
  font-size: 14px;
83
83
  margin-left: auto;
84
84
  transition: color 160ms, transform 160ms;
@@ -9,7 +9,7 @@
9
9
  font-weight: 700;
10
10
  letter-spacing: -0.02em;
11
11
  margin: 0 0 32px;
12
- color: var(--c-cobalt-900);
12
+ color: var(--conduction-color-text-strong);
13
13
  }
14
14
 
15
15
  .item {
@@ -25,7 +25,7 @@
25
25
  display: flex;
26
26
  justify-content: space-between;
27
27
  align-items: center;
28
- color: var(--c-cobalt-900);
28
+ color: var(--conduction-color-text-strong);
29
29
  gap: var(--space-4);
30
30
  }
31
31
 
@@ -36,7 +36,7 @@
36
36
  .summary::after {
37
37
  content: "+";
38
38
  font-size: 22px;
39
- color: var(--c-cobalt-400);
39
+ color: var(--conduction-color-text-muted);
40
40
  font-weight: 400;
41
41
  transition: transform 200ms ease;
42
42
  flex-shrink: 0;
@@ -49,7 +49,7 @@
49
49
 
50
50
  .body {
51
51
  font-size: 15px;
52
- color: var(--c-cobalt-700);
52
+ color: var(--conduction-color-text-body);
53
53
  line-height: 1.6;
54
54
  margin: 12px 0 0;
55
55
  max-width: 64ch;
@@ -20,7 +20,7 @@
20
20
  font-size: 11px;
21
21
  letter-spacing: 0.14em;
22
22
  text-transform: uppercase;
23
- color: var(--c-cobalt-400);
23
+ color: var(--conduction-color-text-muted);
24
24
  font-weight: 500;
25
25
  margin: 0 0 10px;
26
26
  }
@@ -40,10 +40,10 @@
40
40
  gap: 10px;
41
41
  align-items: center;
42
42
  font-size: 14px;
43
- color: var(--c-cobalt-700);
43
+ color: var(--conduction-color-text-body);
44
44
  padding: 4px 0;
45
45
  }
46
- .facetList li:hover { color: var(--c-blue-cobalt); }
46
+ .facetList li:hover { color: var(--conduction-color-text-default); }
47
47
 
48
48
  .facetList input[type="checkbox"] {
49
49
  appearance: none;
@@ -53,7 +53,7 @@
53
53
  border-radius: 3px;
54
54
  cursor: pointer;
55
55
  position: relative;
56
- background: white;
56
+ background: var(--conduction-color-surface-card);
57
57
  transition: all 120ms;
58
58
  }
59
59
  .facetList input[type="checkbox"]:hover { border-color: var(--c-blue-cobalt); }
@@ -80,7 +80,7 @@
80
80
  .count {
81
81
  font-family: var(--conduction-typography-font-family-code);
82
82
  font-size: 11px;
83
- color: var(--c-cobalt-400);
83
+ color: var(--conduction-color-text-muted);
84
84
  }
85
85
 
86
86
  .clearAll {
@@ -88,7 +88,7 @@
88
88
  align-items: center;
89
89
  gap: 6px;
90
90
  font-size: 13px;
91
- color: var(--c-cobalt-400);
91
+ color: var(--conduction-color-text-muted);
92
92
  text-decoration: none;
93
93
  margin-top: 8px;
94
94
  border: none;
@@ -105,8 +105,8 @@
105
105
  align-items: center;
106
106
  gap: 6px;
107
107
  padding: 5px 8px 5px 12px;
108
- background: var(--c-cobalt-50);
109
- color: var(--c-cobalt-900);
108
+ background: var(--conduction-color-surface-subtle);
109
+ color: var(--conduction-color-text-strong);
110
110
  font-size: 13px;
111
111
  font-family: var(--conduction-typography-font-family-code);
112
112
  border-radius: var(--radius-pill);
@@ -119,8 +119,8 @@
119
119
  width: 18px;
120
120
  height: 18px;
121
121
  border: none;
122
- background: var(--c-cobalt-100);
123
- color: var(--c-cobalt-700);
122
+ background: var(--conduction-color-surface-sunken);
123
+ color: var(--conduction-color-text-body);
124
124
  border-radius: 50%;
125
125
  cursor: pointer;
126
126
  font-size: 14px;
@@ -16,7 +16,7 @@
16
16
  font-size: 11px;
17
17
  letter-spacing: 0.1em;
18
18
  text-transform: uppercase;
19
- color: var(--c-cobalt-400);
19
+ color: var(--conduction-color-text-muted);
20
20
  margin: 24px 0 8px;
21
21
  padding-bottom: 8px;
22
22
  border-bottom: 1px solid var(--c-cobalt-100);
@@ -31,7 +31,7 @@
31
31
  gap: 12px;
32
32
  padding: 8px 0;
33
33
  font-size: 14px;
34
- color: var(--c-cobalt-800);
34
+ color: var(--conduction-color-text-strong);
35
35
  cursor: help;
36
36
  outline: none;
37
37
  border-radius: var(--radius-sm);
@@ -39,7 +39,7 @@
39
39
  }
40
40
  .item:hover,
41
41
  .item:focus-visible {
42
- background: var(--c-cobalt-50);
42
+ background: var(--conduction-color-surface-subtle);
43
43
  padding-left: 8px;
44
44
  padding-right: 8px;
45
45
  margin-left: -8px;
@@ -53,7 +53,7 @@
53
53
  }
54
54
  .itemLink:hover,
55
55
  .itemLink:focus-visible {
56
- color: var(--c-cobalt-900);
56
+ color: var(--conduction-color-text-strong);
57
57
  text-decoration: none;
58
58
  }
59
59
  .itemLink:hover .label,
@@ -95,12 +95,12 @@
95
95
  cursor: default;
96
96
  border: 1px solid var(--c-cobalt-100);
97
97
  border-radius: var(--radius-md);
98
- background: white;
98
+ background: var(--conduction-color-surface-card);
99
99
  }
100
100
  .itemCard.itemLink { cursor: pointer; }
101
101
  .itemCard:hover,
102
102
  .itemCard:focus-visible {
103
- background: var(--c-cobalt-50);
103
+ background: var(--conduction-color-surface-subtle);
104
104
  border-color: var(--c-cobalt-200);
105
105
  padding: 14px 16px;
106
106
  margin: 0;
@@ -113,7 +113,7 @@
113
113
  .desc {
114
114
  font-size: 13px;
115
115
  line-height: 1.55;
116
- color: var(--c-cobalt-700);
116
+ color: var(--conduction-color-text-body);
117
117
  margin-left: 22px;
118
118
  }
119
119
 
@@ -161,7 +161,7 @@
161
161
  font-size: 11px;
162
162
  letter-spacing: 0.06em;
163
163
  text-transform: uppercase;
164
- color: var(--c-cobalt-400);
164
+ color: var(--conduction-color-text-muted);
165
165
  }
166
166
  .legendItem {
167
167
  display: inline-flex;
@@ -19,8 +19,8 @@
19
19
  width: 56px;
20
20
  height: 64px;
21
21
  clip-path: var(--hex-pointy-top);
22
- background: var(--c-cobalt-50);
23
- color: var(--c-blue-cobalt);
22
+ background: var(--conduction-color-surface-subtle);
23
+ color: var(--conduction-color-text-default);
24
24
  display: flex;
25
25
  align-items: center;
26
26
  justify-content: center;
@@ -39,13 +39,13 @@
39
39
  font-weight: 700;
40
40
  letter-spacing: -0.01em;
41
41
  margin: 0 0 8px;
42
- color: var(--c-cobalt-900);
42
+ color: var(--conduction-color-text-strong);
43
43
  }
44
44
  .title :global(.next-blue) { color: var(--c-nextcloud-blue); }
45
45
 
46
46
  .body {
47
47
  font-size: 15px;
48
- color: var(--c-cobalt-700);
48
+ color: var(--conduction-color-text-body);
49
49
  line-height: 1.6;
50
50
  margin: 0;
51
51
  }
@@ -16,6 +16,10 @@
16
16
  *
17
17
  * <FeaturedCard
18
18
  * href="/posts/install-opencatalogi"
19
+ *
20
+ * `game` puts a hidden mini-game across the bottom of the card. Only
21
+ * on a card without `href`: inside a link the card would swallow every
22
+ * click before the game saw it.
19
23
  * eyebrow="Featured guide"
20
24
  * title="Install OpenCatalogi in two minutes."
21
25
  * lede="From app store to first register, no terminal required."
@@ -58,6 +62,7 @@ export default function FeaturedCard({
58
62
  locale,
59
63
  thumbnail,
60
64
  visual,
65
+ game,
61
66
  accent = 'orange',
62
67
  contentType,
63
68
  durationMinutes,
@@ -175,6 +180,18 @@ export default function FeaturedCard({
175
180
  ].join(' ')} />
176
181
  </>)}
177
182
  </div>
183
+
184
+ {/* The post's hidden mini-game, when it has one. It belongs in
185
+ the hero for the same reason the app games do: the way in is
186
+ up here, so what you unlocked should be too. It spans both
187
+ columns and shows nothing until the game is found.
188
+
189
+ Not rendered when the whole card is a link: a game inside an
190
+ anchor cannot be played, because the card swallows the click
191
+ before the game sees it. `game` and `href` do not go
192
+ together, and a card that links somewhere is a teaser, not a
193
+ place to play. */}
194
+ {game && !href && <div className={styles.game}>{game}</div>}
178
195
  </Tag>
179
196
  );
180
197
  }