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,822 @@
1
+ /* ── Editorial template styles ──
2
+ * Classic light theme, card-based layout, clean professional look.
3
+ * Accent: #084471 (dark blue). Complements the base styles.css.
4
+ */
5
+
6
+ /* ── Layout ── */
7
+ .editorial.heyiam-portfolio,
8
+ .editorial.heyiam-project,
9
+ .editorial.heyiam-session {
10
+ max-width: 960px;
11
+ margin: 0 auto;
12
+ padding: 2.5rem 2rem;
13
+ font-family: var(--font-body);
14
+ color: var(--on-surface);
15
+ background: var(--surface);
16
+ }
17
+
18
+ /* ── Breadcrumb ── */
19
+ .editorial .ed-breadcrumb {
20
+ font-family: var(--font-mono);
21
+ font-size: 0.75rem;
22
+ color: var(--on-surface-variant);
23
+ margin-bottom: 1.5rem;
24
+ }
25
+ .editorial .ed-breadcrumb a {
26
+ color: var(--primary);
27
+ }
28
+ .editorial .ed-breadcrumb-sep {
29
+ margin: 0 0.375rem;
30
+ color: var(--outline);
31
+ }
32
+
33
+ /* ── Hero (portfolio) ── */
34
+ .editorial .ed-hero {
35
+ margin-bottom: 2rem;
36
+ padding: 2rem;
37
+ background: var(--surface-lowest);
38
+ border: 1px solid var(--ghost);
39
+ border-radius: var(--radius-md);
40
+ }
41
+ .editorial .ed-hero-content {
42
+ max-width: 100%;
43
+ }
44
+ .editorial .ed-hero-profile {
45
+ display: flex;
46
+ gap: 1.5rem;
47
+ align-items: flex-start;
48
+ margin-bottom: 1.25rem;
49
+ }
50
+ .editorial .ed-profile-photo {
51
+ width: 80px;
52
+ height: 80px;
53
+ border-radius: 50%;
54
+ object-fit: cover;
55
+ border: 2px solid var(--ghost);
56
+ flex-shrink: 0;
57
+ }
58
+ .editorial .ed-hero-name {
59
+ font-family: var(--font-display);
60
+ font-size: 1.75rem;
61
+ font-weight: 700;
62
+ color: var(--on-surface);
63
+ margin-bottom: 0.375rem;
64
+ line-height: 1.2;
65
+ }
66
+ .editorial .ed-hero-bio {
67
+ font-size: 0.9375rem;
68
+ color: var(--on-surface-variant);
69
+ line-height: 1.6;
70
+ margin-bottom: 0.5rem;
71
+ max-width: 60ch;
72
+ }
73
+ .editorial .ed-hero-location {
74
+ display: inline-flex;
75
+ align-items: center;
76
+ gap: 0.25rem;
77
+ font-family: var(--font-mono);
78
+ font-size: 0.75rem;
79
+ color: var(--on-surface-variant);
80
+ }
81
+ .editorial .ed-hero-location svg {
82
+ color: var(--primary);
83
+ }
84
+
85
+ /* ── Contact row ── */
86
+ .editorial .ed-contact-row {
87
+ display: flex;
88
+ flex-wrap: wrap;
89
+ gap: 0.75rem 1.25rem;
90
+ margin-bottom: 0.75rem;
91
+ }
92
+ .editorial .ed-contact-link {
93
+ display: inline-flex;
94
+ align-items: center;
95
+ gap: 0.375rem;
96
+ font-size: 0.8125rem;
97
+ color: var(--on-surface-variant);
98
+ transition: color 0.15s;
99
+ }
100
+ .editorial .ed-contact-link:hover {
101
+ color: var(--primary);
102
+ text-decoration: none;
103
+ }
104
+ .editorial .ed-contact-link svg {
105
+ flex-shrink: 0;
106
+ color: var(--primary);
107
+ }
108
+
109
+ /* ── Resume button ── */
110
+ .editorial .ed-resume-row {
111
+ margin-top: 0.5rem;
112
+ }
113
+ .editorial .ed-resume-btn {
114
+ display: inline-flex;
115
+ align-items: center;
116
+ gap: 0.375rem;
117
+ font-size: 0.8125rem;
118
+ font-weight: 600;
119
+ color: var(--on-primary);
120
+ background: var(--primary);
121
+ padding: 0.5rem 1rem;
122
+ border-radius: var(--radius-md);
123
+ transition: background 0.15s;
124
+ }
125
+ .editorial .ed-resume-btn:hover {
126
+ background: var(--primary-hover);
127
+ text-decoration: none;
128
+ }
129
+ .editorial .ed-resume-btn svg {
130
+ flex-shrink: 0;
131
+ }
132
+
133
+ /* ── Stats grid ── */
134
+ .editorial .ed-stats-section {
135
+ margin-bottom: 2rem;
136
+ }
137
+ .editorial .ed-stats-grid {
138
+ display: grid;
139
+ grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
140
+ gap: 0.75rem;
141
+ }
142
+ .editorial .ed-stat-card {
143
+ background: var(--surface-lowest);
144
+ border: 1px solid var(--ghost);
145
+ border-radius: var(--radius-md);
146
+ padding: 1.25rem 1rem;
147
+ text-align: center;
148
+ }
149
+ .editorial .ed-stat-value {
150
+ display: block;
151
+ font-family: var(--font-display);
152
+ font-size: 1.5rem;
153
+ font-weight: 700;
154
+ color: var(--on-surface);
155
+ }
156
+ .editorial .ed-stat-label {
157
+ display: block;
158
+ font-family: var(--font-mono);
159
+ font-size: 0.6875rem;
160
+ text-transform: uppercase;
161
+ letter-spacing: 0.05em;
162
+ color: var(--on-surface-variant);
163
+ margin-top: 0.25rem;
164
+ }
165
+
166
+ /* Leverage stat card */
167
+ .editorial .ed-stat-card--leverage {
168
+ grid-column: span 2;
169
+ }
170
+ .editorial .ed-leverage-row {
171
+ display: flex;
172
+ justify-content: center;
173
+ gap: 1.5rem;
174
+ margin-bottom: 0.75rem;
175
+ }
176
+ .editorial .ed-leverage-item {
177
+ text-align: center;
178
+ }
179
+ .editorial .ed-leverage-num {
180
+ font-family: var(--font-display);
181
+ font-size: 1.125rem;
182
+ font-weight: 700;
183
+ color: var(--on-surface);
184
+ }
185
+ .editorial .ed-leverage-num--agent {
186
+ color: var(--green);
187
+ }
188
+ .editorial .ed-leverage-num--multi {
189
+ color: var(--primary);
190
+ }
191
+ .editorial .ed-leverage-sub {
192
+ font-family: var(--font-mono);
193
+ font-size: 0.625rem;
194
+ text-transform: uppercase;
195
+ letter-spacing: 0.05em;
196
+ color: var(--on-surface-variant);
197
+ display: block;
198
+ }
199
+ .editorial .ed-leverage-bar {
200
+ display: flex;
201
+ height: 4px;
202
+ border-radius: 2px;
203
+ overflow: hidden;
204
+ background: var(--surface-low);
205
+ }
206
+ .editorial .ed-leverage-bar__human {
207
+ background: var(--primary);
208
+ height: 100%;
209
+ }
210
+ .editorial .ed-leverage-bar__agent {
211
+ background: var(--green);
212
+ height: 100%;
213
+ }
214
+
215
+ /* Project-page inline leverage */
216
+ .editorial .ed-leverage-inline {
217
+ font-family: var(--font-mono);
218
+ font-size: 0.6875rem;
219
+ color: var(--on-surface-variant);
220
+ margin-top: 0.375rem;
221
+ }
222
+ .editorial .ed-leverage-inline .ed-leverage-num--agent {
223
+ font-weight: 600;
224
+ }
225
+ .editorial .ed-leverage-inline .ed-leverage-num--multi {
226
+ font-weight: 700;
227
+ color: var(--primary);
228
+ }
229
+
230
+ /* ── Section titles ── */
231
+ .editorial .ed-section-title {
232
+ font-family: var(--font-display);
233
+ font-size: 1.125rem;
234
+ font-weight: 700;
235
+ color: var(--on-surface);
236
+ margin-bottom: 1rem;
237
+ padding-bottom: 0.5rem;
238
+ border-bottom: 2px solid var(--primary);
239
+ display: inline-block;
240
+ }
241
+
242
+ /* ── Card section ── */
243
+ .editorial .ed-card-section {
244
+ margin-bottom: 2rem;
245
+ }
246
+
247
+ /* ── Narrative ── */
248
+ .editorial .ed-narrative {
249
+ line-height: 1.7;
250
+ color: var(--on-surface);
251
+ font-size: 0.9375rem;
252
+ border-left: 3px solid var(--primary);
253
+ padding-left: 1rem;
254
+ }
255
+
256
+ /* ── Projects grid (portfolio) ── */
257
+ .editorial .ed-projects-section {
258
+ margin-bottom: 2rem;
259
+ }
260
+ .editorial .ed-projects-grid {
261
+ display: grid;
262
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
263
+ gap: 1rem;
264
+ }
265
+ .editorial .ed-project-card {
266
+ display: block;
267
+ background: var(--surface-lowest);
268
+ border: 1px solid var(--ghost);
269
+ border-radius: var(--radius-md);
270
+ padding: 1.25rem;
271
+ text-decoration: none;
272
+ color: inherit;
273
+ transition: box-shadow 0.15s, border-color 0.15s;
274
+ }
275
+ .editorial .ed-project-card:hover {
276
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
277
+ border-color: var(--primary);
278
+ text-decoration: none;
279
+ }
280
+ .editorial .ed-project-card-title {
281
+ font-family: var(--font-display);
282
+ font-size: 1rem;
283
+ font-weight: 600;
284
+ color: var(--on-surface);
285
+ margin-bottom: 0.5rem;
286
+ }
287
+ .editorial .ed-project-card-narrative {
288
+ font-size: 0.8125rem;
289
+ color: var(--on-surface-variant);
290
+ line-height: 1.5;
291
+ margin-bottom: 0.75rem;
292
+ display: -webkit-box;
293
+ -webkit-line-clamp: 3;
294
+ -webkit-box-orient: vertical;
295
+ overflow: hidden;
296
+ }
297
+ .editorial .ed-project-card-stats {
298
+ display: flex;
299
+ gap: 1rem;
300
+ font-family: var(--font-mono);
301
+ font-size: 0.6875rem;
302
+ color: var(--on-surface-variant);
303
+ margin-bottom: 0.75rem;
304
+ }
305
+ .editorial .ed-project-card-stats strong {
306
+ color: var(--on-surface);
307
+ font-weight: 600;
308
+ }
309
+ .editorial .ed-chip-list {
310
+ display: flex;
311
+ flex-wrap: wrap;
312
+ gap: 0.25rem;
313
+ margin-top: 0.5rem;
314
+ }
315
+
316
+ /* ── Project header ── */
317
+ .editorial .ed-project-header {
318
+ margin-bottom: 1.5rem;
319
+ }
320
+ .editorial .ed-project-links {
321
+ display: flex;
322
+ gap: 1rem;
323
+ margin-top: 0.5rem;
324
+ }
325
+ .editorial .ed-project-link {
326
+ display: inline-flex;
327
+ align-items: center;
328
+ gap: 0.375rem;
329
+ font-family: var(--font-mono);
330
+ font-size: 0.75rem;
331
+ color: var(--primary);
332
+ }
333
+
334
+ /* ── Screenshot ── */
335
+ .editorial .ed-screenshot-card {
336
+ margin-bottom: 1.5rem;
337
+ border-radius: var(--radius-md);
338
+ border: 1px solid var(--ghost);
339
+ overflow: hidden;
340
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
341
+ }
342
+ .editorial .ed-screenshot-img {
343
+ width: 100%;
344
+ height: auto;
345
+ display: block;
346
+ }
347
+
348
+ /* ── Decisions ── */
349
+ .editorial .ed-decision-item {
350
+ display: flex;
351
+ align-items: flex-start;
352
+ gap: 0.75rem;
353
+ padding: 0.625rem 0;
354
+ border-bottom: 1px solid var(--ghost);
355
+ }
356
+ .editorial .ed-decision-item:last-child {
357
+ border-bottom: none;
358
+ }
359
+ .editorial .ed-decision-num {
360
+ font-family: var(--font-mono);
361
+ font-size: 0.75rem;
362
+ font-weight: 600;
363
+ color: var(--primary);
364
+ min-width: 1.5rem;
365
+ text-align: center;
366
+ }
367
+ .editorial .ed-decision-text {
368
+ font-size: 0.875rem;
369
+ color: var(--on-surface);
370
+ line-height: 1.5;
371
+ }
372
+
373
+ /* ── Source breakdown ── */
374
+ .editorial .ed-source-item {
375
+ display: flex;
376
+ align-items: center;
377
+ gap: 0.75rem;
378
+ padding: 0.5rem 0;
379
+ border-bottom: 1px solid var(--ghost);
380
+ }
381
+ .editorial .ed-source-item:last-child {
382
+ border-bottom: none;
383
+ }
384
+ .editorial .ed-source-name {
385
+ font-family: var(--font-mono);
386
+ font-size: 0.75rem;
387
+ color: var(--on-surface);
388
+ min-width: 5rem;
389
+ }
390
+ .editorial .ed-source-bar-wrap {
391
+ flex: 1;
392
+ }
393
+ .editorial .ed-source-bar {
394
+ height: 6px;
395
+ background: var(--surface-low);
396
+ border-radius: 3px;
397
+ overflow: hidden;
398
+ }
399
+ .editorial .ed-source-fill {
400
+ height: 100%;
401
+ background: var(--primary);
402
+ border-radius: 3px;
403
+ }
404
+ .editorial .ed-source-count {
405
+ font-family: var(--font-mono);
406
+ font-size: 0.6875rem;
407
+ color: var(--on-surface-variant);
408
+ min-width: 5rem;
409
+ text-align: right;
410
+ }
411
+
412
+ /* ── Phases ── */
413
+ .editorial .ed-phases {
414
+ position: relative;
415
+ padding-left: 2rem;
416
+ }
417
+ .editorial .ed-phases::before {
418
+ content: '';
419
+ position: absolute;
420
+ left: 0.75rem;
421
+ top: 0;
422
+ bottom: 0;
423
+ width: 2px;
424
+ background: var(--ghost);
425
+ border-radius: 1px;
426
+ }
427
+ .editorial .ed-phase-item {
428
+ display: flex;
429
+ gap: 1rem;
430
+ padding-bottom: 1.25rem;
431
+ position: relative;
432
+ }
433
+ .editorial .ed-phase-item:last-child {
434
+ padding-bottom: 0;
435
+ }
436
+ .editorial .ed-phase-marker {
437
+ position: absolute;
438
+ left: -2rem;
439
+ top: 0;
440
+ width: 1.5rem;
441
+ height: 1.5rem;
442
+ border-radius: 50%;
443
+ background: var(--primary);
444
+ color: var(--on-primary);
445
+ font-family: var(--font-mono);
446
+ font-size: 0.625rem;
447
+ font-weight: 700;
448
+ display: flex;
449
+ align-items: center;
450
+ justify-content: center;
451
+ }
452
+ .editorial .ed-phase-title {
453
+ font-family: var(--font-display);
454
+ font-size: 0.875rem;
455
+ font-weight: 600;
456
+ color: var(--on-surface);
457
+ }
458
+ .editorial .ed-phase-desc {
459
+ font-size: 0.8125rem;
460
+ color: var(--on-surface-variant);
461
+ line-height: 1.5;
462
+ margin-top: 0.25rem;
463
+ }
464
+
465
+ /* ── Session cards (project page) ── */
466
+ .editorial .ed-sessions-grid {
467
+ display: grid;
468
+ grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
469
+ gap: 0.75rem;
470
+ }
471
+ .editorial .ed-session-card {
472
+ display: block;
473
+ background: var(--surface-lowest);
474
+ border: 1px solid var(--ghost);
475
+ border-radius: var(--radius-md);
476
+ padding: 1rem;
477
+ text-decoration: none;
478
+ color: inherit;
479
+ transition: box-shadow 0.15s, border-color 0.15s;
480
+ }
481
+ .editorial .ed-session-card:hover {
482
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
483
+ border-color: var(--primary);
484
+ text-decoration: none;
485
+ }
486
+ .editorial .ed-session-card-title {
487
+ font-family: var(--font-display);
488
+ font-size: 0.875rem;
489
+ font-weight: 600;
490
+ color: var(--on-surface);
491
+ margin-bottom: 0.375rem;
492
+ display: -webkit-box;
493
+ -webkit-line-clamp: 2;
494
+ -webkit-box-orient: vertical;
495
+ overflow: hidden;
496
+ }
497
+ .editorial .ed-session-card-meta {
498
+ display: flex;
499
+ gap: 0.75rem;
500
+ font-family: var(--font-mono);
501
+ font-size: 0.6875rem;
502
+ color: var(--on-surface-variant);
503
+ margin-bottom: 0.5rem;
504
+ }
505
+ .editorial .ed-session-card-take {
506
+ font-size: 0.8125rem;
507
+ color: var(--on-surface-variant);
508
+ line-height: 1.5;
509
+ margin-bottom: 0.5rem;
510
+ display: -webkit-box;
511
+ -webkit-line-clamp: 2;
512
+ -webkit-box-orient: vertical;
513
+ overflow: hidden;
514
+ }
515
+
516
+ /* ── Session page ── */
517
+ .editorial .ed-session-header {
518
+ margin-bottom: 1.5rem;
519
+ }
520
+ .editorial .ed-session-title {
521
+ font-family: var(--font-display);
522
+ font-size: 1.5rem;
523
+ font-weight: 700;
524
+ color: var(--on-surface);
525
+ margin-bottom: 0.5rem;
526
+ }
527
+ .editorial .ed-session-meta {
528
+ display: flex;
529
+ flex-wrap: wrap;
530
+ gap: 0.5rem 1rem;
531
+ font-size: 0.8125rem;
532
+ color: var(--on-surface-variant);
533
+ }
534
+ .editorial .ed-meta-item {
535
+ font-family: var(--font-mono);
536
+ font-size: 0.75rem;
537
+ }
538
+ .editorial .ed-meta-badge {
539
+ font-family: var(--font-mono);
540
+ font-size: 0.6875rem;
541
+ background: var(--surface-low);
542
+ padding: 0.125rem 0.5rem;
543
+ border-radius: var(--radius-sm);
544
+ color: var(--on-surface-variant);
545
+ }
546
+
547
+ /* Dev take */
548
+ .editorial .ed-dev-take {
549
+ border-left: 3px solid var(--primary);
550
+ padding: 0.75rem 1rem;
551
+ background: var(--surface-low);
552
+ border-radius: 0 var(--radius-md) var(--radius-md) 0;
553
+ margin-bottom: 2rem;
554
+ }
555
+ .editorial .ed-dev-take-label {
556
+ font-family: var(--font-mono);
557
+ font-size: 0.625rem;
558
+ text-transform: uppercase;
559
+ letter-spacing: 0.05em;
560
+ color: var(--primary);
561
+ margin-bottom: 0.25rem;
562
+ font-weight: 600;
563
+ }
564
+ .editorial .ed-dev-take p {
565
+ color: var(--on-surface);
566
+ font-style: italic;
567
+ line-height: 1.6;
568
+ font-size: 0.9375rem;
569
+ margin: 0;
570
+ }
571
+
572
+ /* ── Two-column layout (session) ── */
573
+ .editorial .ed-content-layout {
574
+ display: grid;
575
+ grid-template-columns: 1fr 260px;
576
+ gap: 2rem;
577
+ }
578
+
579
+ /* ── Main column ── */
580
+ .editorial .ed-main {
581
+ min-width: 0;
582
+ }
583
+
584
+ /* ── Highlights ── */
585
+ .editorial .ed-highlights-list {
586
+ list-style: none;
587
+ padding: 0;
588
+ }
589
+ .editorial .ed-highlights-list li {
590
+ position: relative;
591
+ padding: 0.5rem 0 0.5rem 1.25rem;
592
+ border-bottom: 1px solid var(--ghost);
593
+ font-size: 0.875rem;
594
+ color: var(--on-surface);
595
+ line-height: 1.5;
596
+ }
597
+ .editorial .ed-highlights-list li:last-child {
598
+ border-bottom: none;
599
+ }
600
+ .editorial .ed-highlights-list li::before {
601
+ content: '';
602
+ position: absolute;
603
+ left: 0;
604
+ top: 0.875rem;
605
+ width: 6px;
606
+ height: 6px;
607
+ border-radius: 50%;
608
+ background: var(--primary);
609
+ }
610
+
611
+ /* ── Beats ── */
612
+ .editorial .ed-beats {
613
+ display: flex;
614
+ flex-direction: column;
615
+ }
616
+ .editorial .ed-beat {
617
+ display: flex;
618
+ gap: 0.75rem;
619
+ padding: 0.75rem 0;
620
+ border-bottom: 1px solid var(--ghost);
621
+ }
622
+ .editorial .ed-beat:last-child {
623
+ border-bottom: none;
624
+ }
625
+ .editorial .ed-beat-number {
626
+ font-family: var(--font-mono);
627
+ font-size: 0.75rem;
628
+ font-weight: 600;
629
+ color: var(--on-primary);
630
+ background: var(--primary);
631
+ min-width: 1.5rem;
632
+ height: 1.5rem;
633
+ border-radius: 50%;
634
+ display: flex;
635
+ align-items: center;
636
+ justify-content: center;
637
+ flex-shrink: 0;
638
+ }
639
+ .editorial .ed-beat-content {
640
+ flex: 1;
641
+ min-width: 0;
642
+ }
643
+ .editorial .ed-beat-title {
644
+ font-family: var(--font-display);
645
+ font-size: 0.875rem;
646
+ font-weight: 600;
647
+ color: var(--on-surface);
648
+ }
649
+ .editorial .ed-beat-body {
650
+ color: var(--on-surface-variant);
651
+ font-size: 0.8125rem;
652
+ margin-top: 0.25rem;
653
+ line-height: 1.5;
654
+ }
655
+
656
+ /* ── Q&A ── */
657
+ .editorial .ed-qa-list {
658
+ display: flex;
659
+ flex-direction: column;
660
+ gap: 0.75rem;
661
+ }
662
+ .editorial .ed-qa-pair {
663
+ background: var(--surface-low);
664
+ border: 1px solid var(--ghost);
665
+ border-radius: var(--radius-md);
666
+ padding: 1rem;
667
+ }
668
+ .editorial .ed-qa-question {
669
+ font-weight: 600;
670
+ color: var(--on-surface);
671
+ margin-bottom: 0.5rem;
672
+ font-size: 0.875rem;
673
+ }
674
+ .editorial .ed-qa-answer {
675
+ color: var(--on-surface-variant);
676
+ font-size: 0.8125rem;
677
+ line-height: 1.6;
678
+ }
679
+
680
+ /* ── Agent summary ── */
681
+ .editorial .ed-agent-row {
682
+ display: flex;
683
+ align-items: center;
684
+ gap: 0.75rem;
685
+ padding: 0.5rem 0;
686
+ border-bottom: 1px solid var(--ghost);
687
+ }
688
+ .editorial .ed-agent-row:last-child {
689
+ border-bottom: none;
690
+ }
691
+ .editorial .ed-agent-label {
692
+ font-family: var(--font-mono);
693
+ font-size: 0.75rem;
694
+ color: var(--on-surface);
695
+ min-width: 8rem;
696
+ }
697
+ .editorial .ed-agent-bar-track {
698
+ flex: 1;
699
+ height: 6px;
700
+ background: var(--surface-low);
701
+ border-radius: 3px;
702
+ overflow: hidden;
703
+ }
704
+ .editorial .ed-agent-bar-fill {
705
+ height: 100%;
706
+ background: var(--primary);
707
+ border-radius: 3px;
708
+ transition: width 0.6s ease-out;
709
+ }
710
+ .editorial .ed-agent-meta {
711
+ font-family: var(--font-mono);
712
+ font-size: 0.6875rem;
713
+ color: var(--on-surface-variant);
714
+ min-width: 7rem;
715
+ text-align: right;
716
+ }
717
+
718
+ /* ── Sidebar (session) ── */
719
+ .editorial .ed-sidebar {
720
+ display: flex;
721
+ flex-direction: column;
722
+ gap: 1rem;
723
+ }
724
+ .editorial .ed-sidebar-card {
725
+ background: var(--surface-lowest);
726
+ border: 1px solid var(--ghost);
727
+ border-radius: var(--radius-md);
728
+ padding: 1rem;
729
+ }
730
+ .editorial .ed-sidebar-card-title {
731
+ font-family: var(--font-mono);
732
+ font-size: 0.6875rem;
733
+ text-transform: uppercase;
734
+ letter-spacing: 0.05em;
735
+ color: var(--primary);
736
+ margin-bottom: 0.75rem;
737
+ font-weight: 600;
738
+ }
739
+ .editorial .ed-sidebar-row {
740
+ display: flex;
741
+ justify-content: space-between;
742
+ align-items: center;
743
+ padding: 0.375rem 0;
744
+ border-bottom: 1px solid var(--ghost);
745
+ font-size: 0.8125rem;
746
+ }
747
+ .editorial .ed-sidebar-row:last-child {
748
+ border-bottom: none;
749
+ }
750
+ .editorial .ed-sidebar-row-name {
751
+ font-family: var(--font-mono);
752
+ font-size: 0.75rem;
753
+ color: var(--on-surface);
754
+ }
755
+ .editorial .ed-sidebar-row-value {
756
+ font-family: var(--font-mono);
757
+ font-size: 0.75rem;
758
+ color: var(--on-surface-variant);
759
+ }
760
+ .editorial .ed-sidebar-row--file {
761
+ flex-direction: column;
762
+ align-items: flex-start;
763
+ gap: 0.125rem;
764
+ }
765
+ .editorial .ed-sidebar-file-path {
766
+ font-family: var(--font-mono);
767
+ font-size: 0.6875rem;
768
+ color: var(--on-surface);
769
+ overflow: hidden;
770
+ text-overflow: ellipsis;
771
+ white-space: nowrap;
772
+ max-width: 100%;
773
+ }
774
+ .editorial .ed-sidebar-file-diff {
775
+ font-family: var(--font-mono);
776
+ font-size: 0.625rem;
777
+ }
778
+ .editorial .ed-file-adds {
779
+ color: var(--green);
780
+ }
781
+ .editorial .ed-file-dels {
782
+ color: var(--error);
783
+ margin-left: 0.25rem;
784
+ }
785
+
786
+ /* ── Responsive ── */
787
+ @media (max-width: 768px) {
788
+ .editorial.heyiam-portfolio,
789
+ .editorial.heyiam-project,
790
+ .editorial.heyiam-session {
791
+ padding: 1.5rem 1rem;
792
+ }
793
+ .editorial .ed-hero-profile {
794
+ flex-direction: column;
795
+ align-items: center;
796
+ text-align: center;
797
+ }
798
+ .editorial .ed-hero-bio {
799
+ max-width: 100%;
800
+ }
801
+ .editorial .ed-contact-row {
802
+ justify-content: center;
803
+ }
804
+ .editorial .ed-stats-grid {
805
+ grid-template-columns: repeat(2, 1fr);
806
+ }
807
+ .editorial .ed-stat-card--leverage {
808
+ grid-column: span 2;
809
+ }
810
+ .editorial .ed-projects-grid {
811
+ grid-template-columns: 1fr;
812
+ }
813
+ .editorial .ed-sessions-grid {
814
+ grid-template-columns: 1fr;
815
+ }
816
+ .editorial .ed-content-layout {
817
+ grid-template-columns: 1fr;
818
+ }
819
+ .editorial .ed-sidebar {
820
+ order: -1;
821
+ }
822
+ }