@forwardimpact/pathway 0.1.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 (227) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +104 -0
  3. package/app/commands/agent.js +430 -0
  4. package/app/commands/behaviour.js +61 -0
  5. package/app/commands/command-factory.js +211 -0
  6. package/app/commands/discipline.js +58 -0
  7. package/app/commands/driver.js +94 -0
  8. package/app/commands/grade.js +60 -0
  9. package/app/commands/index.js +20 -0
  10. package/app/commands/init.js +67 -0
  11. package/app/commands/interview.js +68 -0
  12. package/app/commands/job.js +157 -0
  13. package/app/commands/progress.js +77 -0
  14. package/app/commands/questions.js +179 -0
  15. package/app/commands/serve.js +143 -0
  16. package/app/commands/site.js +121 -0
  17. package/app/commands/skill.js +76 -0
  18. package/app/commands/stage.js +129 -0
  19. package/app/commands/track.js +70 -0
  20. package/app/components/action-buttons.js +66 -0
  21. package/app/components/behaviour-profile.js +53 -0
  22. package/app/components/builder.js +341 -0
  23. package/app/components/card.js +98 -0
  24. package/app/components/checklist.js +145 -0
  25. package/app/components/comparison-radar.js +237 -0
  26. package/app/components/detail.js +230 -0
  27. package/app/components/error-page.js +72 -0
  28. package/app/components/grid.js +109 -0
  29. package/app/components/list.js +120 -0
  30. package/app/components/modifier-table.js +142 -0
  31. package/app/components/nav.js +64 -0
  32. package/app/components/progression-table.js +320 -0
  33. package/app/components/radar-chart.js +102 -0
  34. package/app/components/skill-matrix.js +97 -0
  35. package/app/css/base.css +56 -0
  36. package/app/css/bundles/app.css +40 -0
  37. package/app/css/bundles/handout.css +43 -0
  38. package/app/css/bundles/slides.css +40 -0
  39. package/app/css/components/badges.css +215 -0
  40. package/app/css/components/buttons.css +101 -0
  41. package/app/css/components/forms.css +105 -0
  42. package/app/css/components/layout.css +209 -0
  43. package/app/css/components/nav.css +166 -0
  44. package/app/css/components/progress.css +166 -0
  45. package/app/css/components/states.css +82 -0
  46. package/app/css/components/surfaces.css +243 -0
  47. package/app/css/components/tables.css +362 -0
  48. package/app/css/components/typography.css +122 -0
  49. package/app/css/components/utilities.css +41 -0
  50. package/app/css/pages/agent-builder.css +391 -0
  51. package/app/css/pages/assessment-results.css +453 -0
  52. package/app/css/pages/detail.css +59 -0
  53. package/app/css/pages/interview-builder.css +148 -0
  54. package/app/css/pages/job-builder.css +134 -0
  55. package/app/css/pages/landing.css +92 -0
  56. package/app/css/pages/lifecycle.css +118 -0
  57. package/app/css/pages/progress-builder.css +274 -0
  58. package/app/css/pages/self-assessment.css +502 -0
  59. package/app/css/reset.css +50 -0
  60. package/app/css/tokens.css +153 -0
  61. package/app/css/views/handout.css +30 -0
  62. package/app/css/views/print.css +608 -0
  63. package/app/css/views/slide-animations.css +113 -0
  64. package/app/css/views/slide-base.css +330 -0
  65. package/app/css/views/slide-sections.css +597 -0
  66. package/app/css/views/slide-tables.css +275 -0
  67. package/app/formatters/agent/dom.js +540 -0
  68. package/app/formatters/agent/profile.js +133 -0
  69. package/app/formatters/agent/skill.js +58 -0
  70. package/app/formatters/behaviour/dom.js +91 -0
  71. package/app/formatters/behaviour/markdown.js +54 -0
  72. package/app/formatters/behaviour/shared.js +64 -0
  73. package/app/formatters/discipline/dom.js +187 -0
  74. package/app/formatters/discipline/markdown.js +87 -0
  75. package/app/formatters/discipline/shared.js +131 -0
  76. package/app/formatters/driver/dom.js +103 -0
  77. package/app/formatters/driver/shared.js +92 -0
  78. package/app/formatters/grade/dom.js +208 -0
  79. package/app/formatters/grade/markdown.js +94 -0
  80. package/app/formatters/grade/shared.js +86 -0
  81. package/app/formatters/index.js +50 -0
  82. package/app/formatters/interview/dom.js +97 -0
  83. package/app/formatters/interview/markdown.js +66 -0
  84. package/app/formatters/interview/shared.js +332 -0
  85. package/app/formatters/job/description.js +176 -0
  86. package/app/formatters/job/dom.js +411 -0
  87. package/app/formatters/job/markdown.js +102 -0
  88. package/app/formatters/progress/dom.js +135 -0
  89. package/app/formatters/progress/markdown.js +86 -0
  90. package/app/formatters/progress/shared.js +339 -0
  91. package/app/formatters/questions/json.js +43 -0
  92. package/app/formatters/questions/markdown.js +303 -0
  93. package/app/formatters/questions/shared.js +274 -0
  94. package/app/formatters/questions/yaml.js +76 -0
  95. package/app/formatters/shared.js +71 -0
  96. package/app/formatters/skill/dom.js +168 -0
  97. package/app/formatters/skill/markdown.js +109 -0
  98. package/app/formatters/skill/shared.js +125 -0
  99. package/app/formatters/stage/dom.js +135 -0
  100. package/app/formatters/stage/index.js +12 -0
  101. package/app/formatters/stage/shared.js +111 -0
  102. package/app/formatters/track/dom.js +128 -0
  103. package/app/formatters/track/markdown.js +105 -0
  104. package/app/formatters/track/shared.js +181 -0
  105. package/app/handout-main.js +421 -0
  106. package/app/handout.html +21 -0
  107. package/app/index.html +59 -0
  108. package/app/lib/card-mappers.js +173 -0
  109. package/app/lib/cli-output.js +270 -0
  110. package/app/lib/error-boundary.js +70 -0
  111. package/app/lib/errors.js +49 -0
  112. package/app/lib/form-controls.js +47 -0
  113. package/app/lib/job-cache.js +86 -0
  114. package/app/lib/markdown.js +114 -0
  115. package/app/lib/radar.js +866 -0
  116. package/app/lib/reactive.js +77 -0
  117. package/app/lib/render.js +212 -0
  118. package/app/lib/router-core.js +160 -0
  119. package/app/lib/router-pages.js +16 -0
  120. package/app/lib/router-slides.js +202 -0
  121. package/app/lib/state.js +148 -0
  122. package/app/lib/utils.js +14 -0
  123. package/app/lib/yaml-loader.js +327 -0
  124. package/app/main.js +213 -0
  125. package/app/model/agent.js +702 -0
  126. package/app/model/checklist.js +137 -0
  127. package/app/model/derivation.js +699 -0
  128. package/app/model/index-generator.js +71 -0
  129. package/app/model/interview.js +539 -0
  130. package/app/model/job.js +222 -0
  131. package/app/model/levels.js +591 -0
  132. package/app/model/loader.js +564 -0
  133. package/app/model/matching.js +858 -0
  134. package/app/model/modifiers.js +158 -0
  135. package/app/model/profile.js +266 -0
  136. package/app/model/progression.js +507 -0
  137. package/app/model/validation.js +1385 -0
  138. package/app/pages/agent-builder.js +823 -0
  139. package/app/pages/assessment-results.js +507 -0
  140. package/app/pages/behaviour.js +70 -0
  141. package/app/pages/discipline.js +71 -0
  142. package/app/pages/driver.js +106 -0
  143. package/app/pages/grade.js +117 -0
  144. package/app/pages/interview-builder.js +50 -0
  145. package/app/pages/interview.js +304 -0
  146. package/app/pages/job-builder.js +50 -0
  147. package/app/pages/job.js +58 -0
  148. package/app/pages/landing.js +305 -0
  149. package/app/pages/progress-builder.js +58 -0
  150. package/app/pages/progress.js +495 -0
  151. package/app/pages/self-assessment.js +729 -0
  152. package/app/pages/skill.js +113 -0
  153. package/app/pages/stage.js +231 -0
  154. package/app/pages/track.js +69 -0
  155. package/app/slide-main.js +360 -0
  156. package/app/slides/behaviour.js +38 -0
  157. package/app/slides/chapter.js +82 -0
  158. package/app/slides/discipline.js +40 -0
  159. package/app/slides/driver.js +39 -0
  160. package/app/slides/grade.js +32 -0
  161. package/app/slides/index.js +198 -0
  162. package/app/slides/interview.js +58 -0
  163. package/app/slides/job.js +55 -0
  164. package/app/slides/overview.js +126 -0
  165. package/app/slides/progress.js +83 -0
  166. package/app/slides/skill.js +40 -0
  167. package/app/slides/track.js +39 -0
  168. package/app/slides.html +56 -0
  169. package/app/types.js +147 -0
  170. package/bin/pathway.js +489 -0
  171. package/examples/agents/.claude/skills/architecture-design/SKILL.md +88 -0
  172. package/examples/agents/.claude/skills/cloud-platforms/SKILL.md +90 -0
  173. package/examples/agents/.claude/skills/code-quality-review/SKILL.md +67 -0
  174. package/examples/agents/.claude/skills/data-modeling/SKILL.md +99 -0
  175. package/examples/agents/.claude/skills/developer-experience/SKILL.md +99 -0
  176. package/examples/agents/.claude/skills/devops-cicd/SKILL.md +96 -0
  177. package/examples/agents/.claude/skills/full-stack-development/SKILL.md +90 -0
  178. package/examples/agents/.claude/skills/knowledge-management/SKILL.md +100 -0
  179. package/examples/agents/.claude/skills/pattern-generalization/SKILL.md +102 -0
  180. package/examples/agents/.claude/skills/sre-practices/SKILL.md +117 -0
  181. package/examples/agents/.claude/skills/technical-debt-management/SKILL.md +123 -0
  182. package/examples/agents/.claude/skills/technical-writing/SKILL.md +129 -0
  183. package/examples/agents/.github/agents/se-platform-code.agent.md +181 -0
  184. package/examples/agents/.github/agents/se-platform-plan.agent.md +178 -0
  185. package/examples/agents/.github/agents/se-platform-review.agent.md +113 -0
  186. package/examples/agents/.vscode/settings.json +8 -0
  187. package/examples/behaviours/_index.yaml +8 -0
  188. package/examples/behaviours/outcome_ownership.yaml +44 -0
  189. package/examples/behaviours/polymathic_knowledge.yaml +42 -0
  190. package/examples/behaviours/precise_communication.yaml +40 -0
  191. package/examples/behaviours/relentless_curiosity.yaml +38 -0
  192. package/examples/behaviours/systems_thinking.yaml +41 -0
  193. package/examples/capabilities/_index.yaml +8 -0
  194. package/examples/capabilities/business.yaml +251 -0
  195. package/examples/capabilities/delivery.yaml +352 -0
  196. package/examples/capabilities/people.yaml +100 -0
  197. package/examples/capabilities/reliability.yaml +318 -0
  198. package/examples/capabilities/scale.yaml +394 -0
  199. package/examples/disciplines/_index.yaml +5 -0
  200. package/examples/disciplines/data_engineering.yaml +76 -0
  201. package/examples/disciplines/software_engineering.yaml +76 -0
  202. package/examples/drivers.yaml +205 -0
  203. package/examples/framework.yaml +58 -0
  204. package/examples/grades.yaml +118 -0
  205. package/examples/questions/behaviours/outcome_ownership.yaml +52 -0
  206. package/examples/questions/behaviours/polymathic_knowledge.yaml +48 -0
  207. package/examples/questions/behaviours/precise_communication.yaml +55 -0
  208. package/examples/questions/behaviours/relentless_curiosity.yaml +51 -0
  209. package/examples/questions/behaviours/systems_thinking.yaml +53 -0
  210. package/examples/questions/skills/architecture_design.yaml +54 -0
  211. package/examples/questions/skills/cloud_platforms.yaml +48 -0
  212. package/examples/questions/skills/code_quality.yaml +49 -0
  213. package/examples/questions/skills/data_modeling.yaml +46 -0
  214. package/examples/questions/skills/devops.yaml +47 -0
  215. package/examples/questions/skills/full_stack_development.yaml +48 -0
  216. package/examples/questions/skills/sre_practices.yaml +44 -0
  217. package/examples/questions/skills/stakeholder_management.yaml +49 -0
  218. package/examples/questions/skills/team_collaboration.yaml +43 -0
  219. package/examples/questions/skills/technical_writing.yaml +43 -0
  220. package/examples/self-assessments.yaml +66 -0
  221. package/examples/stages.yaml +76 -0
  222. package/examples/tracks/_index.yaml +6 -0
  223. package/examples/tracks/manager.yaml +53 -0
  224. package/examples/tracks/platform.yaml +54 -0
  225. package/examples/tracks/sre.yaml +58 -0
  226. package/examples/vscode-settings.yaml +22 -0
  227. package/package.json +68 -0
@@ -0,0 +1,597 @@
1
+ /**
2
+ * Slide Section Styles
3
+ *
4
+ * Section and content formatting for slides.
5
+ */
6
+
7
+ @layer slides {
8
+ /* Sections */
9
+ .slide-section {
10
+ margin-bottom: var(--space-xl);
11
+ page-break-inside: avoid;
12
+ background: rgba(255, 255, 255, 0.7);
13
+ backdrop-filter: blur(10px);
14
+ border-radius: var(--radius-lg);
15
+ padding: var(--space-lg);
16
+ border: 1px solid rgba(59, 130, 246, 0.1);
17
+ box-shadow:
18
+ 0 2px 12px rgba(59, 130, 246, 0.06),
19
+ 0 1px 4px rgba(147, 51, 234, 0.04);
20
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
21
+ position: relative;
22
+ }
23
+
24
+ .slide-section:hover {
25
+ box-shadow:
26
+ 0 4px 20px rgba(59, 130, 246, 0.1),
27
+ 0 2px 8px rgba(147, 51, 234, 0.08);
28
+ transform: translateY(-2px);
29
+ }
30
+
31
+ .slide-section-title {
32
+ font-size: var(--font-size-xl);
33
+ font-weight: 600;
34
+ margin: 0 0 var(--space-md);
35
+ color: var(--color-text);
36
+ border-bottom: 2px solid transparent;
37
+ border-image: linear-gradient(
38
+ 90deg,
39
+ rgba(59, 130, 246, 0.4),
40
+ rgba(147, 51, 234, 0.4)
41
+ )
42
+ 1;
43
+ padding-bottom: var(--space-sm);
44
+ position: relative;
45
+ }
46
+
47
+ .slide-section-title .gradient-text {
48
+ background: linear-gradient(135deg, #1e40af, #7c3aed);
49
+ -webkit-background-clip: text;
50
+ -webkit-text-fill-color: transparent;
51
+ background-clip: text;
52
+ }
53
+
54
+ .slide-section-content {
55
+ padding: var(--space-md) 0;
56
+ }
57
+
58
+ /* Stats grid */
59
+ .slide-stats {
60
+ display: grid;
61
+ grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
62
+ gap: var(--space-md);
63
+ margin-bottom: var(--space-xl);
64
+ }
65
+
66
+ .slide-stat {
67
+ background: linear-gradient(
68
+ 135deg,
69
+ rgba(255, 255, 255, 0.95) 0%,
70
+ rgba(248, 250, 252, 0.9) 100%
71
+ );
72
+ backdrop-filter: blur(10px);
73
+ padding: var(--space-md);
74
+ border-radius: var(--radius-lg);
75
+ text-align: center;
76
+ border: 1px solid rgba(59, 130, 246, 0.15);
77
+ box-shadow:
78
+ 0 4px 12px rgba(59, 130, 246, 0.08),
79
+ 0 2px 6px rgba(147, 51, 234, 0.05);
80
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
81
+ position: relative;
82
+ overflow: hidden;
83
+ }
84
+
85
+ .slide-stat::before {
86
+ content: "";
87
+ position: absolute;
88
+ top: 0;
89
+ left: 0;
90
+ right: 0;
91
+ height: 3px;
92
+ background: linear-gradient(90deg, #3b82f6, #9333ea);
93
+ opacity: 0.6;
94
+ }
95
+
96
+ .slide-stat:hover {
97
+ transform: translateY(-4px) scale(1.02);
98
+ box-shadow:
99
+ 0 8px 24px rgba(59, 130, 246, 0.15),
100
+ 0 4px 12px rgba(147, 51, 234, 0.1);
101
+ border-color: rgba(59, 130, 246, 0.3);
102
+ }
103
+
104
+ .slide-stat-value {
105
+ font-size: var(--font-size-2xl);
106
+ font-weight: 700;
107
+ background: linear-gradient(135deg, #3b82f6, #9333ea);
108
+ -webkit-background-clip: text;
109
+ -webkit-text-fill-color: transparent;
110
+ background-clip: text;
111
+ line-height: 1.2;
112
+ }
113
+
114
+ .slide-stat-label {
115
+ font-size: var(--font-size-sm);
116
+ color: var(--color-text-muted);
117
+ text-transform: uppercase;
118
+ letter-spacing: 0.025em;
119
+ margin-top: var(--space-xs);
120
+ font-weight: 500;
121
+ }
122
+
123
+ /* Skill matrix */
124
+ .slide-skill-matrix {
125
+ width: 100%;
126
+ }
127
+
128
+ .slide-skill-row {
129
+ display: grid;
130
+ grid-template-columns: 2fr 100px 120px 1fr;
131
+ gap: var(--space-md);
132
+ padding: var(--space-sm) var(--space-md);
133
+ border-bottom: 1px solid rgba(59, 130, 246, 0.1);
134
+ align-items: center;
135
+ background: rgba(255, 255, 255, 0.5);
136
+ backdrop-filter: blur(5px);
137
+ margin-bottom: var(--space-xs);
138
+ border-radius: var(--radius-sm);
139
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
140
+ }
141
+
142
+ .slide-skill-row:hover:not(.header) {
143
+ background: linear-gradient(
144
+ 90deg,
145
+ rgba(59, 130, 246, 0.05) 0%,
146
+ rgba(147, 51, 234, 0.03) 100%
147
+ );
148
+ transform: translateX(4px);
149
+ box-shadow: 0 2px 8px rgba(59, 130, 246, 0.1);
150
+ }
151
+
152
+ .slide-skill-row.header {
153
+ font-weight: 600;
154
+ background: linear-gradient(
155
+ 135deg,
156
+ rgba(59, 130, 246, 0.08) 0%,
157
+ rgba(147, 51, 234, 0.05) 100%
158
+ );
159
+ backdrop-filter: blur(10px);
160
+ padding: var(--space-sm) var(--space-md);
161
+ color: var(--color-text-muted);
162
+ font-size: var(--font-size-sm);
163
+ text-transform: uppercase;
164
+ letter-spacing: 0.05em;
165
+ border-radius: var(--radius-sm);
166
+ }
167
+
168
+ .slide-skill-name {
169
+ font-weight: 500;
170
+ }
171
+
172
+ .slide-skill-type {
173
+ font-size: var(--font-size-sm);
174
+ }
175
+
176
+ .slide-skill-level {
177
+ text-align: center;
178
+ }
179
+
180
+ .slide-skill-description {
181
+ font-size: var(--font-size-sm);
182
+ color: var(--color-text-muted);
183
+ }
184
+
185
+ /* Behaviour profile */
186
+ .slide-behaviour-row {
187
+ display: grid;
188
+ grid-template-columns: 2fr 140px 1fr;
189
+ gap: var(--space-md);
190
+ padding: var(--space-sm) var(--space-md);
191
+ border-bottom: 1px solid rgba(59, 130, 246, 0.1);
192
+ align-items: center;
193
+ background: rgba(255, 255, 255, 0.5);
194
+ backdrop-filter: blur(5px);
195
+ margin-bottom: var(--space-xs);
196
+ border-radius: var(--radius-sm);
197
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
198
+ }
199
+
200
+ .slide-behaviour-row:hover:not(.header) {
201
+ background: linear-gradient(
202
+ 90deg,
203
+ rgba(59, 130, 246, 0.05) 0%,
204
+ rgba(147, 51, 234, 0.03) 100%
205
+ );
206
+ transform: translateX(4px);
207
+ box-shadow: 0 2px 8px rgba(59, 130, 246, 0.1);
208
+ }
209
+
210
+ .slide-behaviour-row.header {
211
+ font-weight: 600;
212
+ background: linear-gradient(
213
+ 135deg,
214
+ rgba(59, 130, 246, 0.08) 0%,
215
+ rgba(147, 51, 234, 0.05) 100%
216
+ );
217
+ backdrop-filter: blur(10px);
218
+ padding: var(--space-sm) var(--space-md);
219
+ color: var(--color-text-muted);
220
+ font-size: var(--font-size-sm);
221
+ text-transform: uppercase;
222
+ letter-spacing: 0.05em;
223
+ border-radius: var(--radius-sm);
224
+ }
225
+
226
+ /* Two-column layout */
227
+ .slide-columns {
228
+ display: grid;
229
+ grid-template-columns: 1fr 1fr;
230
+ gap: var(--space-xl);
231
+ }
232
+
233
+ @media (max-width: 768px) {
234
+ .slide-columns {
235
+ grid-template-columns: 1fr;
236
+ }
237
+
238
+ .slide-skill-row,
239
+ .slide-behaviour-row {
240
+ grid-template-columns: 1fr;
241
+ gap: var(--space-xs);
242
+ }
243
+
244
+ .slide-skill-row.header,
245
+ .slide-behaviour-row.header {
246
+ display: none;
247
+ }
248
+ }
249
+
250
+ /* Related lists */
251
+ .slide-view .related-list {
252
+ list-style: none;
253
+ padding: 0;
254
+ margin: 0;
255
+ }
256
+
257
+ .slide-view .related-list li {
258
+ padding: var(--space-sm) var(--space-md);
259
+ border-bottom: 1px solid rgba(59, 130, 246, 0.1);
260
+ display: flex;
261
+ justify-content: space-between;
262
+ align-items: center;
263
+ background: rgba(255, 255, 255, 0.5);
264
+ margin-bottom: var(--space-xs);
265
+ border-radius: var(--radius-sm);
266
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
267
+ }
268
+
269
+ .slide-view .related-list li:hover {
270
+ background: linear-gradient(
271
+ 90deg,
272
+ rgba(59, 130, 246, 0.05),
273
+ rgba(147, 51, 234, 0.03)
274
+ );
275
+ transform: translateX(4px);
276
+ box-shadow: 0 2px 8px rgba(59, 130, 246, 0.1);
277
+ }
278
+
279
+ .slide-view .related-list li:last-child {
280
+ border-bottom: 1px solid rgba(59, 130, 246, 0.1);
281
+ }
282
+
283
+ /* Slide list items */
284
+ .slide-list-item {
285
+ padding: var(--space-sm) var(--space-md);
286
+ background: linear-gradient(
287
+ 135deg,
288
+ rgba(255, 255, 255, 0.8) 0%,
289
+ rgba(248, 250, 252, 0.7) 100%
290
+ );
291
+ backdrop-filter: blur(5px);
292
+ border-radius: var(--radius-md);
293
+ margin-bottom: var(--space-sm);
294
+ border: 1px solid rgba(59, 130, 246, 0.1);
295
+ box-shadow: 0 1px 4px rgba(59, 130, 246, 0.05);
296
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
297
+ }
298
+
299
+ .slide-list-item:hover {
300
+ transform: translateX(4px);
301
+ box-shadow: 0 2px 12px rgba(59, 130, 246, 0.12);
302
+ border-color: rgba(59, 130, 246, 0.2);
303
+ }
304
+
305
+ /* Radar chart container */
306
+ .slide-radar-container {
307
+ display: flex;
308
+ justify-content: center;
309
+ margin: var(--space-xl) 0;
310
+ }
311
+
312
+ /* Driver coverage */
313
+ .slide-driver-coverage {
314
+ display: grid;
315
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
316
+ gap: var(--space-md);
317
+ }
318
+
319
+ .slide-driver-item {
320
+ display: flex;
321
+ justify-content: space-between;
322
+ align-items: center;
323
+ padding: var(--space-sm);
324
+ background: linear-gradient(
325
+ 135deg,
326
+ rgba(255, 255, 255, 0.9) 0%,
327
+ rgba(248, 250, 252, 0.85) 100%
328
+ );
329
+ backdrop-filter: blur(10px);
330
+ border-radius: var(--radius-md);
331
+ border: 1px solid rgba(59, 130, 246, 0.1);
332
+ box-shadow: 0 2px 8px rgba(59, 130, 246, 0.06);
333
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
334
+ }
335
+
336
+ .slide-driver-item:hover {
337
+ transform: translateY(-2px) scale(1.02);
338
+ box-shadow: 0 4px 16px rgba(59, 130, 246, 0.12);
339
+ border-color: rgba(59, 130, 246, 0.2);
340
+ }
341
+
342
+ .slide-driver-name {
343
+ font-weight: 500;
344
+ }
345
+
346
+ .slide-driver-value {
347
+ font-weight: 600;
348
+ background: linear-gradient(135deg, #3b82f6, #9333ea);
349
+ -webkit-background-clip: text;
350
+ -webkit-text-fill-color: transparent;
351
+ background-clip: text;
352
+ }
353
+
354
+ /* Interview questions */
355
+ .slide-question-section {
356
+ margin-bottom: var(--space-xl);
357
+ }
358
+
359
+ .slide-question-header {
360
+ display: flex;
361
+ justify-content: space-between;
362
+ align-items: center;
363
+ margin-bottom: var(--space-md);
364
+ }
365
+
366
+ .slide-question {
367
+ background: linear-gradient(
368
+ 135deg,
369
+ rgba(255, 255, 255, 0.9) 0%,
370
+ rgba(248, 250, 252, 0.85) 100%
371
+ );
372
+ backdrop-filter: blur(10px);
373
+ padding: var(--space-md);
374
+ border-radius: var(--radius-md);
375
+ margin-bottom: var(--space-md);
376
+ border-left: 4px solid transparent;
377
+ border-image: linear-gradient(180deg, #3b82f6, #9333ea) 1;
378
+ box-shadow: 0 2px 12px rgba(59, 130, 246, 0.1);
379
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
380
+ position: relative;
381
+ overflow: hidden;
382
+ }
383
+
384
+ .slide-question::before {
385
+ content: "";
386
+ position: absolute;
387
+ top: 0;
388
+ right: 0;
389
+ width: 100px;
390
+ height: 100%;
391
+ background: linear-gradient(90deg, transparent, rgba(59, 130, 246, 0.03));
392
+ pointer-events: none;
393
+ }
394
+
395
+ .slide-question:hover {
396
+ transform: translateX(4px);
397
+ box-shadow:
398
+ 0 4px 20px rgba(59, 130, 246, 0.15),
399
+ 0 2px 8px rgba(147, 51, 234, 0.1);
400
+ }
401
+
402
+ .slide-question-text {
403
+ font-size: var(--font-size-base);
404
+ font-weight: 500;
405
+ margin: 0 0 var(--space-sm);
406
+ position: relative;
407
+ }
408
+
409
+ .slide-followups {
410
+ margin: var(--space-sm) 0 0;
411
+ padding-left: var(--space-md);
412
+ }
413
+
414
+ .slide-followup {
415
+ font-size: var(--font-size-sm);
416
+ color: var(--color-text-muted);
417
+ margin-bottom: var(--space-xs);
418
+ }
419
+
420
+ /* Career progression */
421
+ .slide-progression-summary {
422
+ display: grid;
423
+ grid-template-columns: repeat(4, 1fr);
424
+ gap: var(--space-md);
425
+ margin-bottom: var(--space-xl);
426
+ }
427
+
428
+ .slide-progression-stat {
429
+ text-align: center;
430
+ padding: var(--space-md);
431
+ background: linear-gradient(
432
+ 135deg,
433
+ rgba(255, 255, 255, 0.95) 0%,
434
+ rgba(248, 250, 252, 0.9) 100%
435
+ );
436
+ backdrop-filter: blur(10px);
437
+ border-radius: var(--radius-md);
438
+ border: 1px solid rgba(59, 130, 246, 0.15);
439
+ box-shadow: 0 4px 12px rgba(59, 130, 246, 0.08);
440
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
441
+ position: relative;
442
+ overflow: hidden;
443
+ }
444
+
445
+ .slide-progression-stat::after {
446
+ content: "";
447
+ position: absolute;
448
+ bottom: 0;
449
+ left: 0;
450
+ right: 0;
451
+ height: 3px;
452
+ background: linear-gradient(90deg, #3b82f6, #9333ea);
453
+ opacity: 0.7;
454
+ }
455
+
456
+ .slide-progression-stat:hover {
457
+ transform: translateY(-4px) scale(1.03);
458
+ box-shadow: 0 8px 24px rgba(59, 130, 246, 0.15);
459
+ border-color: rgba(59, 130, 246, 0.3);
460
+ }
461
+
462
+ .slide-progression-value {
463
+ font-size: var(--font-size-2xl);
464
+ font-weight: 700;
465
+ background: linear-gradient(135deg, #3b82f6, #9333ea);
466
+ -webkit-background-clip: text;
467
+ -webkit-text-fill-color: transparent;
468
+ background-clip: text;
469
+ }
470
+
471
+ .slide-progression-label {
472
+ font-size: var(--font-size-sm);
473
+ color: var(--color-text-muted);
474
+ font-weight: 500;
475
+ }
476
+
477
+ .slide-change-row {
478
+ display: grid;
479
+ grid-template-columns: 2fr 1fr 1fr 80px;
480
+ gap: var(--space-md);
481
+ padding: var(--space-sm) var(--space-md);
482
+ border-bottom: 1px solid rgba(59, 130, 246, 0.1);
483
+ align-items: center;
484
+ background: rgba(255, 255, 255, 0.5);
485
+ backdrop-filter: blur(5px);
486
+ margin-bottom: var(--space-xs);
487
+ border-radius: var(--radius-sm);
488
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
489
+ }
490
+
491
+ .slide-change-row:hover:not(.header) {
492
+ background: linear-gradient(
493
+ 90deg,
494
+ rgba(59, 130, 246, 0.05) 0%,
495
+ rgba(147, 51, 234, 0.03) 100%
496
+ );
497
+ transform: translateX(4px);
498
+ box-shadow: 0 2px 8px rgba(59, 130, 246, 0.1);
499
+ }
500
+
501
+ .slide-change-row.header {
502
+ font-weight: 600;
503
+ background: linear-gradient(
504
+ 135deg,
505
+ rgba(59, 130, 246, 0.08) 0%,
506
+ rgba(147, 51, 234, 0.05) 100%
507
+ );
508
+ backdrop-filter: blur(10px);
509
+ padding: var(--space-sm) var(--space-md);
510
+ color: var(--color-text-muted);
511
+ font-size: var(--font-size-sm);
512
+ text-transform: uppercase;
513
+ letter-spacing: 0.05em;
514
+ border-radius: var(--radius-sm);
515
+ }
516
+
517
+ @media (max-width: 768px) {
518
+ .slide-change-row {
519
+ grid-template-columns: 1fr;
520
+ gap: var(--space-xs);
521
+ }
522
+
523
+ .slide-change-row.header {
524
+ display: none;
525
+ }
526
+
527
+ .slide-progression-summary {
528
+ grid-template-columns: repeat(2, 1fr);
529
+ }
530
+ }
531
+
532
+ /* Overview slide */
533
+ .overview-slide {
534
+ padding: var(--space-xl);
535
+ page-break-after: always;
536
+ }
537
+
538
+ .overview-header {
539
+ text-align: center;
540
+ margin-bottom: var(--space-2xl);
541
+ padding-bottom: var(--space-lg);
542
+ border-bottom: 2px solid transparent;
543
+ border-image: linear-gradient(
544
+ 90deg,
545
+ transparent 0%,
546
+ rgba(59, 130, 246, 0.4) 15%,
547
+ rgba(147, 51, 234, 0.4) 50%,
548
+ rgba(59, 130, 246, 0.4) 85%,
549
+ transparent 100%
550
+ )
551
+ 1;
552
+ }
553
+
554
+ .overview-title {
555
+ font-size: var(--font-size-3xl);
556
+ font-weight: 700;
557
+ margin-bottom: var(--space-md);
558
+ color: var(--color-text);
559
+ }
560
+
561
+ .overview-title .gradient-text {
562
+ background: linear-gradient(135deg, #3b82f6, #9333ea);
563
+ -webkit-background-clip: text;
564
+ -webkit-text-fill-color: transparent;
565
+ background-clip: text;
566
+ }
567
+
568
+ .overview-description {
569
+ font-size: var(--font-size-lg);
570
+ color: var(--color-text-muted);
571
+ line-height: 1.6;
572
+ max-width: 800px;
573
+ margin: 0 auto;
574
+ white-space: pre-line;
575
+ }
576
+
577
+ .overview-slide .card {
578
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
579
+ }
580
+
581
+ .overview-slide .card:hover {
582
+ transform: translateY(-4px);
583
+ box-shadow:
584
+ 0 8px 24px rgba(59, 130, 246, 0.15),
585
+ 0 4px 12px rgba(147, 51, 234, 0.1);
586
+ }
587
+
588
+ @media (max-width: 768px) {
589
+ .overview-title {
590
+ font-size: var(--font-size-2xl);
591
+ }
592
+
593
+ .overview-description {
594
+ font-size: var(--font-size-base);
595
+ }
596
+ }
597
+ }