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,1157 @@
1
+ /* ── Cosmos template styles ──
2
+ * Dark theme with amber accent, Space Grotesk display font.
3
+ * Extracted from mockup HTML files.
4
+ */
5
+
6
+ :root {
7
+ --cos-bg: #030712;
8
+ --cos-surface: #0f172a;
9
+ --cos-surface-hover: #1e293b;
10
+ --cos-accent: #fbbf24;
11
+ --cos-accent-dim: rgba(251, 191, 36, 0.15);
12
+ --cos-accent-glow: rgba(251, 191, 36, 0.3);
13
+ --cos-text: #f1f5f9;
14
+ --cos-text-secondary: #94a3b8;
15
+ --cos-text-tertiary: #64748b;
16
+ --cos-border: #1e293b;
17
+ --cos-border-accent: rgba(251, 191, 36, 0.3);
18
+ --font-display: 'Space Grotesk', system-ui, sans-serif;
19
+ --font-body: 'Inter', system-ui, sans-serif;
20
+ --font-mono: 'JetBrains Mono', monospace;
21
+ --radius: 8px;
22
+ --radius-lg: 12px;
23
+ --duration-fade: 600ms;
24
+ --duration-draw: 1200ms;
25
+ --duration-counter: 1800ms;
26
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
27
+
28
+ /* Agent role colors */
29
+ --color-frontend: #7c3aed;
30
+ --color-backend: #0891b2;
31
+ --color-qa: #059669;
32
+ --color-security: #475569;
33
+ --color-reviewer: #e11d48;
34
+ --color-ux: #d97706;
35
+ }
36
+ body { background: var(--cos-bg); color: var(--cos-text); }
37
+
38
+
39
+ /* ── Dark Template Wrapper ── */
40
+ .cosmos {
41
+ background: var(--cos-bg);
42
+ color: var(--cos-text);
43
+ font-family: var(--font-body);
44
+ line-height: 1.6;
45
+ -webkit-font-smoothing: antialiased;
46
+ min-height: 100vh;
47
+ overflow-x: hidden;
48
+ }
49
+ .cosmos a { color: var(--cos-accent); text-decoration: none; }
50
+ .cosmos a:hover { text-decoration: underline; }
51
+ .cosmos a:visited { color: var(--cos-accent); }
52
+ .cosmos a:focus-visible {
53
+ outline: 2px solid var(--cos-accent);
54
+ outline-offset: 2px;
55
+ border-radius: 2px;
56
+ }
57
+
58
+ /* ── Starfield Background ── */
59
+ .cosmos .starfield {
60
+ position: fixed;
61
+ inset: 0;
62
+ z-index: 0;
63
+ pointer-events: none;
64
+ background:
65
+ radial-gradient(1px 1px at 10% 15%, rgba(251,191,36,0.4), transparent),
66
+ radial-gradient(1px 1px at 25% 35%, rgba(241,245,249,0.3), transparent),
67
+ radial-gradient(1.5px 1.5px at 40% 10%, rgba(251,191,36,0.5), transparent),
68
+ radial-gradient(1px 1px at 55% 45%, rgba(241,245,249,0.25), transparent),
69
+ radial-gradient(1px 1px at 70% 20%, rgba(241,245,249,0.3), transparent),
70
+ radial-gradient(1.5px 1.5px at 85% 55%, rgba(251,191,36,0.35), transparent),
71
+ radial-gradient(1px 1px at 15% 70%, rgba(241,245,249,0.2), transparent),
72
+ radial-gradient(1px 1px at 30% 85%, rgba(251,191,36,0.3), transparent),
73
+ radial-gradient(1.5px 1.5px at 50% 65%, rgba(241,245,249,0.35), transparent),
74
+ radial-gradient(1px 1px at 65% 80%, rgba(241,245,249,0.2), transparent),
75
+ radial-gradient(1px 1px at 80% 40%, rgba(251,191,36,0.25), transparent),
76
+ radial-gradient(1px 1px at 92% 75%, rgba(241,245,249,0.3), transparent),
77
+ radial-gradient(1.5px 1.5px at 5% 50%, rgba(251,191,36,0.4), transparent),
78
+ radial-gradient(1px 1px at 45% 30%, rgba(241,245,249,0.2), transparent),
79
+ radial-gradient(1px 1px at 75% 60%, rgba(251,191,36,0.3), transparent),
80
+ radial-gradient(1px 1px at 20% 90%, rgba(241,245,249,0.25), transparent),
81
+ radial-gradient(1px 1px at 60% 5%, rgba(241,245,249,0.3), transparent),
82
+ radial-gradient(1.5px 1.5px at 35% 55%, rgba(251,191,36,0.2), transparent),
83
+ radial-gradient(1px 1px at 88% 15%, rgba(241,245,249,0.35), transparent),
84
+ radial-gradient(1px 1px at 50% 90%, rgba(251,191,36,0.25), transparent);
85
+ }
86
+
87
+ /* ── Page Container ── */
88
+ .cosmos .cos-page {
89
+ position: relative;
90
+ z-index: 1;
91
+ max-width: 960px;
92
+ margin: 0 auto;
93
+ padding: 2rem 1.5rem;
94
+ }
95
+
96
+ /* ── Constellation SVG ── */
97
+ .cosmos .cos-constellation {
98
+ position: absolute;
99
+ top: 0;
100
+ left: 0;
101
+ width: 100%;
102
+ height: 100%;
103
+ pointer-events: none;
104
+ overflow: visible;
105
+ }
106
+ .cosmos .cos-constellation-line {
107
+ fill: none;
108
+ stroke: var(--cos-accent);
109
+ stroke-width: 1;
110
+ stroke-opacity: 0.15;
111
+ stroke-linecap: round;
112
+ stroke-dasharray: 800;
113
+ stroke-dashoffset: 800;
114
+ }
115
+ .cosmos .cos-constellation-line.drawn {
116
+ stroke-dashoffset: 0;
117
+ transition: stroke-dashoffset var(--duration-draw) var(--ease-out);
118
+ }
119
+ .cosmos .cos-constellation-dot {
120
+ fill: var(--cos-accent);
121
+ opacity: 0.3;
122
+ }
123
+
124
+ /* ── Section Animation ── */
125
+ .cosmos .cos-section {
126
+ opacity: 0;
127
+ transform: scale(0.98);
128
+ transition: opacity var(--duration-fade) var(--ease-out),
129
+ transform var(--duration-fade) var(--ease-out);
130
+ }
131
+ .cosmos .cos-section.visible {
132
+ opacity: 1;
133
+ transform: scale(1);
134
+ }
135
+
136
+ @media (prefers-reduced-motion: reduce) {
137
+ .cosmos .cos-section { opacity: 1; transform: none; transition: none; }
138
+ .cosmos .cos-constellation-line { stroke-dasharray: none; stroke-dashoffset: 0; transition: none; }
139
+ .cosmos .cos-constellation-line.drawn { transition: none; }
140
+ .cosmos .stat-value { transition: none; }
141
+ .cosmos .cos-orbit-path-active { stroke-dasharray: none; stroke-dashoffset: 0; transition: none; }
142
+ .cosmos .cos-orbit-path-active.drawn { transition: none; }
143
+ .cosmos .cos-orbit-node circle { transition: none; }
144
+ }
145
+
146
+ /* ── Breadcrumb ── */
147
+ .cosmos .cos-breadcrumb {
148
+ font-size: 0.8125rem;
149
+ color: var(--cos-text-tertiary);
150
+ margin-block-end: 1.5rem;
151
+ font-family: var(--font-mono);
152
+ }
153
+ .cosmos .cos-breadcrumb a { color: var(--cos-text-secondary); }
154
+ .cosmos .cos-breadcrumb a:visited { color: var(--cos-text-secondary); }
155
+ .cosmos .cos-breadcrumb a:hover { color: var(--cos-accent); }
156
+ .cosmos .cos-breadcrumb-sep { margin-inline: 0.375rem; opacity: 0.5; }
157
+
158
+ /* ── Section Title ── */
159
+ .cosmos .cos-section-title {
160
+ font-family: var(--font-display);
161
+ font-size: 1.375rem;
162
+ font-weight: 600;
163
+ margin-block-end: 1.25rem;
164
+ display: flex;
165
+ align-items: center;
166
+ gap: 0.75rem;
167
+ }
168
+ .cosmos .cos-section-title::before {
169
+ content: '';
170
+ display: inline-block;
171
+ width: 8px;
172
+ height: 8px;
173
+ border-radius: 50%;
174
+ background: var(--cos-accent);
175
+ box-shadow: 0 0 8px var(--cos-accent-glow);
176
+ flex-shrink: 0;
177
+ }
178
+
179
+ /* ── Footer ── */
180
+ .cosmos .cos-footer {
181
+ margin-block-start: 4rem;
182
+ padding-block-start: 1.5rem;
183
+ border-block-start: 1px solid var(--cos-border);
184
+ text-align: center;
185
+ color: var(--cos-text-tertiary);
186
+ font-size: 0.8125rem;
187
+ }
188
+
189
+ /* ── Skill Chips ── */
190
+ .cosmos .cos-skill-chips {
191
+ display: flex;
192
+ flex-wrap: wrap;
193
+ gap: 0.5rem;
194
+ }
195
+ .cosmos .cos-skill-chip {
196
+ font-size: 0.75rem;
197
+ font-family: var(--font-mono);
198
+ padding: 0.25rem 0.625rem;
199
+ border-radius: 999px;
200
+ border: 1px solid var(--cos-border-accent);
201
+ color: var(--cos-accent);
202
+ background: var(--cos-accent-dim);
203
+ white-space: nowrap;
204
+ }
205
+
206
+ /* ── Leverage Ring ── */
207
+ .cosmos .cos-leverage {
208
+ display: flex;
209
+ flex-direction: column;
210
+ align-items: center;
211
+ gap: 0.75rem;
212
+ margin: 1.5rem 0;
213
+ }
214
+ .cosmos .cos-leverage__ring svg {
215
+ display: block;
216
+ }
217
+ .cosmos .cos-leverage__labels {
218
+ display: flex;
219
+ align-items: baseline;
220
+ gap: 1rem;
221
+ font-family: var(--font-display);
222
+ }
223
+ .cosmos .cos-leverage__human {
224
+ font-size: 1rem;
225
+ font-weight: 700;
226
+ color: var(--cos-text-secondary);
227
+ }
228
+ .cosmos .cos-leverage__human small,
229
+ .cosmos .cos-leverage__agent small {
230
+ font-size: 0.625rem;
231
+ font-weight: 400;
232
+ color: var(--cos-text-tertiary);
233
+ text-transform: uppercase;
234
+ letter-spacing: 0.06em;
235
+ margin-inline-start: 0.25rem;
236
+ }
237
+ .cosmos .cos-leverage__agent {
238
+ font-size: 1rem;
239
+ font-weight: 700;
240
+ color: var(--cos-accent);
241
+ }
242
+
243
+ /* ── Narrative ── */
244
+ .cosmos .cos-narrative {
245
+ margin-block-end: 2.5rem;
246
+ }
247
+ .cosmos .cos-narrative p {
248
+ color: var(--cos-text-secondary);
249
+ font-size: 0.9375rem;
250
+ line-height: 1.75;
251
+ margin-block-end: 1rem;
252
+ }
253
+ .cosmos .cos-narrative p:last-child { margin-block-end: 0; }
254
+
255
+ /* ══════════════════════════════════════════════════════════════
256
+ PORTFOLIO
257
+ ══════════════════════════════════════════════════════════════ */
258
+
259
+ /* ── Hero / Profile ── */
260
+ .cosmos .cos-hero {
261
+ text-align: center;
262
+ padding: 3rem 0 2rem;
263
+ }
264
+ .cosmos .cos-hero-photo {
265
+ width: 120px;
266
+ height: 150px;
267
+ border-radius: 12px;
268
+ object-fit: cover;
269
+ object-position: 55% 10%;
270
+ border: 2px solid var(--cos-accent);
271
+ box-shadow: 0 0 24px var(--cos-accent-dim), 0 0 48px var(--cos-accent-glow);
272
+ margin: 0 auto 1.5rem;
273
+ display: block;
274
+ filter: contrast(1.1) brightness(0.95);
275
+ }
276
+ .cosmos .cos-hero h1 {
277
+ font-family: var(--font-display);
278
+ font-size: 2.25rem;
279
+ font-weight: 700;
280
+ margin-block-end: 0.5rem;
281
+ letter-spacing: -0.02em;
282
+ }
283
+ .cosmos .cos-hero-handle {
284
+ color: var(--cos-accent);
285
+ font-family: var(--font-mono);
286
+ font-size: 1rem;
287
+ margin-block-end: 0.75rem;
288
+ }
289
+ .cosmos .cos-hero-bio {
290
+ color: var(--cos-text-secondary);
291
+ max-width: 560px;
292
+ margin: 0 auto;
293
+ font-size: 1rem;
294
+ line-height: 1.7;
295
+ }
296
+ .cosmos .cos-hero-location {
297
+ color: var(--cos-text-tertiary);
298
+ font-size: 0.875rem;
299
+ margin-block-start: 0.75rem;
300
+ display: flex;
301
+ align-items: center;
302
+ justify-content: center;
303
+ gap: 0.375rem;
304
+ }
305
+ .cosmos .cos-hero-contact {
306
+ display: flex;
307
+ flex-wrap: wrap;
308
+ justify-content: center;
309
+ gap: 0.75rem;
310
+ margin-block-start: 1.25rem;
311
+ list-style: none;
312
+ }
313
+ .cosmos .cos-hero-contact a {
314
+ display: inline-flex;
315
+ align-items: center;
316
+ gap: 0.375rem;
317
+ font-family: var(--font-mono);
318
+ font-size: 0.8125rem;
319
+ color: var(--cos-text-tertiary);
320
+ transition: color 0.2s;
321
+ }
322
+ .cosmos .cos-hero-contact a:visited { color: var(--cos-text-tertiary); }
323
+ .cosmos .cos-hero-contact a:hover {
324
+ color: var(--cos-accent);
325
+ text-decoration: none;
326
+ }
327
+ .cosmos .cos-hero-contact svg {
328
+ flex-shrink: 0;
329
+ }
330
+ .cosmos .cos-hero-resume {
331
+ display: inline-flex;
332
+ align-items: center;
333
+ gap: 0.375rem;
334
+ margin-block-start: 1.25rem;
335
+ padding: 0.5rem 1rem;
336
+ font-family: var(--font-mono);
337
+ font-size: 0.8125rem;
338
+ color: var(--cos-bg);
339
+ background: var(--cos-accent);
340
+ border: none;
341
+ border-radius: var(--radius);
342
+ cursor: pointer;
343
+ text-decoration: none;
344
+ transition: opacity 0.2s;
345
+ }
346
+ .cosmos .cos-hero-resume:hover {
347
+ opacity: 0.85;
348
+ text-decoration: none;
349
+ color: var(--cos-bg);
350
+ }
351
+
352
+ /* ── Stats Grid (portfolio) ── */
353
+ .cosmos .cos-stats {
354
+ display: grid;
355
+ grid-template-columns: repeat(4, 1fr);
356
+ gap: 1rem;
357
+ margin: 2.5rem 0 3rem;
358
+ }
359
+ .cosmos .cos-stat-card {
360
+ background: var(--cos-surface);
361
+ border: 1px solid var(--cos-border);
362
+ border-radius: var(--radius-lg);
363
+ padding: 1.25rem;
364
+ text-align: center;
365
+ position: relative;
366
+ overflow: hidden;
367
+ }
368
+ .cosmos .cos-stat-card::before {
369
+ content: '';
370
+ position: absolute;
371
+ top: 0;
372
+ left: 0;
373
+ right: 0;
374
+ height: 2px;
375
+ background: linear-gradient(90deg, transparent, var(--cos-accent), transparent);
376
+ }
377
+ .cosmos .stat-value {
378
+ font-family: var(--font-display);
379
+ font-size: 1.75rem;
380
+ font-weight: 700;
381
+ color: var(--cos-accent);
382
+ display: block;
383
+ line-height: 1.2;
384
+ }
385
+ .cosmos .stat-label {
386
+ font-size: 0.75rem;
387
+ color: var(--cos-text-tertiary);
388
+ text-transform: uppercase;
389
+ letter-spacing: 0.08em;
390
+ margin-block-start: 0.25rem;
391
+ }
392
+
393
+ /* ── Project Cards (portfolio) ── */
394
+ .cosmos .cos-projects {
395
+ display: flex;
396
+ flex-direction: column;
397
+ gap: 1.5rem;
398
+ margin-block-end: 3rem;
399
+ }
400
+ .cosmos .cos-project-card {
401
+ background: var(--cos-surface);
402
+ border: 1px solid var(--cos-border);
403
+ border-radius: var(--radius-lg);
404
+ padding: 1.75rem;
405
+ transition: border-color 200ms, box-shadow 200ms;
406
+ position: relative;
407
+ }
408
+ .cosmos .cos-project-card:hover {
409
+ border-color: var(--cos-border-accent);
410
+ box-shadow: 0 0 20px var(--cos-accent-dim);
411
+ }
412
+ .cosmos .cos-project-card-header {
413
+ display: flex;
414
+ align-items: flex-start;
415
+ justify-content: space-between;
416
+ margin-block-end: 0.75rem;
417
+ }
418
+ .cosmos .cos-project-card h3 {
419
+ font-family: var(--font-display);
420
+ font-size: 1.25rem;
421
+ font-weight: 600;
422
+ }
423
+ .cosmos .cos-project-card h3 a {
424
+ color: var(--cos-text);
425
+ transition: color 200ms;
426
+ }
427
+ .cosmos .cos-project-card h3 a:visited { color: var(--cos-text); }
428
+ .cosmos .cos-project-card h3 a:hover {
429
+ color: var(--cos-accent);
430
+ text-decoration: none;
431
+ }
432
+ .cosmos .cos-project-card-narrative {
433
+ color: var(--cos-text-secondary);
434
+ font-size: 0.9375rem;
435
+ line-height: 1.6;
436
+ margin-block-end: 1.25rem;
437
+ }
438
+ .cosmos .cos-project-card-meta {
439
+ display: flex;
440
+ gap: 1.5rem;
441
+ font-size: 0.8125rem;
442
+ color: var(--cos-text-tertiary);
443
+ font-family: var(--font-mono);
444
+ margin-block-end: 1rem;
445
+ }
446
+ .cosmos .cos-project-card-meta strong {
447
+ color: var(--cos-accent);
448
+ font-weight: 500;
449
+ }
450
+
451
+ /* ══════════════════════════════════════════════════════════════
452
+ PROJECT
453
+ ══════════════════════════════════════════════════════════════ */
454
+
455
+ /* ── Project Header ── */
456
+ .cosmos .cos-project-header {
457
+ margin-block-end: 2.5rem;
458
+ }
459
+ .cosmos .cos-project-header h1 {
460
+ font-family: var(--font-display);
461
+ font-size: 2.25rem;
462
+ font-weight: 700;
463
+ letter-spacing: -0.02em;
464
+ margin-block-end: 0.75rem;
465
+ }
466
+ .cosmos .cos-project-links {
467
+ display: flex;
468
+ gap: 1.25rem;
469
+ font-size: 0.875rem;
470
+ margin-block-end: 1rem;
471
+ }
472
+ .cosmos .cos-project-links a {
473
+ display: flex;
474
+ align-items: center;
475
+ gap: 0.375rem;
476
+ }
477
+
478
+ /* ── Screenshot ── */
479
+ .cosmos .cos-screenshot {
480
+ background: var(--cos-surface);
481
+ border: 1px solid var(--cos-border);
482
+ border-radius: var(--radius-lg);
483
+ overflow: hidden;
484
+ margin-block-end: 2.5rem;
485
+ }
486
+ .cosmos .cos-screenshot-bar {
487
+ display: flex;
488
+ align-items: center;
489
+ gap: 6px;
490
+ padding: 0.75rem 1rem;
491
+ background: var(--cos-surface);
492
+ border-block-end: 1px solid var(--cos-border);
493
+ }
494
+ .cosmos .cos-screenshot-dot {
495
+ width: 10px;
496
+ height: 10px;
497
+ border-radius: 50%;
498
+ background: var(--cos-text-tertiary);
499
+ opacity: 0.4;
500
+ }
501
+ .cosmos .cos-screenshot-dot:first-child { background: #ef4444; opacity: 0.6; }
502
+ .cosmos .cos-screenshot-dot:nth-child(2) { background: #fbbf24; opacity: 0.6; }
503
+ .cosmos .cos-screenshot-dot:nth-child(3) { background: #22c55e; opacity: 0.6; }
504
+ .cosmos .cos-screenshot-url {
505
+ margin-inline-start: auto;
506
+ font-family: var(--font-mono);
507
+ font-size: 0.75rem;
508
+ color: var(--cos-text-tertiary);
509
+ }
510
+ .cosmos .cos-screenshot-viewport {
511
+ overflow-y: auto;
512
+ }
513
+ .cosmos .cos-screenshot-body {
514
+ height: 240px;
515
+ background: linear-gradient(135deg, #0f172a 0%, #1e293b 50%, #0f172a 100%);
516
+ display: flex;
517
+ align-items: center;
518
+ justify-content: center;
519
+ }
520
+ .cosmos .cos-screenshot-placeholder {
521
+ color: var(--cos-text-tertiary);
522
+ font-family: var(--font-mono);
523
+ font-size: 0.875rem;
524
+ }
525
+
526
+ /* ── Stats Row (project) ── */
527
+ .cosmos .cos-stats-row {
528
+ display: flex;
529
+ flex-wrap: wrap;
530
+ gap: 1rem;
531
+ margin-block-end: 2.5rem;
532
+ }
533
+ .cosmos .cos-stat-pill {
534
+ background: var(--cos-surface);
535
+ border: 1px solid var(--cos-border);
536
+ border-radius: var(--radius);
537
+ padding: 0.75rem 1.25rem;
538
+ display: flex;
539
+ flex-direction: column;
540
+ align-items: center;
541
+ flex: 1;
542
+ min-width: 100px;
543
+ }
544
+ .cosmos .cos-stat-pill .stat-value {
545
+ font-size: 1.5rem;
546
+ white-space: nowrap;
547
+ }
548
+ .cosmos .cos-stat-pill .stat-label {
549
+ font-size: 0.6875rem;
550
+ margin-block-start: 0.125rem;
551
+ }
552
+
553
+ /* ── Phase Cards ── */
554
+ .cosmos .cos-phases {
555
+ display: grid;
556
+ grid-template-columns: repeat(2, 1fr);
557
+ gap: 1rem;
558
+ margin-block-end: 2.5rem;
559
+ }
560
+ .cosmos .cos-phase-card {
561
+ background: var(--cos-surface);
562
+ border: 1px solid var(--cos-border);
563
+ border-radius: var(--radius-lg);
564
+ padding: 1.25rem;
565
+ position: relative;
566
+ overflow: hidden;
567
+ }
568
+ .cosmos .cos-phase-card::before {
569
+ content: '';
570
+ position: absolute;
571
+ inset-inline-start: 0;
572
+ top: 0;
573
+ bottom: 0;
574
+ width: 3px;
575
+ background: var(--cos-accent);
576
+ opacity: 0.4;
577
+ }
578
+ .cosmos .cos-phase-number {
579
+ font-family: var(--font-display);
580
+ font-size: 0.75rem;
581
+ font-weight: 600;
582
+ color: var(--cos-accent);
583
+ text-transform: uppercase;
584
+ letter-spacing: 0.1em;
585
+ margin-block-end: 0.25rem;
586
+ }
587
+ .cosmos .cos-phase-card h3 {
588
+ font-family: var(--font-display);
589
+ font-size: 1rem;
590
+ font-weight: 600;
591
+ margin-block-end: 0.375rem;
592
+ }
593
+ .cosmos .cos-phase-dates {
594
+ font-size: 0.75rem;
595
+ font-family: var(--font-mono);
596
+ color: var(--cos-text-tertiary);
597
+ margin-block-end: 0.5rem;
598
+ }
599
+ .cosmos .cos-phase-desc {
600
+ font-size: 0.8125rem;
601
+ color: var(--cos-text-secondary);
602
+ line-height: 1.5;
603
+ }
604
+
605
+ /* ── Chart Container ── */
606
+ .cosmos .cos-chart-container {
607
+ background: var(--cos-surface);
608
+ border: 1px solid var(--cos-border);
609
+ border-radius: var(--radius-lg);
610
+ padding: 1.5rem;
611
+ margin-block-end: 2.5rem;
612
+ overflow-x: auto;
613
+ }
614
+ .cosmos .cos-chart-svg {
615
+ width: 100%;
616
+ min-width: 600px;
617
+ display: block;
618
+ }
619
+ .cosmos .cos-chart-bar {
620
+ transition: opacity 200ms;
621
+ }
622
+ .cosmos .cos-chart-bar:hover { opacity: 0.8; }
623
+ .cosmos .cos-chart-grid-line {
624
+ stroke: var(--cos-border);
625
+ stroke-width: 0.5;
626
+ }
627
+ .cosmos .cos-chart-label {
628
+ fill: var(--cos-text-tertiary);
629
+ font-family: var(--font-mono);
630
+ font-size: 10px;
631
+ }
632
+ .cosmos .cos-chart-value {
633
+ fill: var(--cos-accent);
634
+ font-family: var(--font-mono);
635
+ font-size: 10px;
636
+ font-weight: 500;
637
+ }
638
+
639
+ /* ── Orbital Timeline ── */
640
+ .cosmos .cos-orbit-timeline {
641
+ position: relative;
642
+ margin-block-end: 2.5rem;
643
+ }
644
+ .cosmos .cos-orbit-svg {
645
+ width: 100%;
646
+ max-width: 800px;
647
+ margin: 0 auto;
648
+ display: block;
649
+ }
650
+ .cosmos .cos-orbit-path {
651
+ fill: none;
652
+ stroke: var(--cos-border);
653
+ stroke-width: 1.5;
654
+ }
655
+ .cosmos .cos-orbit-path-active {
656
+ fill: none;
657
+ stroke: var(--cos-accent);
658
+ stroke-width: 1.5;
659
+ stroke-opacity: 0.4;
660
+ stroke-dasharray: 1200;
661
+ stroke-dashoffset: 1200;
662
+ }
663
+ .cosmos .cos-orbit-path-active.drawn {
664
+ stroke-dashoffset: 0;
665
+ transition: stroke-dashoffset 2s var(--ease-out);
666
+ }
667
+ .cosmos .cos-orbit-node { cursor: default; }
668
+ .cosmos .cos-orbit-node circle { transition: r 200ms var(--ease-out); }
669
+ .cosmos .cos-orbit-node:hover circle { r: 8; }
670
+ .cosmos .cos-orbit-node text {
671
+ fill: var(--cos-text-secondary);
672
+ font-family: var(--font-mono);
673
+ font-size: 10px;
674
+ }
675
+ .cosmos .cos-orbit-phase-label {
676
+ fill: var(--cos-text-tertiary);
677
+ font-family: var(--font-display);
678
+ font-size: 11px;
679
+ font-weight: 600;
680
+ }
681
+
682
+ /* ── Key Decisions ── */
683
+ .cosmos .cos-decisions {
684
+ margin-block-end: 2.5rem;
685
+ }
686
+ .cosmos .cos-decision {
687
+ background: var(--cos-surface);
688
+ border: 1px solid var(--cos-border);
689
+ border-radius: var(--radius);
690
+ padding: 1rem 1.25rem;
691
+ margin-block-end: 0.75rem;
692
+ display: flex;
693
+ align-items: flex-start;
694
+ gap: 1rem;
695
+ }
696
+ .cosmos .cos-decision-number {
697
+ font-family: var(--font-display);
698
+ font-weight: 700;
699
+ font-size: 1.25rem;
700
+ color: var(--cos-accent);
701
+ line-height: 1;
702
+ flex-shrink: 0;
703
+ width: 2rem;
704
+ height: 2rem;
705
+ display: flex;
706
+ align-items: center;
707
+ justify-content: center;
708
+ border: 1px solid var(--cos-border-accent);
709
+ border-radius: 50%;
710
+ }
711
+ .cosmos .cos-decision p {
712
+ color: var(--cos-text-secondary);
713
+ font-size: 0.9375rem;
714
+ line-height: 1.5;
715
+ }
716
+
717
+ /* ── Source Breakdown ── */
718
+ .cosmos .cos-source-section {
719
+ margin-block-end: 2.5rem;
720
+ }
721
+ .cosmos .cos-source-bar-large {
722
+ display: flex;
723
+ height: 8px;
724
+ border-radius: 4px;
725
+ overflow: hidden;
726
+ background: var(--cos-border);
727
+ margin-block-end: 0.75rem;
728
+ }
729
+ .cosmos .cos-source-fill-claude { background: var(--cos-accent); height: 100%; }
730
+ .cosmos .cos-source-fill-cursor { background: var(--cos-text-tertiary); height: 100%; }
731
+ .cosmos .cos-source-labels {
732
+ display: flex;
733
+ gap: 1.5rem;
734
+ font-size: 0.8125rem;
735
+ color: var(--cos-text-secondary);
736
+ }
737
+ .cosmos .cos-source-labels span {
738
+ display: flex;
739
+ align-items: center;
740
+ gap: 0.375rem;
741
+ }
742
+ .cosmos .cos-source-dot {
743
+ width: 8px;
744
+ height: 8px;
745
+ border-radius: 50%;
746
+ display: inline-block;
747
+ }
748
+ .cosmos .cos-source-dot.claude { background: var(--cos-accent); }
749
+ .cosmos .cos-source-dot.cursor { background: var(--cos-text-tertiary); }
750
+
751
+ /* ── Session Cards (project page) ── */
752
+ .cosmos .cos-sessions {
753
+ display: grid;
754
+ grid-template-columns: repeat(2, 1fr);
755
+ gap: 1rem;
756
+ margin-block-end: 2.5rem;
757
+ }
758
+ .cosmos .cos-session-card {
759
+ background: var(--cos-surface);
760
+ border: 1px solid var(--cos-border);
761
+ border-radius: var(--radius-lg);
762
+ padding: 1.25rem;
763
+ transition: border-color 200ms, box-shadow 200ms;
764
+ }
765
+ .cosmos .cos-session-card:hover {
766
+ border-color: var(--cos-border-accent);
767
+ box-shadow: 0 0 16px var(--cos-accent-dim);
768
+ }
769
+ .cosmos .cos-session-card h3 {
770
+ font-family: var(--font-display);
771
+ font-size: 0.9375rem;
772
+ font-weight: 600;
773
+ margin-block-end: 0.5rem;
774
+ }
775
+ .cosmos .cos-session-card h3 a {
776
+ color: var(--cos-text);
777
+ transition: color 200ms;
778
+ }
779
+ .cosmos .cos-session-card h3 a:visited { color: var(--cos-text); }
780
+ .cosmos .cos-session-card h3 a:hover {
781
+ color: var(--cos-accent);
782
+ text-decoration: none;
783
+ }
784
+ .cosmos .cos-session-meta {
785
+ display: flex;
786
+ flex-wrap: wrap;
787
+ gap: 0.75rem;
788
+ font-size: 0.75rem;
789
+ font-family: var(--font-mono);
790
+ color: var(--cos-text-tertiary);
791
+ }
792
+ .cosmos .cos-session-meta strong {
793
+ color: var(--cos-accent);
794
+ font-weight: 500;
795
+ }
796
+ .cosmos .cos-session-tag {
797
+ font-size: 0.6875rem;
798
+ font-family: var(--font-mono);
799
+ padding: 0.125rem 0.5rem;
800
+ border-radius: 999px;
801
+ border: 1px solid var(--cos-border);
802
+ color: var(--cos-text-tertiary);
803
+ margin-block-start: 0.5rem;
804
+ display: inline-block;
805
+ }
806
+ .cosmos a.session-card {
807
+ text-decoration: none;
808
+ color: inherit;
809
+ display: block;
810
+ transition: transform 0.15s ease, box-shadow 0.15s ease;
811
+ }
812
+ .cosmos a.session-card:visited { color: inherit; }
813
+ .cosmos a.session-card:hover {
814
+ transform: translateY(-2px);
815
+ }
816
+
817
+ /* ══════════════════════════════════════════════════════════════
818
+ SESSION
819
+ ══════════════════════════════════════════════════════════════ */
820
+
821
+ /* ── Session Header ── */
822
+ .cosmos .cos-session-header {
823
+ margin-block-end: 2rem;
824
+ }
825
+ .cosmos .cos-session-header h1 {
826
+ font-family: var(--font-display);
827
+ font-size: 2rem;
828
+ font-weight: 700;
829
+ letter-spacing: -0.02em;
830
+ margin-block-end: 1rem;
831
+ line-height: 1.3;
832
+ }
833
+
834
+ /* ── Meta Grid ── */
835
+ .cosmos .cos-meta-grid {
836
+ display: flex;
837
+ flex-wrap: wrap;
838
+ gap: 1rem;
839
+ margin-block-end: 2rem;
840
+ }
841
+ .cosmos .cos-meta-item {
842
+ background: var(--cos-surface);
843
+ border: 1px solid var(--cos-border);
844
+ border-radius: var(--radius);
845
+ padding: 0.75rem 1rem;
846
+ display: flex;
847
+ flex-direction: column;
848
+ min-width: 100px;
849
+ }
850
+ .cosmos .cos-meta-label {
851
+ font-size: 0.6875rem;
852
+ color: var(--cos-text-tertiary);
853
+ text-transform: uppercase;
854
+ letter-spacing: 0.08em;
855
+ margin-block-end: 0.125rem;
856
+ }
857
+ .cosmos .cos-meta-value {
858
+ font-family: var(--font-mono);
859
+ font-size: 0.9375rem;
860
+ font-weight: 500;
861
+ color: var(--cos-accent);
862
+ }
863
+
864
+ /* ── Dev Take ── */
865
+ .cosmos .cos-dev-take {
866
+ background: var(--cos-surface);
867
+ border: 1px solid var(--cos-border-accent);
868
+ border-radius: var(--radius-lg);
869
+ padding: 1.25rem 1.5rem;
870
+ margin-block-end: 2.5rem;
871
+ position: relative;
872
+ }
873
+ .cosmos .cos-dev-take::before {
874
+ content: '';
875
+ position: absolute;
876
+ top: 0;
877
+ left: 0;
878
+ right: 0;
879
+ height: 2px;
880
+ background: linear-gradient(90deg, transparent, var(--cos-accent), transparent);
881
+ }
882
+ .cosmos .cos-dev-take-label {
883
+ font-family: var(--font-display);
884
+ font-size: 0.75rem;
885
+ font-weight: 600;
886
+ color: var(--cos-accent);
887
+ text-transform: uppercase;
888
+ letter-spacing: 0.1em;
889
+ margin-block-end: 0.5rem;
890
+ }
891
+ .cosmos .cos-dev-take blockquote {
892
+ color: var(--cos-text-secondary);
893
+ font-size: 0.9375rem;
894
+ line-height: 1.7;
895
+ font-style: italic;
896
+ border: none;
897
+ padding: 0;
898
+ margin: 0;
899
+ }
900
+
901
+ /* ── Main + Sidebar Layout ── */
902
+ .cosmos .cos-layout {
903
+ display: grid;
904
+ grid-template-columns: 1fr 280px;
905
+ gap: 2rem;
906
+ align-items: start;
907
+ }
908
+
909
+ /* ── Highlights ── */
910
+ .cosmos .cos-highlights {
911
+ list-style: none;
912
+ padding: 0;
913
+ margin-block-end: 2.5rem;
914
+ }
915
+ .cosmos .cos-highlights li {
916
+ font-size: 0.875rem;
917
+ color: var(--cos-text-secondary);
918
+ line-height: 1.7;
919
+ padding: 0.375rem 0;
920
+ border-block-end: 1px solid var(--cos-border);
921
+ }
922
+ .cosmos .cos-highlights li:last-child {
923
+ border-block-end: none;
924
+ }
925
+
926
+ /* ── Execution Path / Beats ── */
927
+ .cosmos .cos-beats {
928
+ margin-block-end: 2.5rem;
929
+ }
930
+ .cosmos .cos-beat {
931
+ position: relative;
932
+ padding-inline-start: 2rem;
933
+ padding-block-end: 1.5rem;
934
+ }
935
+ .cosmos .cos-beat:last-child { padding-block-end: 0; }
936
+ .cosmos .cos-beat::before {
937
+ content: '';
938
+ position: absolute;
939
+ inset-inline-start: 6px;
940
+ top: 8px;
941
+ bottom: 0;
942
+ width: 1px;
943
+ background: var(--cos-border);
944
+ }
945
+ .cosmos .cos-beat:last-child::before { display: none; }
946
+ .cosmos .cos-beat::after {
947
+ content: '';
948
+ position: absolute;
949
+ inset-inline-start: 0;
950
+ top: 4px;
951
+ width: 13px;
952
+ height: 13px;
953
+ border-radius: 50%;
954
+ border: 2px solid var(--cos-accent);
955
+ background: var(--cos-bg);
956
+ box-shadow: 0 0 6px var(--cos-accent-dim);
957
+ }
958
+ .cosmos .cos-beat h3 {
959
+ font-family: var(--font-display);
960
+ font-size: 1rem;
961
+ font-weight: 600;
962
+ margin-block-end: 0.375rem;
963
+ }
964
+ .cosmos .cos-beat p {
965
+ color: var(--cos-text-secondary);
966
+ font-size: 0.875rem;
967
+ line-height: 1.6;
968
+ }
969
+
970
+ /* ── Q&A ── */
971
+ .cosmos .cos-qa {
972
+ margin-block-end: 2.5rem;
973
+ }
974
+ .cosmos .cos-qa-item {
975
+ background: var(--cos-surface);
976
+ border: 1px solid var(--cos-border);
977
+ border-radius: var(--radius-lg);
978
+ padding: 1.25rem;
979
+ margin-block-end: 1rem;
980
+ }
981
+ .cosmos .cos-qa-item:last-child { margin-block-end: 0; }
982
+ .cosmos .cos-qa-question {
983
+ font-family: var(--font-display);
984
+ font-weight: 600;
985
+ font-size: 0.9375rem;
986
+ margin-block-end: 0.5rem;
987
+ color: var(--cos-text);
988
+ }
989
+ .cosmos .cos-qa-answer {
990
+ color: var(--cos-text-secondary);
991
+ font-size: 0.875rem;
992
+ line-height: 1.7;
993
+ }
994
+
995
+ /* ── Agent Summary ── */
996
+ .cosmos .cos-agents {
997
+ margin-block-end: 2.5rem;
998
+ }
999
+ .cosmos .cos-agent-row {
1000
+ display: flex;
1001
+ align-items: center;
1002
+ gap: 0.75rem;
1003
+ padding: 0.625rem 0;
1004
+ border-block-end: 1px solid var(--cos-border);
1005
+ }
1006
+ .cosmos .cos-agent-row:last-child { border-block-end: none; }
1007
+ .cosmos .cos-agent-dot {
1008
+ width: 10px;
1009
+ height: 10px;
1010
+ border-radius: 50%;
1011
+ flex-shrink: 0;
1012
+ }
1013
+ .cosmos .cos-agent-name {
1014
+ font-size: 0.875rem;
1015
+ font-weight: 500;
1016
+ flex: 1;
1017
+ }
1018
+ .cosmos .cos-agent-meta {
1019
+ font-family: var(--font-mono);
1020
+ font-size: 0.75rem;
1021
+ color: var(--cos-text-tertiary);
1022
+ display: flex;
1023
+ gap: 1rem;
1024
+ }
1025
+ .cosmos .cos-agent-bar-track {
1026
+ width: 80px;
1027
+ height: 4px;
1028
+ border-radius: 2px;
1029
+ background: var(--cos-border);
1030
+ overflow: hidden;
1031
+ }
1032
+ .cosmos .cos-agent-bar-fill {
1033
+ height: 100%;
1034
+ border-radius: 2px;
1035
+ }
1036
+
1037
+ /* ── Sidebar ── */
1038
+ .cosmos .cos-sidebar {
1039
+ display: flex;
1040
+ flex-direction: column;
1041
+ gap: 1.5rem;
1042
+ }
1043
+ .cosmos .cos-sidebar-card {
1044
+ background: var(--cos-surface);
1045
+ border: 1px solid var(--cos-border);
1046
+ border-radius: var(--radius-lg);
1047
+ padding: 1.25rem;
1048
+ }
1049
+ .cosmos .cos-sidebar-title {
1050
+ font-family: var(--font-display);
1051
+ font-size: 0.8125rem;
1052
+ font-weight: 600;
1053
+ color: var(--cos-text-tertiary);
1054
+ text-transform: uppercase;
1055
+ letter-spacing: 0.08em;
1056
+ margin-block-end: 0.75rem;
1057
+ }
1058
+ .cosmos .cos-sidebar-skills {
1059
+ display: flex;
1060
+ flex-wrap: wrap;
1061
+ gap: 0.375rem;
1062
+ }
1063
+ .cosmos .cos-sidebar-skills .cos-skill-chip {
1064
+ font-size: 0.6875rem;
1065
+ padding: 0.1875rem 0.5rem;
1066
+ }
1067
+
1068
+ /* ── Tools Table ── */
1069
+ .cosmos .cos-tools-table {
1070
+ width: 100%;
1071
+ border-collapse: collapse;
1072
+ }
1073
+ .cosmos .cos-tools-table tr {
1074
+ border-block-end: 1px solid var(--cos-border);
1075
+ }
1076
+ .cosmos .cos-tools-table tr:last-child { border-block-end: none; }
1077
+ .cosmos .cos-tools-table td {
1078
+ padding: 0.5rem 0;
1079
+ font-size: 0.8125rem;
1080
+ }
1081
+ .cosmos .cos-tools-table td:first-child {
1082
+ font-family: var(--font-mono);
1083
+ color: var(--cos-text);
1084
+ }
1085
+ .cosmos .cos-tools-table td:last-child {
1086
+ text-align: end;
1087
+ font-family: var(--font-mono);
1088
+ color: var(--cos-accent);
1089
+ font-weight: 500;
1090
+ }
1091
+
1092
+ /* ── Files Table ── */
1093
+ .cosmos .cos-files-table {
1094
+ width: 100%;
1095
+ border-collapse: collapse;
1096
+ }
1097
+ .cosmos .cos-files-table tr {
1098
+ border-block-end: 1px solid var(--cos-border);
1099
+ }
1100
+ .cosmos .cos-files-table tr:last-child { border-block-end: none; }
1101
+ .cosmos .cos-files-table td {
1102
+ padding: 0.5rem 0;
1103
+ font-size: 0.75rem;
1104
+ font-family: var(--font-mono);
1105
+ }
1106
+ .cosmos .cos-files-table td:first-child {
1107
+ color: var(--cos-text-secondary);
1108
+ word-break: break-all;
1109
+ padding-inline-end: 0.75rem;
1110
+ }
1111
+ .cosmos .cos-files-table td:last-child {
1112
+ text-align: end;
1113
+ color: #22c55e;
1114
+ white-space: nowrap;
1115
+ }
1116
+
1117
+ /* ══════════════════════════════════════════════════════════════
1118
+ RESPONSIVE
1119
+ ══════════════════════════════════════════════════════════════ */
1120
+
1121
+ @media (max-width: 768px) {
1122
+ .cosmos .cos-page { padding: 1.25rem 1rem; }
1123
+
1124
+ /* Portfolio */
1125
+ .cosmos .cos-hero h1 { font-size: 1.75rem; }
1126
+ .cosmos .cos-hero-photo { width: 80px; height: 100px; }
1127
+ .cosmos .cos-hero-contact { font-size: 0.75rem; }
1128
+ .cosmos .cos-stats { grid-template-columns: repeat(2, 1fr); }
1129
+ .cosmos .cos-project-card-header { flex-direction: column; gap: 0.5rem; }
1130
+ .cosmos .cos-project-card-meta { flex-direction: column; gap: 0.375rem; }
1131
+
1132
+ /* Project */
1133
+ .cosmos .cos-project-header h1 { font-size: 1.75rem; }
1134
+ .cosmos .cos-phases { grid-template-columns: 1fr; }
1135
+ .cosmos .cos-sessions { grid-template-columns: 1fr; }
1136
+ .cosmos .cos-stats-row { flex-direction: column; }
1137
+ .cosmos .cos-stat-pill { flex-direction: row; gap: 0.75rem; justify-content: center; }
1138
+
1139
+ /* Session */
1140
+ .cosmos .cos-session-header h1 { font-size: 1.5rem; }
1141
+ .cosmos .cos-layout { grid-template-columns: 1fr; }
1142
+ .cosmos .cos-sidebar {
1143
+ order: -1;
1144
+ display: grid;
1145
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
1146
+ gap: 1rem;
1147
+ }
1148
+ .cosmos .cos-meta-grid { flex-direction: column; }
1149
+ .cosmos .cos-meta-item { flex-direction: row; gap: 0.75rem; align-items: center; }
1150
+ .cosmos .cos-agent-bar-track { display: none; }
1151
+
1152
+ .cosmos .cos-footer { margin-block-start: 2rem; }
1153
+ }
1154
+
1155
+
1156
+ /* Live-edit empty field hiding */
1157
+ [data-portfolio-empty="true"] { display: none; }