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,1375 @@
1
+ /* ── Meridian template styles ──
2
+ * Extracted from mockup HTML files.
3
+ * Dark emerald theme with topographic contour background.
4
+ * Fonts: Space Grotesk (display), Inter (body), IBM Plex Mono (mono).
5
+ */
6
+
7
+ body { background: var(--mer-bg); color: var(--mer-text); }
8
+
9
+ /* ── Meridian Design Tokens ── */
10
+ .meridian {
11
+ --mer-bg: #022c22;
12
+ --mer-surface: #064e3b;
13
+ --mer-card: #053f30;
14
+ --mer-border: #0d7357;
15
+ --mer-border-subtle: #065f46;
16
+ --mer-text: #d1fae5;
17
+ --mer-text-secondary: #a7f3d0;
18
+ --mer-text-muted: #6ee7b7;
19
+ --mer-accent: #34d399;
20
+ --mer-accent-dim: rgba(52, 211, 153, 0.15);
21
+ --mer-white: #ecfdf5;
22
+ --mer-contour: rgba(52, 211, 153, 0.06);
23
+ --mer-contour-strong: rgba(52, 211, 153, 0.1);
24
+
25
+ --font-display: 'Space Grotesk', sans-serif;
26
+ --font-body: 'Inter', sans-serif;
27
+ --font-mono: 'IBM Plex Mono', monospace;
28
+
29
+ --radius-sm: 4px;
30
+ --radius: 8px;
31
+
32
+ /* Agent colors */
33
+ --agent-frontend: #7c3aed;
34
+ --agent-backend: #0891b2;
35
+ --agent-qa: #059669;
36
+ --agent-security: #475569;
37
+ --agent-reviewer: #e11d48;
38
+ --agent-ux: #d97706;
39
+
40
+ background: var(--mer-bg);
41
+ color: var(--mer-text);
42
+ font-family: var(--font-body);
43
+ line-height: 1.6;
44
+ -webkit-font-smoothing: antialiased;
45
+ -moz-osx-font-smoothing: grayscale;
46
+ position: relative;
47
+ overflow-x: hidden;
48
+ }
49
+
50
+ .meridian a { color: var(--mer-accent); text-decoration: none; }
51
+ .meridian a:visited { color: var(--mer-accent); }
52
+ .meridian a:hover { text-decoration: underline; }
53
+
54
+ /* ── Topographic Contour Background ── */
55
+ .meridian .topo-bg {
56
+ position: fixed;
57
+ inset: 0;
58
+ z-index: 0;
59
+ pointer-events: none;
60
+ overflow: hidden;
61
+ }
62
+
63
+ .meridian .topo-bg svg {
64
+ width: 100%;
65
+ height: 100%;
66
+ opacity: 1;
67
+ }
68
+
69
+ .meridian .topo-contours {
70
+ animation: mer-topo-drift 30s ease-in-out infinite alternate;
71
+ }
72
+
73
+ @keyframes mer-topo-drift {
74
+ 0% { transform: translate(0, 0) scale(1); }
75
+ 50% { transform: translate(-12px, 8px) scale(1.02); }
76
+ 100% { transform: translate(6px, -6px) scale(0.99); }
77
+ }
78
+
79
+ @media (prefers-reduced-motion: reduce) {
80
+ .meridian .topo-contours { animation: none; }
81
+ .meridian .section-reveal { opacity: 1 !important; transform: none !important; }
82
+ .meridian .stat-counter { animation: none !important; }
83
+ .meridian .route-waypoint { animation: none !important; }
84
+ .meridian .beat-marker { animation: none !important; }
85
+ .meridian .elevation-path { animation: none !important; }
86
+ .meridian .agent-bar-row__fill { transition: none; }
87
+ }
88
+
89
+ /* ── Skip Link ── */
90
+ .meridian .skip-link {
91
+ position: absolute;
92
+ top: -100%;
93
+ left: 1rem;
94
+ background: var(--mer-accent);
95
+ color: var(--mer-bg);
96
+ padding: 0.5rem 1rem;
97
+ z-index: 1000;
98
+ font-family: var(--font-mono);
99
+ font-size: 0.875rem;
100
+ border-radius: var(--radius-sm);
101
+ }
102
+ .meridian .skip-link:focus {
103
+ top: 1rem;
104
+ color: var(--mer-bg);
105
+ text-decoration: none;
106
+ }
107
+
108
+ /* ── Page Shell ── */
109
+ .meridian .mer-page {
110
+ position: relative;
111
+ z-index: 1;
112
+ max-width: 940px;
113
+ margin: 0 auto;
114
+ padding: 2rem 1.5rem;
115
+ }
116
+
117
+ /* ── Section Headers (coordinate style) ── */
118
+ .meridian .section-label {
119
+ font-family: var(--font-mono);
120
+ font-size: 0.75rem;
121
+ color: var(--mer-text-muted);
122
+ letter-spacing: 0.08em;
123
+ text-transform: uppercase;
124
+ margin-block-end: 0.5rem;
125
+ display: flex;
126
+ align-items: center;
127
+ gap: 0.75rem;
128
+ }
129
+
130
+ .meridian .section-label::after {
131
+ content: '';
132
+ flex: 1;
133
+ height: 1px;
134
+ background: var(--mer-border-subtle);
135
+ }
136
+
137
+ .meridian .section-heading {
138
+ font-family: var(--font-display);
139
+ font-weight: 700;
140
+ font-size: 1.5rem;
141
+ color: var(--mer-white);
142
+ margin-block-end: 1.25rem;
143
+ line-height: 1.2;
144
+ }
145
+
146
+ /* ── Section Fade-In ── */
147
+ .meridian .section-reveal {
148
+ opacity: 0;
149
+ transform: translateY(16px);
150
+ transition: opacity 0.6s ease, transform 0.6s ease;
151
+ }
152
+
153
+ .meridian .section-reveal.visible {
154
+ opacity: 1;
155
+ transform: translateY(0);
156
+ }
157
+
158
+ /* ── Hero (portfolio) ── */
159
+ .meridian .hero {
160
+ margin-block-end: 4rem;
161
+ padding-block: 2rem 0;
162
+ }
163
+
164
+ .meridian .hero__profile {
165
+ display: flex;
166
+ gap: 2rem;
167
+ align-items: flex-start;
168
+ }
169
+
170
+ .meridian .hero__photo {
171
+ width: 120px;
172
+ height: 150px;
173
+ border-radius: var(--radius);
174
+ object-fit: cover;
175
+ object-position: 55% 10%;
176
+ border: 2px solid var(--mer-accent);
177
+ box-shadow: 0 0 24px var(--mer-accent-dim);
178
+ flex-shrink: 0;
179
+ filter: grayscale(0.2);
180
+ }
181
+
182
+ .meridian .hero__info {
183
+ flex: 1;
184
+ min-width: 0;
185
+ }
186
+
187
+ .meridian .hero__name {
188
+ font-family: var(--font-display);
189
+ font-weight: 700;
190
+ font-size: 2.75rem;
191
+ color: var(--mer-white);
192
+ line-height: 1.1;
193
+ margin-block-end: 0.25rem;
194
+ }
195
+
196
+ .meridian .hero__handle {
197
+ font-family: var(--font-mono);
198
+ font-size: 1rem;
199
+ color: var(--mer-accent);
200
+ margin-block-end: 1rem;
201
+ }
202
+
203
+ .meridian .hero__bio {
204
+ font-size: 1.0625rem;
205
+ color: var(--mer-text-secondary);
206
+ max-width: 600px;
207
+ line-height: 1.65;
208
+ margin-block-end: 1rem;
209
+ }
210
+
211
+ .meridian .hero__location {
212
+ font-family: var(--font-mono);
213
+ font-size: 0.8125rem;
214
+ color: var(--mer-text-muted);
215
+ display: flex;
216
+ align-items: center;
217
+ gap: 0.375rem;
218
+ }
219
+
220
+ .meridian .hero__location svg {
221
+ width: 14px;
222
+ height: 14px;
223
+ fill: none;
224
+ stroke: var(--mer-text-muted);
225
+ stroke-width: 2;
226
+ }
227
+
228
+ .meridian .hero__contact {
229
+ display: flex;
230
+ flex-wrap: wrap;
231
+ gap: 0.75rem;
232
+ margin-block-start: 1rem;
233
+ list-style: none;
234
+ }
235
+
236
+ .meridian .hero__contact a {
237
+ display: inline-flex;
238
+ align-items: center;
239
+ gap: 0.375rem;
240
+ font-family: var(--font-mono);
241
+ font-size: 0.8125rem;
242
+ color: var(--mer-text-muted);
243
+ transition: color 0.2s;
244
+ }
245
+
246
+ .meridian .hero__contact a:hover {
247
+ color: var(--mer-accent);
248
+ text-decoration: none;
249
+ }
250
+
251
+ .meridian .hero__contact svg {
252
+ flex-shrink: 0;
253
+ }
254
+
255
+ .meridian .hero__resume-btn {
256
+ display: inline-flex;
257
+ align-items: center;
258
+ gap: 0.375rem;
259
+ margin-block-start: 1rem;
260
+ padding: 0.5rem 1rem;
261
+ font-family: var(--font-mono);
262
+ font-size: 0.8125rem;
263
+ color: var(--mer-bg);
264
+ background: var(--mer-accent);
265
+ border: none;
266
+ border-radius: var(--radius-sm);
267
+ cursor: pointer;
268
+ text-decoration: none;
269
+ transition: opacity 0.2s;
270
+ }
271
+
272
+ .meridian .hero__resume-btn:hover {
273
+ opacity: 0.85;
274
+ text-decoration: none;
275
+ color: var(--mer-bg);
276
+ }
277
+
278
+ /* ── Stats Grid (portfolio) ── */
279
+ .meridian .stats-grid {
280
+ display: grid;
281
+ grid-template-columns: repeat(4, 1fr);
282
+ gap: 1rem;
283
+ margin-block-end: 4rem;
284
+ padding: 1.5rem;
285
+ background: var(--mer-surface);
286
+ border: 1px solid var(--mer-border-subtle);
287
+ border-radius: var(--radius);
288
+ }
289
+
290
+ /* ── Stats Row (project) ── */
291
+ .meridian .stats-row {
292
+ display: grid;
293
+ grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
294
+ gap: 0.75rem;
295
+ margin-block-end: 3rem;
296
+ padding: 1.25rem;
297
+ background: var(--mer-surface);
298
+ border: 1px solid var(--mer-border-subtle);
299
+ border-radius: var(--radius);
300
+ }
301
+
302
+ /* ── Session Stats (compact) ── */
303
+ .meridian .session-stats {
304
+ display: grid;
305
+ grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
306
+ gap: 0.75rem;
307
+ margin-block-end: 3rem;
308
+ padding: 1rem 1.25rem;
309
+ background: var(--mer-surface);
310
+ border: 1px solid var(--mer-border-subtle);
311
+ border-radius: var(--radius);
312
+ }
313
+
314
+ .meridian .session-stats .stat-cell__coord {
315
+ margin-block-end: 0.125rem;
316
+ }
317
+
318
+ .meridian .session-stats .stat-cell__value {
319
+ font-size: 1.25rem;
320
+ }
321
+
322
+ .meridian .session-stats .stat-cell__label {
323
+ font-size: 0.6875rem;
324
+ }
325
+
326
+ /* ── Stat Cell (shared) ── */
327
+ .meridian .stat-cell {
328
+ text-align: center;
329
+ }
330
+
331
+ .meridian .stat-cell__coord {
332
+ font-family: var(--font-mono);
333
+ font-size: 0.6875rem;
334
+ color: var(--mer-text-muted);
335
+ letter-spacing: 0.08em;
336
+ text-transform: uppercase;
337
+ margin-block-end: 0.25rem;
338
+ }
339
+
340
+ .meridian .stat-cell__value {
341
+ font-family: var(--font-mono);
342
+ font-weight: 600;
343
+ font-size: 1.375rem;
344
+ color: var(--mer-accent);
345
+ }
346
+
347
+ .meridian .stat-cell__label {
348
+ font-family: var(--font-body);
349
+ font-size: 0.75rem;
350
+ color: var(--mer-text-secondary);
351
+ }
352
+
353
+ /* Counter animation */
354
+ @keyframes mer-stat-glow {
355
+ 0% { opacity: 0; transform: translateY(6px); }
356
+ 100% { opacity: 1; transform: translateY(0); }
357
+ }
358
+
359
+ .meridian .stat-counter {
360
+ animation: mer-stat-glow 0.8s ease forwards;
361
+ }
362
+
363
+ .meridian .stat-counter:nth-child(2) { animation-delay: 0.1s; }
364
+ .meridian .stat-counter:nth-child(3) { animation-delay: 0.2s; }
365
+ .meridian .stat-counter:nth-child(4) { animation-delay: 0.3s; }
366
+
367
+ /* ── Leverage ── */
368
+ .meridian .stat-cell--leverage {
369
+ grid-column: span 2;
370
+ }
371
+ .meridian .stat-cell--leverage .stat-cell__coord {
372
+ margin-bottom: 0.5rem;
373
+ }
374
+ .meridian .mer-leverage-nums {
375
+ display: flex;
376
+ align-items: baseline;
377
+ justify-content: center;
378
+ gap: 0.75rem;
379
+ margin-bottom: 0.5rem;
380
+ }
381
+ .meridian .mer-leverage-nums .mlev-val {
382
+ font-family: var(--font-mono);
383
+ font-weight: 600;
384
+ font-size: 1.375rem;
385
+ color: var(--mer-text);
386
+ }
387
+ .meridian .mer-leverage-nums .mlev-val--agent,
388
+ .meridian .mer-leverage-nums .mlev-val--multi {
389
+ color: var(--mer-accent);
390
+ }
391
+ .meridian .mer-leverage-nums .mlev-lbl {
392
+ font-family: var(--font-body);
393
+ font-size: 0.6875rem;
394
+ color: var(--mer-text-muted);
395
+ text-transform: uppercase;
396
+ letter-spacing: 0.05em;
397
+ }
398
+ .meridian .mer-leverage-bar {
399
+ height: 4px;
400
+ border-radius: 2px;
401
+ background: var(--mer-border-subtle);
402
+ display: flex;
403
+ overflow: hidden;
404
+ }
405
+ .meridian .mer-leverage-bar__human {
406
+ height: 100%;
407
+ background: rgba(0,0,0,0.15);
408
+ border-radius: 2px 0 0 2px;
409
+ }
410
+ .meridian .mer-leverage-bar__agent {
411
+ height: 100%;
412
+ background: var(--mer-accent);
413
+ border-radius: 0 2px 2px 0;
414
+ }
415
+
416
+ /* ── Breadcrumb ── */
417
+ .meridian .breadcrumb {
418
+ font-family: var(--font-mono);
419
+ font-size: 0.8125rem;
420
+ color: var(--mer-text-muted);
421
+ margin-block-end: 1.5rem;
422
+ }
423
+
424
+ .meridian .breadcrumb a { color: var(--mer-text-muted); }
425
+ .meridian .breadcrumb a:visited { color: var(--mer-text-muted); }
426
+ .meridian .breadcrumb a:hover { color: var(--mer-accent); }
427
+ .meridian .breadcrumb__sep { margin-inline: 0.375rem; opacity: 0.4; }
428
+
429
+ /* ── Project Hero ── */
430
+ .meridian .project-hero {
431
+ margin-block-end: 3rem;
432
+ }
433
+
434
+ .meridian .project-hero__title {
435
+ font-family: var(--font-display);
436
+ font-weight: 700;
437
+ font-size: 2.25rem;
438
+ color: var(--mer-white);
439
+ line-height: 1.1;
440
+ margin-block-end: 0.75rem;
441
+ }
442
+
443
+ .meridian .project-hero__links {
444
+ display: flex;
445
+ gap: 1.25rem;
446
+ font-family: var(--font-mono);
447
+ font-size: 0.8125rem;
448
+ margin-block-end: 1.5rem;
449
+ }
450
+
451
+ .meridian .project-hero__links a {
452
+ display: flex;
453
+ align-items: center;
454
+ gap: 0.375rem;
455
+ }
456
+
457
+ .meridian .project-hero__links svg {
458
+ width: 14px;
459
+ height: 14px;
460
+ stroke: var(--mer-accent);
461
+ fill: none;
462
+ stroke-width: 2;
463
+ }
464
+
465
+ /* ── Screenshot ── */
466
+ .meridian .screenshot {
467
+ background: var(--mer-surface);
468
+ border: 1px solid var(--mer-border-subtle);
469
+ border-radius: var(--radius);
470
+ overflow: hidden;
471
+ margin-block-end: 3rem;
472
+ }
473
+
474
+ .meridian .screenshot__chrome {
475
+ background: var(--mer-card);
476
+ padding: 0.625rem 1rem;
477
+ display: flex;
478
+ align-items: center;
479
+ gap: 0.5rem;
480
+ border-bottom: 1px solid var(--mer-border-subtle);
481
+ }
482
+
483
+ .meridian .screenshot__dot {
484
+ width: 10px;
485
+ height: 10px;
486
+ border-radius: 50%;
487
+ background: var(--mer-border);
488
+ }
489
+
490
+ .meridian .screenshot__url {
491
+ font-family: var(--font-mono);
492
+ font-size: 0.75rem;
493
+ color: var(--mer-text-muted);
494
+ margin-inline-start: 0.5rem;
495
+ }
496
+
497
+ .meridian .screenshot__body {
498
+ height: 240px;
499
+ background: linear-gradient(135deg, var(--mer-surface), var(--mer-card));
500
+ display: flex;
501
+ align-items: center;
502
+ justify-content: center;
503
+ }
504
+
505
+ .meridian .screenshot__placeholder {
506
+ font-family: var(--font-mono);
507
+ font-size: 0.875rem;
508
+ color: var(--mer-text-muted);
509
+ opacity: 0.5;
510
+ }
511
+
512
+ /* ── Project Cards (portfolio) ── */
513
+ .meridian .projects-section {
514
+ margin-block-end: 4rem;
515
+ }
516
+
517
+ .meridian .project-card {
518
+ background: var(--mer-surface);
519
+ border: 1px solid var(--mer-border-subtle);
520
+ border-radius: var(--radius);
521
+ padding: 1.75rem;
522
+ margin-block-end: 1.25rem;
523
+ transition: border-color 0.2s;
524
+ position: relative;
525
+ overflow: hidden;
526
+ }
527
+
528
+ .meridian .project-card::before {
529
+ content: '';
530
+ position: absolute;
531
+ top: 0;
532
+ left: 0;
533
+ width: 3px;
534
+ height: 100%;
535
+ background: var(--mer-accent);
536
+ border-radius: var(--radius-sm) 0 0 var(--radius-sm);
537
+ }
538
+
539
+ .meridian .project-card:hover {
540
+ border-color: var(--mer-accent);
541
+ }
542
+
543
+ .meridian .project-card__header {
544
+ display: flex;
545
+ align-items: flex-start;
546
+ justify-content: space-between;
547
+ gap: 1rem;
548
+ margin-block-end: 0.75rem;
549
+ }
550
+
551
+ .meridian .project-card__title {
552
+ font-family: var(--font-display);
553
+ font-weight: 600;
554
+ font-size: 1.25rem;
555
+ color: var(--mer-white);
556
+ }
557
+
558
+ .meridian .project-card__title a { color: var(--mer-white); }
559
+ .meridian .project-card__title a:visited { color: var(--mer-white); }
560
+ .meridian .project-card__title a:hover { color: var(--mer-accent); }
561
+
562
+ .meridian .project-card__source {
563
+ font-family: var(--font-mono);
564
+ font-size: 0.6875rem;
565
+ color: var(--mer-text-muted);
566
+ white-space: nowrap;
567
+ padding: 0.25rem 0.5rem;
568
+ background: var(--mer-accent-dim);
569
+ border-radius: var(--radius-sm);
570
+ }
571
+
572
+ .meridian .project-card__narrative {
573
+ font-size: 0.9375rem;
574
+ color: var(--mer-text-secondary);
575
+ line-height: 1.6;
576
+ margin-block-end: 1rem;
577
+ }
578
+
579
+ .meridian .project-card__stats {
580
+ display: flex;
581
+ flex-wrap: wrap;
582
+ gap: 1.25rem;
583
+ font-family: var(--font-mono);
584
+ font-size: 0.8125rem;
585
+ color: var(--mer-text-muted);
586
+ margin-block-end: 1rem;
587
+ padding-block-end: 1rem;
588
+ border-bottom: 1px solid var(--mer-border-subtle);
589
+ }
590
+
591
+ .meridian .project-card__stats span strong {
592
+ color: var(--mer-accent);
593
+ font-weight: 500;
594
+ }
595
+
596
+ .meridian .project-card__skills {
597
+ display: flex;
598
+ flex-wrap: wrap;
599
+ gap: 0.375rem;
600
+ }
601
+
602
+ /* ── Skill Chips ── */
603
+ .meridian .skill-chip {
604
+ font-family: var(--font-mono);
605
+ font-size: 0.75rem;
606
+ padding: 0.3125rem 0.75rem;
607
+ background: var(--mer-accent-dim);
608
+ color: var(--mer-accent);
609
+ border-radius: var(--radius-sm);
610
+ letter-spacing: 0.02em;
611
+ }
612
+
613
+ /* ── Narrative ── */
614
+ .meridian .narrative {
615
+ margin-block-end: 3rem;
616
+ }
617
+
618
+ .meridian .narrative p {
619
+ font-size: 1rem;
620
+ color: var(--mer-text-secondary);
621
+ line-height: 1.7;
622
+ margin-block-end: 1.25rem;
623
+ }
624
+
625
+ .meridian .narrative p:last-child { margin-block-end: 0; }
626
+
627
+ /* ── Phase Route / Timeline ── */
628
+ .meridian .route-section {
629
+ margin-block-end: 3rem;
630
+ }
631
+
632
+ .meridian .route {
633
+ position: relative;
634
+ padding-inline-start: 2.5rem;
635
+ }
636
+
637
+ .meridian .route::before {
638
+ content: '';
639
+ position: absolute;
640
+ left: 9px;
641
+ top: 0;
642
+ bottom: 0;
643
+ width: 2px;
644
+ background: linear-gradient(to bottom, var(--mer-accent), var(--mer-border-subtle));
645
+ border-radius: 1px;
646
+ }
647
+
648
+ .meridian .route-waypoint {
649
+ position: relative;
650
+ margin-block-end: 1.75rem;
651
+ padding-block-end: 0.5rem;
652
+ }
653
+
654
+ .meridian .route-waypoint:last-child { margin-block-end: 0; }
655
+
656
+ .meridian .route-waypoint__marker {
657
+ position: absolute;
658
+ left: -2.5rem;
659
+ top: 0.125rem;
660
+ width: 20px;
661
+ height: 20px;
662
+ display: flex;
663
+ align-items: center;
664
+ justify-content: center;
665
+ }
666
+
667
+ .meridian .route-waypoint__marker-dot {
668
+ width: 10px;
669
+ height: 10px;
670
+ border-radius: 50%;
671
+ background: var(--mer-accent);
672
+ border: 2px solid var(--mer-bg);
673
+ box-shadow: 0 0 0 2px var(--mer-accent);
674
+ }
675
+
676
+ .meridian .route-waypoint__phase {
677
+ font-family: var(--font-mono);
678
+ font-size: 0.6875rem;
679
+ color: var(--mer-accent);
680
+ letter-spacing: 0.06em;
681
+ text-transform: uppercase;
682
+ margin-block-end: 0.25rem;
683
+ }
684
+
685
+ .meridian .route-waypoint__title {
686
+ font-family: var(--font-display);
687
+ font-weight: 600;
688
+ font-size: 1.0625rem;
689
+ color: var(--mer-white);
690
+ margin-block-end: 0.375rem;
691
+ }
692
+
693
+ .meridian .route-waypoint__desc {
694
+ font-size: 0.875rem;
695
+ color: var(--mer-text-secondary);
696
+ line-height: 1.55;
697
+ }
698
+
699
+ .meridian .route-waypoint__dates {
700
+ font-family: var(--font-mono);
701
+ font-size: 0.75rem;
702
+ color: var(--mer-text-muted);
703
+ margin-block-start: 0.375rem;
704
+ }
705
+
706
+ /* ── Elevation Profile Chart ── */
707
+ .meridian .elevation-section {
708
+ margin-block-end: 3rem;
709
+ }
710
+
711
+ .meridian .elevation-chart {
712
+ background: var(--mer-surface);
713
+ border: 1px solid var(--mer-border-subtle);
714
+ border-radius: var(--radius);
715
+ padding: 1.5rem;
716
+ overflow: hidden;
717
+ }
718
+
719
+ .meridian .elevation-chart svg {
720
+ width: 100%;
721
+ height: auto;
722
+ display: block;
723
+ }
724
+
725
+ .meridian .elevation-chart__x-labels {
726
+ display: flex;
727
+ justify-content: space-between;
728
+ margin-block-start: 0.75rem;
729
+ font-family: var(--font-mono);
730
+ font-size: 0.6875rem;
731
+ color: var(--mer-text-muted);
732
+ }
733
+
734
+ /* ── Session Table ── */
735
+ .meridian .sessions-section {
736
+ margin-block-end: 3rem;
737
+ }
738
+
739
+ .meridian .session-table-wrap {
740
+ overflow-x: auto;
741
+ -webkit-overflow-scrolling: touch;
742
+ }
743
+
744
+ .meridian .session-table {
745
+ width: 100%;
746
+ border-collapse: collapse;
747
+ font-size: 0.875rem;
748
+ }
749
+
750
+ .meridian .session-table th {
751
+ font-family: var(--font-mono);
752
+ font-size: 0.6875rem;
753
+ color: var(--mer-text-muted);
754
+ letter-spacing: 0.06em;
755
+ text-transform: uppercase;
756
+ text-align: left;
757
+ padding: 0.625rem 0.75rem;
758
+ border-bottom: 1px solid var(--mer-border-subtle);
759
+ white-space: nowrap;
760
+ }
761
+
762
+ .meridian .session-table td {
763
+ padding: 0.625rem 0.75rem;
764
+ border-bottom: 1px solid rgba(6, 95, 70, 0.3);
765
+ color: var(--mer-text-secondary);
766
+ white-space: nowrap;
767
+ }
768
+
769
+ .meridian .session-table tbody tr:hover {
770
+ background: var(--mer-accent-dim);
771
+ }
772
+
773
+ .meridian .session-table td:first-child {
774
+ font-family: var(--font-mono);
775
+ color: var(--mer-text-muted);
776
+ font-size: 0.8125rem;
777
+ }
778
+
779
+ .meridian .session-table__title-cell {
780
+ white-space: normal !important;
781
+ min-width: 200px;
782
+ }
783
+
784
+ .meridian .session-table__title-cell a {
785
+ color: var(--mer-white);
786
+ font-weight: 500;
787
+ }
788
+
789
+ .meridian .session-table__title-cell a:visited { color: var(--mer-white); }
790
+ .meridian .session-table__title-cell a:hover { color: var(--mer-accent); }
791
+
792
+ .meridian .session-table .mono-val {
793
+ font-family: var(--font-mono);
794
+ color: var(--mer-accent);
795
+ font-size: 0.8125rem;
796
+ }
797
+
798
+ /* ── Skills Grid ── */
799
+ .meridian .skills-section {
800
+ margin-block-end: 3rem;
801
+ }
802
+
803
+ .meridian .skills-grid {
804
+ display: flex;
805
+ flex-wrap: wrap;
806
+ gap: 0.5rem;
807
+ }
808
+
809
+ /* ── Source Breakdown ── */
810
+ .meridian .source-section {
811
+ margin-block-end: 3rem;
812
+ }
813
+
814
+ .meridian .source-bar-large {
815
+ display: flex;
816
+ height: 10px;
817
+ border-radius: 5px;
818
+ overflow: hidden;
819
+ margin-block-end: 0.75rem;
820
+ }
821
+
822
+ .meridian .source-bar-large__segment { height: 100%; }
823
+ .meridian .source-bar-large__segment--claude { background: var(--mer-accent); }
824
+ .meridian .source-bar-large__segment--cursor { background: var(--mer-text-muted); }
825
+
826
+ .meridian .source-legend {
827
+ display: flex;
828
+ gap: 1.5rem;
829
+ font-family: var(--font-mono);
830
+ font-size: 0.8125rem;
831
+ color: var(--mer-text-secondary);
832
+ }
833
+
834
+ .meridian .source-legend__dot {
835
+ display: inline-block;
836
+ width: 10px;
837
+ height: 10px;
838
+ border-radius: 50%;
839
+ margin-inline-end: 0.375rem;
840
+ vertical-align: middle;
841
+ }
842
+
843
+ /* ── Featured Sessions ── */
844
+ .meridian .featured-section {
845
+ margin-block-end: 3rem;
846
+ }
847
+
848
+ .meridian .featured-grid {
849
+ display: grid;
850
+ grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
851
+ gap: 1rem;
852
+ }
853
+
854
+ .meridian .featured-card {
855
+ background: var(--mer-surface);
856
+ border: 1px solid var(--mer-border-subtle);
857
+ border-radius: var(--radius);
858
+ padding: 1.25rem;
859
+ transition: border-color 0.2s;
860
+ text-decoration: none;
861
+ color: inherit;
862
+ display: block;
863
+ }
864
+
865
+ .meridian .featured-card:hover {
866
+ border-color: var(--mer-accent);
867
+ text-decoration: none;
868
+ }
869
+
870
+ .meridian .featured-card__tag {
871
+ font-family: var(--font-mono);
872
+ font-size: 0.6875rem;
873
+ color: var(--mer-accent);
874
+ letter-spacing: 0.06em;
875
+ text-transform: uppercase;
876
+ margin-block-end: 0.375rem;
877
+ }
878
+
879
+ .meridian .featured-card__title {
880
+ font-family: var(--font-display);
881
+ font-weight: 600;
882
+ font-size: 1rem;
883
+ color: var(--mer-white);
884
+ margin-block-end: 0.5rem;
885
+ }
886
+
887
+ .meridian .featured-card__title a { color: var(--mer-white); }
888
+ .meridian .featured-card__title a:visited { color: var(--mer-white); }
889
+ .meridian .featured-card__title a:hover { color: var(--mer-accent); text-decoration: none; }
890
+
891
+ .meridian .featured-card__meta {
892
+ font-family: var(--font-mono);
893
+ font-size: 0.75rem;
894
+ color: var(--mer-text-muted);
895
+ display: flex;
896
+ flex-wrap: wrap;
897
+ gap: 0.75rem;
898
+ }
899
+
900
+ .meridian .featured-card__meta strong {
901
+ color: var(--mer-accent);
902
+ font-weight: 500;
903
+ }
904
+
905
+ /* ── Session Header ── */
906
+ .meridian .session-header {
907
+ margin-block-end: 2.5rem;
908
+ }
909
+
910
+ .meridian .session-header__title {
911
+ font-family: var(--font-display);
912
+ font-weight: 700;
913
+ font-size: 2rem;
914
+ color: var(--mer-white);
915
+ line-height: 1.15;
916
+ margin-block-end: 1rem;
917
+ }
918
+
919
+ .meridian .session-header__meta {
920
+ display: flex;
921
+ flex-wrap: wrap;
922
+ gap: 1.25rem;
923
+ font-family: var(--font-mono);
924
+ font-size: 0.8125rem;
925
+ color: var(--mer-text-muted);
926
+ margin-block-end: 1.25rem;
927
+ }
928
+
929
+ .meridian .session-header__meta-item {
930
+ display: flex;
931
+ align-items: center;
932
+ gap: 0.375rem;
933
+ }
934
+
935
+ .meridian .session-header__meta-item svg {
936
+ width: 14px;
937
+ height: 14px;
938
+ stroke: var(--mer-text-muted);
939
+ fill: none;
940
+ stroke-width: 2;
941
+ }
942
+
943
+ .meridian .session-header__meta-value {
944
+ color: var(--mer-accent);
945
+ font-weight: 500;
946
+ }
947
+
948
+ /* ── Dev Take ── */
949
+ .meridian .dev-take {
950
+ background: var(--mer-surface);
951
+ border: 1px solid var(--mer-border-subtle);
952
+ border-inline-start: 3px solid var(--mer-accent);
953
+ border-radius: 0 var(--radius) var(--radius) 0;
954
+ padding: 1.25rem 1.5rem;
955
+ margin-block-end: 3rem;
956
+ }
957
+
958
+ .meridian .dev-take__label {
959
+ font-family: var(--font-mono);
960
+ font-size: 0.6875rem;
961
+ color: var(--mer-accent);
962
+ letter-spacing: 0.08em;
963
+ text-transform: uppercase;
964
+ margin-block-end: 0.5rem;
965
+ }
966
+
967
+ .meridian .dev-take__text {
968
+ font-size: 1rem;
969
+ color: var(--mer-text-secondary);
970
+ line-height: 1.6;
971
+ font-style: italic;
972
+ }
973
+
974
+ /* ── Layout: Main + Sidebar ── */
975
+ .meridian .session-layout {
976
+ display: grid;
977
+ grid-template-columns: 1fr 280px;
978
+ gap: 2.5rem;
979
+ align-items: start;
980
+ }
981
+
982
+ .meridian .session-main { min-width: 0; }
983
+
984
+ /* ── Sidebar ── */
985
+ .meridian .sidebar { position: sticky; top: 2rem; }
986
+
987
+ .meridian .sidebar-block {
988
+ margin-block-end: 2rem;
989
+ }
990
+
991
+ .meridian .sidebar-block__title {
992
+ font-family: var(--font-mono);
993
+ font-size: 0.6875rem;
994
+ color: var(--mer-text-muted);
995
+ letter-spacing: 0.08em;
996
+ text-transform: uppercase;
997
+ margin-block-end: 0.75rem;
998
+ padding-block-end: 0.5rem;
999
+ border-bottom: 1px solid var(--mer-border-subtle);
1000
+ }
1001
+
1002
+ /* Tools table */
1003
+ .meridian .tools-table {
1004
+ width: 100%;
1005
+ border-collapse: collapse;
1006
+ }
1007
+
1008
+ .meridian .tools-table td {
1009
+ padding: 0.375rem 0;
1010
+ font-size: 0.8125rem;
1011
+ }
1012
+
1013
+ .meridian .tools-table td:first-child {
1014
+ font-family: var(--font-mono);
1015
+ color: var(--mer-text-secondary);
1016
+ }
1017
+
1018
+ .meridian .tools-table td:last-child {
1019
+ text-align: right;
1020
+ font-family: var(--font-mono);
1021
+ color: var(--mer-accent);
1022
+ font-weight: 500;
1023
+ }
1024
+
1025
+ /* Files changed */
1026
+ .meridian .files-list {
1027
+ list-style: none;
1028
+ }
1029
+
1030
+ .meridian .files-list__item {
1031
+ display: flex;
1032
+ justify-content: space-between;
1033
+ align-items: flex-start;
1034
+ padding: 0.375rem 0;
1035
+ border-bottom: 1px solid rgba(6, 95, 70, 0.2);
1036
+ gap: 0.5rem;
1037
+ }
1038
+
1039
+ .meridian .files-list__item:last-child { border-bottom: none; }
1040
+
1041
+ .meridian .files-list__path {
1042
+ font-family: var(--font-mono);
1043
+ font-size: 0.75rem;
1044
+ color: var(--mer-text-secondary);
1045
+ word-break: break-all;
1046
+ line-height: 1.4;
1047
+ }
1048
+
1049
+ .meridian .files-list__diff {
1050
+ font-family: var(--font-mono);
1051
+ font-size: 0.75rem;
1052
+ color: var(--mer-accent);
1053
+ font-weight: 500;
1054
+ white-space: nowrap;
1055
+ flex-shrink: 0;
1056
+ }
1057
+
1058
+ /* Sidebar skills */
1059
+ .meridian .sidebar-skills {
1060
+ display: flex;
1061
+ flex-wrap: wrap;
1062
+ gap: 0.375rem;
1063
+ }
1064
+
1065
+ /* ── Execution Path (Beats) ── */
1066
+ .meridian .beats-section {
1067
+ margin-block-end: 3rem;
1068
+ }
1069
+
1070
+ .meridian .beats-path {
1071
+ position: relative;
1072
+ padding-inline-start: 2.5rem;
1073
+ }
1074
+
1075
+ .meridian .beats-path::before {
1076
+ content: '';
1077
+ position: absolute;
1078
+ left: 9px;
1079
+ top: 4px;
1080
+ bottom: 4px;
1081
+ width: 2px;
1082
+ background: linear-gradient(to bottom, var(--mer-accent), var(--mer-border-subtle));
1083
+ border-radius: 1px;
1084
+ }
1085
+
1086
+ .meridian .beat {
1087
+ position: relative;
1088
+ margin-block-end: 1.75rem;
1089
+ }
1090
+
1091
+ .meridian .beat:last-child { margin-block-end: 0; }
1092
+
1093
+ .meridian .beat__marker {
1094
+ position: absolute;
1095
+ left: -2.5rem;
1096
+ top: 0.1875rem;
1097
+ width: 20px;
1098
+ height: 20px;
1099
+ display: flex;
1100
+ align-items: center;
1101
+ justify-content: center;
1102
+ }
1103
+
1104
+ .meridian .beat__marker-num {
1105
+ width: 20px;
1106
+ height: 20px;
1107
+ border-radius: 50%;
1108
+ background: var(--mer-accent);
1109
+ color: var(--mer-bg);
1110
+ font-family: var(--font-mono);
1111
+ font-size: 0.625rem;
1112
+ font-weight: 600;
1113
+ display: flex;
1114
+ align-items: center;
1115
+ justify-content: center;
1116
+ line-height: 1;
1117
+ }
1118
+
1119
+ .meridian .beat__title {
1120
+ font-family: var(--font-display);
1121
+ font-weight: 600;
1122
+ font-size: 1.0625rem;
1123
+ color: var(--mer-white);
1124
+ margin-block-end: 0.375rem;
1125
+ }
1126
+
1127
+ .meridian .beat__desc {
1128
+ font-size: 0.9375rem;
1129
+ color: var(--mer-text-secondary);
1130
+ line-height: 1.6;
1131
+ }
1132
+
1133
+ /* ── Q&A ── */
1134
+ .meridian .qa-section {
1135
+ margin-block-end: 3rem;
1136
+ }
1137
+
1138
+ .meridian .qa-item {
1139
+ margin-block-end: 1.5rem;
1140
+ padding: 1.25rem;
1141
+ background: var(--mer-surface);
1142
+ border: 1px solid var(--mer-border-subtle);
1143
+ border-radius: var(--radius);
1144
+ }
1145
+
1146
+ .meridian .qa-item:last-child { margin-block-end: 0; }
1147
+
1148
+ .meridian .qa-item__q {
1149
+ font-family: var(--font-display);
1150
+ font-weight: 600;
1151
+ font-size: 0.9375rem;
1152
+ color: var(--mer-white);
1153
+ margin-block-end: 0.75rem;
1154
+ display: flex;
1155
+ gap: 0.5rem;
1156
+ }
1157
+
1158
+ .meridian .qa-item__q-mark {
1159
+ font-family: var(--font-mono);
1160
+ color: var(--mer-accent);
1161
+ font-weight: 600;
1162
+ flex-shrink: 0;
1163
+ }
1164
+
1165
+ .meridian .qa-item__a {
1166
+ font-size: 0.9375rem;
1167
+ color: var(--mer-text-secondary);
1168
+ line-height: 1.65;
1169
+ padding-inline-start: 1.5rem;
1170
+ }
1171
+
1172
+ /* ── Agent Summary ── */
1173
+ .meridian .agents-section {
1174
+ margin-block-end: 3rem;
1175
+ }
1176
+
1177
+ .meridian .agent-table {
1178
+ width: 100%;
1179
+ border-collapse: collapse;
1180
+ }
1181
+
1182
+ .meridian .agent-table th {
1183
+ font-family: var(--font-mono);
1184
+ font-size: 0.6875rem;
1185
+ color: var(--mer-text-muted);
1186
+ letter-spacing: 0.06em;
1187
+ text-transform: uppercase;
1188
+ text-align: left;
1189
+ padding: 0.625rem 0.75rem;
1190
+ border-bottom: 1px solid var(--mer-border-subtle);
1191
+ }
1192
+
1193
+ .meridian .agent-table td {
1194
+ padding: 0.625rem 0.75rem;
1195
+ border-bottom: 1px solid rgba(6, 95, 70, 0.25);
1196
+ font-size: 0.875rem;
1197
+ }
1198
+
1199
+ .meridian .agent-table__role {
1200
+ display: flex;
1201
+ align-items: center;
1202
+ gap: 0.5rem;
1203
+ color: var(--mer-text-secondary);
1204
+ }
1205
+
1206
+ .meridian .agent-table__dot {
1207
+ width: 10px;
1208
+ height: 10px;
1209
+ border-radius: 50%;
1210
+ flex-shrink: 0;
1211
+ }
1212
+
1213
+ .meridian .agent-table .mono-val {
1214
+ font-family: var(--font-mono);
1215
+ color: var(--mer-accent);
1216
+ font-size: 0.8125rem;
1217
+ }
1218
+
1219
+ /* ── Agent Bar Chart ── */
1220
+ .meridian .agent-bars {
1221
+ margin-block-start: 1.25rem;
1222
+ }
1223
+
1224
+ .meridian .agent-bar-row {
1225
+ display: flex;
1226
+ align-items: center;
1227
+ gap: 0.75rem;
1228
+ margin-block-end: 0.625rem;
1229
+ }
1230
+
1231
+ .meridian .agent-bar-row__label {
1232
+ font-family: var(--font-mono);
1233
+ font-size: 0.75rem;
1234
+ color: var(--mer-text-secondary);
1235
+ width: 120px;
1236
+ flex-shrink: 0;
1237
+ text-align: right;
1238
+ }
1239
+
1240
+ .meridian .agent-bar-row__track {
1241
+ flex: 1;
1242
+ height: 8px;
1243
+ background: rgba(6, 95, 70, 0.2);
1244
+ border-radius: 4px;
1245
+ overflow: hidden;
1246
+ }
1247
+
1248
+ .meridian .agent-bar-row__fill {
1249
+ height: 100%;
1250
+ border-radius: 4px;
1251
+ transition: width 0.8s ease;
1252
+ }
1253
+
1254
+ .meridian .agent-bar-row__value {
1255
+ font-family: var(--font-mono);
1256
+ font-size: 0.75rem;
1257
+ color: var(--mer-text-muted);
1258
+ width: 40px;
1259
+ flex-shrink: 0;
1260
+ }
1261
+
1262
+ /* ── Agent Dots (session table) ── */
1263
+ .meridian .agent-dots {
1264
+ display: flex;
1265
+ gap: 3px;
1266
+ }
1267
+
1268
+ .meridian .agent-dot {
1269
+ width: 8px;
1270
+ height: 8px;
1271
+ border-radius: 50%;
1272
+ }
1273
+
1274
+ /* ── Key Decisions ── */
1275
+ .meridian .decisions-section {
1276
+ margin-block-end: 3rem;
1277
+ }
1278
+
1279
+ .meridian .decision-list {
1280
+ list-style: none;
1281
+ counter-reset: decision-counter;
1282
+ }
1283
+
1284
+ .meridian .decision-item {
1285
+ counter-increment: decision-counter;
1286
+ position: relative;
1287
+ padding-inline-start: 2.5rem;
1288
+ margin-block-end: 1rem;
1289
+ font-size: 0.9375rem;
1290
+ color: var(--mer-text-secondary);
1291
+ line-height: 1.55;
1292
+ }
1293
+
1294
+ .meridian .decision-item::before {
1295
+ content: counter(decision-counter, decimal-leading-zero);
1296
+ position: absolute;
1297
+ left: 0;
1298
+ font-family: var(--font-mono);
1299
+ font-size: 0.875rem;
1300
+ color: var(--mer-accent);
1301
+ font-weight: 600;
1302
+ }
1303
+
1304
+ /* ── Footer ── */
1305
+ .meridian .mer-footer {
1306
+ margin-block-start: 4rem;
1307
+ padding-block-start: 1.5rem;
1308
+ border-top: 1px solid var(--mer-border-subtle);
1309
+ text-align: center;
1310
+ }
1311
+
1312
+ .meridian .mer-footer__text {
1313
+ font-family: var(--font-mono);
1314
+ font-size: 0.75rem;
1315
+ color: var(--mer-text-muted);
1316
+ letter-spacing: 0.04em;
1317
+ }
1318
+
1319
+ /* ── Responsive ── */
1320
+ @media (max-width: 768px) {
1321
+ .meridian .mer-page { padding: 1.25rem 1rem; }
1322
+
1323
+ .meridian .hero__name { font-size: 2rem; }
1324
+ .meridian .hero__profile { flex-direction: column; }
1325
+ .meridian .hero__photo { width: 80px; height: 100px; }
1326
+ .meridian .hero__contact { font-size: 0.75rem; }
1327
+
1328
+ .meridian .stats-grid {
1329
+ grid-template-columns: repeat(2, 1fr);
1330
+ gap: 1rem;
1331
+ }
1332
+
1333
+ .meridian .stat-cell__value { font-size: 1.375rem; }
1334
+
1335
+ .meridian .project-card { padding: 1.25rem; }
1336
+ .meridian .project-card__header { flex-direction: column; }
1337
+ .meridian .project-card__stats { gap: 0.75rem; }
1338
+
1339
+ .meridian .project-hero__title { font-size: 1.75rem; }
1340
+ .meridian .stats-row { grid-template-columns: repeat(3, 1fr); }
1341
+ .meridian .featured-grid { grid-template-columns: 1fr; }
1342
+ .meridian .session-table { font-size: 0.8125rem; }
1343
+
1344
+ .meridian .session-layout {
1345
+ grid-template-columns: 1fr;
1346
+ gap: 2rem;
1347
+ }
1348
+ .meridian .sidebar {
1349
+ position: static;
1350
+ order: -1;
1351
+ display: grid;
1352
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
1353
+ gap: 1.5rem;
1354
+ }
1355
+ .meridian .sidebar-block { margin-block-end: 0; }
1356
+ .meridian .session-header__title { font-size: 1.5rem; }
1357
+ .meridian .session-stats { grid-template-columns: repeat(2, 1fr); }
1358
+ .meridian .agent-bar-row__label { width: 80px; font-size: 0.6875rem; }
1359
+ }
1360
+
1361
+ @media (max-width: 480px) {
1362
+ .meridian .hero__name { font-size: 1.625rem; }
1363
+ .meridian .section-heading { font-size: 1.375rem; }
1364
+
1365
+ .meridian .project-hero__title { font-size: 1.375rem; }
1366
+ .meridian .stats-row { grid-template-columns: repeat(2, 1fr); }
1367
+
1368
+ .meridian .session-header__title { font-size: 1.25rem; }
1369
+ .meridian .session-header__meta { gap: 0.75rem; }
1370
+ .meridian .sidebar { grid-template-columns: 1fr; }
1371
+ }
1372
+
1373
+
1374
+ /* Live-edit empty field hiding */
1375
+ [data-portfolio-empty="true"] { display: none; }