heyiam 0.2.29 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/README.md +45 -0
  2. package/dist/auth.js +29 -3
  3. package/dist/config.js +10 -1
  4. package/dist/db.js +0 -1
  5. package/dist/export.js +124 -27
  6. package/dist/format-utils.js +5 -0
  7. package/dist/github.js +381 -0
  8. package/dist/index.js +168 -0
  9. package/dist/mount.js +300 -102
  10. package/dist/parsers/claude.js +2 -28
  11. package/dist/parsers/codex.js +2 -26
  12. package/dist/parsers/cursor.js +2 -26
  13. package/dist/parsers/duration.js +35 -0
  14. package/dist/parsers/gemini.js +2 -20
  15. package/dist/parsers/index.js +22 -3
  16. package/dist/parsers/types.js +0 -1
  17. package/dist/public/assets/index-Coilyhtr.css +1 -0
  18. package/dist/public/assets/index-D0noVMFu.js +44 -0
  19. package/dist/public/index.html +2 -2
  20. package/dist/redact.js +4 -104
  21. package/dist/render/build-render-data.js +9 -2
  22. package/dist/render/index.js +32 -5
  23. package/dist/render/liquid.js +147 -7
  24. package/dist/render/mock-data.js +303 -0
  25. package/dist/render/templates/aurora/portfolio.liquid +192 -0
  26. package/dist/render/templates/aurora/project.liquid +260 -0
  27. package/dist/render/templates/aurora/session.liquid +223 -0
  28. package/dist/render/templates/aurora/styles.css +1184 -0
  29. package/dist/render/templates/bauhaus/portfolio.liquid +169 -0
  30. package/dist/render/templates/bauhaus/project.liquid +300 -0
  31. package/dist/render/templates/bauhaus/session.liquid +333 -0
  32. package/dist/render/templates/bauhaus/styles.css +1645 -0
  33. package/dist/render/templates/blueprint/portfolio.liquid +153 -0
  34. package/dist/render/templates/blueprint/project.liquid +286 -0
  35. package/dist/render/templates/blueprint/session.liquid +248 -0
  36. package/dist/render/templates/blueprint/styles.css +1289 -0
  37. package/dist/render/templates/canvas/portfolio.liquid +203 -0
  38. package/dist/render/templates/canvas/project.liquid +235 -0
  39. package/dist/render/templates/canvas/session.liquid +223 -0
  40. package/dist/render/templates/canvas/styles.css +1440 -0
  41. package/dist/render/templates/carbon/portfolio.liquid +160 -0
  42. package/dist/render/templates/carbon/project.liquid +249 -0
  43. package/dist/render/templates/carbon/session.liquid +190 -0
  44. package/dist/render/templates/carbon/styles.css +1097 -0
  45. package/dist/render/templates/chalk/portfolio.liquid +189 -0
  46. package/dist/render/templates/chalk/project.liquid +245 -0
  47. package/dist/render/templates/chalk/session.liquid +215 -0
  48. package/dist/render/templates/chalk/styles.css +1161 -0
  49. package/dist/render/templates/circuit/portfolio.liquid +152 -0
  50. package/dist/render/templates/circuit/project.liquid +247 -0
  51. package/dist/render/templates/circuit/session.liquid +205 -0
  52. package/dist/render/templates/circuit/styles.css +1409 -0
  53. package/dist/render/templates/cosmos/portfolio.liquid +222 -0
  54. package/dist/render/templates/cosmos/project.liquid +327 -0
  55. package/dist/render/templates/cosmos/session.liquid +239 -0
  56. package/dist/render/templates/cosmos/styles.css +1157 -0
  57. package/dist/render/templates/daylight/portfolio.liquid +207 -0
  58. package/dist/render/templates/daylight/project.liquid +229 -0
  59. package/dist/render/templates/daylight/session.liquid +219 -0
  60. package/dist/render/templates/daylight/styles.css +1315 -0
  61. package/dist/render/templates/editorial/portfolio.liquid +110 -0
  62. package/dist/render/templates/editorial/project.liquid +202 -0
  63. package/dist/render/templates/editorial/session.liquid +171 -0
  64. package/dist/render/templates/editorial/styles.css +826 -0
  65. package/dist/render/templates/ember/portfolio.liquid +306 -0
  66. package/dist/render/templates/ember/project.liquid +232 -0
  67. package/dist/render/templates/ember/session.liquid +202 -0
  68. package/dist/render/templates/ember/styles.css +1289 -0
  69. package/dist/render/templates/glacier/portfolio.liquid +261 -0
  70. package/dist/render/templates/glacier/project.liquid +288 -0
  71. package/dist/render/templates/glacier/session.liquid +217 -0
  72. package/dist/render/templates/glacier/styles.css +1204 -0
  73. package/dist/render/templates/grid/portfolio.liquid +255 -0
  74. package/dist/render/templates/grid/project.liquid +306 -0
  75. package/dist/render/templates/grid/session.liquid +260 -0
  76. package/dist/render/templates/grid/styles.css +1445 -0
  77. package/dist/render/templates/kinetic/portfolio.liquid +158 -0
  78. package/dist/render/templates/kinetic/project.liquid +242 -0
  79. package/dist/render/templates/kinetic/session.liquid +228 -0
  80. package/dist/render/templates/kinetic/styles.css +948 -0
  81. package/dist/render/templates/meridian/portfolio.liquid +243 -0
  82. package/dist/render/templates/meridian/project.liquid +376 -0
  83. package/dist/render/templates/meridian/session.liquid +298 -0
  84. package/dist/render/templates/meridian/styles.css +1375 -0
  85. package/dist/render/templates/minimal/portfolio.liquid +71 -0
  86. package/dist/render/templates/minimal/project.liquid +154 -0
  87. package/dist/render/templates/minimal/session.liquid +140 -0
  88. package/dist/render/templates/minimal/styles.css +529 -0
  89. package/dist/render/templates/mono/portfolio.liquid +281 -0
  90. package/dist/render/templates/mono/project.liquid +275 -0
  91. package/dist/render/templates/mono/session.liquid +276 -0
  92. package/dist/render/templates/mono/styles.css +1022 -0
  93. package/dist/render/templates/neon/portfolio.liquid +207 -0
  94. package/dist/render/templates/neon/project.liquid +225 -0
  95. package/dist/render/templates/neon/session.liquid +195 -0
  96. package/dist/render/templates/neon/styles.css +1271 -0
  97. package/dist/render/templates/noir/portfolio.liquid +137 -0
  98. package/dist/render/templates/noir/project.liquid +220 -0
  99. package/dist/render/templates/noir/session.liquid +241 -0
  100. package/dist/render/templates/noir/styles.css +1229 -0
  101. package/dist/render/templates/obsidian/portfolio.liquid +247 -0
  102. package/dist/render/templates/obsidian/project.liquid +280 -0
  103. package/dist/render/templates/obsidian/session.liquid +241 -0
  104. package/dist/render/templates/obsidian/styles.css +1407 -0
  105. package/dist/render/templates/paper/portfolio.liquid +257 -0
  106. package/dist/render/templates/paper/project.liquid +235 -0
  107. package/dist/render/templates/paper/session.liquid +271 -0
  108. package/dist/render/templates/paper/styles.css +1513 -0
  109. package/dist/render/templates/parallax/portfolio.liquid +295 -0
  110. package/dist/render/templates/parallax/project.liquid +275 -0
  111. package/dist/render/templates/parallax/session.liquid +295 -0
  112. package/dist/render/templates/parallax/styles.css +1880 -0
  113. package/dist/render/templates/parchment/portfolio.liquid +280 -0
  114. package/dist/render/templates/parchment/project.liquid +289 -0
  115. package/dist/render/templates/parchment/session.liquid +346 -0
  116. package/dist/render/templates/parchment/styles.css +1401 -0
  117. package/dist/render/templates/partials/_beats.liquid +16 -0
  118. package/dist/render/templates/partials/_breadcrumb.liquid +9 -0
  119. package/dist/render/templates/partials/_footer.liquid +7 -0
  120. package/dist/render/templates/partials/_growth-chart.liquid +7 -0
  121. package/dist/render/templates/partials/_key-decisions.liquid +20 -0
  122. package/dist/render/templates/partials/_links.liquid +16 -0
  123. package/dist/render/templates/partials/_narrative.liquid +8 -0
  124. package/dist/render/templates/partials/_phases.liquid +20 -0
  125. package/dist/render/templates/partials/_portfolio-header.liquid +20 -0
  126. package/dist/render/templates/partials/_portfolio-projects.liquid +16 -0
  127. package/dist/render/templates/partials/_portfolio-stats.liquid +19 -0
  128. package/dist/render/templates/partials/_qa.liquid +13 -0
  129. package/dist/render/templates/partials/_screenshot.liquid +15 -0
  130. package/dist/render/templates/partials/_session-cards.liquid +30 -0
  131. package/dist/render/templates/partials/_session-header.liquid +39 -0
  132. package/dist/render/templates/partials/_session-sidebar.liquid +30 -0
  133. package/dist/render/templates/partials/_skills.liquid +12 -0
  134. package/dist/render/templates/partials/_source-breakdown.liquid +22 -0
  135. package/dist/render/templates/partials/_stats.liquid +38 -0
  136. package/dist/render/templates/partials/_work-timeline.liquid +7 -0
  137. package/dist/render/templates/project.liquid +7 -4
  138. package/dist/render/templates/radar/portfolio.liquid +223 -0
  139. package/dist/render/templates/radar/project.liquid +278 -0
  140. package/dist/render/templates/radar/session.liquid +300 -0
  141. package/dist/render/templates/radar/styles.css +1055 -0
  142. package/dist/render/templates/showcase/portfolio.liquid +221 -0
  143. package/dist/render/templates/showcase/project.liquid +237 -0
  144. package/dist/render/templates/showcase/session.liquid +210 -0
  145. package/dist/render/templates/showcase/styles.css +1284 -0
  146. package/dist/render/templates/signal/portfolio.liquid +217 -0
  147. package/dist/render/templates/signal/project.liquid +278 -0
  148. package/dist/render/templates/signal/session.liquid +282 -0
  149. package/dist/render/templates/signal/styles.css +1401 -0
  150. package/dist/render/templates/strata/portfolio.liquid +180 -0
  151. package/dist/render/templates/strata/project.liquid +282 -0
  152. package/dist/render/templates/strata/session.liquid +261 -0
  153. package/dist/render/templates/strata/styles.css +1354 -0
  154. package/dist/render/templates/styles.css +1190 -0
  155. package/dist/render/templates/terminal/portfolio.liquid +102 -0
  156. package/dist/render/templates/terminal/project.liquid +161 -0
  157. package/dist/render/templates/terminal/session.liquid +145 -0
  158. package/dist/render/templates/terminal/styles.css +497 -0
  159. package/dist/render/templates/verdant/portfolio.liquid +321 -0
  160. package/dist/render/templates/verdant/project.liquid +309 -0
  161. package/dist/render/templates/verdant/session.liquid +237 -0
  162. package/dist/render/templates/verdant/styles.css +1261 -0
  163. package/dist/render/templates/zen/portfolio.liquid +124 -0
  164. package/dist/render/templates/zen/project.liquid +187 -0
  165. package/dist/render/templates/zen/session.liquid +203 -0
  166. package/dist/render/templates/zen/styles.css +1211 -0
  167. package/dist/render/templates.js +90 -0
  168. package/dist/routes/auth.js +7 -3
  169. package/dist/routes/context.js +17 -10
  170. package/dist/routes/delete.js +195 -0
  171. package/dist/routes/enhance.js +57 -40
  172. package/dist/routes/export.js +14 -4
  173. package/dist/routes/github.js +254 -0
  174. package/dist/routes/index.js +2 -0
  175. package/dist/routes/portfolio-render-data.js +160 -0
  176. package/dist/routes/preview.js +555 -108
  177. package/dist/routes/projects.js +61 -24
  178. package/dist/routes/publish.js +320 -31
  179. package/dist/routes/settings.js +194 -1
  180. package/dist/routes/sse.js +9 -0
  181. package/dist/search.js +6 -0
  182. package/dist/server.js +11 -3
  183. package/dist/settings.js +112 -9
  184. package/package.json +3 -4
  185. package/dist/public/assets/index-CC9G8EF1.js +0 -21
  186. package/dist/public/assets/index-Dalqz2mC.css +0 -1
@@ -0,0 +1,1284 @@
1
+ /* ══════════════════════════════════════════════════════════
2
+ Showcase Template Styles
3
+ Cinematic hero, scroll animations, stagger effects, counters
4
+ ══════════════════════════════════════════════════════════ */
5
+
6
+ :root {
7
+ --bg: #09090b;
8
+ --surface: #111113;
9
+ --surface-2: #18181b;
10
+ --surface-3: #27272a;
11
+ --border: rgba(255,255,255,0.06);
12
+ --border-accent: rgba(129,140,248,0.2);
13
+ --text: #fafafa;
14
+ --text-2: rgba(255,255,255,0.65);
15
+ --text-3: rgba(255,255,255,0.4);
16
+ --text-muted: rgba(255,255,255,0.25);
17
+ --accent: #818cf8;
18
+ --accent-dim: rgba(129,140,248,0.1);
19
+ --accent-mid: rgba(129,140,248,0.15);
20
+ --accent-glow: rgba(129,140,248,0.06);
21
+ --green: #4ade80;
22
+ --green-dim: rgba(74,222,128,0.1);
23
+ --red: #f87171;
24
+ --red-dim: rgba(248,113,113,0.1);
25
+ --font-display: 'Space Grotesk', sans-serif;
26
+ --font-body: 'Inter', sans-serif;
27
+ --font-mono: 'JetBrains Mono', monospace;
28
+ --radius-sm: 4px;
29
+ --radius-md: 8px;
30
+ --radius-lg: 12px;
31
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
32
+ --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
33
+ --dur-micro: 150ms;
34
+ --dur-section: 600ms;
35
+ --dur-chart: 800ms;
36
+ --dur-slow: 1200ms;
37
+ }
38
+ body { background: var(--bg); color: var(--text); }
39
+
40
+ /* ── Design Tokens ── */
41
+ .showcase {
42
+ --bg: #09090b;
43
+ --surface: #111113;
44
+ --surface-2: #18181b;
45
+ --surface-3: #27272a;
46
+
47
+ --border: rgba(255,255,255,0.06);
48
+ --border-accent: rgba(129,140,248,0.2);
49
+
50
+ --text: #fafafa;
51
+ --text-2: rgba(255,255,255,0.65);
52
+ --text-3: rgba(255,255,255,0.4);
53
+ --text-muted: rgba(255,255,255,0.25);
54
+
55
+ --accent: #818cf8;
56
+ --accent-dim: rgba(129,140,248,0.1);
57
+ --accent-mid: rgba(129,140,248,0.15);
58
+ --accent-glow: rgba(129,140,248,0.06);
59
+
60
+ --green: #4ade80;
61
+ --green-dim: rgba(74,222,128,0.1);
62
+ --red: #f87171;
63
+ --red-dim: rgba(248,113,113,0.1);
64
+
65
+ --font-display: 'Space Grotesk', sans-serif;
66
+ --font-body: 'Inter', sans-serif;
67
+ --font-mono: 'JetBrains Mono', monospace;
68
+
69
+ --radius-sm: 4px;
70
+ --radius-md: 8px;
71
+ --radius-lg: 12px;
72
+
73
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
74
+ --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
75
+ --dur-micro: 150ms;
76
+ --dur-section: 600ms;
77
+ --dur-chart: 800ms;
78
+ --dur-slow: 1200ms;
79
+
80
+ font-family: var(--font-body);
81
+ color: var(--text);
82
+ background: var(--bg);
83
+ line-height: 1.5;
84
+ -webkit-font-smoothing: antialiased;
85
+ -moz-osx-font-smoothing: grayscale;
86
+ }
87
+
88
+ .showcase a { color: var(--accent); text-decoration: none; }
89
+ .showcase a:visited { color: var(--accent); }
90
+ .showcase a:hover { text-decoration: underline; }
91
+
92
+ /* ── Scroll Animation System ── */
93
+ .showcase .sc-section {
94
+ opacity: 0;
95
+ transform: translateY(24px);
96
+ transition: opacity var(--dur-section) var(--ease-out),
97
+ transform var(--dur-section) var(--ease-out);
98
+ }
99
+ .showcase .sc-section.visible {
100
+ opacity: 1;
101
+ transform: translateY(0);
102
+ }
103
+ .showcase .sc-section--screenshot {
104
+ transform: translateY(32px);
105
+ transition-duration: 700ms;
106
+ }
107
+
108
+ .showcase .sc-stagger {
109
+ opacity: 0;
110
+ transform: translateY(16px);
111
+ transition: opacity 400ms var(--ease-out), transform 400ms var(--ease-out);
112
+ }
113
+ .showcase .sc-section.visible .sc-stagger {
114
+ opacity: 1;
115
+ transform: translateY(0);
116
+ }
117
+ .showcase .sc-section.visible .sc-stagger:nth-child(1) { transition-delay: 0ms; }
118
+ .showcase .sc-section.visible .sc-stagger:nth-child(2) { transition-delay: 80ms; }
119
+ .showcase .sc-section.visible .sc-stagger:nth-child(3) { transition-delay: 160ms; }
120
+ .showcase .sc-section.visible .sc-stagger:nth-child(4) { transition-delay: 240ms; }
121
+ .showcase .sc-section.visible .sc-stagger:nth-child(5) { transition-delay: 320ms; }
122
+ .showcase .sc-section.visible .sc-stagger:nth-child(6) { transition-delay: 400ms; }
123
+ .showcase .sc-section.visible .sc-stagger:nth-child(7) { transition-delay: 480ms; }
124
+ .showcase .sc-section.visible .sc-stagger:nth-child(8) { transition-delay: 560ms; }
125
+
126
+ /* Skills use faster stagger */
127
+ .showcase .sc-section--skills .sc-stagger { transition-duration: 300ms; }
128
+ .showcase .sc-section--skills.visible .sc-stagger:nth-child(1) { transition-delay: 0ms; }
129
+ .showcase .sc-section--skills.visible .sc-stagger:nth-child(2) { transition-delay: 40ms; }
130
+ .showcase .sc-section--skills.visible .sc-stagger:nth-child(3) { transition-delay: 80ms; }
131
+ .showcase .sc-section--skills.visible .sc-stagger:nth-child(4) { transition-delay: 120ms; }
132
+ .showcase .sc-section--skills.visible .sc-stagger:nth-child(5) { transition-delay: 160ms; }
133
+ .showcase .sc-section--skills.visible .sc-stagger:nth-child(6) { transition-delay: 200ms; }
134
+ .showcase .sc-section--skills.visible .sc-stagger:nth-child(7) { transition-delay: 240ms; }
135
+ .showcase .sc-section--skills.visible .sc-stagger:nth-child(8) { transition-delay: 280ms; }
136
+ .showcase .sc-section--skills.visible .sc-stagger:nth-child(9) { transition-delay: 320ms; }
137
+ .showcase .sc-section--skills.visible .sc-stagger:nth-child(10) { transition-delay: 360ms; }
138
+
139
+ /* Session cards stagger */
140
+ .showcase .sc-section--cards.visible .sc-stagger:nth-child(1) { transition-delay: 0ms; }
141
+ .showcase .sc-section--cards.visible .sc-stagger:nth-child(2) { transition-delay: 100ms; }
142
+ .showcase .sc-section--cards.visible .sc-stagger:nth-child(3) { transition-delay: 200ms; }
143
+ .showcase .sc-section--cards.visible .sc-stagger:nth-child(4) { transition-delay: 300ms; }
144
+ .showcase .sc-section--cards.visible .sc-stagger:nth-child(5) { transition-delay: 400ms; }
145
+ .showcase .sc-section--cards.visible .sc-stagger:nth-child(6) { transition-delay: 500ms; }
146
+
147
+ /* ── Cinematic Hero ── */
148
+ .sc-hero {
149
+ position: relative;
150
+ min-height: 80vh;
151
+ display: flex;
152
+ flex-direction: column;
153
+ align-items: center;
154
+ justify-content: center;
155
+ overflow: hidden;
156
+ }
157
+ .sc-hero__bg {
158
+ position: absolute;
159
+ inset: -40px;
160
+ background-size: cover;
161
+ background-position: center 10%;
162
+ filter: blur(40px) brightness(0.25) saturate(0.5);
163
+ z-index: 0;
164
+ }
165
+ .sc-hero__overlay {
166
+ position: absolute;
167
+ inset: 0;
168
+ background: linear-gradient(
169
+ 180deg,
170
+ rgba(9,9,11,0.4) 0%,
171
+ rgba(9,9,11,0.2) 40%,
172
+ rgba(9,9,11,0.6) 100%
173
+ );
174
+ z-index: 0;
175
+ }
176
+
177
+ .sc-hero__content {
178
+ position: relative;
179
+ z-index: 1;
180
+ display: flex;
181
+ align-items: center;
182
+ gap: 2.5rem;
183
+ max-width: 800px;
184
+ padding: 0 1.5rem;
185
+ width: 100%;
186
+ }
187
+ .sc-hero__photo {
188
+ width: 160px;
189
+ height: 200px;
190
+ border-radius: var(--radius-lg);
191
+ object-fit: cover;
192
+ object-position: center 10%;
193
+ border: 2px solid rgba(129,140,248,0.3);
194
+ box-shadow: 0 20px 60px rgba(0,0,0,0.5);
195
+ flex-shrink: 0;
196
+ }
197
+ .sc-hero__info {
198
+ display: flex;
199
+ flex-direction: column;
200
+ gap: 0.75rem;
201
+ }
202
+ .sc-hero__name {
203
+ font-family: var(--font-display);
204
+ font-size: 2.75rem;
205
+ font-weight: 700;
206
+ color: var(--text);
207
+ letter-spacing: -0.02em;
208
+ line-height: 1.1;
209
+ }
210
+ .sc-hero__location {
211
+ font-family: var(--font-mono);
212
+ font-size: 0.75rem;
213
+ color: var(--text-3);
214
+ letter-spacing: 0.02em;
215
+ }
216
+ .sc-hero__bio {
217
+ font-family: var(--font-body);
218
+ font-size: 1rem;
219
+ color: var(--text-2);
220
+ line-height: 1.6;
221
+ max-width: 460px;
222
+ }
223
+
224
+ /* Hero Contact Row */
225
+ .sc-hero__contact {
226
+ position: relative;
227
+ z-index: 1;
228
+ display: flex;
229
+ flex-wrap: wrap;
230
+ gap: 10px 18px;
231
+ max-width: 800px;
232
+ width: 100%;
233
+ padding: 0 1.5rem;
234
+ margin-top: 1.5rem;
235
+ font-family: var(--font-mono);
236
+ font-size: 11px;
237
+ }
238
+ .sc-hero__contact a,
239
+ .sc-hero__contact span {
240
+ display: inline-flex;
241
+ align-items: center;
242
+ gap: 5px;
243
+ color: var(--text-3);
244
+ text-decoration: none;
245
+ transition: color var(--dur-micro) ease;
246
+ }
247
+ .sc-hero__contact a:hover {
248
+ color: var(--accent);
249
+ text-decoration: none;
250
+ }
251
+ .sc-hero__contact svg { flex-shrink: 0; }
252
+ .sc-hero__resume-btn {
253
+ display: inline-flex;
254
+ align-items: center;
255
+ gap: 5px;
256
+ padding: 3px 10px;
257
+ border: 1px solid rgba(255,255,255,0.12);
258
+ border-radius: var(--radius-sm);
259
+ font-family: var(--font-mono);
260
+ font-size: 11px;
261
+ color: var(--text-3);
262
+ text-decoration: none;
263
+ transition: border-color var(--dur-micro) ease, color var(--dur-micro) ease;
264
+ background: transparent;
265
+ }
266
+ .sc-hero__resume-btn:hover {
267
+ border-color: var(--accent);
268
+ color: var(--accent);
269
+ text-decoration: none;
270
+ }
271
+
272
+ /* Hero Stats */
273
+ .sc-hero__stats {
274
+ position: relative;
275
+ z-index: 1;
276
+ display: grid;
277
+ grid-template-columns: repeat(4, 1fr);
278
+ gap: 0.75rem;
279
+ max-width: 800px;
280
+ width: 100%;
281
+ padding: 0 1.5rem;
282
+ margin-top: 2rem;
283
+ }
284
+ .sc-hero-stat {
285
+ background: rgba(255,255,255,0.04);
286
+ border: 1px solid rgba(255,255,255,0.08);
287
+ border-radius: var(--radius-md);
288
+ padding: 1rem 1.25rem;
289
+ text-align: center;
290
+ backdrop-filter: blur(8px);
291
+ }
292
+ .sc-hero-stat__value {
293
+ font-family: var(--font-display);
294
+ font-size: 1.75rem;
295
+ font-weight: 700;
296
+ color: var(--text);
297
+ letter-spacing: -0.02em;
298
+ line-height: 1;
299
+ }
300
+ .sc-hero-stat__label {
301
+ font-family: var(--font-mono);
302
+ font-size: 9px;
303
+ font-weight: 400;
304
+ color: var(--text-3);
305
+ letter-spacing: 0.08em;
306
+ text-transform: uppercase;
307
+ margin-top: 0.375rem;
308
+ }
309
+
310
+ /* Hero entrance animations */
311
+ .sc-hero-fade {
312
+ opacity: 0;
313
+ transform: translateY(20px);
314
+ transition: opacity 800ms var(--ease-out), transform 800ms var(--ease-out);
315
+ }
316
+ .sc-hero.visible .sc-hero-fade {
317
+ opacity: 1;
318
+ transform: translateY(0);
319
+ }
320
+ .sc-hero.visible .sc-hero-fade:nth-child(1) { transition-delay: 200ms; }
321
+ .sc-hero.visible .sc-hero-fade:nth-child(2) { transition-delay: 400ms; }
322
+ .sc-hero.visible .sc-hero-fade:nth-child(3) { transition-delay: 600ms; }
323
+ .sc-hero.visible .sc-hero-fade:nth-child(4) { transition-delay: 800ms; }
324
+
325
+ /* ── Page Container ── */
326
+ .sc-page {
327
+ max-width: 800px;
328
+ margin: 0 auto;
329
+ padding: 3rem 1.5rem 4rem;
330
+ }
331
+
332
+ /* ── Section Spacing ── */
333
+ .showcase .section-gap { margin-bottom: 3rem; }
334
+ .showcase .section-gap-sm { margin-bottom: 2rem; }
335
+ .showcase .section-gap-lg { margin-bottom: 4rem; }
336
+
337
+ /* ── Section Header ── */
338
+ .sc-section-header {
339
+ display: flex;
340
+ justify-content: space-between;
341
+ align-items: baseline;
342
+ margin-bottom: 1rem;
343
+ }
344
+ .sc-section-header h2,
345
+ .sc-section-header h3 {
346
+ font-family: var(--font-display);
347
+ font-size: 1rem;
348
+ font-weight: 600;
349
+ color: var(--text);
350
+ }
351
+ .sc-section-label {
352
+ font-family: var(--font-mono);
353
+ font-size: 9px;
354
+ font-weight: 400;
355
+ color: var(--text-3);
356
+ letter-spacing: 0.08em;
357
+ text-transform: uppercase;
358
+ }
359
+
360
+ /* ── Leverage ── */
361
+ .sc-leverage {
362
+ text-align: center;
363
+ padding: 2rem 1rem;
364
+ }
365
+ .sc-leverage__multi {
366
+ font-family: var(--font-display);
367
+ font-size: 3rem;
368
+ font-weight: 700;
369
+ color: var(--accent);
370
+ line-height: 1;
371
+ }
372
+ .sc-leverage__context {
373
+ font-family: var(--font-mono);
374
+ font-size: 0.75rem;
375
+ color: var(--text-3);
376
+ margin-block-start: 0.5rem;
377
+ letter-spacing: 0.02em;
378
+ }
379
+ .sc-leverage__bar {
380
+ height: 4px;
381
+ border-radius: 2px;
382
+ background: rgba(255,255,255,0.06);
383
+ display: flex;
384
+ overflow: hidden;
385
+ max-width: 300px;
386
+ margin: 0.75rem auto 0;
387
+ }
388
+ .sc-leverage__human {
389
+ height: 100%;
390
+ background: rgba(255,255,255,0.35);
391
+ border-radius: 2px 0 0 2px;
392
+ }
393
+ .sc-leverage__agent {
394
+ height: 100%;
395
+ background: var(--accent);
396
+ border-radius: 0 2px 2px 0;
397
+ }
398
+
399
+ /* ── Project Cards ── */
400
+ .sc-project-card {
401
+ background: var(--surface);
402
+ border: 1px solid var(--border);
403
+ border-radius: var(--radius-md);
404
+ padding: 1.5rem;
405
+ transition: border-color var(--dur-micro) ease, background var(--dur-micro) ease, transform 0.15s ease;
406
+ display: block;
407
+ color: inherit;
408
+ text-decoration: none;
409
+ }
410
+ .sc-project-card:hover {
411
+ border-color: var(--border-accent);
412
+ background: var(--surface-2);
413
+ text-decoration: none;
414
+ transform: translateY(-2px);
415
+ }
416
+ .sc-project-card:focus-visible {
417
+ outline: 2px solid var(--accent);
418
+ outline-offset: 2px;
419
+ }
420
+ .sc-project-card__accent-bar {
421
+ height: 2px;
422
+ border-radius: 1px;
423
+ margin-bottom: 1rem;
424
+ }
425
+ .sc-project-card__title {
426
+ font-family: var(--font-display);
427
+ font-size: 1.125rem;
428
+ font-weight: 700;
429
+ color: var(--text);
430
+ margin-bottom: 0.5rem;
431
+ letter-spacing: -0.01em;
432
+ }
433
+ .sc-project-card__narrative {
434
+ font-family: var(--font-body);
435
+ font-size: 0.875rem;
436
+ color: var(--text-2);
437
+ line-height: 1.5;
438
+ margin-bottom: 1rem;
439
+ display: -webkit-box;
440
+ -webkit-line-clamp: 3;
441
+ -webkit-box-orient: vertical;
442
+ overflow: hidden;
443
+ }
444
+ .sc-project-card__meta {
445
+ display: flex;
446
+ gap: 0.75rem;
447
+ font-family: var(--font-mono);
448
+ font-size: 11px;
449
+ color: var(--text-3);
450
+ margin-bottom: 1rem;
451
+ }
452
+ .sc-project-card__skills {
453
+ display: flex;
454
+ flex-wrap: wrap;
455
+ gap: 0.375rem;
456
+ }
457
+
458
+ /* ── Skill Chips ── */
459
+ .sc-skill-chip {
460
+ font-family: var(--font-mono);
461
+ font-size: 10px;
462
+ font-weight: 500;
463
+ color: var(--accent);
464
+ letter-spacing: 0.02em;
465
+ background: var(--accent-dim);
466
+ border: 1px solid var(--border-accent);
467
+ border-radius: var(--radius-sm);
468
+ padding: 0.25rem 0.5rem;
469
+ white-space: nowrap;
470
+ }
471
+ .sc-skill-chip--lg {
472
+ font-family: var(--font-mono);
473
+ font-size: 11px;
474
+ font-weight: 500;
475
+ color: var(--accent);
476
+ letter-spacing: 0.02em;
477
+ background: var(--accent-dim);
478
+ border: 1px solid var(--border-accent);
479
+ border-radius: var(--radius-sm);
480
+ padding: 0.375rem 0.75rem;
481
+ white-space: nowrap;
482
+ }
483
+
484
+ /* ── Skills Section Card ── */
485
+ .sc-skills-section-card {
486
+ background: var(--surface);
487
+ border: 1px solid var(--border);
488
+ border-radius: var(--radius-md);
489
+ padding: 1.25rem;
490
+ }
491
+ .sc-skills-grid {
492
+ display: flex;
493
+ flex-wrap: wrap;
494
+ gap: 0.5rem;
495
+ }
496
+
497
+ /* ── Title Section (Project) ── */
498
+ .sc-title-section h1 {
499
+ font-family: var(--font-display);
500
+ font-size: 2.25rem;
501
+ font-weight: 700;
502
+ color: var(--text);
503
+ letter-spacing: -0.02em;
504
+ line-height: 1.2;
505
+ margin-bottom: 0.5rem;
506
+ }
507
+ .sc-subtitle {
508
+ font-family: var(--font-body);
509
+ font-size: 1.0625rem;
510
+ color: var(--text-2);
511
+ }
512
+
513
+ /* ── Links ── */
514
+ .sc-links {
515
+ display: flex;
516
+ gap: 1.25rem;
517
+ flex-wrap: wrap;
518
+ }
519
+ .sc-links a {
520
+ display: inline-flex;
521
+ align-items: center;
522
+ gap: 0.5rem;
523
+ font-family: var(--font-mono);
524
+ font-size: 0.8125rem;
525
+ color: var(--accent);
526
+ transition: opacity var(--dur-micro) ease;
527
+ }
528
+ .sc-links a:visited { color: var(--accent); }
529
+ .sc-links a:hover { opacity: 0.8; text-decoration: underline; }
530
+ .sc-links svg { width: 14px; height: 14px; flex-shrink: 0; }
531
+
532
+ /* ── Screenshot ── */
533
+ .sc-screenshot-frame {
534
+ border: 1px solid var(--border);
535
+ border-radius: var(--radius-lg);
536
+ overflow: hidden;
537
+ }
538
+ .sc-screenshot-chrome {
539
+ display: flex;
540
+ align-items: center;
541
+ gap: 6px;
542
+ padding: 10px 14px;
543
+ background: var(--surface-2);
544
+ border-bottom: 1px solid var(--border);
545
+ }
546
+ .sc-screenshot-dot {
547
+ width: 8px;
548
+ height: 8px;
549
+ border-radius: 50%;
550
+ background: var(--surface-3);
551
+ }
552
+ .sc-screenshot-url {
553
+ margin-inline-start: 8px;
554
+ font-family: var(--font-mono);
555
+ font-size: 11px;
556
+ color: var(--text-3);
557
+ }
558
+ .sc-screenshot-body {
559
+ height: 28rem;
560
+ background: linear-gradient(135deg, var(--surface) 0%, var(--surface-2) 40%, #1a1a2e 100%);
561
+ display: flex;
562
+ align-items: center;
563
+ justify-content: center;
564
+ position: relative;
565
+ overflow: hidden;
566
+ }
567
+ .sc-screenshot-body::before {
568
+ content: '';
569
+ position: absolute;
570
+ inset: 0;
571
+ background:
572
+ radial-gradient(ellipse at 30% 40%, rgba(129,140,248,0.06) 0%, transparent 60%),
573
+ radial-gradient(ellipse at 70% 60%, rgba(74,222,128,0.04) 0%, transparent 50%);
574
+ }
575
+
576
+ /* ── Narrative ── */
577
+ .sc-narrative {
578
+ border-inline-start: 3px solid transparent;
579
+ padding-inline-start: 1rem;
580
+ transition: border-color 600ms var(--ease-out) 200ms;
581
+ }
582
+ .showcase .sc-section.visible .sc-narrative {
583
+ border-inline-start-color: var(--accent);
584
+ }
585
+ .sc-narrative p {
586
+ font-family: var(--font-body);
587
+ font-size: 1.0625rem;
588
+ color: var(--text-2);
589
+ line-height: 1.7;
590
+ margin-bottom: 1rem;
591
+ }
592
+ .sc-narrative p:last-child { margin-bottom: 0; }
593
+
594
+ /* ── Stats Grid ── */
595
+ .sc-stats-grid {
596
+ display: grid;
597
+ grid-template-columns: repeat(3, 1fr);
598
+ gap: 0.75rem;
599
+ }
600
+ .sc-stat-card {
601
+ background: var(--surface);
602
+ border: 1px solid var(--border);
603
+ border-radius: var(--radius-md);
604
+ padding: 1.25rem;
605
+ }
606
+ .sc-stat-card__label {
607
+ font-family: var(--font-mono);
608
+ font-size: 9px;
609
+ font-weight: 400;
610
+ color: var(--text-3);
611
+ letter-spacing: 0.08em;
612
+ text-transform: uppercase;
613
+ margin-bottom: 0.5rem;
614
+ }
615
+ .sc-stat-card__value {
616
+ font-family: var(--font-display);
617
+ font-size: 2rem;
618
+ font-weight: 700;
619
+ color: var(--text);
620
+ letter-spacing: -0.02em;
621
+ line-height: 1;
622
+ white-space: nowrap;
623
+ }
624
+
625
+ /* ── Chart Containers ── */
626
+ .sc-chart-container {
627
+ background: var(--surface);
628
+ border: 1px solid var(--border);
629
+ border-radius: var(--radius-md);
630
+ padding: 1.5rem;
631
+ overflow: hidden;
632
+ }
633
+ .sc-chart-container svg { display: block; }
634
+
635
+ /* Chart animation classes (used by JS-rendered charts) */
636
+ .showcase .timeline-bar {
637
+ transform: scaleX(0);
638
+ transform-origin: left center;
639
+ transition: transform var(--dur-chart) var(--ease-out);
640
+ }
641
+ .showcase .sc-section.visible .timeline-bar { transform: scaleX(1); }
642
+
643
+ .showcase .fork-line {
644
+ transition: stroke-dashoffset var(--dur-slow) var(--ease-out);
645
+ }
646
+ .showcase .sc-section.visible .fork-line { stroke-dashoffset: 0 !important; }
647
+
648
+ .showcase .growth-line {
649
+ transition: stroke-dashoffset var(--dur-slow) var(--ease-in-out);
650
+ }
651
+ .showcase .sc-section.visible .growth-line { stroke-dashoffset: 0 !important; }
652
+ .showcase .growth-area {
653
+ opacity: 0;
654
+ transition: opacity 600ms var(--ease-out) 1000ms;
655
+ }
656
+ .showcase .sc-section.visible .growth-area { opacity: 1; }
657
+ .showcase .growth-dot {
658
+ opacity: 0;
659
+ transform-origin: center;
660
+ transform: scale(0);
661
+ transition: opacity 300ms var(--ease-out), transform 300ms var(--ease-out);
662
+ }
663
+ .showcase .sc-section.visible .growth-dot {
664
+ opacity: 1;
665
+ transform: scale(1);
666
+ }
667
+
668
+ /* ── Two Column ── */
669
+ .sc-two-col {
670
+ display: grid;
671
+ grid-template-columns: 1fr 1fr;
672
+ gap: 1.5rem;
673
+ }
674
+ .sc-two-col-card {
675
+ background: var(--surface);
676
+ border: 1px solid var(--border);
677
+ border-radius: var(--radius-md);
678
+ padding: 1.25rem;
679
+ }
680
+ .sc-two-col-card h4 {
681
+ font-family: var(--font-display);
682
+ font-size: 0.875rem;
683
+ font-weight: 600;
684
+ color: var(--text);
685
+ margin-bottom: 1rem;
686
+ }
687
+ .sc-decision-item {
688
+ margin-bottom: 0.75rem;
689
+ padding-bottom: 0.75rem;
690
+ border-bottom: 1px solid var(--border);
691
+ }
692
+ .sc-decision-item:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
693
+ .sc-phase-label {
694
+ font-family: var(--font-mono);
695
+ font-size: 9px;
696
+ color: var(--accent);
697
+ text-transform: uppercase;
698
+ letter-spacing: 0.08em;
699
+ margin-bottom: 0.25rem;
700
+ }
701
+ .sc-decision-item p {
702
+ font-size: 0.8125rem;
703
+ color: var(--text-2);
704
+ line-height: 1.5;
705
+ }
706
+ .sc-source-row {
707
+ display: flex;
708
+ justify-content: space-between;
709
+ align-items: center;
710
+ padding: 0.5rem 0;
711
+ border-bottom: 1px solid var(--border);
712
+ }
713
+ .sc-source-row:last-child { border-bottom: none; }
714
+ .sc-source-name {
715
+ font-family: var(--font-body);
716
+ font-size: 0.8125rem;
717
+ color: var(--text-2);
718
+ }
719
+ .sc-source-bar-track {
720
+ flex: 1;
721
+ height: 4px;
722
+ background: var(--surface-3);
723
+ border-radius: 2px;
724
+ margin: 0 0.75rem;
725
+ overflow: hidden;
726
+ }
727
+ .sc-source-bar-fill {
728
+ height: 100%;
729
+ border-radius: 2px;
730
+ background: var(--accent);
731
+ transform: scaleX(0);
732
+ transform-origin: left;
733
+ transition: transform var(--dur-chart) var(--ease-out) 200ms;
734
+ }
735
+ .showcase .sc-section.visible .sc-source-bar-fill { transform: scaleX(1); }
736
+ .sc-source-pct {
737
+ font-family: var(--font-mono);
738
+ font-size: 11px;
739
+ color: var(--text-3);
740
+ min-width: 2.5rem;
741
+ text-align: right;
742
+ }
743
+
744
+ /* ── Phase Timeline ── */
745
+ .sc-phase-timeline {
746
+ position: relative;
747
+ padding-inline-start: 2rem;
748
+ }
749
+ .sc-phase-line {
750
+ position: absolute;
751
+ left: 7px;
752
+ top: 8px;
753
+ bottom: 8px;
754
+ width: 2px;
755
+ background: var(--border);
756
+ transform: scaleY(0);
757
+ transform-origin: top;
758
+ transition: transform var(--dur-slow) var(--ease-out);
759
+ }
760
+ .showcase .sc-section.visible .sc-phase-line { transform: scaleY(1); }
761
+ .sc-phase-item {
762
+ position: relative;
763
+ padding-bottom: 1.5rem;
764
+ }
765
+ .sc-phase-item:last-child { padding-bottom: 0; }
766
+ .sc-phase-dot {
767
+ position: absolute;
768
+ left: -2rem;
769
+ top: 4px;
770
+ width: 16px;
771
+ height: 16px;
772
+ border-radius: 50%;
773
+ background: var(--surface);
774
+ border: 2px solid var(--accent);
775
+ transform: scale(0);
776
+ transition: transform 400ms var(--ease-out);
777
+ }
778
+ .showcase .sc-section.visible .sc-phase-dot { transform: scale(1); }
779
+ .sc-phase-item:nth-child(1) .sc-phase-dot { transition-delay: 100ms; }
780
+ .sc-phase-item:nth-child(2) .sc-phase-dot { transition-delay: 350ms; }
781
+ .sc-phase-item:nth-child(3) .sc-phase-dot { transition-delay: 600ms; }
782
+ .sc-phase-item:nth-child(4) .sc-phase-dot { transition-delay: 850ms; }
783
+ .sc-phase-number {
784
+ font-family: var(--font-mono);
785
+ font-size: 9px;
786
+ color: var(--accent);
787
+ letter-spacing: 0.08em;
788
+ text-transform: uppercase;
789
+ margin-bottom: 0.25rem;
790
+ }
791
+ .sc-phase-title {
792
+ font-family: var(--font-display);
793
+ font-size: 0.875rem;
794
+ font-weight: 600;
795
+ color: var(--text);
796
+ margin-bottom: 0.25rem;
797
+ }
798
+ .sc-phase-dates {
799
+ font-family: var(--font-mono);
800
+ font-size: 11px;
801
+ color: var(--text-3);
802
+ margin-bottom: 0.25rem;
803
+ }
804
+ .sc-phase-desc {
805
+ font-size: 0.8125rem;
806
+ color: var(--text-2);
807
+ line-height: 1.5;
808
+ }
809
+
810
+ /* ── Session Cards ── */
811
+ .sc-session-grid {
812
+ display: grid;
813
+ grid-template-columns: 1fr 1fr;
814
+ gap: 0.75rem;
815
+ }
816
+ .sc-session-card {
817
+ background: var(--surface);
818
+ border: 1px solid var(--border);
819
+ border-radius: var(--radius-md);
820
+ padding: 1.25rem;
821
+ transition: border-color var(--dur-micro) ease, background var(--dur-micro) ease, transform 0.15s ease;
822
+ display: block;
823
+ color: inherit;
824
+ text-decoration: none;
825
+ }
826
+ .sc-session-card:visited { color: inherit; }
827
+ .sc-session-card:hover {
828
+ border-color: var(--border-accent);
829
+ background: var(--surface-2);
830
+ text-decoration: none;
831
+ transform: translateY(-2px);
832
+ }
833
+ .sc-session-card:focus-visible {
834
+ outline: 2px solid var(--accent);
835
+ outline-offset: 2px;
836
+ }
837
+ .sc-session-card__accent-bar {
838
+ height: 2px;
839
+ border-radius: 1px;
840
+ margin-bottom: 0.75rem;
841
+ }
842
+ .sc-session-card__title {
843
+ font-family: var(--font-display);
844
+ font-size: 0.875rem;
845
+ font-weight: 600;
846
+ color: var(--text);
847
+ margin-bottom: 0.5rem;
848
+ line-height: 1.3;
849
+ }
850
+ .sc-session-card__meta {
851
+ display: flex;
852
+ gap: 0.75rem;
853
+ font-family: var(--font-mono);
854
+ font-size: 11px;
855
+ color: var(--text-3);
856
+ margin-bottom: 0.5rem;
857
+ }
858
+ .sc-session-card__bottom {
859
+ display: flex;
860
+ align-items: center;
861
+ gap: 0.5rem;
862
+ }
863
+ .sc-session-card__skill {
864
+ display: inline-block;
865
+ font-family: var(--font-mono);
866
+ font-size: 10px;
867
+ color: var(--accent);
868
+ background: var(--accent-dim);
869
+ border-radius: var(--radius-sm);
870
+ padding: 0.2rem 0.5rem;
871
+ }
872
+ .sc-session-card__source {
873
+ font-family: var(--font-mono);
874
+ font-size: 10px;
875
+ color: var(--text-3);
876
+ margin-inline-start: auto;
877
+ }
878
+
879
+ /* ── Breadcrumb ── */
880
+ .sc-breadcrumb {
881
+ font-family: var(--font-mono);
882
+ font-size: 0.75rem;
883
+ color: var(--text-3);
884
+ margin-bottom: 1.5rem;
885
+ }
886
+ .sc-breadcrumb a {
887
+ color: var(--text-3);
888
+ transition: color var(--dur-micro) ease;
889
+ }
890
+ .sc-breadcrumb a:visited { color: var(--text-3); }
891
+ .sc-breadcrumb a:hover { color: var(--accent); }
892
+ .sc-breadcrumb__sep {
893
+ margin: 0 0.5rem;
894
+ color: var(--text-muted);
895
+ }
896
+
897
+ /* ── Session Title ── */
898
+ .sc-session-title {
899
+ font-family: var(--font-display);
900
+ font-size: 2.25rem;
901
+ font-weight: 700;
902
+ color: var(--text);
903
+ letter-spacing: -0.02em;
904
+ line-height: 1.2;
905
+ margin-bottom: 1rem;
906
+ }
907
+
908
+ /* ── Meta Row ── */
909
+ .sc-meta-row {
910
+ display: flex;
911
+ flex-wrap: wrap;
912
+ gap: 1.25rem;
913
+ align-items: center;
914
+ }
915
+ .sc-meta-item {
916
+ display: flex;
917
+ align-items: center;
918
+ gap: 0.5rem;
919
+ }
920
+ .sc-meta-item__label {
921
+ font-family: var(--font-mono);
922
+ font-size: 9px;
923
+ color: var(--text-3);
924
+ text-transform: uppercase;
925
+ letter-spacing: 0.08em;
926
+ }
927
+ .sc-meta-item__value {
928
+ font-family: var(--font-mono);
929
+ font-size: 0.8125rem;
930
+ color: var(--text-2);
931
+ }
932
+ .sc-meta-pill {
933
+ font-family: var(--font-mono);
934
+ font-size: 10px;
935
+ font-weight: 500;
936
+ padding: 0.2rem 0.5rem;
937
+ border-radius: var(--radius-sm);
938
+ background: var(--accent-dim);
939
+ color: var(--accent);
940
+ border: 1px solid var(--border-accent);
941
+ }
942
+
943
+ /* ── Dev Take ── */
944
+ .sc-dev-take {
945
+ border-inline-start: 3px solid transparent;
946
+ padding-inline-start: 1rem;
947
+ transition: border-color 600ms var(--ease-out) 200ms;
948
+ }
949
+ .showcase .sc-section.visible .sc-dev-take {
950
+ border-inline-start-color: var(--accent);
951
+ }
952
+ .sc-dev-take p {
953
+ font-family: var(--font-body);
954
+ font-size: 1.0625rem;
955
+ color: var(--text-2);
956
+ line-height: 1.7;
957
+ font-style: italic;
958
+ }
959
+
960
+ /* ── Session Two-Column Layout ── */
961
+ .sc-session-layout {
962
+ display: grid;
963
+ grid-template-columns: 1fr 280px;
964
+ gap: 2rem;
965
+ align-items: start;
966
+ }
967
+
968
+ /* ── Sidebar ── */
969
+ .sc-sidebar {
970
+ position: sticky;
971
+ top: 2rem;
972
+ }
973
+ .sc-sidebar-card {
974
+ background: var(--surface);
975
+ border: 1px solid var(--border);
976
+ border-radius: var(--radius-md);
977
+ padding: 1.25rem;
978
+ margin-bottom: 1rem;
979
+ }
980
+ .sc-sidebar-card:last-child { margin-bottom: 0; }
981
+ .sc-sidebar-card h4 {
982
+ font-family: var(--font-display);
983
+ font-size: 0.8125rem;
984
+ font-weight: 600;
985
+ color: var(--text);
986
+ margin-bottom: 0.75rem;
987
+ }
988
+
989
+ /* Tools table */
990
+ .sc-tools-table {
991
+ width: 100%;
992
+ border-collapse: collapse;
993
+ }
994
+ .sc-tools-table tr {
995
+ border-bottom: 1px solid var(--border);
996
+ }
997
+ .sc-tools-table tr:last-child { border-bottom: none; }
998
+ .sc-tools-table td {
999
+ padding: 0.375rem 0;
1000
+ font-family: var(--font-mono);
1001
+ font-size: 11px;
1002
+ }
1003
+ .sc-tools-table td:first-child { color: var(--text-2); }
1004
+ .sc-tools-table td:last-child { color: var(--text-3); text-align: right; }
1005
+
1006
+ /* Files table */
1007
+ .sc-files-table {
1008
+ width: 100%;
1009
+ border-collapse: collapse;
1010
+ }
1011
+ .sc-files-table tr {
1012
+ border-bottom: 1px solid var(--border);
1013
+ }
1014
+ .sc-files-table tr:last-child { border-bottom: none; }
1015
+ .sc-files-table td {
1016
+ padding: 0.375rem 0;
1017
+ font-family: var(--font-mono);
1018
+ font-size: 10px;
1019
+ vertical-align: top;
1020
+ }
1021
+ .sc-files-table td:first-child {
1022
+ color: var(--text-2);
1023
+ word-break: break-all;
1024
+ padding-inline-end: 0.5rem;
1025
+ }
1026
+ .sc-files-table td:last-child {
1027
+ color: var(--green);
1028
+ white-space: nowrap;
1029
+ text-align: right;
1030
+ }
1031
+
1032
+ /* Sidebar skills */
1033
+ .sc-sidebar-skills {
1034
+ display: flex;
1035
+ flex-wrap: wrap;
1036
+ gap: 0.375rem;
1037
+ }
1038
+
1039
+ /* ── Beats (execution path) ── */
1040
+ .sc-beats-list {
1041
+ list-style: none;
1042
+ }
1043
+ .sc-beat-item {
1044
+ position: relative;
1045
+ padding-inline-start: 2.5rem;
1046
+ padding-bottom: 1.5rem;
1047
+ }
1048
+ .sc-beat-item:last-child { padding-bottom: 0; }
1049
+ .sc-beat-item::before {
1050
+ content: '';
1051
+ position: absolute;
1052
+ left: 11px;
1053
+ top: 32px;
1054
+ bottom: 0;
1055
+ width: 2px;
1056
+ background: var(--border);
1057
+ }
1058
+ .sc-beat-item:last-child::before { display: none; }
1059
+ .sc-beat-number {
1060
+ position: absolute;
1061
+ left: 0;
1062
+ top: 2px;
1063
+ width: 24px;
1064
+ height: 24px;
1065
+ border-radius: 50%;
1066
+ background: var(--accent-dim);
1067
+ border: 2px solid var(--accent);
1068
+ display: flex;
1069
+ align-items: center;
1070
+ justify-content: center;
1071
+ font-family: var(--font-mono);
1072
+ font-size: 10px;
1073
+ font-weight: 500;
1074
+ color: var(--accent);
1075
+ }
1076
+ .sc-beat-title {
1077
+ font-family: var(--font-display);
1078
+ font-size: 0.875rem;
1079
+ font-weight: 600;
1080
+ color: var(--text);
1081
+ margin-bottom: 0.375rem;
1082
+ line-height: 1.4;
1083
+ }
1084
+ .sc-beat-desc {
1085
+ font-family: var(--font-body);
1086
+ font-size: 0.8125rem;
1087
+ color: var(--text-2);
1088
+ line-height: 1.5;
1089
+ }
1090
+
1091
+ /* ── Q&A Section ── */
1092
+ .sc-qa-item {
1093
+ background: var(--surface);
1094
+ border: 1px solid var(--border);
1095
+ border-radius: var(--radius-md);
1096
+ padding: 1.25rem;
1097
+ margin-bottom: 0.75rem;
1098
+ }
1099
+ .sc-qa-item:last-child { margin-bottom: 0; }
1100
+ .sc-qa-question {
1101
+ font-family: var(--font-display);
1102
+ font-size: 0.875rem;
1103
+ font-weight: 600;
1104
+ color: var(--text);
1105
+ margin-bottom: 0.75rem;
1106
+ display: flex;
1107
+ gap: 0.5rem;
1108
+ }
1109
+ .sc-qa-question__marker {
1110
+ color: var(--accent);
1111
+ font-family: var(--font-mono);
1112
+ font-size: 0.75rem;
1113
+ font-weight: 700;
1114
+ flex-shrink: 0;
1115
+ margin-top: 1px;
1116
+ }
1117
+ .sc-qa-answer {
1118
+ font-family: var(--font-body);
1119
+ font-size: 0.8125rem;
1120
+ color: var(--text-2);
1121
+ line-height: 1.6;
1122
+ padding-inline-start: 1.5rem;
1123
+ }
1124
+
1125
+ /* ── Agent Summary ── */
1126
+ .sc-agent-timeline {
1127
+ background: var(--surface);
1128
+ border: 1px solid var(--border);
1129
+ border-radius: var(--radius-md);
1130
+ padding: 1.5rem;
1131
+ }
1132
+ .sc-agent-row {
1133
+ display: flex;
1134
+ align-items: center;
1135
+ gap: 0.75rem;
1136
+ padding: 0.5rem 0;
1137
+ border-bottom: 1px solid var(--border);
1138
+ }
1139
+ .sc-agent-row:last-child { border-bottom: none; }
1140
+ .sc-agent-row__dot {
1141
+ width: 8px;
1142
+ height: 8px;
1143
+ border-radius: 50%;
1144
+ flex-shrink: 0;
1145
+ background: var(--accent);
1146
+ }
1147
+ .sc-agent-row__name {
1148
+ font-family: var(--font-mono);
1149
+ font-size: 11px;
1150
+ color: var(--text-2);
1151
+ flex: 1;
1152
+ }
1153
+ .sc-agent-row__dur {
1154
+ font-family: var(--font-mono);
1155
+ font-size: 11px;
1156
+ color: var(--text-3);
1157
+ }
1158
+ .sc-agent-row__loc {
1159
+ font-family: var(--font-mono);
1160
+ font-size: 11px;
1161
+ color: var(--text-3);
1162
+ min-width: 3.5rem;
1163
+ text-align: right;
1164
+ }
1165
+ .sc-agent-bar-track {
1166
+ width: 80px;
1167
+ height: 4px;
1168
+ background: var(--surface-3);
1169
+ border-radius: 2px;
1170
+ overflow: hidden;
1171
+ }
1172
+ .sc-agent-bar-fill {
1173
+ height: 100%;
1174
+ border-radius: 2px;
1175
+ background: var(--accent);
1176
+ transform: scaleX(0);
1177
+ transform-origin: left;
1178
+ transition: transform var(--dur-chart) var(--ease-out) 200ms;
1179
+ }
1180
+ .showcase .sc-section.visible .sc-agent-bar-fill { transform: scaleX(1); }
1181
+
1182
+ /* ── Highlights ── */
1183
+ .sc-highlights-list {
1184
+ list-style: none;
1185
+ padding: 0;
1186
+ }
1187
+ .sc-highlights-list li {
1188
+ font-family: var(--font-body);
1189
+ font-size: 0.875rem;
1190
+ color: var(--text-2);
1191
+ line-height: 1.6;
1192
+ padding: 0.5rem 0;
1193
+ padding-inline-start: 1rem;
1194
+ border-bottom: 1px solid var(--border);
1195
+ position: relative;
1196
+ }
1197
+ .sc-highlights-list li::before {
1198
+ content: '';
1199
+ position: absolute;
1200
+ left: 0;
1201
+ top: 50%;
1202
+ transform: translateY(-50%);
1203
+ width: 4px;
1204
+ height: 4px;
1205
+ border-radius: 50%;
1206
+ background: var(--accent);
1207
+ }
1208
+ .sc-highlights-list li:last-child { border-bottom: none; }
1209
+
1210
+ /* ── Footer ── */
1211
+ .sc-footer {
1212
+ text-align: center;
1213
+ padding: 2rem 0 1rem;
1214
+ border-top: 1px solid var(--border);
1215
+ margin-top: 2rem;
1216
+ }
1217
+ .sc-footer span {
1218
+ font-family: var(--font-mono);
1219
+ font-size: 11px;
1220
+ color: var(--text-3);
1221
+ letter-spacing: 0.04em;
1222
+ }
1223
+
1224
+ /* ── Responsive ── */
1225
+ @media (max-width: 768px) {
1226
+ .sc-hero {
1227
+ min-height: 100vh;
1228
+ min-height: 100dvh;
1229
+ }
1230
+ .sc-hero__content {
1231
+ flex-direction: column;
1232
+ text-align: center;
1233
+ gap: 1.5rem;
1234
+ }
1235
+ .sc-hero__photo {
1236
+ width: 120px;
1237
+ height: 150px;
1238
+ }
1239
+ .sc-hero__info { align-items: center; }
1240
+ .sc-hero__name { font-size: 2rem; }
1241
+ .sc-hero__bio { font-size: 0.9375rem; text-align: center; }
1242
+ .sc-hero__contact { justify-content: center; }
1243
+ .sc-hero__stats { grid-template-columns: repeat(2, 1fr); }
1244
+ .sc-hero-stat__value { font-size: 1.5rem; }
1245
+ .sc-stats-grid { grid-template-columns: repeat(2, 1fr); }
1246
+ .sc-two-col { grid-template-columns: 1fr; }
1247
+ .sc-session-grid { grid-template-columns: 1fr; }
1248
+ .sc-session-layout { grid-template-columns: 1fr; }
1249
+ .sc-sidebar { position: static; order: -1; }
1250
+ .sc-session-title { font-size: 1.75rem; }
1251
+ .sc-title-section h1 { font-size: 1.75rem; }
1252
+ .sc-meta-row { gap: 0.75rem; }
1253
+ .sc-project-card__meta { flex-wrap: wrap; }
1254
+ .sc-leverage__multi { font-size: 2.25rem; }
1255
+ }
1256
+
1257
+ /* ── Reduced Motion ── */
1258
+ @media (prefers-reduced-motion: reduce) {
1259
+ .showcase .sc-section,
1260
+ .showcase .sc-stagger,
1261
+ .sc-hero-fade,
1262
+ .showcase .timeline-bar,
1263
+ .showcase .fork-line,
1264
+ .showcase .growth-line,
1265
+ .showcase .growth-area,
1266
+ .showcase .growth-dot,
1267
+ .sc-phase-line,
1268
+ .sc-phase-dot,
1269
+ .sc-source-bar-fill,
1270
+ .sc-narrative,
1271
+ .sc-dev-take,
1272
+ .sc-agent-bar-fill,
1273
+ .sc-leverage__human,
1274
+ .sc-leverage__agent {
1275
+ opacity: 1 !important;
1276
+ transform: none !important;
1277
+ transition: none !important;
1278
+ stroke-dashoffset: 0 !important;
1279
+ }
1280
+ }
1281
+
1282
+
1283
+ /* Live-edit empty field hiding */
1284
+ [data-portfolio-empty="true"] { display: none; }