heyiam 0.3.6 → 0.3.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.
Files changed (70) hide show
  1. package/dist/llm/project-enhance.js +11 -5
  2. package/dist/public/assets/{index-7mUuxgqY.js → index-BDh4ne9u.js} +1 -1
  3. package/dist/public/assets/index-ByoBtx7P.css +1 -0
  4. package/dist/public/index.html +2 -2
  5. package/dist/render/mock-data.js +6 -0
  6. package/dist/render/select-profile-skills.js +54 -0
  7. package/dist/render/templates/aurora/portfolio.liquid +4 -4
  8. package/dist/render/templates/aurora/styles.css +6 -6
  9. package/dist/render/templates/bauhaus/portfolio.liquid +4 -4
  10. package/dist/render/templates/bauhaus/styles.css +1 -1
  11. package/dist/render/templates/blueprint/portfolio.liquid +4 -4
  12. package/dist/render/templates/blueprint/styles.css +1 -1
  13. package/dist/render/templates/canvas/portfolio.liquid +4 -4
  14. package/dist/render/templates/canvas/styles.css +2 -2
  15. package/dist/render/templates/carbon/portfolio.liquid +4 -4
  16. package/dist/render/templates/carbon/styles.css +7 -7
  17. package/dist/render/templates/chalk/portfolio.liquid +4 -4
  18. package/dist/render/templates/chalk/styles.css +44 -2
  19. package/dist/render/templates/circuit/portfolio.liquid +4 -4
  20. package/dist/render/templates/cosmos/portfolio.liquid +4 -4
  21. package/dist/render/templates/cosmos/styles.css +4 -4
  22. package/dist/render/templates/daylight/portfolio.liquid +4 -4
  23. package/dist/render/templates/editorial/portfolio.liquid +4 -4
  24. package/dist/render/templates/editorial/styles.css +6 -1
  25. package/dist/render/templates/ember/portfolio.liquid +4 -4
  26. package/dist/render/templates/ember/styles.css +2 -2
  27. package/dist/render/templates/glacier/portfolio.liquid +4 -4
  28. package/dist/render/templates/glacier/styles.css +2 -2
  29. package/dist/render/templates/grid/portfolio.liquid +4 -4
  30. package/dist/render/templates/grid/styles.css +2 -2
  31. package/dist/render/templates/kinetic/portfolio.liquid +4 -4
  32. package/dist/render/templates/kinetic/styles.css +5 -5
  33. package/dist/render/templates/meridian/portfolio.liquid +4 -4
  34. package/dist/render/templates/meridian/styles.css +1 -1
  35. package/dist/render/templates/minimal/portfolio.liquid +3 -3
  36. package/dist/render/templates/mono/portfolio.liquid +4 -4
  37. package/dist/render/templates/mono/styles.css +15 -1
  38. package/dist/render/templates/neon/portfolio.liquid +4 -4
  39. package/dist/render/templates/neon/styles.css +11 -20
  40. package/dist/render/templates/noir/portfolio.liquid +4 -4
  41. package/dist/render/templates/noir/styles.css +5 -5
  42. package/dist/render/templates/obsidian/portfolio.liquid +4 -4
  43. package/dist/render/templates/obsidian/styles.css +2 -2
  44. package/dist/render/templates/paper/portfolio.liquid +4 -4
  45. package/dist/render/templates/paper/styles.css +60 -1
  46. package/dist/render/templates/parallax/portfolio.liquid +4 -4
  47. package/dist/render/templates/parallax/styles.css +1 -1
  48. package/dist/render/templates/parchment/portfolio.liquid +4 -4
  49. package/dist/render/templates/parchment/styles.css +3 -3
  50. package/dist/render/templates/radar/portfolio.liquid +4 -4
  51. package/dist/render/templates/radar/styles.css +4 -4
  52. package/dist/render/templates/showcase/portfolio.liquid +4 -4
  53. package/dist/render/templates/showcase/styles.css +7 -7
  54. package/dist/render/templates/signal/portfolio.liquid +4 -4
  55. package/dist/render/templates/signal/styles.css +5 -5
  56. package/dist/render/templates/strata/portfolio.liquid +4 -4
  57. package/dist/render/templates/strata/styles.css +3 -3
  58. package/dist/render/templates/styles.css +39 -28
  59. package/dist/render/templates/terminal/portfolio.liquid +2 -2
  60. package/dist/render/templates/verdant/portfolio.liquid +4 -4
  61. package/dist/render/templates/verdant/styles.css +17 -2
  62. package/dist/render/templates/zen/portfolio.liquid +4 -4
  63. package/dist/render/templates/zen/styles.css +8 -8
  64. package/dist/routes/export.js +1 -0
  65. package/dist/routes/github.js +1 -1
  66. package/dist/routes/portfolio-render-data.js +15 -1
  67. package/dist/routes/preview.js +15 -1
  68. package/dist/routes/publish.js +2 -1
  69. package/package.json +1 -1
  70. package/dist/public/assets/index-CMyamplX.css +0 -1
@@ -116,8 +116,8 @@
116
116
  <h3 class="project-card__headline">
117
117
  <a href="/{{ user.username }}/{{ p.slug }}">{{ p.title }}</a>
118
118
  </h3>
119
- {% if p.narrative %}
120
- <p class="project-card__narrative">{{ p.narrative | truncate: 120 }}</p>
119
+ {% if p.tagline != blank %}
120
+ <p class="project-card__narrative">{{ p.tagline }}</p>
121
121
  {% endif %}
122
122
  <p class="project-card__meta">
123
123
  <span>{{ p.totalSessions }} sessions</span>
@@ -144,9 +144,9 @@
144
144
  </p>
145
145
  {% endif %}
146
146
  {% endif %}
147
- {% if p.skills.size > 0 %}
147
+ {% if p.profileSkills.size > 0 %}
148
148
  <div class="project-card__skills" aria-label="Skills used in {{ p.title }}">
149
- {% for skill in p.skills %}
149
+ {% for skill in p.profileSkills %}
150
150
  <span class="skill-tag chip">{{ skill }}</span>
151
151
  {% endfor %}
152
152
  </div>
@@ -163,7 +163,7 @@ a:focus-visible {
163
163
  padding: 0.75rem 0;
164
164
  border-bottom: 1px solid var(--paper-border);
165
165
  font-family: var(--paper-font-mono);
166
- font-size: 0.8125rem;
166
+ font-size: 0.875rem;
167
167
  text-transform: uppercase;
168
168
  letter-spacing: 0.06em;
169
169
  }
@@ -1480,6 +1480,65 @@ a.session-card:hover {
1480
1480
  }
1481
1481
  }
1482
1482
 
1483
+ @media (max-width: 480px) {
1484
+ .page-wrapper {
1485
+ padding: 0 0.75rem;
1486
+ }
1487
+ .masthead {
1488
+ padding: 1.5rem 0 1rem;
1489
+ }
1490
+ .masthead__title {
1491
+ font-size: 1.5rem;
1492
+ }
1493
+ .masthead__edition {
1494
+ font-size: 0.75rem;
1495
+ flex-direction: column;
1496
+ gap: 0.25rem;
1497
+ }
1498
+ .byline {
1499
+ padding: 1rem 0;
1500
+ }
1501
+ .article-header__headline,
1502
+ .projects-section__heading {
1503
+ font-size: 1.25rem;
1504
+ }
1505
+ .project-card__headline {
1506
+ font-size: 1.125rem;
1507
+ }
1508
+ .session-meta {
1509
+ grid-template-columns: 1fr 1fr;
1510
+ gap: 0.5rem;
1511
+ }
1512
+ .stats-table th,
1513
+ .stats-table td {
1514
+ padding: 0.3rem 0.375rem;
1515
+ font-size: 0.75rem;
1516
+ }
1517
+ .stats-table td:last-child {
1518
+ font-size: 0.8125rem;
1519
+ }
1520
+ .timeline-table,
1521
+ .activity-table,
1522
+ .agents-table {
1523
+ font-size: 0.75rem;
1524
+ }
1525
+ .timeline-table th,
1526
+ .timeline-table td,
1527
+ .activity-table th,
1528
+ .activity-table td,
1529
+ .agents-table th,
1530
+ .agents-table td {
1531
+ padding: 0.3rem 0.375rem;
1532
+ }
1533
+ .nav-bar {
1534
+ flex-wrap: wrap;
1535
+ gap: 0.75rem;
1536
+ }
1537
+ .dev-take__text {
1538
+ font-size: 1rem;
1539
+ }
1540
+ }
1541
+
1483
1542
  /* ── Medium breakpoint ── */
1484
1543
  @media (min-width: 768px) and (max-width: 1023px) {
1485
1544
  .projects-columns {
@@ -137,12 +137,12 @@
137
137
  {% for p in projects %}
138
138
  <a href="/{{ user.username }}/{{ p.slug }}" class="project-card reveal" data-float="0.08">
139
139
  <h3 class="project-card__name">{{ p.title }}</h3>
140
- {% if p.narrative != blank %}
141
- <p class="project-card__narrative">{{ p.narrative }}</p>
140
+ {% if p.tagline != blank %}
141
+ <p class="project-card__narrative">{{ p.tagline }}</p>
142
142
  {% endif %}
143
- {% if p.skills.size > 0 %}
143
+ {% if p.profileSkills.size > 0 %}
144
144
  <div class="project-card__skills">
145
- {% for skill in p.skills %}
145
+ {% for skill in p.profileSkills %}
146
146
  <span class="skill-chip">{{ skill }}</span>
147
147
  {% endfor %}
148
148
  </div>
@@ -755,7 +755,7 @@ body { background: var(--px-bg); color: var(--px-text); }
755
755
  color: var(--px-accent);
756
756
  }
757
757
  .stats-bar__label {
758
- font-size: 0.6875rem;
758
+ font-size: 0.75rem;
759
759
  color: var(--px-text-tertiary);
760
760
  text-transform: uppercase;
761
761
  letter-spacing: 0.08em;
@@ -106,12 +106,12 @@
106
106
  <h3 class="project-card__title">
107
107
  <a href="/{{ user.username }}/{{ p.slug }}">{{ p.title }}</a>
108
108
  </h3>
109
- {% if p.narrative %}
110
- <p class="project-card__narrative">{{ p.narrative }}</p>
109
+ {% if p.tagline != blank %}
110
+ <p class="project-card__narrative">{{ p.tagline }}</p>
111
111
  {% endif %}
112
- {% if p.skills.size > 0 %}
112
+ {% if p.profileSkills.size > 0 %}
113
113
  <div class="project-card__skills">
114
- {% for skill in p.skills %}
114
+ {% for skill in p.profileSkills %}
115
115
  <span class="skill-tag">{{ skill }}</span>
116
116
  {% endfor %}
117
117
  </div>
@@ -367,7 +367,7 @@
367
367
  }
368
368
  .parchment .margin-stat__label {
369
369
  font-family: var(--parch-font-mono);
370
- font-size: 0.6875rem;
370
+ font-size: 0.75rem;
371
371
  color: var(--parch-text-tertiary);
372
372
  text-transform: uppercase;
373
373
  letter-spacing: 0.1em;
@@ -397,7 +397,7 @@
397
397
  }
398
398
  .parchment .project-stat__label {
399
399
  font-family: var(--parch-font-mono);
400
- font-size: 0.625rem;
400
+ font-size: 0.75rem;
401
401
  color: var(--parch-text-tertiary);
402
402
  text-transform: uppercase;
403
403
  letter-spacing: 0.1em;
@@ -427,7 +427,7 @@
427
427
  }
428
428
  .parchment .session-stats-row__label {
429
429
  font-family: var(--parch-font-mono);
430
- font-size: 0.5625rem;
430
+ font-size: 0.75rem;
431
431
  color: var(--parch-text-tertiary);
432
432
  text-transform: uppercase;
433
433
  letter-spacing: 0.1em;
@@ -82,13 +82,13 @@
82
82
  <a class="portfolio-card" href="/{{ user.username }}/{{ p.slug }}">
83
83
  <div class="portfolio-card__bar portfolio-card__bar--cyan"></div>
84
84
  <div class="portfolio-card__title">{{ p.title }}</div>
85
- {% if p.narrative != blank %}
86
- <div class="portfolio-card__desc">{{ p.narrative }}</div>
85
+ {% if p.tagline != blank %}
86
+ <div class="portfolio-card__desc">{{ p.tagline }}</div>
87
87
  {% endif %}
88
88
  <div class="portfolio-card__meta">{{ p.totalSessions }} sessions &middot; {{ p.totalDurationMinutes | formatDuration }} &middot; {{ p.totalLoc | formatLoc }} LOC</div>
89
- {% if p.skills.size > 0 %}
89
+ {% if p.profileSkills.size > 0 %}
90
90
  <div class="portfolio-card__skills">
91
- {% for skill in p.skills %}
91
+ {% for skill in p.profileSkills %}
92
92
  <span class="chip">{{ skill }}</span>
93
93
  {% endfor %}
94
94
  </div>
@@ -249,7 +249,7 @@ body { background: var(--surface); color: var(--on-surface); }
249
249
 
250
250
  .radar .portfolio-stat__label {
251
251
  font-family: var(--font-mono);
252
- font-size: 9px;
252
+ font-size: 12px;
253
253
  text-transform: uppercase;
254
254
  letter-spacing: 0.05em;
255
255
  color: var(--on-surface-variant);
@@ -334,7 +334,7 @@ body { background: var(--surface); color: var(--on-surface); }
334
334
  font-family: var(--font-mono);
335
335
  font-size: 11px;
336
336
  line-height: 1.2;
337
- padding: 0.125rem 0.5rem;
337
+ padding: 0.25rem 0.5rem;
338
338
  border-radius: var(--radius-sm);
339
339
  background: var(--accent-faint);
340
340
  color: var(--accent);
@@ -436,7 +436,7 @@ body { background: var(--surface); color: var(--on-surface); }
436
436
  }
437
437
  .radar .stat-card__label {
438
438
  font-family: var(--font-mono);
439
- font-size: 9px;
439
+ font-size: 12px;
440
440
  text-transform: uppercase;
441
441
  letter-spacing: 0.05em;
442
442
  color: var(--on-surface-variant);
@@ -730,7 +730,7 @@ body { background: var(--surface); color: var(--on-surface); }
730
730
  }
731
731
  .radar .stat-card-sm__label {
732
732
  font-family: var(--font-mono);
733
- font-size: 9px;
733
+ font-size: 12px;
734
734
  text-transform: uppercase;
735
735
  letter-spacing: 0.05em;
736
736
  color: var(--on-surface-variant);
@@ -96,17 +96,17 @@
96
96
  <a href="/{{ user.username }}/{{ p.slug }}" class="sc-project-card sc-stagger" style="display: block; margin-bottom: 0.75rem;">
97
97
  <div class="sc-project-card__accent-bar" style="background: var(--accent);"></div>
98
98
  <div class="sc-project-card__title">{{ p.title }}</div>
99
- {% if p.narrative != blank %}
100
- <p class="sc-project-card__narrative">{{ p.narrative }}</p>
99
+ {% if p.tagline != blank %}
100
+ <p class="sc-project-card__narrative">{{ p.tagline }}</p>
101
101
  {% endif %}
102
102
  <div class="sc-project-card__meta">
103
103
  <span>{{ p.totalSessions }} sessions</span>
104
104
  <span>{{ p.totalDurationMinutes | formatDuration }}</span>
105
105
  <span>{{ p.totalLoc | localeNumber }} LOC</span>
106
106
  </div>
107
- {% if p.skills.size > 0 %}
107
+ {% if p.profileSkills.size > 0 %}
108
108
  <div class="sc-project-card__skills">
109
- {% for skill in p.skills limit: 6 %}
109
+ {% for skill in p.profileSkills %}
110
110
  <span class="sc-skill-chip">{{ skill }}</span>
111
111
  {% endfor %}
112
112
  </div>
@@ -80,7 +80,7 @@ body { background: var(--bg); color: var(--text); }
80
80
  font-family: var(--font-body);
81
81
  color: var(--text);
82
82
  background: var(--bg);
83
- line-height: 1.5;
83
+ line-height: 1.6;
84
84
  -webkit-font-smoothing: antialiased;
85
85
  -moz-osx-font-smoothing: grayscale;
86
86
  }
@@ -299,7 +299,7 @@ body { background: var(--bg); color: var(--text); }
299
299
  }
300
300
  .sc-hero-stat__label {
301
301
  font-family: var(--font-mono);
302
- font-size: 9px;
302
+ font-size: 12px;
303
303
  font-weight: 400;
304
304
  color: var(--text-3);
305
305
  letter-spacing: 0.08em;
@@ -350,7 +350,7 @@ body { background: var(--bg); color: var(--text); }
350
350
  }
351
351
  .sc-section-label {
352
352
  font-family: var(--font-mono);
353
- font-size: 9px;
353
+ font-size: 12px;
354
354
  font-weight: 400;
355
355
  color: var(--text-3);
356
356
  letter-spacing: 0.08em;
@@ -605,7 +605,7 @@ body { background: var(--bg); color: var(--text); }
605
605
  }
606
606
  .sc-stat-card__label {
607
607
  font-family: var(--font-mono);
608
- font-size: 9px;
608
+ font-size: 12px;
609
609
  font-weight: 400;
610
610
  color: var(--text-3);
611
611
  letter-spacing: 0.08em;
@@ -692,7 +692,7 @@ body { background: var(--bg); color: var(--text); }
692
692
  .sc-decision-item:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
693
693
  .sc-phase-label {
694
694
  font-family: var(--font-mono);
695
- font-size: 9px;
695
+ font-size: 12px;
696
696
  color: var(--accent);
697
697
  text-transform: uppercase;
698
698
  letter-spacing: 0.08em;
@@ -782,7 +782,7 @@ body { background: var(--bg); color: var(--text); }
782
782
  .sc-phase-item:nth-child(4) .sc-phase-dot { transition-delay: 850ms; }
783
783
  .sc-phase-number {
784
784
  font-family: var(--font-mono);
785
- font-size: 9px;
785
+ font-size: 12px;
786
786
  color: var(--accent);
787
787
  letter-spacing: 0.08em;
788
788
  text-transform: uppercase;
@@ -919,7 +919,7 @@ body { background: var(--bg); color: var(--text); }
919
919
  }
920
920
  .sc-meta-item__label {
921
921
  font-family: var(--font-mono);
922
- font-size: 9px;
922
+ font-size: 12px;
923
923
  color: var(--text-3);
924
924
  text-transform: uppercase;
925
925
  letter-spacing: 0.08em;
@@ -115,8 +115,8 @@
115
115
  <tr>
116
116
  <td>
117
117
  <div class="project-name"><a href="/{{ user.username }}/{{ p.slug }}">{{ p.title }}</a></div>
118
- {% if p.narrative != blank %}
119
- <div class="project-narrative">{{ p.narrative }}</div>
118
+ {% if p.tagline != blank %}
119
+ <div class="project-narrative">{{ p.tagline }}</div>
120
120
  {% endif %}
121
121
  </td>
122
122
  <td class="stat-mono">{{ p.totalSessions }}</td>
@@ -145,9 +145,9 @@
145
145
  {% endif %}
146
146
  </td>
147
147
  <td>
148
- {% if p.skills.size > 0 %}
148
+ {% if p.profileSkills.size > 0 %}
149
149
  <div class="skill-badges">
150
- {% for skill in p.skills %}
150
+ {% for skill in p.profileSkills %}
151
151
  <span class="skill-badge strong">{{ skill }}</span>
152
152
  {% endfor %}
153
153
  </div>
@@ -35,8 +35,8 @@ body { background: var(--bg); color: var(--fg); }
35
35
  font-family: var(--font-body);
36
36
  color: var(--fg);
37
37
  background: var(--bg);
38
- line-height: 1.5;
39
- font-size: 14px;
38
+ line-height: 1.6;
39
+ font-size: 16px;
40
40
  -webkit-font-smoothing: antialiased;
41
41
  -moz-osx-font-smoothing: grayscale;
42
42
  }
@@ -157,7 +157,7 @@ body { background: var(--bg); color: var(--fg); }
157
157
  }
158
158
  .signal .stat-label {
159
159
  font-family: var(--font-mono);
160
- font-size: 10px;
160
+ font-size: 12px;
161
161
  text-transform: uppercase;
162
162
  letter-spacing: 0.08em;
163
163
  color: var(--fg-dim);
@@ -182,7 +182,7 @@ body { background: var(--bg); color: var(--fg); }
182
182
  margin-bottom: 2px;
183
183
  }
184
184
  .signal.heyiam-session .stat-label {
185
- font-size: 9px;
185
+ font-size: 12px;
186
186
  }
187
187
 
188
188
  .signal .stat-cell--leverage-group {
@@ -392,7 +392,7 @@ body { background: var(--bg); color: var(--fg); }
392
392
  }
393
393
  .signal .nav-links a {
394
394
  font-family: var(--font-mono);
395
- font-size: 12px;
395
+ font-size: 14px;
396
396
  color: var(--fg-muted);
397
397
  text-decoration: none;
398
398
  padding: 4px 10px;
@@ -79,8 +79,8 @@
79
79
  <a class="strata-project-card" href="/{{ user.username }}/{{ p.slug }}" aria-label="{{ p.title }} project">
80
80
  <div class="strata-project-card__accent" style="background: var(--strata-accent);"></div>
81
81
  <div class="strata-project-card__title">{{ p.title }}</div>
82
- {% if p.narrative %}
83
- <div class="strata-project-card__desc">{{ p.narrative }}</div>
82
+ {% if p.tagline != blank %}
83
+ <div class="strata-project-card__desc">{{ p.tagline }}</div>
84
84
  {% endif %}
85
85
  <div class="strata-project-card__meta">{{ p.totalSessions }} sessions &middot; {{ p.totalDurationMinutes | formatDuration }} &middot; {{ p.totalLoc | formatLoc }} LOC</div>
86
86
  {% if p.sourceCounts.size > 0 %}
@@ -92,9 +92,9 @@
92
92
  </div>
93
93
  <div class="strata-project-card__source">{% for sc in p.sourceCounts %}{% assign pct = sc.count | times: 100 | divided_by: p.totalSessions %}{{ sc.tool }} {{ pct }}%{% unless forloop.last %} &middot; {% endunless %}{% endfor %}</div>
94
94
  {% endif %}
95
- {% if p.skills.size > 0 %}
95
+ {% if p.profileSkills.size > 0 %}
96
96
  <div class="strata-project-card__chips">
97
- {% for skill in p.skills %}
97
+ {% for skill in p.profileSkills %}
98
98
  <span class="strata-project-card__chip">{{ skill }}</span>
99
99
  {% endfor %}
100
100
  </div>
@@ -63,7 +63,7 @@ body {
63
63
  font-family: var(--strata-font-body);
64
64
  color: var(--strata-text);
65
65
  background: var(--strata-bg);
66
- line-height: 1.5;
66
+ line-height: 1.6;
67
67
  -webkit-font-smoothing: antialiased;
68
68
  -moz-osx-font-smoothing: grayscale;
69
69
  }
@@ -290,7 +290,7 @@ a:focus-visible {
290
290
  }
291
291
  .strata-agg-stat__label {
292
292
  font-family: var(--strata-font-mono);
293
- font-size: 10px;
293
+ font-size: 12px;
294
294
  text-transform: uppercase;
295
295
  letter-spacing: 0.08em;
296
296
  color: var(--strata-text-tertiary);
@@ -444,7 +444,7 @@ a:focus-visible {
444
444
  }
445
445
  .strata-stat__label {
446
446
  font-family: var(--strata-font-mono);
447
- font-size: 10px;
447
+ font-size: 12px;
448
448
  font-weight: 500;
449
449
  text-transform: uppercase;
450
450
  letter-spacing: 0.08em;
@@ -30,6 +30,17 @@
30
30
  --font-body: 'Inter', sans-serif;
31
31
  --font-mono: 'IBM Plex Mono', monospace;
32
32
 
33
+ /* Type scale — xs is the WCAG-driven readable floor for labels/meta.
34
+ Templates may override individual sizes for identity, but should
35
+ reference these tokens before introducing new literals. */
36
+ --font-size-xs: 0.75rem; /* 12px — labels, meta, caption */
37
+ --font-size-sm: 0.875rem; /* 14px — small body, dense rows */
38
+ --font-size-base: 1rem; /* 16px — body */
39
+ --font-size-lg: 1.125rem; /* 18px — subhead */
40
+ --font-size-xl: 1.25rem; /* 20px — heading */
41
+ --font-size-2xl: 1.5rem; /* 24px — section heading */
42
+ --font-size-3xl: 2rem; /* 32px — page title */
43
+
33
44
  --radius-sm: 0.25rem;
34
45
  --radius-md: 0.375rem;
35
46
  }
@@ -107,13 +118,13 @@ a:hover { text-decoration: underline; }
107
118
  }
108
119
  .section-header__title {
109
120
  font-family: var(--font-display);
110
- font-size: 1rem;
121
+ font-size: var(--font-size-base);
111
122
  font-weight: 600;
112
123
  color: var(--on-surface);
113
124
  }
114
125
  .section-header__meta {
115
126
  font-family: var(--font-mono);
116
- font-size: 9px;
127
+ font-size: var(--font-size-xs);
117
128
  text-transform: uppercase;
118
129
  letter-spacing: 0.05em;
119
130
  color: var(--on-surface-variant);
@@ -145,7 +156,7 @@ a:hover { text-decoration: underline; }
145
156
  }
146
157
 
147
158
  .stat-card__value--sm {
148
- font-size: 1.25rem;
159
+ font-size: var(--font-size-xl);
149
160
  }
150
161
 
151
162
  .stat-grid {
@@ -162,7 +173,7 @@ a:hover { text-decoration: underline; }
162
173
  }
163
174
  .stat-card__label {
164
175
  font-family: var(--font-mono);
165
- font-size: 9px;
176
+ font-size: var(--font-size-xs);
166
177
  text-transform: uppercase;
167
178
  letter-spacing: 0.05em;
168
179
  color: var(--on-surface-variant);
@@ -170,7 +181,7 @@ a:hover { text-decoration: underline; }
170
181
  }
171
182
  .stat-card__value {
172
183
  font-family: var(--font-display);
173
- font-size: 1.5rem;
184
+ font-size: var(--font-size-2xl);
174
185
  font-weight: 700;
175
186
  color: var(--on-surface);
176
187
  }
@@ -184,7 +195,7 @@ a:hover { text-decoration: underline; }
184
195
  font-family: var(--font-mono);
185
196
  font-size: 11px;
186
197
  line-height: 1.2;
187
- padding: 0.125rem 0.5rem;
198
+ padding: 0.25rem 0.5rem;
188
199
  border-radius: var(--radius-sm);
189
200
  background: var(--surface-low);
190
201
  color: var(--on-surface-variant);
@@ -210,7 +221,7 @@ a:hover { text-decoration: underline; }
210
221
 
211
222
  .project-title {
212
223
  font-family: var(--font-display);
213
- font-size: 1.25rem;
224
+ font-size: var(--font-size-xl);
214
225
  font-weight: 700;
215
226
  color: var(--on-surface);
216
227
  margin-bottom: 0.25rem;
@@ -224,7 +235,7 @@ a:hover { text-decoration: underline; }
224
235
  }
225
236
  .project-link {
226
237
  font-family: var(--font-mono);
227
- font-size: 0.75rem;
238
+ font-size: var(--font-size-xs);
228
239
  color: var(--primary);
229
240
  display: flex;
230
241
  align-items: center;
@@ -284,7 +295,7 @@ a:hover { text-decoration: underline; }
284
295
  text-align: left;
285
296
  padding: 0.5rem 0;
286
297
  font-family: var(--font-mono);
287
- font-size: 9px;
298
+ font-size: var(--font-size-xs);
288
299
  text-transform: uppercase;
289
300
  letter-spacing: 0.05em;
290
301
  color: var(--outline);
@@ -335,7 +346,7 @@ a:hover { text-decoration: underline; }
335
346
  }
336
347
  .session-card__meta {
337
348
  color: var(--on-surface-variant);
338
- font-size: 0.75rem;
349
+ font-size: var(--font-size-xs);
339
350
  }
340
351
  .session-card__skills { margin-top: 0.5rem; }
341
352
 
@@ -348,13 +359,13 @@ a:hover { text-decoration: underline; }
348
359
  }
349
360
  .note__title {
350
361
  font-family: var(--font-body);
351
- font-size: 0.875rem;
362
+ font-size: var(--font-size-sm);
352
363
  font-weight: 600;
353
364
  color: var(--on-surface);
354
365
  margin-bottom: 0.25rem;
355
366
  }
356
367
  .note__body {
357
- font-size: 0.875rem;
368
+ font-size: var(--font-size-sm);
358
369
  color: var(--on-surface-variant);
359
370
  line-height: 1.5;
360
371
  }
@@ -395,7 +406,7 @@ a:hover { text-decoration: underline; }
395
406
  }
396
407
  .phase-timeline__label {
397
408
  font-family: var(--font-mono);
398
- font-size: 0.6875rem;
409
+ font-size: var(--font-size-xs);
399
410
  text-transform: uppercase;
400
411
  letter-spacing: 0.05em;
401
412
  color: var(--on-surface-variant);
@@ -410,7 +421,7 @@ a:hover { text-decoration: underline; }
410
421
  }
411
422
  .export-footer__text {
412
423
  font-family: var(--font-mono);
413
- font-size: 10px;
424
+ font-size: var(--font-size-xs);
414
425
  color: var(--on-surface-variant);
415
426
  text-transform: uppercase;
416
427
  letter-spacing: 0.05em;
@@ -438,7 +449,7 @@ a:hover { text-decoration: underline; }
438
449
  .sidebar-section { margin-bottom: 1.5rem; }
439
450
  .sidebar-section__heading {
440
451
  font-family: var(--font-mono);
441
- font-size: 9px;
452
+ font-size: var(--font-size-xs);
442
453
  text-transform: uppercase;
443
454
  letter-spacing: 0.05em;
444
455
  color: var(--outline);
@@ -457,7 +468,7 @@ a:hover { text-decoration: underline; }
457
468
  }
458
469
  .tool-list__name, .file-list__path {
459
470
  font-family: var(--font-mono);
460
- font-size: 0.75rem;
471
+ font-size: var(--font-size-xs);
461
472
  color: var(--on-surface);
462
473
  overflow: hidden;
463
474
  text-overflow: ellipsis;
@@ -465,7 +476,7 @@ a:hover { text-decoration: underline; }
465
476
  }
466
477
  .tool-list__count {
467
478
  font-family: var(--font-mono);
468
- font-size: 0.75rem;
479
+ font-size: var(--font-size-xs);
469
480
  color: var(--on-surface-variant);
470
481
  }
471
482
  .file-list__adds { color: var(--green); font-family: var(--font-mono); font-size: 0.6875rem; }
@@ -476,7 +487,7 @@ a:hover { text-decoration: underline; }
476
487
 
477
488
  .breadcrumb {
478
489
  font-family: var(--font-mono);
479
- font-size: 0.75rem;
490
+ font-size: var(--font-size-xs);
480
491
  color: var(--on-surface-variant);
481
492
  margin-bottom: 1rem;
482
493
  }
@@ -486,7 +497,7 @@ a:hover { text-decoration: underline; }
486
497
  .session-header { margin-bottom: 1.5rem; }
487
498
  .session-header__title {
488
499
  font-family: var(--font-display);
489
- font-size: 1.5rem;
500
+ font-size: var(--font-size-2xl);
490
501
  font-weight: 700;
491
502
  color: var(--on-surface);
492
503
  margin-bottom: 0.5rem;
@@ -500,11 +511,11 @@ a:hover { text-decoration: underline; }
500
511
  }
501
512
  .session-header__date {
502
513
  font-family: var(--font-mono);
503
- font-size: 0.75rem;
514
+ font-size: var(--font-size-xs);
504
515
  }
505
516
  .session-header__source {
506
517
  font-family: var(--font-mono);
507
- font-size: 0.75rem;
518
+ font-size: var(--font-size-xs);
508
519
  background: var(--surface-low);
509
520
  padding: 0.125rem 0.5rem;
510
521
  border-radius: var(--radius-sm);
@@ -521,7 +532,7 @@ a:hover { text-decoration: underline; }
521
532
  .session-header__devtake p { margin: 0; }
522
533
  .session-header__context {
523
534
  color: var(--on-surface-variant);
524
- font-size: 0.875rem;
535
+ font-size: var(--font-size-sm);
525
536
  margin: 0.75rem 0;
526
537
  }
527
538
 
@@ -537,13 +548,13 @@ a:hover { text-decoration: underline; }
537
548
  }
538
549
  .stat__value {
539
550
  font-family: var(--font-display);
540
- font-size: 1.125rem;
551
+ font-size: var(--font-size-lg);
541
552
  font-weight: 700;
542
553
  color: var(--on-surface);
543
554
  }
544
555
  .stat__label {
545
556
  font-family: var(--font-mono);
546
- font-size: 9px;
557
+ font-size: var(--font-size-xs);
547
558
  text-transform: uppercase;
548
559
  letter-spacing: 0.05em;
549
560
  color: var(--on-surface-variant);
@@ -560,7 +571,7 @@ a:hover { text-decoration: underline; }
560
571
  }
561
572
  .content-section__heading {
562
573
  font-family: var(--font-display);
563
- font-size: 1rem;
574
+ font-size: var(--font-size-base);
564
575
  font-weight: 600;
565
576
  color: var(--on-surface);
566
577
  margin-bottom: 0.75rem;
@@ -591,7 +602,7 @@ a:hover { text-decoration: underline; }
591
602
  .beat:last-child { border-bottom: none; }
592
603
  .beat__number {
593
604
  font-family: var(--font-mono);
594
- font-size: 0.75rem;
605
+ font-size: var(--font-size-xs);
595
606
  color: var(--primary);
596
607
  font-weight: 600;
597
608
  min-width: 1.5rem;
@@ -601,7 +612,7 @@ a:hover { text-decoration: underline; }
601
612
  .beat__content { flex: 1; min-width: 0; }
602
613
  .beat__title {
603
614
  font-family: var(--font-display);
604
- font-size: 0.875rem;
615
+ font-size: var(--font-size-sm);
605
616
  font-weight: 600;
606
617
  color: var(--on-surface);
607
618
  }
@@ -627,7 +638,7 @@ a:hover { text-decoration: underline; }
627
638
  }
628
639
  .qa-pair__answer {
629
640
  color: var(--on-surface-variant);
630
- font-size: 0.875rem;
641
+ font-size: var(--font-size-sm);
631
642
  line-height: 1.5;
632
643
  }
633
644