heyiam 0.2.29 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/README.md +45 -0
  2. package/dist/config.js +10 -1
  3. package/dist/db.js +1 -2
  4. package/dist/export.js +40 -25
  5. package/dist/format-utils.js +5 -0
  6. package/dist/index.js +168 -0
  7. package/dist/mount.js +300 -102
  8. package/dist/parsers/claude.js +2 -28
  9. package/dist/parsers/codex.js +2 -26
  10. package/dist/parsers/cursor.js +2 -26
  11. package/dist/parsers/duration.js +35 -0
  12. package/dist/parsers/gemini.js +2 -20
  13. package/dist/parsers/types.js +0 -1
  14. package/dist/public/assets/index-BZ65TU_Y.js +40 -0
  15. package/dist/public/assets/index-CqCaW2cb.css +1 -0
  16. package/dist/public/index.html +2 -2
  17. package/dist/redact.js +4 -104
  18. package/dist/render/build-render-data.js +9 -2
  19. package/dist/render/index.js +32 -5
  20. package/dist/render/liquid.js +147 -7
  21. package/dist/render/mock-data.js +303 -0
  22. package/dist/render/templates/aurora/portfolio.liquid +204 -0
  23. package/dist/render/templates/aurora/project.liquid +260 -0
  24. package/dist/render/templates/aurora/session.liquid +223 -0
  25. package/dist/render/templates/aurora/styles.css +1178 -0
  26. package/dist/render/templates/bauhaus/portfolio.liquid +179 -0
  27. package/dist/render/templates/bauhaus/project.liquid +300 -0
  28. package/dist/render/templates/bauhaus/session.liquid +333 -0
  29. package/dist/render/templates/bauhaus/styles.css +1641 -0
  30. package/dist/render/templates/blueprint/portfolio.liquid +167 -0
  31. package/dist/render/templates/blueprint/project.liquid +286 -0
  32. package/dist/render/templates/blueprint/session.liquid +248 -0
  33. package/dist/render/templates/blueprint/styles.css +1285 -0
  34. package/dist/render/templates/canvas/portfolio.liquid +215 -0
  35. package/dist/render/templates/canvas/project.liquid +235 -0
  36. package/dist/render/templates/canvas/session.liquid +223 -0
  37. package/dist/render/templates/canvas/styles.css +1436 -0
  38. package/dist/render/templates/carbon/portfolio.liquid +170 -0
  39. package/dist/render/templates/carbon/project.liquid +249 -0
  40. package/dist/render/templates/carbon/session.liquid +190 -0
  41. package/dist/render/templates/carbon/styles.css +1091 -0
  42. package/dist/render/templates/chalk/portfolio.liquid +199 -0
  43. package/dist/render/templates/chalk/project.liquid +245 -0
  44. package/dist/render/templates/chalk/session.liquid +215 -0
  45. package/dist/render/templates/chalk/styles.css +1157 -0
  46. package/dist/render/templates/circuit/portfolio.liquid +162 -0
  47. package/dist/render/templates/circuit/project.liquid +247 -0
  48. package/dist/render/templates/circuit/session.liquid +205 -0
  49. package/dist/render/templates/circuit/styles.css +1403 -0
  50. package/dist/render/templates/cosmos/portfolio.liquid +232 -0
  51. package/dist/render/templates/cosmos/project.liquid +327 -0
  52. package/dist/render/templates/cosmos/session.liquid +239 -0
  53. package/dist/render/templates/cosmos/styles.css +1151 -0
  54. package/dist/render/templates/daylight/portfolio.liquid +217 -0
  55. package/dist/render/templates/daylight/project.liquid +229 -0
  56. package/dist/render/templates/daylight/session.liquid +219 -0
  57. package/dist/render/templates/daylight/styles.css +1311 -0
  58. package/dist/render/templates/editorial/portfolio.liquid +126 -0
  59. package/dist/render/templates/editorial/project.liquid +202 -0
  60. package/dist/render/templates/editorial/session.liquid +171 -0
  61. package/dist/render/templates/editorial/styles.css +822 -0
  62. package/dist/render/templates/ember/portfolio.liquid +318 -0
  63. package/dist/render/templates/ember/project.liquid +232 -0
  64. package/dist/render/templates/ember/session.liquid +202 -0
  65. package/dist/render/templates/ember/styles.css +1283 -0
  66. package/dist/render/templates/glacier/portfolio.liquid +271 -0
  67. package/dist/render/templates/glacier/project.liquid +288 -0
  68. package/dist/render/templates/glacier/session.liquid +217 -0
  69. package/dist/render/templates/glacier/styles.css +1200 -0
  70. package/dist/render/templates/grid/portfolio.liquid +265 -0
  71. package/dist/render/templates/grid/project.liquid +306 -0
  72. package/dist/render/templates/grid/session.liquid +260 -0
  73. package/dist/render/templates/grid/styles.css +1441 -0
  74. package/dist/render/templates/kinetic/portfolio.liquid +170 -0
  75. package/dist/render/templates/kinetic/project.liquid +242 -0
  76. package/dist/render/templates/kinetic/session.liquid +228 -0
  77. package/dist/render/templates/kinetic/styles.css +944 -0
  78. package/dist/render/templates/meridian/portfolio.liquid +255 -0
  79. package/dist/render/templates/meridian/project.liquid +376 -0
  80. package/dist/render/templates/meridian/session.liquid +298 -0
  81. package/dist/render/templates/meridian/styles.css +1369 -0
  82. package/dist/render/templates/minimal/portfolio.liquid +71 -0
  83. package/dist/render/templates/minimal/project.liquid +154 -0
  84. package/dist/render/templates/minimal/session.liquid +140 -0
  85. package/dist/render/templates/minimal/styles.css +525 -0
  86. package/dist/render/templates/mono/portfolio.liquid +291 -0
  87. package/dist/render/templates/mono/project.liquid +275 -0
  88. package/dist/render/templates/mono/session.liquid +276 -0
  89. package/dist/render/templates/mono/styles.css +1016 -0
  90. package/dist/render/templates/neon/portfolio.liquid +217 -0
  91. package/dist/render/templates/neon/project.liquid +225 -0
  92. package/dist/render/templates/neon/session.liquid +195 -0
  93. package/dist/render/templates/neon/styles.css +1265 -0
  94. package/dist/render/templates/noir/portfolio.liquid +137 -0
  95. package/dist/render/templates/noir/project.liquid +220 -0
  96. package/dist/render/templates/noir/session.liquid +241 -0
  97. package/dist/render/templates/noir/styles.css +1223 -0
  98. package/dist/render/templates/obsidian/portfolio.liquid +257 -0
  99. package/dist/render/templates/obsidian/project.liquid +280 -0
  100. package/dist/render/templates/obsidian/session.liquid +241 -0
  101. package/dist/render/templates/obsidian/styles.css +1401 -0
  102. package/dist/render/templates/paper/portfolio.liquid +267 -0
  103. package/dist/render/templates/paper/project.liquid +235 -0
  104. package/dist/render/templates/paper/session.liquid +271 -0
  105. package/dist/render/templates/paper/styles.css +1509 -0
  106. package/dist/render/templates/parallax/portfolio.liquid +305 -0
  107. package/dist/render/templates/parallax/project.liquid +275 -0
  108. package/dist/render/templates/parallax/session.liquid +295 -0
  109. package/dist/render/templates/parallax/styles.css +1874 -0
  110. package/dist/render/templates/parchment/portfolio.liquid +290 -0
  111. package/dist/render/templates/parchment/project.liquid +289 -0
  112. package/dist/render/templates/parchment/session.liquid +346 -0
  113. package/dist/render/templates/parchment/styles.css +1397 -0
  114. package/dist/render/templates/partials/_beats.liquid +16 -0
  115. package/dist/render/templates/partials/_breadcrumb.liquid +9 -0
  116. package/dist/render/templates/partials/_footer.liquid +7 -0
  117. package/dist/render/templates/partials/_growth-chart.liquid +7 -0
  118. package/dist/render/templates/partials/_key-decisions.liquid +20 -0
  119. package/dist/render/templates/partials/_links.liquid +16 -0
  120. package/dist/render/templates/partials/_narrative.liquid +8 -0
  121. package/dist/render/templates/partials/_phases.liquid +20 -0
  122. package/dist/render/templates/partials/_portfolio-header.liquid +20 -0
  123. package/dist/render/templates/partials/_portfolio-projects.liquid +16 -0
  124. package/dist/render/templates/partials/_portfolio-stats.liquid +19 -0
  125. package/dist/render/templates/partials/_qa.liquid +13 -0
  126. package/dist/render/templates/partials/_screenshot.liquid +15 -0
  127. package/dist/render/templates/partials/_session-cards.liquid +30 -0
  128. package/dist/render/templates/partials/_session-header.liquid +39 -0
  129. package/dist/render/templates/partials/_session-sidebar.liquid +30 -0
  130. package/dist/render/templates/partials/_skills.liquid +12 -0
  131. package/dist/render/templates/partials/_source-breakdown.liquid +22 -0
  132. package/dist/render/templates/partials/_stats.liquid +38 -0
  133. package/dist/render/templates/partials/_work-timeline.liquid +7 -0
  134. package/dist/render/templates/project.liquid +7 -4
  135. package/dist/render/templates/radar/portfolio.liquid +233 -0
  136. package/dist/render/templates/radar/project.liquid +278 -0
  137. package/dist/render/templates/radar/session.liquid +300 -0
  138. package/dist/render/templates/radar/styles.css +1049 -0
  139. package/dist/render/templates/showcase/portfolio.liquid +231 -0
  140. package/dist/render/templates/showcase/project.liquid +237 -0
  141. package/dist/render/templates/showcase/session.liquid +210 -0
  142. package/dist/render/templates/showcase/styles.css +1279 -0
  143. package/dist/render/templates/signal/portfolio.liquid +227 -0
  144. package/dist/render/templates/signal/project.liquid +278 -0
  145. package/dist/render/templates/signal/session.liquid +282 -0
  146. package/dist/render/templates/signal/styles.css +1395 -0
  147. package/dist/render/templates/strata/portfolio.liquid +192 -0
  148. package/dist/render/templates/strata/project.liquid +282 -0
  149. package/dist/render/templates/strata/session.liquid +261 -0
  150. package/dist/render/templates/strata/styles.css +1350 -0
  151. package/dist/render/templates/styles.css +1190 -0
  152. package/dist/render/templates/terminal/portfolio.liquid +118 -0
  153. package/dist/render/templates/terminal/project.liquid +161 -0
  154. package/dist/render/templates/terminal/session.liquid +145 -0
  155. package/dist/render/templates/terminal/styles.css +492 -0
  156. package/dist/render/templates/verdant/portfolio.liquid +333 -0
  157. package/dist/render/templates/verdant/project.liquid +309 -0
  158. package/dist/render/templates/verdant/session.liquid +237 -0
  159. package/dist/render/templates/verdant/styles.css +1257 -0
  160. package/dist/render/templates/zen/portfolio.liquid +136 -0
  161. package/dist/render/templates/zen/project.liquid +187 -0
  162. package/dist/render/templates/zen/session.liquid +203 -0
  163. package/dist/render/templates/zen/styles.css +1207 -0
  164. package/dist/render/templates.js +90 -0
  165. package/dist/routes/context.js +15 -10
  166. package/dist/routes/enhance.js +17 -40
  167. package/dist/routes/export.js +14 -4
  168. package/dist/routes/preview.js +480 -108
  169. package/dist/routes/projects.js +11 -19
  170. package/dist/routes/publish.js +15 -17
  171. package/dist/routes/settings.js +94 -1
  172. package/dist/routes/sse.js +9 -0
  173. package/dist/server.js +8 -2
  174. package/dist/settings.js +17 -9
  175. package/package.json +2 -4
  176. package/dist/public/assets/index-CC9G8EF1.js +0 -21
  177. package/dist/public/assets/index-Dalqz2mC.css +0 -1
@@ -0,0 +1,1257 @@
1
+ /* ── Verdant template styles ──
2
+ * Organic, nature-inspired design with green accent.
3
+ * Fraunces display font, Inter body, IBM Plex Mono.
4
+ */
5
+
6
+ /* ── Design Tokens ── */
7
+ .verdant {
8
+ --vd-bg: #fefdfb;
9
+ --vd-surface: #f5f3ef;
10
+ --vd-surface-warm: #f0ece4;
11
+ --vd-on-surface: #1a1a17;
12
+ --vd-on-surface-2: #4a4a40;
13
+ --vd-on-surface-3: #7a7a6e;
14
+ --vd-accent: #15803d;
15
+ --vd-accent-light: #22c55e;
16
+ --vd-accent-bg: rgba(21,128,61,0.08);
17
+ --vd-accent-border: rgba(21,128,61,0.2);
18
+ --vd-border: #e5e0d5;
19
+ --vd-border-light: #ece8df;
20
+ --vd-brown: #92400e;
21
+ --vd-brown-light: #b45309;
22
+ --vd-cream: #faf7f0;
23
+
24
+ --font-display: 'Fraunces', serif;
25
+ --font-body: 'Inter', sans-serif;
26
+ --font-mono: 'IBM Plex Mono', monospace;
27
+
28
+ --radius-sm: 8px;
29
+ --radius-md: 12px;
30
+ --radius-lg: 16px;
31
+ --radius-xl: 24px;
32
+
33
+ /* Agent role colors */
34
+ --color-frontend: #7c3aed;
35
+ --color-backend: #0891b2;
36
+ --color-qa: #059669;
37
+ --color-security: #475569;
38
+ --color-reviewer: #e11d48;
39
+ --color-ux: #d97706;
40
+
41
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
42
+ --dur-section: 600ms;
43
+
44
+ font-family: var(--font-body);
45
+ color: var(--vd-on-surface);
46
+ background-color: var(--vd-bg);
47
+ line-height: 1.6;
48
+ -webkit-font-smoothing: antialiased;
49
+ }
50
+
51
+ .verdant a { color: var(--vd-accent); text-decoration: none; }
52
+ .verdant a:hover { text-decoration: underline; }
53
+ .verdant a:visited { color: var(--vd-accent); }
54
+
55
+ /* ── Skip Link ── */
56
+ .verdant .skip-link {
57
+ position: absolute;
58
+ top: -100%;
59
+ left: 1rem;
60
+ background: var(--vd-accent);
61
+ color: #fff;
62
+ padding: 0.5rem 1rem;
63
+ border-radius: var(--radius-sm);
64
+ font-size: 0.875rem;
65
+ z-index: 1000;
66
+ transition: top 0.2s;
67
+ }
68
+ .verdant .skip-link:focus {
69
+ top: 1rem;
70
+ text-decoration: none;
71
+ }
72
+
73
+ /* ── Nav ── */
74
+ .verdant .vd-nav {
75
+ display: flex;
76
+ align-items: center;
77
+ justify-content: space-between;
78
+ padding: 1rem 0;
79
+ margin-bottom: 2rem;
80
+ border-bottom: 1px solid var(--vd-border-light);
81
+ }
82
+ .verdant .vd-nav__brand {
83
+ font-family: var(--font-display);
84
+ font-size: 1.125rem;
85
+ font-weight: 600;
86
+ color: var(--vd-accent);
87
+ text-decoration: none;
88
+ }
89
+ .verdant .vd-nav__brand:hover { text-decoration: none; opacity: 0.8; }
90
+ .verdant .vd-nav__links {
91
+ display: flex;
92
+ gap: 1.5rem;
93
+ list-style: none;
94
+ }
95
+ .verdant .vd-nav__link {
96
+ font-family: var(--font-body);
97
+ font-size: 0.875rem;
98
+ font-weight: 500;
99
+ color: var(--vd-on-surface-2);
100
+ text-decoration: none;
101
+ transition: color 150ms;
102
+ }
103
+ .verdant .vd-nav__link:hover { color: var(--vd-accent); text-decoration: none; }
104
+ .verdant .vd-nav__link--active { color: var(--vd-accent); }
105
+
106
+ /* ── Section Fade-Up ── */
107
+ .verdant .vd-section {
108
+ opacity: 0;
109
+ transform: translateY(20px);
110
+ transition: opacity var(--dur-section) var(--ease-out),
111
+ transform var(--dur-section) var(--ease-out);
112
+ }
113
+ .verdant .vd-section.visible {
114
+ opacity: 1;
115
+ transform: translateY(0);
116
+ }
117
+
118
+ /* ── Reduced Motion ── */
119
+ @media (prefers-reduced-motion: reduce) {
120
+ .verdant .vd-section {
121
+ opacity: 1 !important;
122
+ transform: none !important;
123
+ transition: none !important;
124
+ }
125
+ .verdant .vd-stat-value,
126
+ .verdant .vd-project-card,
127
+ .verdant .vd-source-bar-fill,
128
+ .verdant .vd-vine-segment,
129
+ .verdant .vd-timeline-bar-fill,
130
+ .verdant .vd-timeline-month__fill,
131
+ .verdant .vd-source-bar-wide__fill,
132
+ .verdant .vd-agent-bar-fill,
133
+ .verdant .vd-beat-connector,
134
+ .verdant .vd-session-card {
135
+ transition: none !important;
136
+ }
137
+ }
138
+
139
+ /* ── Page Layout ── */
140
+ .verdant .vd-page {
141
+ max-width: 900px;
142
+ margin: 0 auto;
143
+ padding: 2rem 1.5rem 4rem;
144
+ }
145
+
146
+ /* ── Breadcrumb ── */
147
+ .verdant .vd-breadcrumb {
148
+ display: flex;
149
+ align-items: center;
150
+ gap: 0.5rem;
151
+ font-size: 0.8125rem;
152
+ color: var(--vd-on-surface-3);
153
+ margin-bottom: 1.5rem;
154
+ font-family: var(--font-mono);
155
+ }
156
+ .verdant .vd-breadcrumb a { color: var(--vd-accent); }
157
+ .verdant .vd-breadcrumb__sep { color: var(--vd-on-surface-3); opacity: 0.5; }
158
+
159
+ /* ── Leaf Divider ── */
160
+ .verdant .vd-leaf-divider {
161
+ display: flex;
162
+ align-items: center;
163
+ justify-content: center;
164
+ margin: 2.5rem 0;
165
+ gap: 1rem;
166
+ }
167
+ .verdant .vd-leaf-divider__line {
168
+ flex: 1;
169
+ height: 1px;
170
+ background: var(--vd-border);
171
+ }
172
+ .verdant .vd-leaf-divider__icon {
173
+ color: var(--vd-accent);
174
+ opacity: 0.4;
175
+ flex-shrink: 0;
176
+ }
177
+
178
+ /* ── Hero / Profile ── */
179
+ .verdant .vd-hero {
180
+ text-align: center;
181
+ padding: 2rem 0 1rem;
182
+ }
183
+ .verdant .vd-hero__avatar {
184
+ width: 80px;
185
+ height: 80px;
186
+ border-radius: 50%;
187
+ background: linear-gradient(135deg, var(--vd-accent), var(--vd-accent-light));
188
+ margin: 0 auto 1.25rem;
189
+ display: flex;
190
+ align-items: center;
191
+ justify-content: center;
192
+ font-family: var(--font-display);
193
+ font-size: 1.75rem;
194
+ font-weight: 700;
195
+ color: #fff;
196
+ }
197
+ .verdant .vd-hero h1 {
198
+ font-family: var(--font-display);
199
+ font-size: 2.25rem;
200
+ font-weight: 700;
201
+ color: var(--vd-on-surface);
202
+ letter-spacing: -0.02em;
203
+ margin-bottom: 0.5rem;
204
+ }
205
+ .verdant .vd-hero__bio {
206
+ font-size: 1rem;
207
+ color: var(--vd-on-surface-2);
208
+ max-width: 560px;
209
+ margin: 0 auto 0.75rem;
210
+ line-height: 1.7;
211
+ }
212
+ .verdant .vd-hero__photo {
213
+ width: 100px;
214
+ height: 130px;
215
+ border-radius: 12px;
216
+ object-fit: cover;
217
+ object-position: 55% 10%;
218
+ border: 2px solid var(--vd-border);
219
+ margin: 0 auto 1.25rem;
220
+ display: block;
221
+ }
222
+ .verdant .vd-hero__links {
223
+ display: flex;
224
+ flex-wrap: wrap;
225
+ justify-content: center;
226
+ gap: 0.5rem 1rem;
227
+ margin-top: 1rem;
228
+ }
229
+ .verdant .vd-hero__links a {
230
+ display: inline-flex;
231
+ align-items: center;
232
+ gap: 0.375rem;
233
+ font-size: 0.8125rem;
234
+ color: var(--vd-on-surface-2);
235
+ text-decoration: none;
236
+ padding: 0.25rem 0.625rem;
237
+ border-radius: 9999px;
238
+ border: 1px solid transparent;
239
+ transition: color 150ms, border-color 150ms, background-color 150ms;
240
+ }
241
+ .verdant .vd-hero__links a:hover {
242
+ color: var(--vd-accent);
243
+ border-color: var(--vd-accent-border);
244
+ background: var(--vd-accent-bg);
245
+ text-decoration: none;
246
+ }
247
+ .verdant .vd-hero__links a svg { flex-shrink: 0; }
248
+ .verdant .vd-hero__location {
249
+ font-size: 0.8125rem;
250
+ color: var(--vd-on-surface-3);
251
+ display: flex;
252
+ align-items: center;
253
+ justify-content: center;
254
+ gap: 0.375rem;
255
+ }
256
+
257
+ /* ── Stat Cards (Portfolio) ── */
258
+ .verdant .vd-stats {
259
+ display: grid;
260
+ grid-template-columns: repeat(4, 1fr);
261
+ gap: 1rem;
262
+ margin: 2rem 0;
263
+ }
264
+
265
+ /* ── Stat Grid (Project/Session) ── */
266
+ .verdant .vd-stat-grid {
267
+ display: grid;
268
+ grid-template-columns: repeat(3, 1fr);
269
+ gap: 0.75rem;
270
+ margin-bottom: 0.5rem;
271
+ }
272
+
273
+ .verdant .vd-stat-card {
274
+ background: var(--vd-surface);
275
+ border-radius: var(--radius-lg);
276
+ padding: 1.25rem;
277
+ text-align: center;
278
+ border: 1px solid var(--vd-border-light);
279
+ }
280
+ .verdant .vd-stat-value {
281
+ font-family: var(--font-display);
282
+ font-size: 1.75rem;
283
+ font-weight: 700;
284
+ color: var(--vd-accent);
285
+ line-height: 1.2;
286
+ }
287
+ .verdant .vd-stat-label {
288
+ font-size: 0.75rem;
289
+ color: var(--vd-on-surface-3);
290
+ margin-top: 0.25rem;
291
+ text-transform: uppercase;
292
+ letter-spacing: 0.05em;
293
+ }
294
+ /* Project page uses smaller stat cards */
295
+ .verdant.heyiam-project .vd-stat-card { padding: 1rem; }
296
+ .verdant.heyiam-project .vd-stat-value { font-size: 1.5rem; }
297
+ .verdant.heyiam-project .vd-stat-label { font-size: 0.6875rem; }
298
+
299
+ /* ── Section Headers ── */
300
+ .verdant .vd-section-header {
301
+ display: flex;
302
+ align-items: center;
303
+ gap: 0.75rem;
304
+ margin-bottom: 1.25rem;
305
+ }
306
+ .verdant .vd-section-header__icon {
307
+ width: 32px;
308
+ height: 32px;
309
+ border-radius: var(--radius-sm);
310
+ background: var(--vd-accent-bg);
311
+ display: flex;
312
+ align-items: center;
313
+ justify-content: center;
314
+ color: var(--vd-accent);
315
+ flex-shrink: 0;
316
+ }
317
+ .verdant .vd-section-header h2 {
318
+ font-family: var(--font-display);
319
+ font-size: 1.5rem;
320
+ font-weight: 600;
321
+ color: var(--vd-on-surface);
322
+ }
323
+ .verdant .vd-section-header h3 {
324
+ font-family: var(--font-display);
325
+ font-size: 1.125rem;
326
+ font-weight: 600;
327
+ color: var(--vd-on-surface);
328
+ }
329
+
330
+ /* ── Project Cards ── */
331
+ .verdant .vd-projects-grid {
332
+ display: flex;
333
+ flex-direction: column;
334
+ gap: 1.25rem;
335
+ }
336
+ .verdant .vd-project-card {
337
+ background: var(--vd-surface);
338
+ border: 1px solid var(--vd-border-light);
339
+ border-radius: var(--radius-lg);
340
+ padding: 1.5rem;
341
+ transition: transform 300ms var(--ease-out), box-shadow 300ms var(--ease-out);
342
+ text-decoration: none;
343
+ color: inherit;
344
+ display: block;
345
+ }
346
+ .verdant .vd-project-card:hover {
347
+ transform: translateY(-2px);
348
+ box-shadow: 0 8px 24px rgba(0,0,0,0.06);
349
+ text-decoration: none;
350
+ }
351
+ .verdant .vd-project-card__header {
352
+ display: flex;
353
+ align-items: flex-start;
354
+ justify-content: space-between;
355
+ margin-bottom: 0.75rem;
356
+ }
357
+ .verdant .vd-project-card h3 {
358
+ font-family: var(--font-display);
359
+ font-size: 1.25rem;
360
+ font-weight: 600;
361
+ color: var(--vd-on-surface);
362
+ }
363
+ .verdant .vd-project-card__arrow {
364
+ color: var(--vd-on-surface-3);
365
+ font-size: 1.25rem;
366
+ transition: transform 200ms, color 200ms;
367
+ }
368
+ .verdant .vd-project-card:hover .vd-project-card__arrow {
369
+ transform: translateX(3px);
370
+ color: var(--vd-accent);
371
+ }
372
+ .verdant .vd-project-card__narrative {
373
+ font-size: 0.875rem;
374
+ color: var(--vd-on-surface-2);
375
+ line-height: 1.6;
376
+ margin-bottom: 1rem;
377
+ }
378
+ .verdant .vd-project-card__meta {
379
+ display: flex;
380
+ align-items: center;
381
+ gap: 1rem;
382
+ font-size: 0.75rem;
383
+ color: var(--vd-on-surface-3);
384
+ font-family: var(--font-mono);
385
+ margin-bottom: 1rem;
386
+ flex-wrap: wrap;
387
+ }
388
+ .verdant .vd-project-card__meta span {
389
+ display: flex;
390
+ align-items: center;
391
+ gap: 0.25rem;
392
+ }
393
+
394
+ /* ── Leaf-Shaped Skill Chips ── */
395
+ .verdant .vd-skills {
396
+ display: flex;
397
+ flex-wrap: wrap;
398
+ gap: 0.5rem;
399
+ }
400
+ .verdant .vd-skill-chip {
401
+ font-size: 0.75rem;
402
+ font-weight: 500;
403
+ color: var(--vd-accent);
404
+ background: var(--vd-accent-bg);
405
+ border: 1px solid var(--vd-accent-border);
406
+ padding: 0.25rem 0.75rem;
407
+ border-radius: 9999px 16px 9999px 4px;
408
+ white-space: nowrap;
409
+ line-height: 1.4;
410
+ }
411
+
412
+ /* ── Project Header ── */
413
+ .verdant .vd-project-header {
414
+ margin-bottom: 1rem;
415
+ }
416
+ .verdant .vd-project-header h1 {
417
+ font-family: var(--font-display);
418
+ font-size: 2.25rem;
419
+ font-weight: 700;
420
+ color: var(--vd-on-surface);
421
+ letter-spacing: -0.02em;
422
+ margin-bottom: 0.5rem;
423
+ }
424
+ .verdant .vd-project-links {
425
+ display: flex;
426
+ gap: 1.25rem;
427
+ margin-top: 0.5rem;
428
+ }
429
+ .verdant .vd-project-link {
430
+ font-family: var(--font-mono);
431
+ font-size: 0.8125rem;
432
+ color: var(--vd-accent);
433
+ display: flex;
434
+ align-items: center;
435
+ gap: 0.375rem;
436
+ }
437
+
438
+ /* ── Browser Chrome Screenshot ── */
439
+ .verdant .vd-browser-chrome {
440
+ border-radius: var(--radius-lg);
441
+ border: 1px solid var(--vd-border);
442
+ overflow: hidden;
443
+ margin: 1.5rem 0;
444
+ }
445
+ .verdant .vd-browser-chrome__bar {
446
+ display: flex;
447
+ align-items: center;
448
+ gap: 6px;
449
+ padding: 0.625rem 0.875rem;
450
+ background: var(--vd-surface);
451
+ border-bottom: 1px solid var(--vd-border-light);
452
+ }
453
+ .verdant .vd-browser-chrome__dot {
454
+ width: 10px;
455
+ height: 10px;
456
+ border-radius: 50%;
457
+ }
458
+ .verdant .vd-browser-chrome__dot--red { background: #ef4444; }
459
+ .verdant .vd-browser-chrome__dot--yellow { background: #eab308; }
460
+ .verdant .vd-browser-chrome__dot--green { background: #22c55e; }
461
+ .verdant .vd-browser-chrome__url {
462
+ font-family: var(--font-mono);
463
+ font-size: 0.6875rem;
464
+ color: var(--vd-on-surface-3);
465
+ margin-left: 0.5rem;
466
+ }
467
+ .verdant .vd-browser-chrome__viewport {
468
+ background: linear-gradient(135deg, var(--vd-surface) 0%, var(--vd-surface-warm) 50%, var(--vd-cream) 100%);
469
+ min-height: 280px;
470
+ display: flex;
471
+ align-items: center;
472
+ justify-content: center;
473
+ }
474
+ .verdant .vd-browser-chrome__placeholder {
475
+ font-family: var(--font-mono);
476
+ font-size: 0.75rem;
477
+ color: var(--vd-on-surface-3);
478
+ opacity: 0.6;
479
+ text-transform: uppercase;
480
+ letter-spacing: 0.1em;
481
+ }
482
+
483
+ /* ── Narrative ── */
484
+ .verdant .vd-narrative {
485
+ font-size: 0.9375rem;
486
+ line-height: 1.8;
487
+ color: var(--vd-on-surface-2);
488
+ }
489
+ .verdant .vd-narrative p {
490
+ margin-bottom: 1rem;
491
+ }
492
+ .verdant .vd-narrative p:last-child { margin-bottom: 0; }
493
+
494
+ /* ── Phase Vine Timeline ── */
495
+ .verdant .vd-vine-timeline {
496
+ position: relative;
497
+ padding-left: 2.5rem;
498
+ }
499
+ .verdant .vd-vine-timeline::before {
500
+ content: '';
501
+ position: absolute;
502
+ left: 11px;
503
+ top: 0;
504
+ bottom: 0;
505
+ width: 2px;
506
+ background: linear-gradient(to bottom, var(--vd-accent), var(--vd-accent-light), #a3e635);
507
+ border-radius: 1px;
508
+ }
509
+ .verdant .vd-vine-phase {
510
+ position: relative;
511
+ padding-bottom: 1.75rem;
512
+ }
513
+ .verdant .vd-vine-phase:last-child { padding-bottom: 0; }
514
+ .verdant .vd-vine-node {
515
+ position: absolute;
516
+ left: -2.5rem;
517
+ top: 0.125rem;
518
+ width: 24px;
519
+ height: 24px;
520
+ border-radius: 50%;
521
+ background: var(--vd-bg);
522
+ border: 2px solid var(--vd-accent);
523
+ display: flex;
524
+ align-items: center;
525
+ justify-content: center;
526
+ }
527
+ .verdant .vd-vine-node__inner {
528
+ width: 8px;
529
+ height: 8px;
530
+ border-radius: 50%;
531
+ background: var(--vd-accent);
532
+ }
533
+ /* Leaf decorations on vine */
534
+ .verdant .vd-vine-phase:nth-child(odd) .vd-vine-node::after {
535
+ content: '';
536
+ position: absolute;
537
+ left: -10px;
538
+ top: 4px;
539
+ width: 8px;
540
+ height: 12px;
541
+ border-radius: 0 80% 0 80%;
542
+ background: var(--vd-accent);
543
+ opacity: 0.25;
544
+ transform: rotate(-30deg);
545
+ }
546
+ .verdant .vd-vine-phase:nth-child(even) .vd-vine-node::after {
547
+ content: '';
548
+ position: absolute;
549
+ right: -10px;
550
+ top: 4px;
551
+ width: 8px;
552
+ height: 12px;
553
+ border-radius: 80% 0 80% 0;
554
+ background: var(--vd-accent-light);
555
+ opacity: 0.25;
556
+ transform: rotate(30deg);
557
+ }
558
+ .verdant .vd-vine-phase__title {
559
+ font-family: var(--font-display);
560
+ font-size: 1rem;
561
+ font-weight: 600;
562
+ color: var(--vd-on-surface);
563
+ margin-bottom: 0.125rem;
564
+ }
565
+ .verdant .vd-vine-phase__dates {
566
+ font-family: var(--font-mono);
567
+ font-size: 0.6875rem;
568
+ color: var(--vd-on-surface-3);
569
+ margin-bottom: 0.375rem;
570
+ }
571
+ .verdant .vd-vine-phase__desc {
572
+ font-size: 0.8125rem;
573
+ color: var(--vd-on-surface-2);
574
+ line-height: 1.6;
575
+ }
576
+
577
+ /* ── Source Mix Bar (Portfolio Cards) ── */
578
+ .verdant .vd-source-bar {
579
+ height: 6px;
580
+ border-radius: 3px;
581
+ background: var(--vd-border);
582
+ overflow: hidden;
583
+ margin-top: 1rem;
584
+ }
585
+ .verdant .vd-source-bar-fill {
586
+ height: 100%;
587
+ border-radius: 3px;
588
+ background: linear-gradient(90deg, var(--vd-accent), var(--vd-accent-light));
589
+ transition: width 0.8s var(--ease-out);
590
+ width: 0;
591
+ }
592
+ .verdant .vd-source-labels {
593
+ display: flex;
594
+ justify-content: space-between;
595
+ margin-top: 0.375rem;
596
+ font-size: 0.6875rem;
597
+ color: var(--vd-on-surface-3);
598
+ font-family: var(--font-mono);
599
+ }
600
+
601
+ /* ── Skills Garden (Portfolio) ── */
602
+ .verdant .vd-skills-garden {
603
+ display: flex;
604
+ flex-wrap: wrap;
605
+ gap: 0.625rem;
606
+ }
607
+ .verdant .vd-skill-garden-chip {
608
+ font-size: 0.8125rem;
609
+ font-weight: 500;
610
+ color: var(--vd-accent);
611
+ background: var(--vd-accent-bg);
612
+ border: 1px solid var(--vd-accent-border);
613
+ padding: 0.375rem 1rem;
614
+ border-radius: 9999px 16px 9999px 4px;
615
+ white-space: nowrap;
616
+ line-height: 1.4;
617
+ position: relative;
618
+ }
619
+ .verdant .vd-skill-garden-chip--primary {
620
+ font-size: 0.9375rem;
621
+ padding: 0.5rem 1.25rem;
622
+ background: var(--vd-accent);
623
+ color: #fff;
624
+ border-color: var(--vd-accent);
625
+ }
626
+ .verdant .vd-skill-garden-chip--secondary {
627
+ font-size: 0.8125rem;
628
+ background: rgba(21,128,61,0.12);
629
+ border-color: rgba(21,128,61,0.25);
630
+ }
631
+
632
+ /* ── Activity Grid (Portfolio) ── */
633
+ .verdant .vd-activity-grid {
634
+ display: grid;
635
+ grid-template-columns: repeat(8, 1fr);
636
+ gap: 4px;
637
+ }
638
+ .verdant .vd-activity-cell {
639
+ aspect-ratio: 1;
640
+ border-radius: 4px;
641
+ background: var(--vd-surface);
642
+ border: 1px solid var(--vd-border-light);
643
+ }
644
+ .verdant .vd-activity-cell--l1 { background: rgba(21,128,61,0.12); border-color: rgba(21,128,61,0.15); }
645
+ .verdant .vd-activity-cell--l2 { background: rgba(21,128,61,0.25); border-color: rgba(21,128,61,0.25); }
646
+ .verdant .vd-activity-cell--l3 { background: rgba(21,128,61,0.45); border-color: rgba(21,128,61,0.4); }
647
+ .verdant .vd-activity-cell--l4 { background: var(--vd-accent); border-color: var(--vd-accent); }
648
+ .verdant .vd-activity-legend {
649
+ display: flex;
650
+ align-items: center;
651
+ justify-content: flex-end;
652
+ gap: 0.375rem;
653
+ margin-top: 0.5rem;
654
+ font-size: 0.6875rem;
655
+ color: var(--vd-on-surface-3);
656
+ }
657
+ .verdant .vd-activity-legend__cell {
658
+ width: 12px;
659
+ height: 12px;
660
+ border-radius: 3px;
661
+ }
662
+
663
+ /* ── Timeline Compact (Portfolio) ── */
664
+ .verdant .vd-timeline-compact {
665
+ display: flex;
666
+ flex-direction: column;
667
+ gap: 0.5rem;
668
+ }
669
+ .verdant .vd-timeline-month {
670
+ display: flex;
671
+ align-items: center;
672
+ gap: 0.75rem;
673
+ }
674
+ .verdant .vd-timeline-month__label {
675
+ font-family: var(--font-mono);
676
+ font-size: 0.6875rem;
677
+ color: var(--vd-on-surface-3);
678
+ width: 2.5rem;
679
+ text-align: right;
680
+ flex-shrink: 0;
681
+ }
682
+ .verdant .vd-timeline-month__bar {
683
+ flex: 1;
684
+ height: 24px;
685
+ border-radius: var(--radius-md);
686
+ background: var(--vd-surface);
687
+ border: 1px solid var(--vd-border-light);
688
+ overflow: hidden;
689
+ position: relative;
690
+ }
691
+ .verdant .vd-timeline-month__fill {
692
+ height: 100%;
693
+ border-radius: var(--radius-md);
694
+ background: linear-gradient(90deg, var(--vd-accent), var(--vd-accent-light));
695
+ transition: width 0.8s var(--ease-out);
696
+ width: 0;
697
+ }
698
+ .verdant .vd-timeline-month__count {
699
+ font-family: var(--font-mono);
700
+ font-size: 0.6875rem;
701
+ color: var(--vd-on-surface-3);
702
+ width: 5rem;
703
+ flex-shrink: 0;
704
+ }
705
+
706
+ /* ── Source Overview ── */
707
+ .verdant .vd-source-overview {
708
+ display: grid;
709
+ grid-template-columns: repeat(2, 1fr);
710
+ gap: 1rem;
711
+ }
712
+ .verdant .vd-source-card {
713
+ background: var(--vd-surface);
714
+ border-radius: var(--radius-lg);
715
+ padding: 1.25rem;
716
+ border: 1px solid var(--vd-border-light);
717
+ text-align: center;
718
+ }
719
+ .verdant .vd-source-card__pct {
720
+ font-family: var(--font-display);
721
+ font-size: 2rem;
722
+ font-weight: 700;
723
+ line-height: 1.2;
724
+ }
725
+ .verdant .vd-source-card__pct--claude { color: var(--vd-accent); }
726
+ .verdant .vd-source-card__pct--cursor { color: var(--vd-brown-light); }
727
+ .verdant .vd-source-card__label {
728
+ font-size: 0.75rem;
729
+ color: var(--vd-on-surface-3);
730
+ margin-top: 0.25rem;
731
+ }
732
+ .verdant .vd-source-card__sessions {
733
+ font-family: var(--font-mono);
734
+ font-size: 0.6875rem;
735
+ color: var(--vd-on-surface-3);
736
+ margin-top: 0.375rem;
737
+ }
738
+
739
+ /* ── Featured Sessions (Project) ── */
740
+ .verdant .vd-sessions-grid {
741
+ display: grid;
742
+ grid-template-columns: repeat(2, 1fr);
743
+ gap: 0.75rem;
744
+ }
745
+ .verdant .vd-session-card {
746
+ background: var(--vd-surface);
747
+ border: 1px solid var(--vd-border-light);
748
+ border-radius: var(--radius-lg);
749
+ padding: 1.125rem;
750
+ text-decoration: none;
751
+ color: inherit;
752
+ display: block;
753
+ transition: transform 300ms var(--ease-out), box-shadow 300ms var(--ease-out);
754
+ }
755
+ .verdant .vd-session-card:hover {
756
+ transform: translateY(-2px);
757
+ box-shadow: 0 6px 20px rgba(0,0,0,0.05);
758
+ text-decoration: none;
759
+ }
760
+ .verdant .vd-session-card__tag {
761
+ font-family: var(--font-mono);
762
+ font-size: 0.625rem;
763
+ text-transform: uppercase;
764
+ letter-spacing: 0.06em;
765
+ color: var(--vd-accent);
766
+ background: var(--vd-accent-bg);
767
+ padding: 0.125rem 0.5rem;
768
+ border-radius: 4px;
769
+ display: inline-block;
770
+ margin-bottom: 0.5rem;
771
+ }
772
+ .verdant .vd-session-card h3 {
773
+ font-family: var(--font-display);
774
+ font-size: 0.9375rem;
775
+ font-weight: 600;
776
+ color: var(--vd-on-surface);
777
+ margin-bottom: 0.375rem;
778
+ line-height: 1.3;
779
+ }
780
+ .verdant .vd-session-card__meta {
781
+ font-family: var(--font-mono);
782
+ font-size: 0.6875rem;
783
+ color: var(--vd-on-surface-3);
784
+ display: flex;
785
+ gap: 0.75rem;
786
+ flex-wrap: wrap;
787
+ }
788
+
789
+ /* ── Session Header ── */
790
+ .verdant .vd-session-header {
791
+ margin-bottom: 1rem;
792
+ }
793
+ .verdant .vd-session-header h1 {
794
+ font-family: var(--font-display);
795
+ font-size: 2rem;
796
+ font-weight: 700;
797
+ color: var(--vd-on-surface);
798
+ letter-spacing: -0.02em;
799
+ margin-bottom: 0.75rem;
800
+ line-height: 1.3;
801
+ }
802
+
803
+ /* ── Meta Row ── */
804
+ .verdant .vd-meta-row {
805
+ display: flex;
806
+ flex-wrap: wrap;
807
+ gap: 0.5rem 1.25rem;
808
+ font-size: 0.8125rem;
809
+ color: var(--vd-on-surface-3);
810
+ margin-bottom: 1rem;
811
+ }
812
+ .verdant .vd-meta-item {
813
+ display: flex;
814
+ align-items: center;
815
+ gap: 0.375rem;
816
+ }
817
+ .verdant .vd-meta-item svg { flex-shrink: 0; }
818
+ .verdant .vd-badge {
819
+ display: inline-flex;
820
+ align-items: center;
821
+ gap: 0.25rem;
822
+ font-family: var(--font-mono);
823
+ font-size: 0.6875rem;
824
+ font-weight: 500;
825
+ background: var(--vd-accent-bg);
826
+ color: var(--vd-accent);
827
+ padding: 0.1875rem 0.625rem;
828
+ border-radius: var(--radius-sm);
829
+ border: 1px solid var(--vd-accent-border);
830
+ }
831
+
832
+ /* ── Dev Take (quote) ── */
833
+ .verdant .vd-dev-take {
834
+ background: var(--vd-surface);
835
+ border-radius: var(--radius-lg);
836
+ padding: 1.25rem 1.5rem;
837
+ border-left: 3px solid var(--vd-accent);
838
+ margin: 1.5rem 0;
839
+ }
840
+ .verdant .vd-dev-take__label {
841
+ font-family: var(--font-mono);
842
+ font-size: 0.625rem;
843
+ text-transform: uppercase;
844
+ letter-spacing: 0.08em;
845
+ color: var(--vd-accent);
846
+ margin-bottom: 0.375rem;
847
+ }
848
+ .verdant .vd-dev-take blockquote {
849
+ font-family: var(--font-display);
850
+ font-size: 1rem;
851
+ font-weight: 400;
852
+ font-style: italic;
853
+ color: var(--vd-on-surface-2);
854
+ line-height: 1.7;
855
+ }
856
+
857
+ /* ── Two Column Layout (Content + Sidebar) ── */
858
+ .verdant .vd-two-col {
859
+ display: grid;
860
+ grid-template-columns: 1fr 280px;
861
+ gap: 2rem;
862
+ align-items: start;
863
+ }
864
+
865
+ /* ── Execution Path (Beats) — Vine Style ── */
866
+ .verdant .vd-beats {
867
+ position: relative;
868
+ padding-left: 2.5rem;
869
+ }
870
+ .verdant .vd-beats::before {
871
+ content: '';
872
+ position: absolute;
873
+ left: 11px;
874
+ top: 0;
875
+ bottom: 0;
876
+ width: 2px;
877
+ background: linear-gradient(to bottom, var(--vd-accent), var(--vd-accent-light), #a3e635);
878
+ border-radius: 1px;
879
+ }
880
+ .verdant .vd-beat {
881
+ position: relative;
882
+ padding-bottom: 1.5rem;
883
+ }
884
+ .verdant .vd-beat:last-child { padding-bottom: 0; }
885
+ .verdant .vd-beat__node {
886
+ position: absolute;
887
+ left: -2.5rem;
888
+ top: 0.125rem;
889
+ width: 24px;
890
+ height: 24px;
891
+ border-radius: 50%;
892
+ background: var(--vd-bg);
893
+ border: 2px solid var(--vd-accent);
894
+ display: flex;
895
+ align-items: center;
896
+ justify-content: center;
897
+ }
898
+ .verdant .vd-beat__node-num {
899
+ font-family: var(--font-mono);
900
+ font-size: 0.5625rem;
901
+ font-weight: 500;
902
+ color: var(--vd-accent);
903
+ }
904
+ /* Leaf decorations on beat vine */
905
+ .verdant .vd-beat:nth-child(odd) .vd-beat__node::after {
906
+ content: '';
907
+ position: absolute;
908
+ left: -9px;
909
+ top: 5px;
910
+ width: 7px;
911
+ height: 10px;
912
+ border-radius: 0 80% 0 80%;
913
+ background: var(--vd-accent);
914
+ opacity: 0.2;
915
+ transform: rotate(-30deg);
916
+ }
917
+ .verdant .vd-beat:nth-child(even) .vd-beat__node::after {
918
+ content: '';
919
+ position: absolute;
920
+ right: -9px;
921
+ top: 5px;
922
+ width: 7px;
923
+ height: 10px;
924
+ border-radius: 80% 0 80% 0;
925
+ background: var(--vd-accent-light);
926
+ opacity: 0.2;
927
+ transform: rotate(30deg);
928
+ }
929
+ .verdant .vd-beat__title {
930
+ font-family: var(--font-display);
931
+ font-size: 0.9375rem;
932
+ font-weight: 600;
933
+ color: var(--vd-on-surface);
934
+ margin-bottom: 0.25rem;
935
+ }
936
+ .verdant .vd-beat__desc {
937
+ font-size: 0.8125rem;
938
+ color: var(--vd-on-surface-2);
939
+ line-height: 1.6;
940
+ }
941
+
942
+ /* ── Q&A ── */
943
+ .verdant .vd-qa-list {
944
+ display: flex;
945
+ flex-direction: column;
946
+ gap: 1.25rem;
947
+ }
948
+ .verdant .vd-qa-item {
949
+ background: var(--vd-surface);
950
+ border-radius: var(--radius-lg);
951
+ padding: 1.25rem;
952
+ border: 1px solid var(--vd-border-light);
953
+ }
954
+ .verdant .vd-qa-item__q {
955
+ font-family: var(--font-display);
956
+ font-size: 0.9375rem;
957
+ font-weight: 600;
958
+ color: var(--vd-on-surface);
959
+ margin-bottom: 0.5rem;
960
+ display: flex;
961
+ gap: 0.5rem;
962
+ }
963
+ .verdant .vd-qa-item__q-marker {
964
+ color: var(--vd-accent);
965
+ font-weight: 700;
966
+ flex-shrink: 0;
967
+ }
968
+ .verdant .vd-qa-item__a {
969
+ font-size: 0.8125rem;
970
+ color: var(--vd-on-surface-2);
971
+ line-height: 1.7;
972
+ padding-left: 1.375rem;
973
+ }
974
+
975
+ /* ── Sidebar ── */
976
+ .verdant .vd-sidebar {
977
+ display: flex;
978
+ flex-direction: column;
979
+ gap: 1.25rem;
980
+ }
981
+ .verdant .vd-sidebar-card {
982
+ background: var(--vd-surface);
983
+ border: 1px solid var(--vd-border-light);
984
+ border-radius: var(--radius-lg);
985
+ padding: 1.125rem;
986
+ }
987
+ .verdant .vd-sidebar-card__title {
988
+ font-family: var(--font-mono);
989
+ font-size: 0.625rem;
990
+ text-transform: uppercase;
991
+ letter-spacing: 0.08em;
992
+ color: var(--vd-on-surface-3);
993
+ margin-bottom: 0.75rem;
994
+ }
995
+
996
+ /* ── Tools Table ── */
997
+ .verdant .vd-tools-table {
998
+ width: 100%;
999
+ border-collapse: collapse;
1000
+ }
1001
+ .verdant .vd-tools-table tr {
1002
+ border-bottom: 1px solid var(--vd-border-light);
1003
+ }
1004
+ .verdant .vd-tools-table tr:last-child { border-bottom: none; }
1005
+ .verdant .vd-tools-table td {
1006
+ padding: 0.375rem 0;
1007
+ font-size: 0.8125rem;
1008
+ }
1009
+ .verdant .vd-tools-table td:first-child {
1010
+ font-family: var(--font-mono);
1011
+ font-size: 0.75rem;
1012
+ color: var(--vd-on-surface);
1013
+ font-weight: 500;
1014
+ }
1015
+ .verdant .vd-tools-table td:last-child {
1016
+ text-align: right;
1017
+ color: var(--vd-on-surface-3);
1018
+ font-family: var(--font-mono);
1019
+ font-size: 0.75rem;
1020
+ }
1021
+
1022
+ /* ── Files Changed ── */
1023
+ .verdant .vd-files-list {
1024
+ display: flex;
1025
+ flex-direction: column;
1026
+ gap: 0.375rem;
1027
+ }
1028
+ .verdant .vd-file-item {
1029
+ display: flex;
1030
+ justify-content: space-between;
1031
+ align-items: center;
1032
+ font-size: 0.75rem;
1033
+ padding: 0.25rem 0;
1034
+ }
1035
+ .verdant .vd-file-item__name {
1036
+ font-family: var(--font-mono);
1037
+ color: var(--vd-on-surface);
1038
+ overflow: hidden;
1039
+ text-overflow: ellipsis;
1040
+ white-space: nowrap;
1041
+ max-width: 170px;
1042
+ }
1043
+ .verdant .vd-file-item__diff {
1044
+ font-family: var(--font-mono);
1045
+ color: var(--vd-accent);
1046
+ font-weight: 500;
1047
+ flex-shrink: 0;
1048
+ }
1049
+
1050
+ /* ── Sidebar Skills ── */
1051
+ .verdant .vd-sidebar-skills {
1052
+ display: flex;
1053
+ flex-wrap: wrap;
1054
+ gap: 0.375rem;
1055
+ }
1056
+
1057
+ /* ── Agent Summary ── */
1058
+ .verdant .vd-agents {
1059
+ display: flex;
1060
+ flex-direction: column;
1061
+ gap: 0.75rem;
1062
+ }
1063
+ .verdant .vd-agent-row {
1064
+ display: grid;
1065
+ grid-template-columns: 1fr auto;
1066
+ gap: 0.5rem;
1067
+ align-items: center;
1068
+ }
1069
+ .verdant .vd-agent-row__info {
1070
+ display: flex;
1071
+ flex-direction: column;
1072
+ }
1073
+ .verdant .vd-agent-row__name {
1074
+ font-size: 0.8125rem;
1075
+ font-weight: 500;
1076
+ color: var(--vd-on-surface);
1077
+ }
1078
+ .verdant .vd-agent-row__meta {
1079
+ font-family: var(--font-mono);
1080
+ font-size: 0.6875rem;
1081
+ color: var(--vd-on-surface-3);
1082
+ }
1083
+ .verdant .vd-agent-bar {
1084
+ height: 6px;
1085
+ border-radius: 3px;
1086
+ background: var(--vd-border);
1087
+ overflow: hidden;
1088
+ grid-column: 1 / -1;
1089
+ }
1090
+ .verdant .vd-agent-bar-fill {
1091
+ height: 100%;
1092
+ border-radius: 3px;
1093
+ transition: width 0.6s var(--ease-out);
1094
+ width: 0;
1095
+ }
1096
+
1097
+ /* ── Work Timeline (Project) ── */
1098
+ .verdant .vd-work-timeline {
1099
+ display: flex;
1100
+ flex-direction: column;
1101
+ gap: 0.625rem;
1102
+ }
1103
+ .verdant .vd-timeline-row {
1104
+ display: grid;
1105
+ grid-template-columns: 2rem 1fr 4rem;
1106
+ gap: 0.75rem;
1107
+ align-items: center;
1108
+ font-size: 0.8125rem;
1109
+ }
1110
+ .verdant .vd-timeline-row__num {
1111
+ font-family: var(--font-mono);
1112
+ font-size: 0.6875rem;
1113
+ color: var(--vd-on-surface-3);
1114
+ text-align: right;
1115
+ }
1116
+ .verdant .vd-timeline-bar {
1117
+ height: 28px;
1118
+ border-radius: var(--radius-md);
1119
+ background: var(--vd-surface);
1120
+ border: 1px solid var(--vd-border-light);
1121
+ overflow: hidden;
1122
+ position: relative;
1123
+ display: flex;
1124
+ align-items: center;
1125
+ }
1126
+ .verdant .vd-timeline-bar-fill {
1127
+ height: 100%;
1128
+ border-radius: var(--radius-md) 0 0 var(--radius-md);
1129
+ background: linear-gradient(90deg, var(--vd-accent), var(--vd-accent-light));
1130
+ transition: width 0.8s var(--ease-out);
1131
+ width: 0;
1132
+ }
1133
+ .verdant .vd-timeline-bar__label {
1134
+ position: absolute;
1135
+ left: 0.75rem;
1136
+ font-family: var(--font-body);
1137
+ font-size: 0.75rem;
1138
+ font-weight: 500;
1139
+ color: var(--vd-on-surface);
1140
+ white-space: nowrap;
1141
+ z-index: 1;
1142
+ }
1143
+ .verdant .vd-timeline-row__dur {
1144
+ font-family: var(--font-mono);
1145
+ font-size: 0.6875rem;
1146
+ color: var(--vd-on-surface-3);
1147
+ text-align: right;
1148
+ }
1149
+
1150
+ /* ── Source Breakdown (Project) ── */
1151
+ .verdant .vd-source-breakdown {
1152
+ display: flex;
1153
+ gap: 1.5rem;
1154
+ align-items: center;
1155
+ margin-top: 0.5rem;
1156
+ }
1157
+ .verdant .vd-source-bar-wide {
1158
+ flex: 1;
1159
+ height: 10px;
1160
+ border-radius: 5px;
1161
+ background: var(--vd-border);
1162
+ overflow: hidden;
1163
+ }
1164
+ .verdant .vd-source-bar-wide__fill {
1165
+ height: 100%;
1166
+ border-radius: 5px;
1167
+ background: linear-gradient(90deg, var(--vd-accent), var(--vd-accent-light));
1168
+ transition: width 0.8s var(--ease-out);
1169
+ width: 0;
1170
+ }
1171
+ .verdant .vd-source-legend {
1172
+ display: flex;
1173
+ gap: 1rem;
1174
+ font-size: 0.75rem;
1175
+ color: var(--vd-on-surface-3);
1176
+ font-family: var(--font-mono);
1177
+ flex-shrink: 0;
1178
+ }
1179
+ .verdant .vd-source-legend__dot {
1180
+ display: inline-block;
1181
+ width: 8px;
1182
+ height: 8px;
1183
+ border-radius: 50%;
1184
+ margin-right: 0.25rem;
1185
+ vertical-align: middle;
1186
+ }
1187
+ .verdant .vd-source-legend__dot--claude { background: var(--vd-accent); }
1188
+ .verdant .vd-source-legend__dot--cursor { background: var(--vd-border); }
1189
+
1190
+ /* ── Key Decisions ── */
1191
+ .verdant .vd-decisions {
1192
+ display: flex;
1193
+ flex-direction: column;
1194
+ gap: 0.75rem;
1195
+ }
1196
+ .verdant .vd-decision {
1197
+ background: var(--vd-surface);
1198
+ border-radius: var(--radius-md);
1199
+ padding: 1rem 1.25rem;
1200
+ border: 1px solid var(--vd-border-light);
1201
+ border-left: 3px solid var(--vd-accent);
1202
+ font-size: 0.875rem;
1203
+ color: var(--vd-on-surface-2);
1204
+ line-height: 1.6;
1205
+ }
1206
+ .verdant .vd-decision strong {
1207
+ color: var(--vd-on-surface);
1208
+ font-weight: 600;
1209
+ }
1210
+
1211
+ /* ── Footer ── */
1212
+ .verdant .vd-footer {
1213
+ text-align: center;
1214
+ padding: 2rem 0 1rem;
1215
+ font-size: 0.75rem;
1216
+ color: var(--vd-on-surface-3);
1217
+ border-top: 1px solid var(--vd-border-light);
1218
+ margin-top: 3rem;
1219
+ }
1220
+ .verdant .vd-footer a { color: var(--vd-accent); }
1221
+
1222
+ /* ── Responsive ── */
1223
+ @media (max-width: 768px) {
1224
+ .verdant .vd-page { padding: 1.25rem 1rem 3rem; }
1225
+ .verdant .vd-hero h1 { font-size: 1.75rem; }
1226
+ .verdant .vd-hero__photo { width: 80px; height: 100px; }
1227
+ .verdant .vd-hero__links { font-size: 0.75rem; }
1228
+ .verdant .vd-stats { grid-template-columns: repeat(2, 1fr); }
1229
+ .verdant .vd-stat-grid { grid-template-columns: repeat(2, 1fr); }
1230
+ .verdant .vd-project-card { padding: 1.25rem; }
1231
+ .verdant .vd-project-card__header { flex-direction: column; gap: 0.5rem; }
1232
+ .verdant .vd-project-card__meta { flex-wrap: wrap; gap: 0.75rem; }
1233
+ .verdant .vd-section-header h2 { font-size: 1.25rem; }
1234
+ .verdant .vd-project-header h1 { font-size: 1.75rem; }
1235
+ .verdant .vd-sessions-grid { grid-template-columns: 1fr; }
1236
+ .verdant .vd-vine-timeline { padding-left: 2rem; }
1237
+ .verdant .vd-session-header h1 { font-size: 1.5rem; }
1238
+ .verdant .vd-two-col {
1239
+ grid-template-columns: 1fr;
1240
+ gap: 1.5rem;
1241
+ }
1242
+ .verdant .vd-sidebar {
1243
+ order: -1;
1244
+ display: grid;
1245
+ grid-template-columns: repeat(2, 1fr);
1246
+ gap: 0.75rem;
1247
+ }
1248
+ .verdant .vd-sidebar-card:first-child {
1249
+ grid-column: 1 / -1;
1250
+ }
1251
+ .verdant .vd-beats { padding-left: 2rem; }
1252
+ .verdant .vd-file-item__name { max-width: 120px; }
1253
+ .verdant .vd-timeline-row { grid-template-columns: 1.5rem 1fr 3.5rem; }
1254
+ .verdant .vd-source-breakdown { flex-direction: column; align-items: stretch; }
1255
+ .verdant .vd-nav__links { gap: 1rem; }
1256
+ .verdant .vd-footer { flex-direction: column; gap: 0.5rem; text-align: center; }
1257
+ }