heyiam 0.2.5 → 0.2.7

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.
@@ -0,0 +1,569 @@
1
+ /* heyi.am — Render Template Styles
2
+ * Self-contained stylesheet for project + session pages.
3
+ * Used in: HTML export (inlined), preview (inlined), Phoenix (linked).
4
+ * No Tailwind, no external dependencies.
5
+ */
6
+
7
+ /* ── Reset ── */
8
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
9
+
10
+ /* ── Design Tokens ── */
11
+ :root {
12
+ --surface: #f8f9fb;
13
+ --surface-low: #f3f4f6;
14
+ --surface-lowest: #ffffff;
15
+ --surface-high: #e7e8ea;
16
+ --on-surface: #191c1e;
17
+ --on-surface-variant: #6b7280;
18
+ --outline: #c2c7d0;
19
+ --ghost: rgba(194, 199, 208, 0.15);
20
+ --primary: #084471;
21
+ --primary-hover: #0a5a96;
22
+ --on-primary: #ffffff;
23
+ --green: #006a61;
24
+ --green-bg: #e6f5f3;
25
+ --violet: #6d28d9;
26
+ --violet-bg: #ede9fe;
27
+ --error: #ba1a1a;
28
+
29
+ --font-display: 'Space Grotesk', sans-serif;
30
+ --font-body: 'Inter', sans-serif;
31
+ --font-mono: 'IBM Plex Mono', monospace;
32
+
33
+ --radius-sm: 0.25rem;
34
+ --radius-md: 0.375rem;
35
+ }
36
+
37
+ body {
38
+ font-family: var(--font-body);
39
+ color: var(--on-surface);
40
+ background: var(--surface);
41
+ line-height: 1.5;
42
+ -webkit-font-smoothing: antialiased;
43
+ }
44
+
45
+ a { color: var(--primary); text-decoration: none; }
46
+ a:hover { text-decoration: underline; }
47
+
48
+ /* ── Shared Components ── */
49
+
50
+ .card {
51
+ background: var(--surface-lowest);
52
+ border: 1px solid var(--ghost);
53
+ border-radius: var(--radius-md);
54
+ padding: 1rem;
55
+ margin-bottom: 1rem;
56
+ }
57
+
58
+ .section-header {
59
+ display: flex;
60
+ align-items: center;
61
+ justify-content: space-between;
62
+ margin-bottom: 0.75rem;
63
+ }
64
+ .section-header__title {
65
+ font-family: var(--font-display);
66
+ font-size: 1rem;
67
+ font-weight: 600;
68
+ color: var(--on-surface);
69
+ }
70
+ .section-header__meta {
71
+ font-family: var(--font-mono);
72
+ font-size: 9px;
73
+ text-transform: uppercase;
74
+ letter-spacing: 0.05em;
75
+ color: var(--on-surface-variant);
76
+ }
77
+
78
+ .stat-grid {
79
+ display: grid;
80
+ grid-template-columns: repeat(4, 1fr);
81
+ gap: 0.75rem;
82
+ margin-bottom: 1rem;
83
+ }
84
+ .stat-card {
85
+ background: var(--surface-lowest);
86
+ border: 1px solid var(--ghost);
87
+ border-radius: var(--radius-md);
88
+ padding: 1rem;
89
+ }
90
+ .stat-card__label {
91
+ font-family: var(--font-mono);
92
+ font-size: 9px;
93
+ text-transform: uppercase;
94
+ letter-spacing: 0.05em;
95
+ color: var(--on-surface-variant);
96
+ margin-bottom: 0.25rem;
97
+ }
98
+ .stat-card__value {
99
+ font-family: var(--font-display);
100
+ font-size: 1.5rem;
101
+ font-weight: 700;
102
+ color: var(--on-surface);
103
+ }
104
+
105
+ .chip-list {
106
+ display: flex;
107
+ flex-wrap: wrap;
108
+ gap: 0.25rem;
109
+ }
110
+ .chip {
111
+ font-family: var(--font-mono);
112
+ font-size: 11px;
113
+ line-height: 1.2;
114
+ padding: 0.125rem 0.5rem;
115
+ border-radius: var(--radius-sm);
116
+ background: var(--surface-low);
117
+ color: var(--on-surface-variant);
118
+ }
119
+ .chip--violet { background: var(--violet-bg); color: var(--violet); }
120
+ .chip--green { background: var(--green-bg); color: var(--green); }
121
+ .chip--primary { background: rgba(8, 68, 113, 0.1); color: var(--primary); }
122
+
123
+ .two-col {
124
+ display: grid;
125
+ grid-template-columns: repeat(2, 1fr);
126
+ gap: 1rem;
127
+ margin-bottom: 1rem;
128
+ }
129
+
130
+ /* ── Project Page ── */
131
+
132
+ .heyiam-project {
133
+ max-width: 960px;
134
+ margin: 0 auto;
135
+ padding: 2rem 1.5rem;
136
+ }
137
+
138
+ .project-title {
139
+ font-family: var(--font-display);
140
+ font-size: 1.25rem;
141
+ font-weight: 700;
142
+ color: var(--on-surface);
143
+ margin-bottom: 0.25rem;
144
+ }
145
+
146
+ .project-links {
147
+ display: flex;
148
+ align-items: center;
149
+ gap: 1rem;
150
+ margin: 0.25rem 0 1rem;
151
+ }
152
+ .project-link {
153
+ font-family: var(--font-mono);
154
+ font-size: 0.75rem;
155
+ color: var(--primary);
156
+ display: flex;
157
+ align-items: center;
158
+ gap: 0.25rem;
159
+ }
160
+ .project-link__icon { width: 14px; height: 14px; }
161
+
162
+ /* Browser chrome screenshot */
163
+ .browser-chrome {
164
+ border-radius: var(--radius-md);
165
+ border: 1px solid var(--ghost);
166
+ overflow: hidden;
167
+ box-shadow: 0 1px 2px rgba(0,0,0,0.05);
168
+ margin-bottom: 1rem;
169
+ }
170
+ .browser-chrome__bar {
171
+ display: flex;
172
+ align-items: center;
173
+ gap: 6px;
174
+ padding: 0.5rem 0.75rem;
175
+ background: var(--surface-low);
176
+ border-bottom: 1px solid var(--ghost);
177
+ }
178
+ .browser-chrome__dot {
179
+ width: 10px;
180
+ height: 10px;
181
+ border-radius: 50%;
182
+ }
183
+ .browser-chrome__dot--red { background: #ff5f57; }
184
+ .browser-chrome__dot--yellow { background: #febc2e; }
185
+ .browser-chrome__dot--green { background: #28c840; }
186
+ .browser-chrome__viewport {
187
+ max-height: 24rem;
188
+ overflow-y: auto;
189
+ }
190
+ .browser-chrome__img {
191
+ width: 100%;
192
+ height: auto;
193
+ display: block;
194
+ }
195
+
196
+ .narrative-text {
197
+ line-height: 1.6;
198
+ color: var(--on-surface);
199
+ border-left: 3px solid var(--primary);
200
+ padding-left: 0.75rem;
201
+ font-size: clamp(0.8125rem, 1.2vw, 1rem);
202
+ }
203
+
204
+ /* Source table */
205
+ .source-table {
206
+ width: 100%;
207
+ border-collapse: collapse;
208
+ font-size: 0.8125rem;
209
+ }
210
+ .source-table__th {
211
+ text-align: left;
212
+ padding: 0.5rem 0;
213
+ font-family: var(--font-mono);
214
+ font-size: 9px;
215
+ text-transform: uppercase;
216
+ letter-spacing: 0.05em;
217
+ color: var(--outline);
218
+ border-bottom: 1px solid var(--ghost);
219
+ font-weight: 400;
220
+ }
221
+ .source-table__td {
222
+ padding: 0.5rem 0;
223
+ border-bottom: 1px solid var(--ghost);
224
+ }
225
+
226
+ /* Session card grid */
227
+ .session-grid {
228
+ display: grid;
229
+ grid-template-columns: repeat(2, 1fr);
230
+ gap: 0.75rem;
231
+ }
232
+ .session-card-link {
233
+ text-decoration: none;
234
+ color: inherit;
235
+ }
236
+ .session-card {
237
+ background: var(--surface-lowest);
238
+ border: 1px solid var(--ghost);
239
+ border-radius: var(--radius-sm);
240
+ padding: 1rem;
241
+ transition: box-shadow 0.15s;
242
+ }
243
+ .session-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.08); }
244
+ .session-card__bar {
245
+ height: 4px;
246
+ border-radius: 2px;
247
+ margin-bottom: 0.75rem;
248
+ }
249
+ .session-card__bar--primary { background: var(--primary); }
250
+ .session-card__bar--green { background: var(--green); }
251
+ .session-card__bar--violet { background: var(--violet); }
252
+ .session-card__title {
253
+ font-family: var(--font-display);
254
+ font-size: 0.8125rem;
255
+ font-weight: 600;
256
+ color: var(--on-surface);
257
+ margin-bottom: 0.25rem;
258
+ display: -webkit-box;
259
+ -webkit-line-clamp: 2;
260
+ -webkit-box-orient: vertical;
261
+ overflow: hidden;
262
+ }
263
+ .session-card__meta {
264
+ color: var(--on-surface-variant);
265
+ font-size: 0.75rem;
266
+ }
267
+ .session-card__skills { margin-top: 0.5rem; }
268
+
269
+ /* Notes */
270
+ .note {
271
+ background: var(--surface-low);
272
+ border: 1px solid var(--ghost);
273
+ border-radius: var(--radius-sm);
274
+ padding: 0.625rem;
275
+ }
276
+ .note__title {
277
+ font-family: var(--font-body);
278
+ font-size: 0.875rem;
279
+ font-weight: 600;
280
+ color: var(--on-surface);
281
+ margin-bottom: 0.25rem;
282
+ }
283
+ .note__body {
284
+ font-size: 0.875rem;
285
+ color: var(--on-surface-variant);
286
+ line-height: 1.5;
287
+ }
288
+ .note-stack {
289
+ display: flex;
290
+ flex-direction: column;
291
+ gap: 0.75rem;
292
+ }
293
+
294
+ /* Phase timeline */
295
+ .phase-timeline {
296
+ position: relative;
297
+ padding-left: 1.25rem;
298
+ }
299
+ .phase-timeline__line {
300
+ position: absolute;
301
+ left: 0.25rem;
302
+ top: 0.375rem;
303
+ bottom: 0.375rem;
304
+ width: 2px;
305
+ background: var(--ghost);
306
+ border-radius: 1px;
307
+ }
308
+ .phase-timeline__item {
309
+ position: relative;
310
+ padding-bottom: 1rem;
311
+ }
312
+ .phase-timeline__item:last-child { padding-bottom: 0; }
313
+ .phase-timeline__dot {
314
+ position: absolute;
315
+ left: -1.25rem;
316
+ top: 0.375rem;
317
+ width: 8px;
318
+ height: 8px;
319
+ border-radius: 50%;
320
+ background: var(--primary);
321
+ box-shadow: 0 0 0 3px rgba(8, 68, 113, 0.1);
322
+ }
323
+ .phase-timeline__label {
324
+ font-family: var(--font-mono);
325
+ font-size: 0.6875rem;
326
+ text-transform: uppercase;
327
+ letter-spacing: 0.05em;
328
+ color: var(--on-surface-variant);
329
+ margin-bottom: 0.25rem;
330
+ }
331
+
332
+ .export-footer {
333
+ margin-top: 2rem;
334
+ padding-top: 1rem;
335
+ border-top: 1px solid var(--ghost);
336
+ text-align: center;
337
+ }
338
+ .export-footer__text {
339
+ font-family: var(--font-mono);
340
+ font-size: 10px;
341
+ color: var(--on-surface-variant);
342
+ text-transform: uppercase;
343
+ letter-spacing: 0.05em;
344
+ }
345
+
346
+ /* ── Session Page ── */
347
+
348
+ .heyiam-session {
349
+ max-width: 960px;
350
+ margin: 0 auto;
351
+ padding: 2rem 1.5rem;
352
+ }
353
+
354
+ .session-layout {
355
+ display: grid;
356
+ grid-template-columns: 220px 1fr;
357
+ gap: 2rem;
358
+ }
359
+
360
+ /* Sidebar */
361
+ .session-sidebar {
362
+ border-right: 1px solid var(--ghost);
363
+ padding-right: 1.5rem;
364
+ }
365
+ .sidebar-section { margin-bottom: 1.5rem; }
366
+ .sidebar-section__heading {
367
+ font-family: var(--font-mono);
368
+ font-size: 9px;
369
+ text-transform: uppercase;
370
+ letter-spacing: 0.05em;
371
+ color: var(--outline);
372
+ margin-bottom: 0.75rem;
373
+ }
374
+ .tool-list, .file-list {
375
+ list-style: none;
376
+ }
377
+ .tool-list__item, .file-list__item {
378
+ display: flex;
379
+ justify-content: space-between;
380
+ align-items: center;
381
+ padding: 0.375rem 0;
382
+ border-bottom: 1px solid var(--ghost);
383
+ font-size: 0.8125rem;
384
+ }
385
+ .tool-list__name, .file-list__path {
386
+ font-family: var(--font-mono);
387
+ font-size: 0.75rem;
388
+ color: var(--on-surface);
389
+ overflow: hidden;
390
+ text-overflow: ellipsis;
391
+ white-space: nowrap;
392
+ }
393
+ .tool-list__count {
394
+ font-family: var(--font-mono);
395
+ font-size: 0.75rem;
396
+ color: var(--on-surface-variant);
397
+ }
398
+ .file-list__adds { color: var(--green); font-family: var(--font-mono); font-size: 0.6875rem; }
399
+ .file-list__dels { color: var(--error); font-family: var(--font-mono); font-size: 0.6875rem; margin-left: 0.25rem; }
400
+
401
+ /* Main content */
402
+ .session-main { min-width: 0; }
403
+
404
+ .breadcrumb {
405
+ font-family: var(--font-mono);
406
+ font-size: 0.75rem;
407
+ color: var(--on-surface-variant);
408
+ margin-bottom: 1rem;
409
+ }
410
+ .breadcrumb a { color: var(--primary); }
411
+ .breadcrumb__sep { margin: 0 0.375rem; color: var(--outline); }
412
+
413
+ .session-header { margin-bottom: 1.5rem; }
414
+ .session-header__title {
415
+ font-family: var(--font-display);
416
+ font-size: 1.5rem;
417
+ font-weight: 700;
418
+ color: var(--on-surface);
419
+ margin-bottom: 0.5rem;
420
+ }
421
+ .session-header__meta {
422
+ display: flex;
423
+ gap: 0.75rem;
424
+ font-size: 0.8125rem;
425
+ color: var(--on-surface-variant);
426
+ margin-bottom: 1rem;
427
+ }
428
+ .session-header__date {
429
+ font-family: var(--font-mono);
430
+ font-size: 0.75rem;
431
+ }
432
+ .session-header__source {
433
+ font-family: var(--font-mono);
434
+ font-size: 0.75rem;
435
+ background: var(--surface-low);
436
+ padding: 0.125rem 0.5rem;
437
+ border-radius: var(--radius-sm);
438
+ }
439
+ .session-header__devtake {
440
+ border-left: 3px solid var(--primary);
441
+ padding: 0.5rem 0.75rem;
442
+ margin: 1rem 0;
443
+ color: var(--on-surface);
444
+ font-style: italic;
445
+ background: var(--surface-low);
446
+ border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
447
+ }
448
+ .session-header__devtake p { margin: 0; }
449
+ .session-header__context {
450
+ color: var(--on-surface-variant);
451
+ font-size: 0.875rem;
452
+ margin: 0.75rem 0;
453
+ }
454
+
455
+ /* Inline stats row */
456
+ .stat {
457
+ display: inline-flex;
458
+ flex-direction: column;
459
+ align-items: center;
460
+ padding: 0.5rem 1rem;
461
+ background: var(--surface-lowest);
462
+ border: 1px solid var(--ghost);
463
+ border-radius: var(--radius-sm);
464
+ }
465
+ .stat__value {
466
+ font-family: var(--font-display);
467
+ font-size: 1.125rem;
468
+ font-weight: 700;
469
+ color: var(--on-surface);
470
+ }
471
+ .stat__label {
472
+ font-family: var(--font-mono);
473
+ font-size: 9px;
474
+ text-transform: uppercase;
475
+ letter-spacing: 0.05em;
476
+ color: var(--on-surface-variant);
477
+ }
478
+ .stat-grid--4 {
479
+ display: flex;
480
+ gap: 0.5rem;
481
+ margin-top: 1rem;
482
+ }
483
+
484
+ /* Content sections */
485
+ .content-section {
486
+ margin-bottom: 1.5rem;
487
+ }
488
+ .content-section__heading {
489
+ font-family: var(--font-display);
490
+ font-size: 1rem;
491
+ font-weight: 600;
492
+ color: var(--on-surface);
493
+ margin-bottom: 0.75rem;
494
+ }
495
+ .content-section p {
496
+ color: var(--on-surface);
497
+ line-height: 1.6;
498
+ }
499
+
500
+ .highlights-list {
501
+ list-style: disc;
502
+ padding-left: 1.25rem;
503
+ color: var(--on-surface);
504
+ }
505
+ .highlights-list li { margin-bottom: 0.375rem; }
506
+
507
+ /* Beats (execution path) */
508
+ .beats-list {
509
+ list-style: none;
510
+ counter-reset: beats;
511
+ }
512
+ .beat {
513
+ display: flex;
514
+ gap: 0.75rem;
515
+ padding: 0.75rem 0;
516
+ border-bottom: 1px solid var(--ghost);
517
+ }
518
+ .beat:last-child { border-bottom: none; }
519
+ .beat__number {
520
+ font-family: var(--font-mono);
521
+ font-size: 0.75rem;
522
+ color: var(--primary);
523
+ font-weight: 600;
524
+ min-width: 1.5rem;
525
+ text-align: center;
526
+ padding-top: 0.125rem;
527
+ }
528
+ .beat__content { flex: 1; min-width: 0; }
529
+ .beat__title {
530
+ font-family: var(--font-display);
531
+ font-size: 0.875rem;
532
+ font-weight: 600;
533
+ color: var(--on-surface);
534
+ }
535
+ .beat__body {
536
+ color: var(--on-surface-variant);
537
+ font-size: 0.8125rem;
538
+ margin-top: 0.25rem;
539
+ line-height: 1.5;
540
+ }
541
+
542
+ /* Q&A */
543
+ .qa-list { display: flex; flex-direction: column; gap: 1rem; }
544
+ .qa-pair {
545
+ background: var(--surface-low);
546
+ border: 1px solid var(--ghost);
547
+ border-radius: var(--radius-sm);
548
+ padding: 0.75rem;
549
+ }
550
+ .qa-pair__question {
551
+ font-weight: 600;
552
+ color: var(--on-surface);
553
+ margin-bottom: 0.375rem;
554
+ }
555
+ .qa-pair__answer {
556
+ color: var(--on-surface-variant);
557
+ font-size: 0.875rem;
558
+ line-height: 1.5;
559
+ }
560
+
561
+ /* ── Responsive ── */
562
+ @media (max-width: 768px) {
563
+ .session-layout { grid-template-columns: 1fr; }
564
+ .session-sidebar { border-right: none; border-bottom: 1px solid var(--ghost); padding-right: 0; padding-bottom: 1rem; }
565
+ .stat-grid { grid-template-columns: repeat(2, 1fr); }
566
+ .session-grid { grid-template-columns: 1fr; }
567
+ .two-col { grid-template-columns: 1fr; }
568
+ .stat-grid--4 { flex-wrap: wrap; }
569
+ }