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