heyiam 0.2.29 → 0.3.1

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 (186) hide show
  1. package/README.md +45 -0
  2. package/dist/auth.js +29 -3
  3. package/dist/config.js +10 -1
  4. package/dist/db.js +0 -1
  5. package/dist/export.js +124 -27
  6. package/dist/format-utils.js +5 -0
  7. package/dist/github.js +381 -0
  8. package/dist/index.js +168 -0
  9. package/dist/mount.js +300 -102
  10. package/dist/parsers/claude.js +2 -28
  11. package/dist/parsers/codex.js +2 -26
  12. package/dist/parsers/cursor.js +2 -26
  13. package/dist/parsers/duration.js +35 -0
  14. package/dist/parsers/gemini.js +2 -20
  15. package/dist/parsers/index.js +22 -3
  16. package/dist/parsers/types.js +0 -1
  17. package/dist/public/assets/index-Coilyhtr.css +1 -0
  18. package/dist/public/assets/index-D0noVMFu.js +44 -0
  19. package/dist/public/index.html +2 -2
  20. package/dist/redact.js +4 -104
  21. package/dist/render/build-render-data.js +9 -2
  22. package/dist/render/index.js +32 -5
  23. package/dist/render/liquid.js +147 -7
  24. package/dist/render/mock-data.js +303 -0
  25. package/dist/render/templates/aurora/portfolio.liquid +192 -0
  26. package/dist/render/templates/aurora/project.liquid +260 -0
  27. package/dist/render/templates/aurora/session.liquid +223 -0
  28. package/dist/render/templates/aurora/styles.css +1184 -0
  29. package/dist/render/templates/bauhaus/portfolio.liquid +169 -0
  30. package/dist/render/templates/bauhaus/project.liquid +300 -0
  31. package/dist/render/templates/bauhaus/session.liquid +333 -0
  32. package/dist/render/templates/bauhaus/styles.css +1645 -0
  33. package/dist/render/templates/blueprint/portfolio.liquid +153 -0
  34. package/dist/render/templates/blueprint/project.liquid +286 -0
  35. package/dist/render/templates/blueprint/session.liquid +248 -0
  36. package/dist/render/templates/blueprint/styles.css +1289 -0
  37. package/dist/render/templates/canvas/portfolio.liquid +203 -0
  38. package/dist/render/templates/canvas/project.liquid +235 -0
  39. package/dist/render/templates/canvas/session.liquid +223 -0
  40. package/dist/render/templates/canvas/styles.css +1440 -0
  41. package/dist/render/templates/carbon/portfolio.liquid +160 -0
  42. package/dist/render/templates/carbon/project.liquid +249 -0
  43. package/dist/render/templates/carbon/session.liquid +190 -0
  44. package/dist/render/templates/carbon/styles.css +1097 -0
  45. package/dist/render/templates/chalk/portfolio.liquid +189 -0
  46. package/dist/render/templates/chalk/project.liquid +245 -0
  47. package/dist/render/templates/chalk/session.liquid +215 -0
  48. package/dist/render/templates/chalk/styles.css +1161 -0
  49. package/dist/render/templates/circuit/portfolio.liquid +152 -0
  50. package/dist/render/templates/circuit/project.liquid +247 -0
  51. package/dist/render/templates/circuit/session.liquid +205 -0
  52. package/dist/render/templates/circuit/styles.css +1409 -0
  53. package/dist/render/templates/cosmos/portfolio.liquid +222 -0
  54. package/dist/render/templates/cosmos/project.liquid +327 -0
  55. package/dist/render/templates/cosmos/session.liquid +239 -0
  56. package/dist/render/templates/cosmos/styles.css +1157 -0
  57. package/dist/render/templates/daylight/portfolio.liquid +207 -0
  58. package/dist/render/templates/daylight/project.liquid +229 -0
  59. package/dist/render/templates/daylight/session.liquid +219 -0
  60. package/dist/render/templates/daylight/styles.css +1315 -0
  61. package/dist/render/templates/editorial/portfolio.liquid +110 -0
  62. package/dist/render/templates/editorial/project.liquid +202 -0
  63. package/dist/render/templates/editorial/session.liquid +171 -0
  64. package/dist/render/templates/editorial/styles.css +826 -0
  65. package/dist/render/templates/ember/portfolio.liquid +306 -0
  66. package/dist/render/templates/ember/project.liquid +232 -0
  67. package/dist/render/templates/ember/session.liquid +202 -0
  68. package/dist/render/templates/ember/styles.css +1289 -0
  69. package/dist/render/templates/glacier/portfolio.liquid +261 -0
  70. package/dist/render/templates/glacier/project.liquid +288 -0
  71. package/dist/render/templates/glacier/session.liquid +217 -0
  72. package/dist/render/templates/glacier/styles.css +1204 -0
  73. package/dist/render/templates/grid/portfolio.liquid +255 -0
  74. package/dist/render/templates/grid/project.liquid +306 -0
  75. package/dist/render/templates/grid/session.liquid +260 -0
  76. package/dist/render/templates/grid/styles.css +1445 -0
  77. package/dist/render/templates/kinetic/portfolio.liquid +158 -0
  78. package/dist/render/templates/kinetic/project.liquid +242 -0
  79. package/dist/render/templates/kinetic/session.liquid +228 -0
  80. package/dist/render/templates/kinetic/styles.css +948 -0
  81. package/dist/render/templates/meridian/portfolio.liquid +243 -0
  82. package/dist/render/templates/meridian/project.liquid +376 -0
  83. package/dist/render/templates/meridian/session.liquid +298 -0
  84. package/dist/render/templates/meridian/styles.css +1375 -0
  85. package/dist/render/templates/minimal/portfolio.liquid +71 -0
  86. package/dist/render/templates/minimal/project.liquid +154 -0
  87. package/dist/render/templates/minimal/session.liquid +140 -0
  88. package/dist/render/templates/minimal/styles.css +529 -0
  89. package/dist/render/templates/mono/portfolio.liquid +281 -0
  90. package/dist/render/templates/mono/project.liquid +275 -0
  91. package/dist/render/templates/mono/session.liquid +276 -0
  92. package/dist/render/templates/mono/styles.css +1022 -0
  93. package/dist/render/templates/neon/portfolio.liquid +207 -0
  94. package/dist/render/templates/neon/project.liquid +225 -0
  95. package/dist/render/templates/neon/session.liquid +195 -0
  96. package/dist/render/templates/neon/styles.css +1271 -0
  97. package/dist/render/templates/noir/portfolio.liquid +137 -0
  98. package/dist/render/templates/noir/project.liquid +220 -0
  99. package/dist/render/templates/noir/session.liquid +241 -0
  100. package/dist/render/templates/noir/styles.css +1229 -0
  101. package/dist/render/templates/obsidian/portfolio.liquid +247 -0
  102. package/dist/render/templates/obsidian/project.liquid +280 -0
  103. package/dist/render/templates/obsidian/session.liquid +241 -0
  104. package/dist/render/templates/obsidian/styles.css +1407 -0
  105. package/dist/render/templates/paper/portfolio.liquid +257 -0
  106. package/dist/render/templates/paper/project.liquid +235 -0
  107. package/dist/render/templates/paper/session.liquid +271 -0
  108. package/dist/render/templates/paper/styles.css +1513 -0
  109. package/dist/render/templates/parallax/portfolio.liquid +295 -0
  110. package/dist/render/templates/parallax/project.liquid +275 -0
  111. package/dist/render/templates/parallax/session.liquid +295 -0
  112. package/dist/render/templates/parallax/styles.css +1880 -0
  113. package/dist/render/templates/parchment/portfolio.liquid +280 -0
  114. package/dist/render/templates/parchment/project.liquid +289 -0
  115. package/dist/render/templates/parchment/session.liquid +346 -0
  116. package/dist/render/templates/parchment/styles.css +1401 -0
  117. package/dist/render/templates/partials/_beats.liquid +16 -0
  118. package/dist/render/templates/partials/_breadcrumb.liquid +9 -0
  119. package/dist/render/templates/partials/_footer.liquid +7 -0
  120. package/dist/render/templates/partials/_growth-chart.liquid +7 -0
  121. package/dist/render/templates/partials/_key-decisions.liquid +20 -0
  122. package/dist/render/templates/partials/_links.liquid +16 -0
  123. package/dist/render/templates/partials/_narrative.liquid +8 -0
  124. package/dist/render/templates/partials/_phases.liquid +20 -0
  125. package/dist/render/templates/partials/_portfolio-header.liquid +20 -0
  126. package/dist/render/templates/partials/_portfolio-projects.liquid +16 -0
  127. package/dist/render/templates/partials/_portfolio-stats.liquid +19 -0
  128. package/dist/render/templates/partials/_qa.liquid +13 -0
  129. package/dist/render/templates/partials/_screenshot.liquid +15 -0
  130. package/dist/render/templates/partials/_session-cards.liquid +30 -0
  131. package/dist/render/templates/partials/_session-header.liquid +39 -0
  132. package/dist/render/templates/partials/_session-sidebar.liquid +30 -0
  133. package/dist/render/templates/partials/_skills.liquid +12 -0
  134. package/dist/render/templates/partials/_source-breakdown.liquid +22 -0
  135. package/dist/render/templates/partials/_stats.liquid +38 -0
  136. package/dist/render/templates/partials/_work-timeline.liquid +7 -0
  137. package/dist/render/templates/project.liquid +7 -4
  138. package/dist/render/templates/radar/portfolio.liquid +223 -0
  139. package/dist/render/templates/radar/project.liquid +278 -0
  140. package/dist/render/templates/radar/session.liquid +300 -0
  141. package/dist/render/templates/radar/styles.css +1055 -0
  142. package/dist/render/templates/showcase/portfolio.liquid +221 -0
  143. package/dist/render/templates/showcase/project.liquid +237 -0
  144. package/dist/render/templates/showcase/session.liquid +210 -0
  145. package/dist/render/templates/showcase/styles.css +1284 -0
  146. package/dist/render/templates/signal/portfolio.liquid +217 -0
  147. package/dist/render/templates/signal/project.liquid +278 -0
  148. package/dist/render/templates/signal/session.liquid +282 -0
  149. package/dist/render/templates/signal/styles.css +1401 -0
  150. package/dist/render/templates/strata/portfolio.liquid +180 -0
  151. package/dist/render/templates/strata/project.liquid +282 -0
  152. package/dist/render/templates/strata/session.liquid +261 -0
  153. package/dist/render/templates/strata/styles.css +1354 -0
  154. package/dist/render/templates/styles.css +1190 -0
  155. package/dist/render/templates/terminal/portfolio.liquid +102 -0
  156. package/dist/render/templates/terminal/project.liquid +161 -0
  157. package/dist/render/templates/terminal/session.liquid +145 -0
  158. package/dist/render/templates/terminal/styles.css +497 -0
  159. package/dist/render/templates/verdant/portfolio.liquid +321 -0
  160. package/dist/render/templates/verdant/project.liquid +309 -0
  161. package/dist/render/templates/verdant/session.liquid +237 -0
  162. package/dist/render/templates/verdant/styles.css +1261 -0
  163. package/dist/render/templates/zen/portfolio.liquid +124 -0
  164. package/dist/render/templates/zen/project.liquid +187 -0
  165. package/dist/render/templates/zen/session.liquid +203 -0
  166. package/dist/render/templates/zen/styles.css +1211 -0
  167. package/dist/render/templates.js +90 -0
  168. package/dist/routes/auth.js +7 -3
  169. package/dist/routes/context.js +17 -10
  170. package/dist/routes/delete.js +195 -0
  171. package/dist/routes/enhance.js +57 -40
  172. package/dist/routes/export.js +14 -4
  173. package/dist/routes/github.js +254 -0
  174. package/dist/routes/index.js +2 -0
  175. package/dist/routes/portfolio-render-data.js +160 -0
  176. package/dist/routes/preview.js +555 -108
  177. package/dist/routes/projects.js +61 -24
  178. package/dist/routes/publish.js +320 -31
  179. package/dist/routes/settings.js +194 -1
  180. package/dist/routes/sse.js +9 -0
  181. package/dist/search.js +6 -0
  182. package/dist/server.js +11 -3
  183. package/dist/settings.js +112 -9
  184. package/package.json +3 -4
  185. package/dist/public/assets/index-CC9G8EF1.js +0 -21
  186. package/dist/public/assets/index-Dalqz2mC.css +0 -1
@@ -0,0 +1,1097 @@
1
+ /* ── Carbon Design Tokens ── */
2
+
3
+ body { background: var(--carbon-bg); color: var(--carbon-text); }
4
+ .carbon {
5
+ --carbon-bg: #171717;
6
+ --carbon-surface: #1f1f1f;
7
+ --carbon-card: #262626;
8
+ --carbon-border: rgba(148, 163, 184, 0.20);
9
+ --carbon-border-hover: rgba(148, 163, 184, 0.45);
10
+ --carbon-accent: #94a3b8;
11
+ --carbon-accent-dim: rgba(148, 163, 184, 0.6);
12
+ --carbon-text: #d4d4d8;
13
+ --carbon-text-secondary: #a1a1aa;
14
+ --carbon-text-muted: #71717a;
15
+ --carbon-white: #e4e4e7;
16
+
17
+ --font-display: 'Space Grotesk', sans-serif;
18
+ --font-body: 'Inter', sans-serif;
19
+ --font-mono: 'IBM Plex Mono', monospace;
20
+
21
+ --radius-sm: 4px;
22
+ --radius-md: 6px;
23
+
24
+ font-family: var(--font-body);
25
+ color: var(--carbon-text);
26
+ background-color: var(--carbon-bg);
27
+ line-height: 1.6;
28
+ -webkit-font-smoothing: antialiased;
29
+ -moz-osx-font-smoothing: grayscale;
30
+ max-width: 940px;
31
+ margin: 0 auto;
32
+ padding: 2rem 1.5rem;
33
+ }
34
+
35
+ .carbon a { color: var(--carbon-accent); text-decoration: none; }
36
+ .carbon a:hover { color: var(--carbon-white); }
37
+ .carbon a:visited { color: var(--carbon-accent); }
38
+ .carbon .breadcrumb a:visited { color: var(--carbon-text-muted); }
39
+ .carbon .card__title a:visited { color: var(--carbon-white); }
40
+ .carbon .session-row:visited { color: inherit; }
41
+ .carbon .carbon-footer a:visited { color: var(--carbon-accent); }
42
+
43
+ /* ── Focus styles ── */
44
+ .carbon *:focus-visible {
45
+ outline: 2px solid var(--carbon-accent);
46
+ outline-offset: 2px;
47
+ }
48
+
49
+ /* ── Brushed Metal Texture ── */
50
+ .carbon .brushed-header {
51
+ position: relative;
52
+ overflow: hidden;
53
+ }
54
+ .carbon .brushed-header::before {
55
+ content: '';
56
+ position: absolute;
57
+ inset: 0;
58
+ background: repeating-linear-gradient(
59
+ 135deg,
60
+ transparent,
61
+ transparent 1px,
62
+ rgba(148, 163, 184, 0.03) 1px,
63
+ rgba(148, 163, 184, 0.03) 2px
64
+ );
65
+ pointer-events: none;
66
+ }
67
+
68
+ /* ── Fade-in Animation ── */
69
+ .carbon .fade-in {
70
+ opacity: 0;
71
+ transform: translateY(12px);
72
+ transition: opacity 0.5s ease, transform 0.5s ease;
73
+ }
74
+ .carbon .fade-in.visible {
75
+ opacity: 1;
76
+ transform: translateY(0);
77
+ }
78
+
79
+ @media (prefers-reduced-motion: reduce) {
80
+ .carbon .fade-in {
81
+ opacity: 1;
82
+ transform: none;
83
+ transition: none;
84
+ }
85
+ .carbon .card,
86
+ .carbon .session-row,
87
+ .carbon .sidebar-card {
88
+ transition: none !important;
89
+ }
90
+ }
91
+
92
+ /* ── Breadcrumb ── */
93
+ .carbon .breadcrumb {
94
+ font-family: var(--font-mono);
95
+ font-size: 0.8125rem;
96
+ color: var(--carbon-text-muted);
97
+ margin-block-end: 1.5rem;
98
+ }
99
+ .carbon .breadcrumb a { color: var(--carbon-text-muted); }
100
+ .carbon .breadcrumb a:hover { color: var(--carbon-accent); }
101
+ .carbon .breadcrumb__sep { margin-inline: 0.375rem; opacity: 0.4; }
102
+
103
+ /* ── Profile Header (Portfolio) ── */
104
+ .carbon .profile {
105
+ margin-block-end: 3rem;
106
+ }
107
+
108
+ .carbon .profile__photo {
109
+ width: 100px;
110
+ height: 130px;
111
+ border-radius: 6px;
112
+ object-fit: cover;
113
+ object-position: 55% 10%;
114
+ border: 2px solid var(--carbon-border);
115
+ margin-block-end: 1rem;
116
+ filter: grayscale(0.8) contrast(1.1);
117
+ }
118
+
119
+ .carbon .profile__name {
120
+ font-family: var(--font-display);
121
+ font-size: 2.25rem;
122
+ font-weight: 700;
123
+ color: var(--carbon-white);
124
+ letter-spacing: -0.03em;
125
+ text-shadow: 0 1px 2px rgba(0,0,0,0.5), 0 1px 0 rgba(148,163,184,0.1);
126
+ }
127
+
128
+ .carbon .profile__bio {
129
+ font-size: 1rem;
130
+ color: var(--carbon-text-secondary);
131
+ max-width: 600px;
132
+ margin-block-start: 0.5rem;
133
+ line-height: 1.7;
134
+ }
135
+
136
+ .carbon .profile__location {
137
+ font-family: var(--font-mono);
138
+ font-size: 0.8125rem;
139
+ color: var(--carbon-text-muted);
140
+ margin-block-start: 0.75rem;
141
+ }
142
+
143
+ .carbon .profile__links {
144
+ display: flex;
145
+ flex-wrap: wrap;
146
+ gap: 0.75rem;
147
+ margin-block-start: 1rem;
148
+ align-items: center;
149
+ }
150
+
151
+ .carbon .profile__links a {
152
+ display: inline-flex;
153
+ align-items: center;
154
+ gap: 0.375rem;
155
+ font-family: var(--font-mono);
156
+ font-size: 0.8125rem;
157
+ color: var(--carbon-text-muted);
158
+ text-decoration: none;
159
+ padding: 0.25rem 0.5rem;
160
+ border-radius: var(--radius-sm);
161
+ border: 1px solid transparent;
162
+ transition: color 0.2s, border-color 0.2s;
163
+ }
164
+
165
+ .carbon .profile__links a:hover {
166
+ color: var(--carbon-accent);
167
+ border-color: var(--carbon-border-hover);
168
+ }
169
+
170
+ /* ── Stats Bar ── */
171
+ .carbon .stats-bar {
172
+ display: grid;
173
+ grid-template-columns: repeat(4, 1fr);
174
+ gap: 1px;
175
+ background: var(--carbon-border);
176
+ border-radius: var(--radius-md);
177
+ overflow: hidden;
178
+ margin-block-end: 3rem;
179
+ }
180
+
181
+ .carbon .stat-cell {
182
+ background: var(--carbon-surface);
183
+ padding: 1.25rem 1rem;
184
+ text-align: center;
185
+ }
186
+
187
+ .carbon .stat-cell__value {
188
+ font-family: var(--font-display);
189
+ font-size: 1.75rem;
190
+ font-weight: 700;
191
+ color: var(--carbon-white);
192
+ text-shadow: 0 1px 0 rgba(148,163,184,0.15), 0 -1px 0 rgba(0,0,0,0.4);
193
+ line-height: 1.2;
194
+ }
195
+
196
+ .carbon .stat-cell__label {
197
+ font-family: var(--font-mono);
198
+ font-size: 0.6875rem;
199
+ color: var(--carbon-text-muted);
200
+ text-transform: uppercase;
201
+ letter-spacing: 0.08em;
202
+ margin-block-start: 0.25rem;
203
+ }
204
+
205
+ .carbon .stat-cell--leverage {
206
+ grid-column: span 2;
207
+ display: flex;
208
+ justify-content: space-evenly;
209
+ gap: 1rem;
210
+ }
211
+
212
+ .carbon .leverage-cell {
213
+ text-align: center;
214
+ }
215
+
216
+ .carbon .leverage-cell__value {
217
+ font-family: var(--font-display);
218
+ font-size: 1.375rem;
219
+ font-weight: 700;
220
+ color: var(--carbon-white);
221
+ text-shadow: 0 1px 0 rgba(148,163,184,0.15), 0 -1px 0 rgba(0,0,0,0.4);
222
+ line-height: 1.2;
223
+ }
224
+
225
+ .carbon .leverage-cell__value--accent {
226
+ color: var(--carbon-accent);
227
+ }
228
+
229
+ .carbon .leverage-cell__label {
230
+ font-family: var(--font-mono);
231
+ font-size: 0.625rem;
232
+ color: var(--carbon-text-muted);
233
+ text-transform: uppercase;
234
+ letter-spacing: 0.08em;
235
+ margin-block-start: 0.25rem;
236
+ }
237
+
238
+ /* ── Section Headings ── */
239
+ .carbon .section-heading {
240
+ font-family: var(--font-display);
241
+ font-size: 1.25rem;
242
+ font-weight: 600;
243
+ color: var(--carbon-white);
244
+ margin-block-end: 1.25rem;
245
+ letter-spacing: -0.01em;
246
+ }
247
+
248
+ /* ── Project Cards (Portfolio) ── */
249
+ .carbon .projects-grid {
250
+ display: flex;
251
+ flex-direction: column;
252
+ gap: 1rem;
253
+ }
254
+
255
+ .carbon a.project-card {
256
+ text-decoration: none;
257
+ color: inherit;
258
+ display: block;
259
+ transition: transform 0.15s ease, box-shadow 0.15s ease;
260
+ }
261
+ .carbon a.project-card:hover {
262
+ transform: translateY(-2px);
263
+ }
264
+
265
+ .carbon .card {
266
+ background: var(--carbon-card);
267
+ border: 1px solid var(--carbon-border);
268
+ border-radius: var(--radius-md);
269
+ overflow: hidden;
270
+ transition: border-color 0.25s ease;
271
+ }
272
+ .carbon .card:hover {
273
+ border-color: var(--carbon-border-hover);
274
+ }
275
+
276
+ .carbon .card__header {
277
+ position: relative;
278
+ padding: 1.25rem 1.5rem;
279
+ background: var(--carbon-surface);
280
+ border-bottom: 1px solid var(--carbon-border);
281
+ overflow: hidden;
282
+ }
283
+ .carbon .card__header::before {
284
+ content: '';
285
+ position: absolute;
286
+ inset: 0;
287
+ background: repeating-linear-gradient(
288
+ 135deg,
289
+ transparent,
290
+ transparent 1px,
291
+ rgba(148, 163, 184, 0.035) 1px,
292
+ rgba(148, 163, 184, 0.035) 2px
293
+ );
294
+ pointer-events: none;
295
+ }
296
+
297
+ .carbon .card__title {
298
+ font-family: var(--font-display);
299
+ font-size: 1.125rem;
300
+ font-weight: 600;
301
+ color: var(--carbon-white);
302
+ position: relative;
303
+ }
304
+ .carbon .card__title a { color: inherit; }
305
+ .carbon .card__title a:hover { color: var(--carbon-accent); }
306
+
307
+ .carbon .card__body {
308
+ padding: 1.25rem 1.5rem;
309
+ }
310
+
311
+ .carbon .card__narrative {
312
+ font-size: 0.9375rem;
313
+ color: var(--carbon-text-secondary);
314
+ line-height: 1.65;
315
+ margin-block-end: 1rem;
316
+ }
317
+
318
+ /* ── Skills ── */
319
+ .carbon .skill-list {
320
+ display: flex;
321
+ flex-wrap: wrap;
322
+ gap: 0.375rem;
323
+ list-style: none;
324
+ margin-block-end: 1rem;
325
+ }
326
+
327
+ .carbon .skill-chip {
328
+ font-family: var(--font-mono);
329
+ font-size: 0.6875rem;
330
+ color: var(--carbon-accent);
331
+ background: rgba(148, 163, 184, 0.08);
332
+ border: 1px solid rgba(148, 163, 184, 0.12);
333
+ padding: 0.25rem 0.625rem;
334
+ border-radius: var(--radius-sm);
335
+ letter-spacing: 0.02em;
336
+ }
337
+
338
+ /* ── Card Stats Row ── */
339
+ .carbon .card-stats {
340
+ display: flex;
341
+ gap: 1.25rem;
342
+ font-family: var(--font-mono);
343
+ font-size: 0.75rem;
344
+ color: var(--carbon-text-muted);
345
+ padding-block-start: 0.75rem;
346
+ border-top: 1px solid var(--carbon-border);
347
+ }
348
+
349
+ .carbon .card-stats span {
350
+ display: flex;
351
+ align-items: center;
352
+ gap: 0.375rem;
353
+ }
354
+
355
+ .carbon .card-stats__value {
356
+ color: var(--carbon-text-secondary);
357
+ }
358
+
359
+ /* ── Source Bar (Portfolio Card) ── */
360
+ .carbon .source-bar {
361
+ display: flex;
362
+ height: 4px;
363
+ border-radius: 2px;
364
+ overflow: hidden;
365
+ margin-block-start: 1rem;
366
+ background: rgba(148, 163, 184, 0.06);
367
+ }
368
+
369
+ .carbon .source-bar__segment { height: 100%; }
370
+ .carbon .source-bar__segment--claude-code { background: var(--carbon-accent); }
371
+ .carbon .source-bar__segment--cursor { background: rgba(148, 163, 184, 0.3); }
372
+
373
+ .carbon .source-legend {
374
+ display: flex;
375
+ gap: 1rem;
376
+ margin-block-start: 0.5rem;
377
+ font-family: var(--font-mono);
378
+ font-size: 0.6875rem;
379
+ color: var(--carbon-text-muted);
380
+ }
381
+
382
+ .carbon .source-legend__dot {
383
+ display: inline-block;
384
+ width: 8px;
385
+ height: 8px;
386
+ border-radius: 50%;
387
+ margin-inline-end: 0.375rem;
388
+ vertical-align: middle;
389
+ }
390
+ .carbon .source-legend__dot--claude-code { background: var(--carbon-accent); }
391
+ .carbon .source-legend__dot--cursor { background: rgba(148, 163, 184, 0.3); }
392
+
393
+ /* ── Project Header ── */
394
+ .carbon .project-header {
395
+ margin-block-end: 2.5rem;
396
+ }
397
+
398
+ .carbon .project-header__title {
399
+ font-family: var(--font-display);
400
+ font-size: 2rem;
401
+ font-weight: 700;
402
+ color: var(--carbon-white);
403
+ letter-spacing: -0.03em;
404
+ text-shadow: 0 1px 2px rgba(0,0,0,0.5), 0 1px 0 rgba(148,163,184,0.1);
405
+ }
406
+
407
+ .carbon .project-header__links {
408
+ display: flex;
409
+ gap: 1.25rem;
410
+ margin-block-start: 0.75rem;
411
+ font-family: var(--font-mono);
412
+ font-size: 0.8125rem;
413
+ }
414
+
415
+ /* ── Project Stats Override ── */
416
+ .carbon .stats-bar--project {
417
+ grid-template-columns: repeat(6, 1fr);
418
+ }
419
+
420
+ .carbon.heyiam-project .stat-cell {
421
+ padding: 1rem 0.75rem;
422
+ }
423
+
424
+ .carbon.heyiam-project .stat-cell__value {
425
+ font-size: 1.375rem;
426
+ }
427
+
428
+ .carbon.heyiam-project .stat-cell__label {
429
+ font-size: 0.625rem;
430
+ }
431
+
432
+ .carbon.heyiam-project .section-heading,
433
+ .carbon.heyiam-session .section-heading {
434
+ font-size: 1.125rem;
435
+ }
436
+
437
+ /* ── Screenshot ── */
438
+ .carbon .screenshot {
439
+ border-radius: var(--radius-md);
440
+ border: 1px solid var(--carbon-border);
441
+ overflow: hidden;
442
+ margin-block-end: 2.5rem;
443
+ }
444
+
445
+ .carbon .screenshot__chrome {
446
+ background: var(--carbon-surface);
447
+ padding: 0.625rem 1rem;
448
+ display: flex;
449
+ align-items: center;
450
+ gap: 0.5rem;
451
+ border-bottom: 1px solid var(--carbon-border);
452
+ }
453
+
454
+ .carbon .screenshot__dot {
455
+ width: 10px;
456
+ height: 10px;
457
+ border-radius: 50%;
458
+ background: rgba(148, 163, 184, 0.15);
459
+ border: 1px solid rgba(148, 163, 184, 0.1);
460
+ }
461
+
462
+ .carbon .screenshot__url {
463
+ font-family: var(--font-mono);
464
+ font-size: 0.6875rem;
465
+ color: var(--carbon-text-muted);
466
+ margin-inline-start: 0.5rem;
467
+ }
468
+
469
+ .carbon .screenshot__body {
470
+ background: var(--carbon-card);
471
+ }
472
+
473
+ .carbon .screenshot__img {
474
+ width: 100%;
475
+ display: block;
476
+ }
477
+
478
+ /* ── Narrative ── */
479
+ .carbon .narrative {
480
+ margin-block-end: 2.5rem;
481
+ }
482
+
483
+ .carbon .narrative p {
484
+ font-size: 0.9375rem;
485
+ color: var(--carbon-text-secondary);
486
+ line-height: 1.75;
487
+ margin-block-end: 1rem;
488
+ }
489
+ .carbon .narrative p:last-child { margin-block-end: 0; }
490
+
491
+ .carbon .narrative-text {
492
+ font-size: 0.9375rem;
493
+ color: var(--carbon-text-secondary);
494
+ line-height: 1.75;
495
+ }
496
+
497
+ /* ── Phase Timeline ── */
498
+ .carbon .phase-timeline {
499
+ margin-block-end: 2.5rem;
500
+ position: relative;
501
+ padding-inline-start: 1.75rem;
502
+ }
503
+
504
+ .carbon .phase-timeline::before {
505
+ content: '';
506
+ position: absolute;
507
+ left: 5px;
508
+ top: 6px;
509
+ bottom: 6px;
510
+ width: 1px;
511
+ background: linear-gradient(to bottom, var(--carbon-accent), rgba(148,163,184,0.15));
512
+ }
513
+
514
+ .carbon .phase-item {
515
+ position: relative;
516
+ margin-block-end: 1.5rem;
517
+ }
518
+ .carbon .phase-item:last-child { margin-block-end: 0; }
519
+
520
+ .carbon .phase-item::before {
521
+ content: '';
522
+ position: absolute;
523
+ left: -1.75rem;
524
+ top: 6px;
525
+ width: 11px;
526
+ height: 11px;
527
+ border-radius: 50%;
528
+ background: var(--carbon-bg);
529
+ border: 2px solid var(--carbon-accent);
530
+ box-shadow: 0 0 0 3px var(--carbon-bg), 0 0 8px rgba(148,163,184,0.2);
531
+ }
532
+
533
+ .carbon .phase-item__title {
534
+ font-family: var(--font-display);
535
+ font-size: 0.9375rem;
536
+ font-weight: 600;
537
+ color: var(--carbon-white);
538
+ }
539
+
540
+ .carbon .phase-item__dates {
541
+ font-family: var(--font-mono);
542
+ font-size: 0.6875rem;
543
+ color: var(--carbon-text-muted);
544
+ margin-block-start: 0.125rem;
545
+ }
546
+
547
+ .carbon .phase-item__desc {
548
+ font-size: 0.875rem;
549
+ color: var(--carbon-text-secondary);
550
+ margin-block-start: 0.375rem;
551
+ }
552
+
553
+ /* ── Work Timeline / Growth Chart ── */
554
+ .carbon .timeline-chart {
555
+ margin-block-end: 2.5rem;
556
+ }
557
+
558
+ .carbon .timeline-chart__canvas {
559
+ width: 100%;
560
+ background: var(--carbon-surface);
561
+ border: 1px solid var(--carbon-border);
562
+ border-radius: var(--radius-md);
563
+ padding: 1.25rem;
564
+ }
565
+
566
+ .carbon .timeline-chart svg {
567
+ width: 100%;
568
+ height: auto;
569
+ display: block;
570
+ }
571
+
572
+ /* ── Key Decisions ── */
573
+ .carbon .decisions {
574
+ margin-block-end: 2.5rem;
575
+ }
576
+
577
+ .carbon .decision-item {
578
+ display: flex;
579
+ gap: 0.75rem;
580
+ margin-block-end: 0.75rem;
581
+ font-size: 0.9375rem;
582
+ color: var(--carbon-text-secondary);
583
+ line-height: 1.6;
584
+ }
585
+
586
+ .carbon .decision-item__num {
587
+ font-family: var(--font-mono);
588
+ font-size: 0.75rem;
589
+ color: var(--carbon-accent);
590
+ min-width: 1.5rem;
591
+ padding-block-start: 0.125rem;
592
+ }
593
+
594
+ /* ── Source Breakdown ── */
595
+ .carbon .source-breakdown {
596
+ margin-block-end: 2.5rem;
597
+ }
598
+
599
+ .carbon .source-bar-lg {
600
+ display: flex;
601
+ height: 8px;
602
+ border-radius: var(--radius-sm);
603
+ overflow: hidden;
604
+ background: rgba(148, 163, 184, 0.06);
605
+ margin-block-end: 0.75rem;
606
+ }
607
+
608
+ .carbon .source-bar-lg__segment { height: 100%; }
609
+ .carbon .source-bar-lg__segment--claude-code { background: var(--carbon-accent); }
610
+ .carbon .source-bar-lg__segment--cursor { background: rgba(148, 163, 184, 0.3); }
611
+
612
+ .carbon .source-labels {
613
+ display: flex;
614
+ gap: 1.5rem;
615
+ font-family: var(--font-mono);
616
+ font-size: 0.75rem;
617
+ color: var(--carbon-text-muted);
618
+ }
619
+
620
+ .carbon .source-labels__dot {
621
+ display: inline-block;
622
+ width: 8px;
623
+ height: 8px;
624
+ border-radius: 50%;
625
+ margin-inline-end: 0.375rem;
626
+ vertical-align: middle;
627
+ }
628
+ .carbon .source-labels__dot--claude-code { background: var(--carbon-accent); }
629
+ .carbon .source-labels__dot--cursor { background: rgba(148, 163, 184, 0.3); }
630
+
631
+ /* ── Sessions Table (Project) ── */
632
+ .carbon .sessions-table {
633
+ margin-block-end: 2.5rem;
634
+ }
635
+
636
+ .carbon .session-row {
637
+ display: grid;
638
+ grid-template-columns: 2rem 1fr auto auto auto;
639
+ gap: 1rem;
640
+ align-items: center;
641
+ padding: 0.875rem 1rem;
642
+ background: var(--carbon-card);
643
+ border: 1px solid var(--carbon-border);
644
+ border-radius: var(--radius-sm);
645
+ margin-block-end: 0.5rem;
646
+ transition: border-color 0.2s;
647
+ text-decoration: none;
648
+ color: inherit;
649
+ }
650
+ .carbon .session-row:hover { border-color: var(--carbon-border-hover); }
651
+
652
+ .carbon .session-row__num {
653
+ font-family: var(--font-mono);
654
+ font-size: 0.75rem;
655
+ color: var(--carbon-text-muted);
656
+ }
657
+
658
+ .carbon .session-row__title {
659
+ font-size: 0.875rem;
660
+ color: var(--carbon-text);
661
+ }
662
+
663
+ .carbon .session-row__date,
664
+ .carbon .session-row__dur,
665
+ .carbon .session-row__loc {
666
+ font-family: var(--font-mono);
667
+ font-size: 0.75rem;
668
+ color: var(--carbon-text-muted);
669
+ white-space: nowrap;
670
+ }
671
+
672
+ /* ── Session Header ── */
673
+ .carbon .session-header {
674
+ margin-block-end: 2.5rem;
675
+ }
676
+
677
+ .carbon .session-header__title {
678
+ font-family: var(--font-display);
679
+ font-size: 1.75rem;
680
+ font-weight: 700;
681
+ color: var(--carbon-white);
682
+ letter-spacing: -0.03em;
683
+ text-shadow: 0 1px 2px rgba(0,0,0,0.5), 0 1px 0 rgba(148,163,184,0.1);
684
+ line-height: 1.3;
685
+ }
686
+
687
+ .carbon .session-header__meta {
688
+ display: flex;
689
+ flex-wrap: wrap;
690
+ gap: 1.25rem;
691
+ margin-block-start: 1rem;
692
+ font-family: var(--font-mono);
693
+ font-size: 0.75rem;
694
+ color: var(--carbon-text-muted);
695
+ }
696
+
697
+ .carbon .session-header__meta span {
698
+ display: flex;
699
+ align-items: center;
700
+ gap: 0.375rem;
701
+ }
702
+
703
+ .carbon .meta-value {
704
+ color: var(--carbon-text-secondary);
705
+ }
706
+
707
+ /* ── Dev Take ── */
708
+ .carbon .dev-take {
709
+ background: var(--carbon-surface);
710
+ border: 1px solid var(--carbon-border);
711
+ border-radius: var(--radius-md);
712
+ padding: 1.25rem 1.5rem;
713
+ margin-block-end: 2.5rem;
714
+ position: relative;
715
+ overflow: hidden;
716
+ }
717
+ .carbon .dev-take::before {
718
+ content: '';
719
+ position: absolute;
720
+ inset: 0;
721
+ background: repeating-linear-gradient(
722
+ 135deg,
723
+ transparent,
724
+ transparent 1px,
725
+ rgba(148, 163, 184, 0.02) 1px,
726
+ rgba(148, 163, 184, 0.02) 2px
727
+ );
728
+ pointer-events: none;
729
+ }
730
+
731
+ .carbon .dev-take__label {
732
+ font-family: var(--font-mono);
733
+ font-size: 0.6875rem;
734
+ color: var(--carbon-accent);
735
+ text-transform: uppercase;
736
+ letter-spacing: 0.08em;
737
+ margin-block-end: 0.5rem;
738
+ position: relative;
739
+ }
740
+
741
+ .carbon .dev-take__text {
742
+ font-size: 0.9375rem;
743
+ color: var(--carbon-text);
744
+ line-height: 1.7;
745
+ font-style: italic;
746
+ position: relative;
747
+ }
748
+
749
+ /* ── Session Layout: Main + Sidebar ── */
750
+ .carbon .session-layout {
751
+ display: grid;
752
+ grid-template-columns: 1fr 280px;
753
+ gap: 2rem;
754
+ align-items: start;
755
+ }
756
+
757
+ /* ── Content Section ── */
758
+ .carbon .content-section {
759
+ margin-block-end: 2.5rem;
760
+ }
761
+
762
+ .carbon .highlights-list {
763
+ list-style: none;
764
+ padding: 0;
765
+ }
766
+
767
+ .carbon .highlights-list li {
768
+ font-size: 0.875rem;
769
+ color: var(--carbon-text-secondary);
770
+ line-height: 1.7;
771
+ padding: 0.375rem 0;
772
+ border-bottom: 1px solid var(--carbon-border);
773
+ }
774
+
775
+ /* ── Execution Path ── */
776
+ .carbon .execution-path {
777
+ margin-block-end: 2.5rem;
778
+ }
779
+
780
+ .carbon .beat {
781
+ position: relative;
782
+ padding-inline-start: 1.75rem;
783
+ margin-block-end: 1.5rem;
784
+ }
785
+ .carbon .beat:last-child { margin-block-end: 0; }
786
+
787
+ .carbon .beat::before {
788
+ content: '';
789
+ position: absolute;
790
+ left: 5px;
791
+ top: 6px;
792
+ width: 11px;
793
+ height: 11px;
794
+ border-radius: 50%;
795
+ background: var(--carbon-bg);
796
+ border: 2px solid var(--carbon-accent);
797
+ box-shadow: 0 0 0 3px var(--carbon-bg), 0 0 8px rgba(148,163,184,0.2);
798
+ }
799
+
800
+ .carbon .beat::after {
801
+ content: '';
802
+ position: absolute;
803
+ left: 10px;
804
+ top: 20px;
805
+ bottom: -1.5rem;
806
+ width: 1px;
807
+ background: rgba(148, 163, 184, 0.15);
808
+ }
809
+ .carbon .beat:last-child::after { display: none; }
810
+
811
+ .carbon .beat__title {
812
+ font-family: var(--font-display);
813
+ font-size: 0.9375rem;
814
+ font-weight: 600;
815
+ color: var(--carbon-white);
816
+ }
817
+
818
+ .carbon .beat__desc {
819
+ font-size: 0.875rem;
820
+ color: var(--carbon-text-secondary);
821
+ margin-block-start: 0.25rem;
822
+ line-height: 1.6;
823
+ }
824
+
825
+ /* ── Q&A ── */
826
+ .carbon .qa-section {
827
+ margin-block-end: 2.5rem;
828
+ }
829
+
830
+ .carbon .qa-item {
831
+ margin-block-end: 1.25rem;
832
+ background: var(--carbon-card);
833
+ border: 1px solid var(--carbon-border);
834
+ border-radius: var(--radius-md);
835
+ overflow: hidden;
836
+ }
837
+
838
+ .carbon .qa-item__q {
839
+ padding: 1rem 1.25rem;
840
+ font-size: 0.9375rem;
841
+ font-weight: 500;
842
+ color: var(--carbon-white);
843
+ background: var(--carbon-surface);
844
+ border-bottom: 1px solid var(--carbon-border);
845
+ position: relative;
846
+ overflow: hidden;
847
+ }
848
+ .carbon .qa-item__q::before {
849
+ content: '';
850
+ position: absolute;
851
+ inset: 0;
852
+ background: repeating-linear-gradient(
853
+ 135deg,
854
+ transparent,
855
+ transparent 1px,
856
+ rgba(148, 163, 184, 0.025) 1px,
857
+ rgba(148, 163, 184, 0.025) 2px
858
+ );
859
+ pointer-events: none;
860
+ }
861
+
862
+ .carbon .qa-item__q-prefix {
863
+ font-family: var(--font-mono);
864
+ font-size: 0.6875rem;
865
+ color: var(--carbon-accent);
866
+ margin-inline-end: 0.5rem;
867
+ position: relative;
868
+ }
869
+
870
+ .carbon .qa-item__q-text {
871
+ position: relative;
872
+ }
873
+
874
+ .carbon .qa-item__a {
875
+ padding: 1rem 1.25rem;
876
+ font-size: 0.875rem;
877
+ color: var(--carbon-text-secondary);
878
+ line-height: 1.7;
879
+ }
880
+
881
+ /* ── Agent Summary ── */
882
+ .carbon .agent-summary {
883
+ margin-block-end: 2.5rem;
884
+ }
885
+
886
+ .carbon .agent-row {
887
+ display: grid;
888
+ grid-template-columns: 1fr auto auto;
889
+ gap: 1rem;
890
+ align-items: center;
891
+ padding: 0.75rem 1rem;
892
+ border-bottom: 1px solid var(--carbon-border);
893
+ }
894
+ .carbon .agent-row:last-child { border-bottom: none; }
895
+
896
+ .carbon .agent-row__role {
897
+ font-size: 0.875rem;
898
+ color: var(--carbon-text);
899
+ display: flex;
900
+ align-items: center;
901
+ gap: 0.5rem;
902
+ }
903
+
904
+ .carbon .agent-dot {
905
+ width: 8px;
906
+ height: 8px;
907
+ border-radius: 50%;
908
+ flex-shrink: 0;
909
+ }
910
+
911
+ .carbon .agent-row__dur,
912
+ .carbon .agent-row__loc {
913
+ font-family: var(--font-mono);
914
+ font-size: 0.75rem;
915
+ color: var(--carbon-text-muted);
916
+ text-align: end;
917
+ }
918
+
919
+ .carbon .agent-bar-chart {
920
+ display: flex;
921
+ height: 6px;
922
+ border-radius: 3px;
923
+ overflow: hidden;
924
+ margin-block-start: 1rem;
925
+ margin-block-end: 0.5rem;
926
+ background: rgba(148, 163, 184, 0.06);
927
+ }
928
+
929
+ .carbon .agent-bar-chart__seg { height: 100%; }
930
+
931
+ /* ── Sidebar Cards ── */
932
+ .carbon .sidebar-card {
933
+ background: var(--carbon-card);
934
+ border: 1px solid var(--carbon-border);
935
+ border-radius: var(--radius-md);
936
+ overflow: hidden;
937
+ margin-block-end: 1rem;
938
+ transition: border-color 0.25s;
939
+ }
940
+ .carbon .sidebar-card:hover { border-color: var(--carbon-border-hover); }
941
+
942
+ .carbon .sidebar-card__header {
943
+ padding: 0.75rem 1rem;
944
+ background: var(--carbon-surface);
945
+ border-bottom: 1px solid var(--carbon-border);
946
+ font-family: var(--font-mono);
947
+ font-size: 0.6875rem;
948
+ color: var(--carbon-accent);
949
+ text-transform: uppercase;
950
+ letter-spacing: 0.08em;
951
+ position: relative;
952
+ overflow: hidden;
953
+ }
954
+ .carbon .sidebar-card__header::before {
955
+ content: '';
956
+ position: absolute;
957
+ inset: 0;
958
+ background: repeating-linear-gradient(
959
+ 135deg,
960
+ transparent,
961
+ transparent 1px,
962
+ rgba(148, 163, 184, 0.03) 1px,
963
+ rgba(148, 163, 184, 0.03) 2px
964
+ );
965
+ pointer-events: none;
966
+ }
967
+
968
+ .carbon .sidebar-card__body {
969
+ padding: 0.75rem 1rem;
970
+ }
971
+
972
+ /* ── Tool Rows ── */
973
+ .carbon .tool-row {
974
+ display: flex;
975
+ justify-content: space-between;
976
+ align-items: center;
977
+ padding: 0.375rem 0;
978
+ border-bottom: 1px solid rgba(148, 163, 184, 0.06);
979
+ }
980
+ .carbon .tool-row:last-child { border-bottom: none; }
981
+
982
+ .carbon .tool-row__name {
983
+ font-family: var(--font-mono);
984
+ font-size: 0.8125rem;
985
+ color: var(--carbon-text);
986
+ }
987
+
988
+ .carbon .tool-row__count {
989
+ font-family: var(--font-mono);
990
+ font-size: 0.75rem;
991
+ color: var(--carbon-text-muted);
992
+ }
993
+
994
+ /* ── File Rows ── */
995
+ .carbon .file-row {
996
+ display: flex;
997
+ justify-content: space-between;
998
+ align-items: center;
999
+ padding: 0.375rem 0;
1000
+ border-bottom: 1px solid rgba(148, 163, 184, 0.06);
1001
+ gap: 0.5rem;
1002
+ }
1003
+ .carbon .file-row:last-child { border-bottom: none; }
1004
+
1005
+ .carbon .file-row__name {
1006
+ font-family: var(--font-mono);
1007
+ font-size: 0.75rem;
1008
+ color: var(--carbon-text);
1009
+ overflow: hidden;
1010
+ text-overflow: ellipsis;
1011
+ white-space: nowrap;
1012
+ min-width: 0;
1013
+ }
1014
+
1015
+ .carbon .file-row__diff {
1016
+ font-family: var(--font-mono);
1017
+ font-size: 0.6875rem;
1018
+ color: var(--carbon-accent);
1019
+ white-space: nowrap;
1020
+ flex-shrink: 0;
1021
+ }
1022
+
1023
+ /* ── Sidebar Skills ── */
1024
+ .carbon .sidebar-skills {
1025
+ display: flex;
1026
+ flex-wrap: wrap;
1027
+ gap: 0.375rem;
1028
+ list-style: none;
1029
+ }
1030
+
1031
+ .carbon .sidebar-skill-chip {
1032
+ font-family: var(--font-mono);
1033
+ font-size: 0.6875rem;
1034
+ color: var(--carbon-accent);
1035
+ background: rgba(148, 163, 184, 0.08);
1036
+ border: 1px solid rgba(148, 163, 184, 0.12);
1037
+ padding: 0.1875rem 0.5rem;
1038
+ border-radius: var(--radius-sm);
1039
+ }
1040
+
1041
+ /* ── Footer ── */
1042
+ .carbon .carbon-footer {
1043
+ margin-block-start: 4rem;
1044
+ padding-block-start: 1.5rem;
1045
+ border-top: 1px solid var(--carbon-border);
1046
+ font-family: var(--font-mono);
1047
+ font-size: 0.75rem;
1048
+ color: var(--carbon-text-muted);
1049
+ display: flex;
1050
+ justify-content: space-between;
1051
+ align-items: center;
1052
+ }
1053
+
1054
+ /* ── Responsive ── */
1055
+ @media (max-width: 768px) {
1056
+ .carbon {
1057
+ padding: 1.25rem 1rem;
1058
+ }
1059
+ .carbon .profile__name { font-size: 1.75rem; }
1060
+ .carbon .profile__photo { width: 80px; height: 100px; }
1061
+ .carbon .profile__links { font-size: 0.75rem; }
1062
+ .carbon .stats-bar { grid-template-columns: repeat(2, 1fr); }
1063
+ .carbon .card__header,
1064
+ .carbon .card__body { padding: 1rem 1.25rem; }
1065
+ .carbon .card-stats { flex-wrap: wrap; gap: 0.75rem; }
1066
+ .carbon .project-header__title { font-size: 1.5rem; }
1067
+ .carbon .stats-bar--project { grid-template-columns: repeat(3, 1fr); }
1068
+ .carbon .session-layout {
1069
+ grid-template-columns: 1fr;
1070
+ }
1071
+ .carbon .session-layout > aside { order: -1; }
1072
+ .carbon .session-header__title { font-size: 1.375rem; }
1073
+ .carbon .session-header__meta { gap: 0.75rem; }
1074
+ .carbon .session-row {
1075
+ grid-template-columns: 1fr;
1076
+ gap: 0.375rem;
1077
+ }
1078
+ .carbon .session-row__num { display: none; }
1079
+ .carbon .session-row__date,
1080
+ .carbon .session-row__dur,
1081
+ .carbon .session-row__loc {
1082
+ font-size: 0.6875rem;
1083
+ }
1084
+ .carbon .agent-row { grid-template-columns: 1fr auto; gap: 0.5rem; }
1085
+ .carbon .agent-row__loc { display: none; }
1086
+ .carbon .carbon-footer { flex-direction: column; gap: 0.5rem; align-items: flex-start; }
1087
+ }
1088
+
1089
+ @media (max-width: 480px) {
1090
+ .carbon .stats-bar { grid-template-columns: repeat(2, 1fr); }
1091
+ .carbon .stats-bar--project { grid-template-columns: repeat(2, 1fr); }
1092
+ .carbon .project-header__title { font-size: 1.25rem; }
1093
+ }
1094
+
1095
+
1096
+ /* Live-edit empty field hiding */
1097
+ [data-portfolio-empty="true"] { display: none; }