heyiam 0.2.28 → 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-B_d6DlEI.js +0 -21
  177. package/dist/public/assets/index-Dalqz2mC.css +0 -1
@@ -0,0 +1,1641 @@
1
+ /* ── Bauhaus template styles ──
2
+ * Extracted from mockup HTML files.
3
+ * Light theme with red/blue/yellow primary palette,
4
+ * Space Grotesk display font, heavy black borders.
5
+ */
6
+
7
+ :root {
8
+ --bg: #fafafa;
9
+ --surface: #ffffff;
10
+ --text: #1a1a1a;
11
+ --text-secondary: #6b6b6b;
12
+ --red: #dc2626;
13
+ --blue: #2563eb;
14
+ --yellow: #eab308;
15
+ --black: #1a1a1a;
16
+ --border: 3px solid var(--black);
17
+ --font-display: 'Space Grotesk', sans-serif;
18
+ --font-body: 'Inter', -apple-system, sans-serif;
19
+ --font-mono: 'IBM Plex Mono', monospace;
20
+ }
21
+
22
+ /* ── Visited links ── */
23
+ .bauhaus a:visited { color: inherit; }
24
+ .bauhaus .breadcrumb a:visited { color: var(--blue); }
25
+ .bauhaus .project-links a:visited { color: var(--blue); }
26
+ .bauhaus .profile-links a:visited { color: var(--text-secondary); }
27
+ .bauhaus .session-title-link:visited { color: var(--text); }
28
+ .bauhaus .featured-card:visited { color: inherit; }
29
+ .bauhaus .project-card:visited { color: inherit; }
30
+
31
+ /* ── Skip link ── */
32
+ .bauhaus .skip-link {
33
+ position: absolute;
34
+ top: -100%;
35
+ left: 16px;
36
+ z-index: 1000;
37
+ padding: 12px 24px;
38
+ background: var(--black);
39
+ color: #fff;
40
+ font-family: var(--font-mono);
41
+ font-size: 14px;
42
+ text-decoration: none;
43
+ }
44
+ .bauhaus .skip-link:focus { top: 16px; }
45
+
46
+ /* ── Hero (portfolio) ── */
47
+ .bauhaus .hero {
48
+ padding: 80px 0 60px;
49
+ position: relative;
50
+ overflow: hidden;
51
+ }
52
+
53
+ .bauhaus .hero-grid {
54
+ display: grid;
55
+ grid-template-columns: 1fr auto;
56
+ gap: 48px;
57
+ align-items: start;
58
+ }
59
+
60
+ .bauhaus .hero-content {
61
+ position: relative;
62
+ z-index: 1;
63
+ }
64
+
65
+ .bauhaus .hero h1 {
66
+ font-family: var(--font-display);
67
+ font-size: clamp(48px, 7vw, 80px);
68
+ font-weight: 700;
69
+ line-height: 1.0;
70
+ letter-spacing: -2px;
71
+ margin-bottom: 20px;
72
+ }
73
+
74
+ .bauhaus .hero h1 .accent-dot {
75
+ color: var(--red);
76
+ }
77
+
78
+ .bauhaus .hero-bio {
79
+ font-size: 18px;
80
+ color: var(--text-secondary);
81
+ max-width: 560px;
82
+ margin-bottom: 12px;
83
+ }
84
+
85
+ .bauhaus .hero-location {
86
+ font-family: var(--font-mono);
87
+ font-size: 13px;
88
+ color: var(--text-secondary);
89
+ display: flex;
90
+ align-items: center;
91
+ gap: 8px;
92
+ }
93
+
94
+ .bauhaus .hero-location::before {
95
+ content: "";
96
+ width: 8px;
97
+ height: 8px;
98
+ background: var(--blue);
99
+ border-radius: 50%;
100
+ display: inline-block;
101
+ }
102
+
103
+ .bauhaus .hero-photo {
104
+ width: 100px;
105
+ height: 130px;
106
+ border-radius: 0px;
107
+ object-fit: cover;
108
+ object-position: 55% 10%;
109
+ border: var(--border);
110
+ margin-bottom: 20px;
111
+ }
112
+
113
+ /* Profile links */
114
+ .bauhaus .profile-links {
115
+ display: flex;
116
+ flex-wrap: wrap;
117
+ gap: 12px;
118
+ margin-top: 16px;
119
+ align-items: center;
120
+ }
121
+
122
+ .bauhaus .profile-links a {
123
+ display: inline-flex;
124
+ align-items: center;
125
+ gap: 6px;
126
+ font-family: var(--font-mono);
127
+ font-size: 13px;
128
+ color: var(--text-secondary);
129
+ text-decoration: none;
130
+ padding: 4px 10px;
131
+ border: 2px solid transparent;
132
+ transition: border-color 0.15s ease, color 0.15s ease;
133
+ }
134
+
135
+ .bauhaus .profile-links a:hover {
136
+ border-color: var(--black);
137
+ color: var(--text);
138
+ }
139
+
140
+ .bauhaus .profile-links a:focus-visible {
141
+ outline: 3px solid var(--blue);
142
+ outline-offset: 2px;
143
+ }
144
+
145
+ .bauhaus .profile-links a svg {
146
+ flex-shrink: 0;
147
+ }
148
+
149
+ /* Geometric shapes — hero */
150
+ .bauhaus .hero-shapes {
151
+ position: relative;
152
+ width: 220px;
153
+ height: 220px;
154
+ flex-shrink: 0;
155
+ }
156
+
157
+ .bauhaus .shape-circle {
158
+ width: 120px;
159
+ height: 120px;
160
+ border-radius: 50%;
161
+ background: var(--red);
162
+ position: absolute;
163
+ top: 0;
164
+ right: 0;
165
+ }
166
+
167
+ .bauhaus .shape-rect-blue {
168
+ width: 80px;
169
+ height: 140px;
170
+ background: var(--blue);
171
+ position: absolute;
172
+ bottom: 0;
173
+ left: 0;
174
+ }
175
+
176
+ .bauhaus .shape-rect-yellow {
177
+ width: 100px;
178
+ height: 40px;
179
+ background: var(--yellow);
180
+ position: absolute;
181
+ bottom: 50px;
182
+ right: 20px;
183
+ }
184
+
185
+ .bauhaus .shape-line {
186
+ width: 3px;
187
+ height: 180px;
188
+ background: var(--black);
189
+ position: absolute;
190
+ top: 20px;
191
+ left: 90px;
192
+ }
193
+
194
+ /* ── Stats bar (portfolio) ── */
195
+ .bauhaus .stats-bar {
196
+ display: grid;
197
+ grid-template-columns: repeat(4, 1fr);
198
+ gap: 0;
199
+ border: var(--border);
200
+ margin-bottom: 64px;
201
+ }
202
+
203
+ .bauhaus .stat-item {
204
+ padding: 24px;
205
+ text-align: center;
206
+ border-right: var(--border);
207
+ position: relative;
208
+ }
209
+
210
+ .bauhaus .stat-item:last-child {
211
+ border-right: none;
212
+ }
213
+
214
+ .bauhaus .stat-number {
215
+ font-family: var(--font-display);
216
+ font-size: clamp(36px, 5vw, 56px);
217
+ font-weight: 700;
218
+ line-height: 1;
219
+ margin-bottom: 4px;
220
+ }
221
+
222
+ .bauhaus .stat-label {
223
+ font-family: var(--font-mono);
224
+ font-size: 12px;
225
+ font-weight: 500;
226
+ text-transform: uppercase;
227
+ letter-spacing: 1px;
228
+ }
229
+
230
+ /* ── Section headings ── */
231
+ .bauhaus .section-heading {
232
+ display: flex;
233
+ align-items: center;
234
+ gap: 16px;
235
+ margin-bottom: 32px;
236
+ }
237
+
238
+ .bauhaus .section-heading h2 {
239
+ font-family: var(--font-display);
240
+ font-size: 32px;
241
+ font-weight: 700;
242
+ }
243
+
244
+ .bauhaus .section-heading-shape {
245
+ flex-shrink: 0;
246
+ }
247
+
248
+ .bauhaus .heading-line {
249
+ flex: 1;
250
+ height: 3px;
251
+ background: var(--black);
252
+ }
253
+
254
+ .bauhaus.heyiam-project .section-heading h2 {
255
+ font-size: 28px;
256
+ }
257
+
258
+ .bauhaus.heyiam-project .section-heading {
259
+ margin-bottom: 28px;
260
+ }
261
+
262
+ .bauhaus.heyiam-session .section-heading h2 {
263
+ font-size: 24px;
264
+ }
265
+
266
+ .bauhaus.heyiam-session .section-heading {
267
+ margin-bottom: 24px;
268
+ }
269
+
270
+ /* ── Project cards (portfolio) ── */
271
+ .bauhaus .projects-section {
272
+ padding-bottom: 80px;
273
+ }
274
+
275
+ .bauhaus .projects-grid {
276
+ display: grid;
277
+ gap: 32px;
278
+ }
279
+
280
+ .bauhaus .project-card {
281
+ background: var(--card);
282
+ border: var(--border);
283
+ display: block;
284
+ overflow: hidden;
285
+ text-decoration: none;
286
+ color: inherit;
287
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
288
+ }
289
+
290
+ .bauhaus .project-card:hover {
291
+ transform: translate(-4px, -4px);
292
+ box-shadow: 4px 4px 0 var(--black);
293
+ }
294
+
295
+ .bauhaus .project-card:focus-visible {
296
+ outline: 3px solid var(--blue);
297
+ outline-offset: 2px;
298
+ }
299
+
300
+ .bauhaus .project-card-inner {
301
+ display: grid;
302
+ grid-template-columns: auto 1fr;
303
+ }
304
+
305
+ .bauhaus .project-accent {
306
+ width: 12px;
307
+ }
308
+
309
+ .bauhaus .project-card:nth-child(3n+1) .project-accent { background: var(--red); }
310
+ .bauhaus .project-card:nth-child(3n+2) .project-accent { background: var(--blue); }
311
+ .bauhaus .project-card:nth-child(3n) .project-accent { background: var(--yellow); }
312
+
313
+ .bauhaus .project-body {
314
+ padding: 32px;
315
+ }
316
+
317
+ .bauhaus .project-header {
318
+ display: flex;
319
+ align-items: flex-start;
320
+ justify-content: space-between;
321
+ gap: 16px;
322
+ margin-bottom: 16px;
323
+ }
324
+
325
+ .bauhaus .project-title {
326
+ font-family: var(--font-display);
327
+ font-size: 28px;
328
+ font-weight: 700;
329
+ line-height: 1.2;
330
+ }
331
+
332
+ .bauhaus .project-narrative {
333
+ color: var(--text-secondary);
334
+ font-size: 15px;
335
+ margin-bottom: 20px;
336
+ line-height: 1.7;
337
+ }
338
+
339
+ .bauhaus .project-skills {
340
+ display: flex;
341
+ flex-wrap: wrap;
342
+ gap: 8px;
343
+ margin-bottom: 20px;
344
+ }
345
+
346
+ .bauhaus .skill-chip {
347
+ font-family: var(--font-mono);
348
+ font-size: 12px;
349
+ font-weight: 500;
350
+ padding: 4px 12px;
351
+ background: var(--bg);
352
+ border: 2px solid var(--black);
353
+ }
354
+
355
+ .bauhaus .project-stats {
356
+ display: flex;
357
+ gap: 24px;
358
+ font-family: var(--font-mono);
359
+ font-size: 13px;
360
+ color: var(--text-secondary);
361
+ }
362
+
363
+ .bauhaus .project-stats strong {
364
+ color: var(--text);
365
+ font-weight: 600;
366
+ }
367
+
368
+ /* ── Project source bar (portfolio cards) ── */
369
+ .bauhaus .project-source-bar {
370
+ margin-top: 16px;
371
+ height: 8px;
372
+ display: flex;
373
+ border: 2px solid var(--black);
374
+ overflow: hidden;
375
+ }
376
+
377
+ .bauhaus .source-segment-claude {
378
+ background: var(--blue);
379
+ }
380
+
381
+ .bauhaus .source-segment-cursor {
382
+ background: var(--yellow);
383
+ }
384
+
385
+ .bauhaus .project-source-legend {
386
+ display: flex;
387
+ gap: 16px;
388
+ margin-top: 8px;
389
+ font-family: var(--font-mono);
390
+ font-size: 11px;
391
+ color: var(--text-secondary);
392
+ }
393
+
394
+ .bauhaus .legend-dot {
395
+ display: inline-block;
396
+ width: 8px;
397
+ height: 8px;
398
+ margin-right: 4px;
399
+ vertical-align: middle;
400
+ }
401
+
402
+ .bauhaus .legend-dot.claude { background: var(--blue); }
403
+ .bauhaus .legend-dot.cursor { background: var(--yellow); }
404
+
405
+ /* ── Project source badge ── */
406
+ .bauhaus .project-source {
407
+ font-family: var(--font-mono);
408
+ font-size: 11px;
409
+ font-weight: 500;
410
+ padding: 4px 10px;
411
+ border: 2px solid var(--black);
412
+ white-space: nowrap;
413
+ flex-shrink: 0;
414
+ }
415
+
416
+ /* ── Breadcrumb ── */
417
+ .bauhaus .breadcrumb {
418
+ padding: 20px 0;
419
+ font-family: var(--font-mono);
420
+ font-size: 13px;
421
+ color: var(--text-secondary);
422
+ }
423
+
424
+ .bauhaus .breadcrumb a {
425
+ color: var(--blue);
426
+ text-decoration: none;
427
+ }
428
+
429
+ .bauhaus .breadcrumb a:hover { text-decoration: underline; }
430
+ .bauhaus .breadcrumb a:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
431
+ .bauhaus .breadcrumb span { margin: 0 8px; }
432
+
433
+ /* ── Project hero ── */
434
+ .bauhaus .project-hero {
435
+ padding: 40px 0 48px;
436
+ display: grid;
437
+ grid-template-columns: 1fr auto;
438
+ gap: 48px;
439
+ align-items: start;
440
+ }
441
+
442
+ .bauhaus .project-hero-content { position: relative; }
443
+
444
+ .bauhaus .project-hero h1 {
445
+ font-family: var(--font-display);
446
+ font-size: clamp(40px, 6vw, 64px);
447
+ font-weight: 700;
448
+ line-height: 1.05;
449
+ letter-spacing: -1.5px;
450
+ margin-bottom: 16px;
451
+ }
452
+
453
+ .bauhaus .project-links {
454
+ display: flex;
455
+ gap: 16px;
456
+ margin-bottom: 20px;
457
+ }
458
+
459
+ .bauhaus .project-links a {
460
+ font-family: var(--font-mono);
461
+ font-size: 13px;
462
+ color: var(--blue);
463
+ text-decoration: none;
464
+ border-bottom: 2px solid var(--blue);
465
+ padding-bottom: 2px;
466
+ }
467
+
468
+ .bauhaus .project-links a:hover { color: var(--red); border-color: var(--red); }
469
+ .bauhaus .project-links a:focus-visible { outline: 2px solid var(--blue); outline-offset: 4px; }
470
+
471
+ .bauhaus .project-hero-shapes {
472
+ position: relative;
473
+ width: 180px;
474
+ height: 180px;
475
+ flex-shrink: 0;
476
+ }
477
+
478
+ .bauhaus .hero-shape-circle {
479
+ width: 100px;
480
+ height: 100px;
481
+ border-radius: 50%;
482
+ background: var(--yellow);
483
+ position: absolute;
484
+ top: 0;
485
+ right: 0;
486
+ }
487
+
488
+ .bauhaus .hero-shape-rect {
489
+ width: 60px;
490
+ height: 120px;
491
+ background: var(--red);
492
+ position: absolute;
493
+ bottom: 0;
494
+ left: 0;
495
+ }
496
+
497
+ .bauhaus .hero-shape-line-h {
498
+ width: 140px;
499
+ height: 3px;
500
+ background: var(--black);
501
+ position: absolute;
502
+ top: 100px;
503
+ left: 10px;
504
+ }
505
+
506
+ .bauhaus .hero-shape-small-sq {
507
+ width: 30px;
508
+ height: 30px;
509
+ background: var(--blue);
510
+ position: absolute;
511
+ bottom: 20px;
512
+ right: 30px;
513
+ }
514
+
515
+ /* ── Stats grid (project) ── */
516
+ .bauhaus .stats-grid {
517
+ display: grid;
518
+ grid-template-columns: repeat(7, 1fr);
519
+ gap: 0;
520
+ border: var(--border);
521
+ margin-bottom: 48px;
522
+ }
523
+
524
+ .bauhaus .stat-cell {
525
+ padding: 20px 16px;
526
+ text-align: center;
527
+ border-right: var(--border);
528
+ }
529
+
530
+ .bauhaus .stat-cell:last-child { border-right: none; }
531
+
532
+ .bauhaus .stat-cell-number {
533
+ font-family: var(--font-display);
534
+ font-size: clamp(28px, 3.5vw, 40px);
535
+ font-weight: 700;
536
+ line-height: 1;
537
+ margin-bottom: 4px;
538
+ }
539
+
540
+ .bauhaus .stat-cell-label {
541
+ font-family: var(--font-mono);
542
+ font-size: 11px;
543
+ font-weight: 500;
544
+ text-transform: uppercase;
545
+ letter-spacing: 1px;
546
+ }
547
+
548
+ /* ── Screenshot ── */
549
+ .bauhaus .screenshot-section {
550
+ margin-bottom: 56px;
551
+ }
552
+
553
+ .bauhaus .screenshot-frame {
554
+ border: var(--border);
555
+ overflow: hidden;
556
+ background: var(--card);
557
+ }
558
+
559
+ .bauhaus .screenshot-chrome {
560
+ height: 36px;
561
+ background: var(--black);
562
+ display: flex;
563
+ align-items: center;
564
+ padding: 0 14px;
565
+ gap: 8px;
566
+ }
567
+
568
+ .bauhaus .chrome-dot {
569
+ width: 10px;
570
+ height: 10px;
571
+ border-radius: 50%;
572
+ }
573
+
574
+ .bauhaus .chrome-dot:nth-child(1) { background: var(--red); }
575
+ .bauhaus .chrome-dot:nth-child(2) { background: var(--yellow); }
576
+ .bauhaus .chrome-dot:nth-child(3) { background: #4ade80; }
577
+
578
+ .bauhaus .screenshot-body {
579
+ min-height: 280px;
580
+ background: linear-gradient(135deg, #e2e8f0 0%, #cbd5e1 50%, #94a3b8 100%);
581
+ display: flex;
582
+ align-items: center;
583
+ justify-content: center;
584
+ }
585
+
586
+ /* ── Narrative ── */
587
+ .bauhaus .narrative-section {
588
+ margin-bottom: 56px;
589
+ position: relative;
590
+ }
591
+
592
+ .bauhaus .narrative-section::before {
593
+ content: "";
594
+ position: absolute;
595
+ top: 0;
596
+ left: -24px;
597
+ width: 6px;
598
+ height: 100%;
599
+ background: var(--red);
600
+ }
601
+
602
+ .bauhaus .narrative-block {
603
+ display: grid;
604
+ gap: 20px;
605
+ font-size: 16px;
606
+ line-height: 1.8;
607
+ color: var(--text-secondary);
608
+ }
609
+
610
+ .bauhaus .narrative-block p {
611
+ margin-bottom: 0;
612
+ }
613
+
614
+ /* ── Phases ── */
615
+ .bauhaus .phases-section {
616
+ margin-bottom: 56px;
617
+ }
618
+
619
+ .bauhaus .phases-grid {
620
+ display: grid;
621
+ gap: 0;
622
+ }
623
+
624
+ .bauhaus .phase-row {
625
+ display: grid;
626
+ grid-template-columns: 60px 1fr;
627
+ border: var(--border);
628
+ border-bottom: none;
629
+ }
630
+
631
+ .bauhaus .phase-row:last-child { border-bottom: var(--border); }
632
+
633
+ .bauhaus .phase-number {
634
+ display: flex;
635
+ align-items: center;
636
+ justify-content: center;
637
+ font-family: var(--font-display);
638
+ font-size: 28px;
639
+ font-weight: 700;
640
+ color: #fff;
641
+ border-right: var(--border);
642
+ }
643
+
644
+ .bauhaus .phase-row:nth-child(4n+1) .phase-number { background: var(--red); }
645
+ .bauhaus .phase-row:nth-child(4n+2) .phase-number { background: var(--blue); }
646
+ .bauhaus .phase-row:nth-child(4n+3) .phase-number { background: var(--yellow); color: var(--black); }
647
+ .bauhaus .phase-row:nth-child(4n) .phase-number { background: var(--black); }
648
+
649
+ .bauhaus .phase-content {
650
+ padding: 20px 24px;
651
+ background: var(--card);
652
+ }
653
+
654
+ .bauhaus .phase-title {
655
+ font-family: var(--font-display);
656
+ font-weight: 700;
657
+ font-size: 18px;
658
+ margin-bottom: 4px;
659
+ }
660
+
661
+ .bauhaus .phase-dates {
662
+ font-family: var(--font-mono);
663
+ font-size: 12px;
664
+ color: var(--text-secondary);
665
+ margin-bottom: 4px;
666
+ }
667
+
668
+ .bauhaus .phase-desc {
669
+ font-size: 14px;
670
+ color: var(--text-secondary);
671
+ }
672
+
673
+ /* ── Skills (project) ── */
674
+ .bauhaus .skills-section {
675
+ margin-bottom: 56px;
676
+ }
677
+
678
+ .bauhaus .skills-grid {
679
+ display: flex;
680
+ flex-wrap: wrap;
681
+ gap: 10px;
682
+ }
683
+
684
+ .bauhaus .skill-tag {
685
+ font-family: var(--font-mono);
686
+ font-size: 13px;
687
+ font-weight: 500;
688
+ padding: 8px 16px;
689
+ border: var(--border);
690
+ background: var(--card);
691
+ transition: transform 0.15s ease;
692
+ }
693
+
694
+ .bauhaus .skill-tag:nth-child(3n+1) { border-left: 6px solid var(--red); }
695
+ .bauhaus .skill-tag:nth-child(3n+2) { border-left: 6px solid var(--blue); }
696
+ .bauhaus .skill-tag:nth-child(3n) { border-left: 6px solid var(--yellow); }
697
+
698
+ /* ── Source breakdown ── */
699
+ .bauhaus .source-section {
700
+ margin-bottom: 56px;
701
+ }
702
+
703
+ .bauhaus .source-bar-wrapper {
704
+ margin-bottom: 12px;
705
+ }
706
+
707
+ .bauhaus .source-bar {
708
+ height: 24px;
709
+ display: flex;
710
+ border: var(--border);
711
+ overflow: hidden;
712
+ }
713
+
714
+ .bauhaus .source-segment {
715
+ height: 100%;
716
+ }
717
+
718
+ .bauhaus .source-legend {
719
+ display: flex;
720
+ gap: 24px;
721
+ font-family: var(--font-mono);
722
+ font-size: 13px;
723
+ }
724
+
725
+ .bauhaus .legend-swatch {
726
+ display: inline-block;
727
+ width: 12px;
728
+ height: 12px;
729
+ margin-right: 6px;
730
+ vertical-align: middle;
731
+ }
732
+
733
+ /* ── Featured sessions (project) ── */
734
+ .bauhaus .featured-section {
735
+ margin-bottom: 64px;
736
+ }
737
+
738
+ .bauhaus .featured-grid {
739
+ display: grid;
740
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
741
+ gap: 20px;
742
+ }
743
+
744
+ .bauhaus .featured-card {
745
+ border: var(--border);
746
+ background: var(--card);
747
+ text-decoration: none;
748
+ color: inherit;
749
+ display: block;
750
+ transition: transform 0.15s ease;
751
+ }
752
+
753
+ .bauhaus .featured-card:hover {
754
+ transform: translate(-3px, -3px);
755
+ box-shadow: 3px 3px 0 var(--black);
756
+ }
757
+
758
+ .bauhaus .featured-card:focus-visible {
759
+ outline: 3px solid var(--blue);
760
+ outline-offset: 2px;
761
+ }
762
+
763
+ .bauhaus .featured-card-accent {
764
+ height: 6px;
765
+ }
766
+
767
+ .bauhaus .featured-card:nth-child(6n+1) .featured-card-accent { background: var(--red); }
768
+ .bauhaus .featured-card:nth-child(6n+2) .featured-card-accent { background: var(--blue); }
769
+ .bauhaus .featured-card:nth-child(6n+3) .featured-card-accent { background: var(--yellow); }
770
+ .bauhaus .featured-card:nth-child(6n+4) .featured-card-accent { background: var(--blue); }
771
+ .bauhaus .featured-card:nth-child(6n+5) .featured-card-accent { background: var(--red); }
772
+ .bauhaus .featured-card:nth-child(6n) .featured-card-accent { background: var(--yellow); }
773
+
774
+ .bauhaus .featured-card-body {
775
+ padding: 20px;
776
+ }
777
+
778
+ .bauhaus .featured-card-tag {
779
+ font-family: var(--font-mono);
780
+ font-size: 11px;
781
+ font-weight: 600;
782
+ text-transform: uppercase;
783
+ letter-spacing: 1px;
784
+ color: var(--text-secondary);
785
+ margin-bottom: 8px;
786
+ }
787
+
788
+ .bauhaus .featured-card-title {
789
+ font-family: var(--font-display);
790
+ font-weight: 700;
791
+ font-size: 18px;
792
+ margin-bottom: 12px;
793
+ line-height: 1.3;
794
+ }
795
+
796
+ .bauhaus .featured-card-stats {
797
+ font-family: var(--font-mono);
798
+ font-size: 12px;
799
+ color: var(--text-secondary);
800
+ display: flex;
801
+ gap: 12px;
802
+ }
803
+
804
+ .bauhaus .featured-card-stats strong {
805
+ color: var(--text);
806
+ }
807
+
808
+ /* ── Session page layout ── */
809
+ .bauhaus .page-layout {
810
+ display: grid;
811
+ grid-template-columns: 1fr 320px;
812
+ gap: 40px;
813
+ align-items: start;
814
+ }
815
+
816
+ .bauhaus .content-col {
817
+ min-width: 0;
818
+ }
819
+
820
+ /* ── Session hero ── */
821
+ .bauhaus .session-hero {
822
+ padding: 32px 0 40px;
823
+ position: relative;
824
+ }
825
+
826
+ .bauhaus .session-hero h1 {
827
+ font-family: var(--font-display);
828
+ font-size: clamp(28px, 4vw, 44px);
829
+ font-weight: 700;
830
+ line-height: 1.15;
831
+ letter-spacing: -1px;
832
+ margin-bottom: 16px;
833
+ max-width: 640px;
834
+ }
835
+
836
+ .bauhaus .session-meta {
837
+ display: flex;
838
+ flex-wrap: wrap;
839
+ gap: 12px;
840
+ align-items: center;
841
+ margin-bottom: 8px;
842
+ }
843
+
844
+ .bauhaus .meta-badge {
845
+ font-family: var(--font-mono);
846
+ font-size: 12px;
847
+ font-weight: 600;
848
+ padding: 4px 12px;
849
+ border: 2px solid var(--black);
850
+ }
851
+
852
+ .bauhaus .meta-badge-source {
853
+ background: var(--blue);
854
+ color: #fff;
855
+ border-color: var(--blue);
856
+ }
857
+
858
+ .bauhaus .meta-date {
859
+ font-family: var(--font-mono);
860
+ font-size: 13px;
861
+ color: var(--text-secondary);
862
+ }
863
+
864
+ .bauhaus .session-hero-shapes {
865
+ position: absolute;
866
+ top: 24px;
867
+ right: 0;
868
+ width: 120px;
869
+ height: 120px;
870
+ pointer-events: none;
871
+ }
872
+
873
+ .bauhaus .sh-circle {
874
+ width: 48px;
875
+ height: 48px;
876
+ border-radius: 50%;
877
+ background: var(--red);
878
+ position: absolute;
879
+ top: 0;
880
+ right: 0;
881
+ }
882
+
883
+ .bauhaus .sh-rect {
884
+ width: 36px;
885
+ height: 72px;
886
+ background: var(--blue);
887
+ position: absolute;
888
+ bottom: 0;
889
+ left: 0;
890
+ }
891
+
892
+ .bauhaus .sh-sq {
893
+ width: 24px;
894
+ height: 24px;
895
+ background: var(--yellow);
896
+ position: absolute;
897
+ bottom: 8px;
898
+ right: 20px;
899
+ }
900
+
901
+ /* ── Stats row (session) ── */
902
+ .bauhaus .stats-row {
903
+ display: grid;
904
+ grid-template-columns: repeat(4, 1fr);
905
+ gap: 0;
906
+ border: var(--border);
907
+ margin-bottom: 40px;
908
+ }
909
+
910
+ .bauhaus .stats-row-item {
911
+ padding: 18px 16px;
912
+ text-align: center;
913
+ border-right: var(--border);
914
+ }
915
+
916
+ .bauhaus .stats-row-item:last-child { border-right: none; }
917
+
918
+ .bauhaus .stats-row-item:nth-child(1) { background: var(--red); color: #fff; }
919
+ .bauhaus .stats-row-item:nth-child(2) { background: var(--card); }
920
+ .bauhaus .stats-row-item:nth-child(3) { background: var(--blue); color: #fff; }
921
+ .bauhaus .stats-row-item:nth-child(4) { background: var(--card); }
922
+
923
+ .bauhaus .sr-number {
924
+ font-family: var(--font-display);
925
+ font-size: clamp(24px, 3vw, 36px);
926
+ font-weight: 700;
927
+ line-height: 1;
928
+ margin-bottom: 2px;
929
+ }
930
+
931
+ .bauhaus .sr-label {
932
+ font-family: var(--font-mono);
933
+ font-size: 11px;
934
+ font-weight: 500;
935
+ text-transform: uppercase;
936
+ letter-spacing: 1px;
937
+ }
938
+
939
+ /* ── Dev take ── */
940
+ .bauhaus .dev-take {
941
+ margin-bottom: 40px;
942
+ padding: 24px;
943
+ border: var(--border);
944
+ background: var(--card);
945
+ position: relative;
946
+ }
947
+
948
+ .bauhaus .dev-take::before {
949
+ content: "";
950
+ position: absolute;
951
+ top: 0;
952
+ left: 0;
953
+ width: 8px;
954
+ height: 100%;
955
+ background: var(--yellow);
956
+ }
957
+
958
+ .bauhaus .dev-take-label {
959
+ font-family: var(--font-mono);
960
+ font-size: 11px;
961
+ font-weight: 600;
962
+ text-transform: uppercase;
963
+ letter-spacing: 1px;
964
+ color: var(--text-secondary);
965
+ margin-bottom: 8px;
966
+ padding-left: 16px;
967
+ }
968
+
969
+ .bauhaus .dev-take blockquote {
970
+ font-size: 16px;
971
+ line-height: 1.7;
972
+ font-style: italic;
973
+ color: var(--text);
974
+ padding-left: 16px;
975
+ margin: 0;
976
+ }
977
+
978
+ /* ── Beats (execution path) ── */
979
+ .bauhaus .beats-section {
980
+ margin-bottom: 48px;
981
+ }
982
+
983
+ .bauhaus .beats-list {
984
+ list-style: none;
985
+ display: grid;
986
+ gap: 0;
987
+ padding: 0;
988
+ margin: 0;
989
+ }
990
+
991
+ .bauhaus .beat-item {
992
+ display: grid;
993
+ grid-template-columns: 56px 1fr;
994
+ border: var(--border);
995
+ border-bottom: none;
996
+ background: var(--card);
997
+ }
998
+
999
+ .bauhaus .beat-item:last-child { border-bottom: var(--border); }
1000
+
1001
+ .bauhaus .beat-number {
1002
+ display: flex;
1003
+ align-items: center;
1004
+ justify-content: center;
1005
+ font-family: var(--font-display);
1006
+ font-size: 24px;
1007
+ font-weight: 700;
1008
+ border-right: var(--border);
1009
+ }
1010
+
1011
+ .bauhaus .beat-item:nth-child(4n+1) .beat-number { background: var(--red); color: #fff; }
1012
+ .bauhaus .beat-item:nth-child(4n+2) .beat-number { background: var(--blue); color: #fff; }
1013
+ .bauhaus .beat-item:nth-child(4n+3) .beat-number { background: var(--yellow); color: var(--black); }
1014
+ .bauhaus .beat-item:nth-child(4n) .beat-number { background: var(--black); color: #fff; }
1015
+
1016
+ .bauhaus .beat-content {
1017
+ padding: 20px 24px;
1018
+ }
1019
+
1020
+ .bauhaus .beat-title {
1021
+ font-family: var(--font-display);
1022
+ font-weight: 700;
1023
+ font-size: 17px;
1024
+ margin-bottom: 6px;
1025
+ }
1026
+
1027
+ .bauhaus .beat-desc {
1028
+ font-size: 14px;
1029
+ color: var(--text-secondary);
1030
+ line-height: 1.7;
1031
+ }
1032
+
1033
+ /* ── Q&A ── */
1034
+ .bauhaus .qa-section {
1035
+ margin-bottom: 48px;
1036
+ }
1037
+
1038
+ .bauhaus .qa-list {
1039
+ display: grid;
1040
+ gap: 20px;
1041
+ }
1042
+
1043
+ .bauhaus .qa-item {
1044
+ border: var(--border);
1045
+ background: var(--card);
1046
+ overflow: hidden;
1047
+ }
1048
+
1049
+ .bauhaus .qa-question {
1050
+ padding: 16px 20px;
1051
+ font-weight: 600;
1052
+ font-size: 15px;
1053
+ line-height: 1.5;
1054
+ background: var(--bg);
1055
+ border-bottom: 2px solid var(--black);
1056
+ display: flex;
1057
+ gap: 12px;
1058
+ }
1059
+
1060
+ .bauhaus .qa-q-marker {
1061
+ font-family: var(--font-display);
1062
+ font-weight: 700;
1063
+ font-size: 20px;
1064
+ color: var(--red);
1065
+ flex-shrink: 0;
1066
+ line-height: 1.2;
1067
+ }
1068
+
1069
+ .bauhaus .qa-answer {
1070
+ padding: 16px 20px;
1071
+ font-size: 14px;
1072
+ line-height: 1.7;
1073
+ color: var(--text-secondary);
1074
+ display: flex;
1075
+ gap: 12px;
1076
+ }
1077
+
1078
+ .bauhaus .qa-a-marker {
1079
+ font-family: var(--font-display);
1080
+ font-weight: 700;
1081
+ font-size: 20px;
1082
+ color: var(--blue);
1083
+ flex-shrink: 0;
1084
+ line-height: 1.2;
1085
+ }
1086
+
1087
+ /* ── Highlights / decisions list ── */
1088
+ .bauhaus .highlights-section {
1089
+ margin-bottom: 48px;
1090
+ }
1091
+
1092
+ .bauhaus .decisions-list {
1093
+ list-style: none;
1094
+ display: grid;
1095
+ gap: 16px;
1096
+ padding: 0;
1097
+ margin: 0;
1098
+ }
1099
+
1100
+ .bauhaus .decision-item {
1101
+ display: grid;
1102
+ grid-template-columns: 48px 1fr;
1103
+ border: var(--border);
1104
+ background: var(--card);
1105
+ overflow: hidden;
1106
+ }
1107
+
1108
+ .bauhaus .decision-number {
1109
+ display: flex;
1110
+ align-items: center;
1111
+ justify-content: center;
1112
+ font-family: var(--font-display);
1113
+ font-size: 24px;
1114
+ font-weight: 700;
1115
+ border-right: var(--border);
1116
+ background: var(--bg);
1117
+ }
1118
+
1119
+ .bauhaus .decision-item:nth-child(3n+1) .decision-number { color: var(--red); }
1120
+ .bauhaus .decision-item:nth-child(3n+2) .decision-number { color: var(--blue); }
1121
+ .bauhaus .decision-item:nth-child(3n) .decision-number { color: var(--yellow); }
1122
+
1123
+ .bauhaus .decision-text {
1124
+ padding: 16px 20px;
1125
+ font-size: 15px;
1126
+ line-height: 1.6;
1127
+ }
1128
+
1129
+ /* ── Agent summary ── */
1130
+ .bauhaus .agents-section {
1131
+ margin-bottom: 48px;
1132
+ }
1133
+
1134
+ .bauhaus .agents-table-wrapper {
1135
+ border: var(--border);
1136
+ overflow-x: auto;
1137
+ }
1138
+
1139
+ .bauhaus .agents-table {
1140
+ width: 100%;
1141
+ border-collapse: collapse;
1142
+ }
1143
+
1144
+ .bauhaus .agents-table thead {
1145
+ background: var(--black);
1146
+ color: #fff;
1147
+ }
1148
+
1149
+ .bauhaus .agents-table th {
1150
+ font-family: var(--font-mono);
1151
+ font-size: 11px;
1152
+ font-weight: 600;
1153
+ text-transform: uppercase;
1154
+ letter-spacing: 1px;
1155
+ padding: 12px 16px;
1156
+ text-align: left;
1157
+ }
1158
+
1159
+ .bauhaus .agents-table td {
1160
+ padding: 12px 16px;
1161
+ font-size: 14px;
1162
+ border-bottom: 2px solid var(--bg);
1163
+ }
1164
+
1165
+ .bauhaus .agents-table tbody tr:last-child td { border-bottom: none; }
1166
+ .bauhaus .agents-table tbody tr { background: var(--card); }
1167
+ .bauhaus .agents-table tbody tr:hover { background: #f0f0f0; }
1168
+
1169
+ .bauhaus .agent-role-name {
1170
+ display: flex;
1171
+ align-items: center;
1172
+ gap: 8px;
1173
+ }
1174
+
1175
+ .bauhaus .agent-role-dot {
1176
+ width: 10px;
1177
+ height: 10px;
1178
+ border-radius: 50%;
1179
+ flex-shrink: 0;
1180
+ }
1181
+
1182
+ .bauhaus .agent-role-label {
1183
+ font-family: var(--font-mono);
1184
+ font-size: 13px;
1185
+ font-weight: 500;
1186
+ }
1187
+
1188
+ /* ── Sidebar ── */
1189
+ .bauhaus .sidebar {
1190
+ position: sticky;
1191
+ top: 88px;
1192
+ display: grid;
1193
+ gap: 24px;
1194
+ }
1195
+
1196
+ .bauhaus .sidebar-card {
1197
+ border: var(--border);
1198
+ background: var(--card);
1199
+ overflow: hidden;
1200
+ }
1201
+
1202
+ .bauhaus .sidebar-card-header {
1203
+ padding: 14px 18px;
1204
+ font-family: var(--font-display);
1205
+ font-weight: 700;
1206
+ font-size: 15px;
1207
+ border-bottom: var(--border);
1208
+ display: flex;
1209
+ align-items: center;
1210
+ gap: 10px;
1211
+ }
1212
+
1213
+ .bauhaus .sidebar-card-header-shape {
1214
+ display: inline-block;
1215
+ flex-shrink: 0;
1216
+ }
1217
+
1218
+ .bauhaus .sidebar-card-body {
1219
+ padding: 0;
1220
+ }
1221
+
1222
+ .bauhaus .sidebar-row {
1223
+ display: flex;
1224
+ justify-content: space-between;
1225
+ align-items: center;
1226
+ padding: 10px 18px;
1227
+ font-size: 13px;
1228
+ border-bottom: 1px solid #eee;
1229
+ }
1230
+
1231
+ .bauhaus .sidebar-row:last-child { border-bottom: none; }
1232
+
1233
+ .bauhaus .sidebar-row-label {
1234
+ font-family: var(--font-mono);
1235
+ color: var(--text-secondary);
1236
+ }
1237
+
1238
+ .bauhaus .sidebar-row-value {
1239
+ font-family: var(--font-mono);
1240
+ font-weight: 600;
1241
+ }
1242
+
1243
+ .bauhaus .file-row {
1244
+ display: flex;
1245
+ justify-content: space-between;
1246
+ align-items: center;
1247
+ padding: 10px 18px;
1248
+ font-size: 13px;
1249
+ border-bottom: 1px solid #eee;
1250
+ gap: 8px;
1251
+ }
1252
+
1253
+ .bauhaus .file-row:last-child { border-bottom: none; }
1254
+
1255
+ .bauhaus .file-path {
1256
+ font-family: var(--font-mono);
1257
+ font-size: 12px;
1258
+ color: var(--text);
1259
+ overflow: hidden;
1260
+ text-overflow: ellipsis;
1261
+ white-space: nowrap;
1262
+ min-width: 0;
1263
+ }
1264
+
1265
+ .bauhaus .file-diff {
1266
+ font-family: var(--font-mono);
1267
+ font-size: 12px;
1268
+ font-weight: 600;
1269
+ color: #16a34a;
1270
+ flex-shrink: 0;
1271
+ }
1272
+
1273
+ .bauhaus .sidebar-skills {
1274
+ display: flex;
1275
+ flex-wrap: wrap;
1276
+ gap: 6px;
1277
+ padding: 14px 18px;
1278
+ }
1279
+
1280
+ .bauhaus .sidebar-skill {
1281
+ font-family: var(--font-mono);
1282
+ font-size: 11px;
1283
+ font-weight: 500;
1284
+ padding: 3px 10px;
1285
+ border: 2px solid var(--black);
1286
+ background: var(--bg);
1287
+ }
1288
+
1289
+ /* ── Sessions table (project) ── */
1290
+ .bauhaus .sessions-section {
1291
+ margin-bottom: 56px;
1292
+ }
1293
+
1294
+ .bauhaus .sessions-table-wrapper {
1295
+ border: var(--border);
1296
+ overflow-x: auto;
1297
+ }
1298
+
1299
+ .bauhaus .sessions-table {
1300
+ width: 100%;
1301
+ border-collapse: collapse;
1302
+ font-size: 14px;
1303
+ }
1304
+
1305
+ .bauhaus .sessions-table thead {
1306
+ background: var(--black);
1307
+ color: #fff;
1308
+ }
1309
+
1310
+ .bauhaus .sessions-table th {
1311
+ font-family: var(--font-mono);
1312
+ font-size: 11px;
1313
+ font-weight: 600;
1314
+ text-transform: uppercase;
1315
+ letter-spacing: 1px;
1316
+ padding: 14px 16px;
1317
+ text-align: left;
1318
+ }
1319
+
1320
+ .bauhaus .sessions-table td {
1321
+ padding: 14px 16px;
1322
+ border-bottom: 2px solid var(--bg);
1323
+ }
1324
+
1325
+ .bauhaus .sessions-table tbody tr:last-child td { border-bottom: none; }
1326
+ .bauhaus .sessions-table tbody tr { background: var(--card); }
1327
+ .bauhaus .sessions-table tbody tr:hover { background: #f0f0f0; }
1328
+
1329
+ .bauhaus .session-num {
1330
+ font-family: var(--font-display);
1331
+ font-weight: 700;
1332
+ font-size: 18px;
1333
+ }
1334
+
1335
+ .bauhaus .session-title-link {
1336
+ color: var(--text);
1337
+ text-decoration: none;
1338
+ font-weight: 500;
1339
+ }
1340
+ .bauhaus .session-title-link:hover { color: var(--blue); }
1341
+ .bauhaus .session-title-link:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
1342
+
1343
+ .bauhaus .session-source-badge {
1344
+ font-family: var(--font-mono);
1345
+ font-size: 11px;
1346
+ padding: 3px 8px;
1347
+ border: 2px solid var(--black);
1348
+ white-space: nowrap;
1349
+ }
1350
+
1351
+ .bauhaus .badge-claude,
1352
+ .bauhaus .badge-claude-code { background: var(--blue); color: #fff; border-color: var(--blue); }
1353
+ .bauhaus .badge-cursor { background: var(--yellow); color: var(--black); border-color: var(--yellow); }
1354
+
1355
+ .bauhaus .agent-dots {
1356
+ display: flex;
1357
+ gap: 3px;
1358
+ }
1359
+
1360
+ .bauhaus .agent-dot {
1361
+ width: 8px;
1362
+ height: 8px;
1363
+ border-radius: 50%;
1364
+ }
1365
+
1366
+ /* ── Agent bar chart (session) ── */
1367
+ .bauhaus .agent-bar-chart {
1368
+ margin-top: 16px;
1369
+ display: grid;
1370
+ gap: 8px;
1371
+ }
1372
+
1373
+ .bauhaus .agent-bar-row {
1374
+ display: grid;
1375
+ grid-template-columns: 120px 1fr 50px;
1376
+ gap: 12px;
1377
+ align-items: center;
1378
+ }
1379
+
1380
+ .bauhaus .agent-bar-label {
1381
+ font-family: var(--font-mono);
1382
+ font-size: 12px;
1383
+ text-align: right;
1384
+ color: var(--text-secondary);
1385
+ }
1386
+
1387
+ .bauhaus .agent-bar-track {
1388
+ height: 16px;
1389
+ background: var(--bg);
1390
+ border: 2px solid var(--black);
1391
+ overflow: hidden;
1392
+ }
1393
+
1394
+ .bauhaus .agent-bar-fill {
1395
+ height: 100%;
1396
+ }
1397
+
1398
+ .bauhaus .agent-bar-value {
1399
+ font-family: var(--font-mono);
1400
+ font-size: 12px;
1401
+ font-weight: 600;
1402
+ }
1403
+
1404
+ /* ── Screenshot placeholder ── */
1405
+ .bauhaus .screenshot-placeholder {
1406
+ font-family: var(--font-mono);
1407
+ font-size: 14px;
1408
+ color: #64748b;
1409
+ background: rgba(255,255,255,0.7);
1410
+ padding: 12px 24px;
1411
+ border: 2px dashed #94a3b8;
1412
+ }
1413
+
1414
+ /* ── Clickable session cards ── */
1415
+ a.session-card {
1416
+ text-decoration: none;
1417
+ color: inherit;
1418
+ display: block;
1419
+ transition: transform 0.15s ease, box-shadow 0.15s ease;
1420
+ }
1421
+ a.session-card:hover {
1422
+ transform: translateY(-2px);
1423
+ }
1424
+
1425
+ /* ── Footer ── */
1426
+ .bauhaus .bauhaus-footer {
1427
+ border-top: var(--border);
1428
+ margin-top: 40px;
1429
+ }
1430
+
1431
+ .bauhaus .footer-inner {
1432
+ padding: 32px 0;
1433
+ display: flex;
1434
+ align-items: center;
1435
+ justify-content: space-between;
1436
+ gap: 16px;
1437
+ }
1438
+
1439
+ .bauhaus .footer-text {
1440
+ font-family: var(--font-mono);
1441
+ font-size: 12px;
1442
+ color: var(--text-secondary);
1443
+ }
1444
+
1445
+ .bauhaus .footer-shapes {
1446
+ display: flex;
1447
+ gap: 8px;
1448
+ align-items: center;
1449
+ }
1450
+
1451
+ .bauhaus .footer-shape { display: inline-block; }
1452
+ .bauhaus .footer-sq-red { width: 16px; height: 16px; background: var(--red); }
1453
+ .bauhaus .footer-circle-blue { width: 16px; height: 16px; background: var(--blue); border-radius: 50%; }
1454
+ .bauhaus .footer-sq-yellow { width: 16px; height: 16px; background: var(--yellow); }
1455
+
1456
+ /* ── Animations ── */
1457
+ @keyframes bauhaus-slideInLeft {
1458
+ from { opacity: 0; transform: translateX(-60px); }
1459
+ to { opacity: 1; transform: translateX(0); }
1460
+ }
1461
+
1462
+ @keyframes bauhaus-slideInRight {
1463
+ from { opacity: 0; transform: translateX(60px); }
1464
+ to { opacity: 1; transform: translateX(0); }
1465
+ }
1466
+
1467
+ @keyframes bauhaus-scaleIn {
1468
+ from { opacity: 0; transform: scale(0.6) rotate(-15deg); }
1469
+ to { opacity: 1; transform: scale(1) rotate(0deg); }
1470
+ }
1471
+
1472
+ @keyframes bauhaus-fadeUp {
1473
+ from { opacity: 0; transform: translateY(30px); }
1474
+ to { opacity: 1; transform: translateY(0); }
1475
+ }
1476
+
1477
+ .bauhaus .anim-slide-left {
1478
+ opacity: 0;
1479
+ animation: bauhaus-slideInLeft 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards;
1480
+ }
1481
+
1482
+ .bauhaus .anim-slide-right {
1483
+ opacity: 0;
1484
+ animation: bauhaus-slideInRight 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards;
1485
+ }
1486
+
1487
+ .bauhaus .anim-scale-in {
1488
+ opacity: 0;
1489
+ animation: bauhaus-scaleIn 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards;
1490
+ }
1491
+
1492
+ .bauhaus .anim-fade-up {
1493
+ opacity: 0;
1494
+ animation: bauhaus-fadeUp 0.5s cubic-bezier(0.22, 1, 0.36, 1) forwards;
1495
+ }
1496
+
1497
+ .bauhaus .anim-delay-1 { animation-delay: 0.1s; }
1498
+ .bauhaus .anim-delay-2 { animation-delay: 0.2s; }
1499
+ .bauhaus .anim-delay-3 { animation-delay: 0.3s; }
1500
+ .bauhaus .anim-delay-4 { animation-delay: 0.4s; }
1501
+ .bauhaus .anim-delay-5 { animation-delay: 0.5s; }
1502
+
1503
+ /* ── Reduced motion ── */
1504
+ @media (prefers-reduced-motion: reduce) {
1505
+ .bauhaus .anim-slide-left,
1506
+ .bauhaus .anim-slide-right,
1507
+ .bauhaus .anim-scale-in,
1508
+ .bauhaus .anim-fade-up {
1509
+ opacity: 1;
1510
+ transform: none;
1511
+ animation: none;
1512
+ }
1513
+
1514
+ .bauhaus .project-card:hover,
1515
+ .bauhaus .featured-card:hover,
1516
+ .bauhaus .skill-tag:hover {
1517
+ transform: none;
1518
+ box-shadow: none;
1519
+ }
1520
+ }
1521
+
1522
+ /* ── Responsive ── */
1523
+ @media (max-width: 768px) {
1524
+ .bauhaus .hero {
1525
+ padding: 48px 0 40px;
1526
+ }
1527
+
1528
+ .bauhaus .hero-grid {
1529
+ grid-template-columns: 1fr;
1530
+ gap: 32px;
1531
+ }
1532
+
1533
+ .bauhaus .hero-photo {
1534
+ width: 80px;
1535
+ height: 100px;
1536
+ }
1537
+
1538
+ .bauhaus .hero-shapes {
1539
+ width: 160px;
1540
+ height: 160px;
1541
+ }
1542
+
1543
+ .bauhaus .shape-circle { width: 80px; height: 80px; }
1544
+ .bauhaus .shape-rect-blue { width: 50px; height: 90px; }
1545
+ .bauhaus .shape-rect-yellow { width: 70px; height: 30px; }
1546
+ .bauhaus .shape-line { height: 120px; left: 60px; }
1547
+
1548
+ .bauhaus .stats-bar {
1549
+ grid-template-columns: repeat(2, 1fr);
1550
+ }
1551
+
1552
+ .bauhaus .stat-item:nth-child(2) { border-right: none; }
1553
+ .bauhaus .stat-item:nth-child(1),
1554
+ .bauhaus .stat-item:nth-child(2) { border-bottom: var(--border); }
1555
+
1556
+ .bauhaus .project-card-inner { grid-template-columns: 8px 1fr; }
1557
+ .bauhaus .project-accent { width: 8px; }
1558
+ .bauhaus .project-body { padding: 20px; }
1559
+
1560
+ .bauhaus .project-header {
1561
+ flex-direction: column;
1562
+ gap: 8px;
1563
+ }
1564
+
1565
+ .bauhaus .project-stats {
1566
+ flex-wrap: wrap;
1567
+ gap: 12px;
1568
+ }
1569
+
1570
+ .bauhaus .project-hero {
1571
+ grid-template-columns: 1fr;
1572
+ gap: 24px;
1573
+ padding: 24px 0 32px;
1574
+ }
1575
+
1576
+ .bauhaus .project-hero-shapes {
1577
+ width: 120px;
1578
+ height: 120px;
1579
+ }
1580
+
1581
+ .bauhaus .hero-shape-circle { width: 60px; height: 60px; }
1582
+ .bauhaus .hero-shape-rect { width: 40px; height: 80px; }
1583
+ .bauhaus .hero-shape-line-h { width: 90px; top: 65px; }
1584
+ .bauhaus .hero-shape-small-sq { width: 20px; height: 20px; }
1585
+
1586
+ .bauhaus .narrative-section::before { left: -16px; width: 4px; }
1587
+
1588
+ .bauhaus .phase-row { grid-template-columns: 44px 1fr; }
1589
+
1590
+ .bauhaus .featured-grid { grid-template-columns: 1fr; }
1591
+
1592
+ .bauhaus .page-layout {
1593
+ grid-template-columns: 1fr;
1594
+ gap: 32px;
1595
+ }
1596
+
1597
+ .bauhaus .sidebar {
1598
+ position: static;
1599
+ order: -1;
1600
+ }
1601
+
1602
+ .bauhaus .session-hero h1 { padding-right: 0; }
1603
+ .bauhaus .session-hero-shapes { display: none; }
1604
+
1605
+ .bauhaus .stats-row { grid-template-columns: repeat(2, 1fr); }
1606
+ .bauhaus .stats-row-item:nth-child(2) { border-right: none; }
1607
+ .bauhaus .stats-row-item:nth-child(1),
1608
+ .bauhaus .stats-row-item:nth-child(2) { border-bottom: var(--border); }
1609
+
1610
+ .bauhaus .beat-item { grid-template-columns: 44px 1fr; }
1611
+
1612
+ .bauhaus .footer-inner { flex-direction: column; text-align: center; }
1613
+
1614
+ .bauhaus .qa-question,
1615
+ .bauhaus .qa-answer { padding: 12px 16px; }
1616
+
1617
+ .bauhaus .agent-bar-row {
1618
+ grid-template-columns: 90px 1fr 40px;
1619
+ gap: 8px;
1620
+ }
1621
+
1622
+ .bauhaus .profile-links { font-size: 12px; }
1623
+
1624
+ .bauhaus .stats-grid { grid-template-columns: repeat(4, 1fr); }
1625
+
1626
+ .bauhaus .stat-cell:nth-child(4) { border-right: none; }
1627
+ .bauhaus .stat-cell:nth-child(1),
1628
+ .bauhaus .stat-cell:nth-child(2),
1629
+ .bauhaus .stat-cell:nth-child(3),
1630
+ .bauhaus .stat-cell:nth-child(4) { border-bottom: var(--border); }
1631
+
1632
+ .bauhaus .sessions-table { font-size: 13px; }
1633
+ .bauhaus .sessions-table th,
1634
+ .bauhaus .sessions-table td { padding: 10px 12px; }
1635
+ }
1636
+
1637
+ @media (max-width: 480px) {
1638
+ .bauhaus .stats-grid {
1639
+ grid-template-columns: repeat(2, 1fr);
1640
+ }
1641
+ }