heyiam 0.2.29 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/README.md +45 -0
  2. package/dist/config.js +10 -1
  3. package/dist/db.js +1 -2
  4. package/dist/export.js +40 -25
  5. package/dist/format-utils.js +5 -0
  6. package/dist/index.js +168 -0
  7. package/dist/mount.js +300 -102
  8. package/dist/parsers/claude.js +2 -28
  9. package/dist/parsers/codex.js +2 -26
  10. package/dist/parsers/cursor.js +2 -26
  11. package/dist/parsers/duration.js +35 -0
  12. package/dist/parsers/gemini.js +2 -20
  13. package/dist/parsers/types.js +0 -1
  14. package/dist/public/assets/index-BZ65TU_Y.js +40 -0
  15. package/dist/public/assets/index-CqCaW2cb.css +1 -0
  16. package/dist/public/index.html +2 -2
  17. package/dist/redact.js +4 -104
  18. package/dist/render/build-render-data.js +9 -2
  19. package/dist/render/index.js +32 -5
  20. package/dist/render/liquid.js +147 -7
  21. package/dist/render/mock-data.js +303 -0
  22. package/dist/render/templates/aurora/portfolio.liquid +204 -0
  23. package/dist/render/templates/aurora/project.liquid +260 -0
  24. package/dist/render/templates/aurora/session.liquid +223 -0
  25. package/dist/render/templates/aurora/styles.css +1178 -0
  26. package/dist/render/templates/bauhaus/portfolio.liquid +179 -0
  27. package/dist/render/templates/bauhaus/project.liquid +300 -0
  28. package/dist/render/templates/bauhaus/session.liquid +333 -0
  29. package/dist/render/templates/bauhaus/styles.css +1641 -0
  30. package/dist/render/templates/blueprint/portfolio.liquid +167 -0
  31. package/dist/render/templates/blueprint/project.liquid +286 -0
  32. package/dist/render/templates/blueprint/session.liquid +248 -0
  33. package/dist/render/templates/blueprint/styles.css +1285 -0
  34. package/dist/render/templates/canvas/portfolio.liquid +215 -0
  35. package/dist/render/templates/canvas/project.liquid +235 -0
  36. package/dist/render/templates/canvas/session.liquid +223 -0
  37. package/dist/render/templates/canvas/styles.css +1436 -0
  38. package/dist/render/templates/carbon/portfolio.liquid +170 -0
  39. package/dist/render/templates/carbon/project.liquid +249 -0
  40. package/dist/render/templates/carbon/session.liquid +190 -0
  41. package/dist/render/templates/carbon/styles.css +1091 -0
  42. package/dist/render/templates/chalk/portfolio.liquid +199 -0
  43. package/dist/render/templates/chalk/project.liquid +245 -0
  44. package/dist/render/templates/chalk/session.liquid +215 -0
  45. package/dist/render/templates/chalk/styles.css +1157 -0
  46. package/dist/render/templates/circuit/portfolio.liquid +162 -0
  47. package/dist/render/templates/circuit/project.liquid +247 -0
  48. package/dist/render/templates/circuit/session.liquid +205 -0
  49. package/dist/render/templates/circuit/styles.css +1403 -0
  50. package/dist/render/templates/cosmos/portfolio.liquid +232 -0
  51. package/dist/render/templates/cosmos/project.liquid +327 -0
  52. package/dist/render/templates/cosmos/session.liquid +239 -0
  53. package/dist/render/templates/cosmos/styles.css +1151 -0
  54. package/dist/render/templates/daylight/portfolio.liquid +217 -0
  55. package/dist/render/templates/daylight/project.liquid +229 -0
  56. package/dist/render/templates/daylight/session.liquid +219 -0
  57. package/dist/render/templates/daylight/styles.css +1311 -0
  58. package/dist/render/templates/editorial/portfolio.liquid +126 -0
  59. package/dist/render/templates/editorial/project.liquid +202 -0
  60. package/dist/render/templates/editorial/session.liquid +171 -0
  61. package/dist/render/templates/editorial/styles.css +822 -0
  62. package/dist/render/templates/ember/portfolio.liquid +318 -0
  63. package/dist/render/templates/ember/project.liquid +232 -0
  64. package/dist/render/templates/ember/session.liquid +202 -0
  65. package/dist/render/templates/ember/styles.css +1283 -0
  66. package/dist/render/templates/glacier/portfolio.liquid +271 -0
  67. package/dist/render/templates/glacier/project.liquid +288 -0
  68. package/dist/render/templates/glacier/session.liquid +217 -0
  69. package/dist/render/templates/glacier/styles.css +1200 -0
  70. package/dist/render/templates/grid/portfolio.liquid +265 -0
  71. package/dist/render/templates/grid/project.liquid +306 -0
  72. package/dist/render/templates/grid/session.liquid +260 -0
  73. package/dist/render/templates/grid/styles.css +1441 -0
  74. package/dist/render/templates/kinetic/portfolio.liquid +170 -0
  75. package/dist/render/templates/kinetic/project.liquid +242 -0
  76. package/dist/render/templates/kinetic/session.liquid +228 -0
  77. package/dist/render/templates/kinetic/styles.css +944 -0
  78. package/dist/render/templates/meridian/portfolio.liquid +255 -0
  79. package/dist/render/templates/meridian/project.liquid +376 -0
  80. package/dist/render/templates/meridian/session.liquid +298 -0
  81. package/dist/render/templates/meridian/styles.css +1369 -0
  82. package/dist/render/templates/minimal/portfolio.liquid +71 -0
  83. package/dist/render/templates/minimal/project.liquid +154 -0
  84. package/dist/render/templates/minimal/session.liquid +140 -0
  85. package/dist/render/templates/minimal/styles.css +525 -0
  86. package/dist/render/templates/mono/portfolio.liquid +291 -0
  87. package/dist/render/templates/mono/project.liquid +275 -0
  88. package/dist/render/templates/mono/session.liquid +276 -0
  89. package/dist/render/templates/mono/styles.css +1016 -0
  90. package/dist/render/templates/neon/portfolio.liquid +217 -0
  91. package/dist/render/templates/neon/project.liquid +225 -0
  92. package/dist/render/templates/neon/session.liquid +195 -0
  93. package/dist/render/templates/neon/styles.css +1265 -0
  94. package/dist/render/templates/noir/portfolio.liquid +137 -0
  95. package/dist/render/templates/noir/project.liquid +220 -0
  96. package/dist/render/templates/noir/session.liquid +241 -0
  97. package/dist/render/templates/noir/styles.css +1223 -0
  98. package/dist/render/templates/obsidian/portfolio.liquid +257 -0
  99. package/dist/render/templates/obsidian/project.liquid +280 -0
  100. package/dist/render/templates/obsidian/session.liquid +241 -0
  101. package/dist/render/templates/obsidian/styles.css +1401 -0
  102. package/dist/render/templates/paper/portfolio.liquid +267 -0
  103. package/dist/render/templates/paper/project.liquid +235 -0
  104. package/dist/render/templates/paper/session.liquid +271 -0
  105. package/dist/render/templates/paper/styles.css +1509 -0
  106. package/dist/render/templates/parallax/portfolio.liquid +305 -0
  107. package/dist/render/templates/parallax/project.liquid +275 -0
  108. package/dist/render/templates/parallax/session.liquid +295 -0
  109. package/dist/render/templates/parallax/styles.css +1874 -0
  110. package/dist/render/templates/parchment/portfolio.liquid +290 -0
  111. package/dist/render/templates/parchment/project.liquid +289 -0
  112. package/dist/render/templates/parchment/session.liquid +346 -0
  113. package/dist/render/templates/parchment/styles.css +1397 -0
  114. package/dist/render/templates/partials/_beats.liquid +16 -0
  115. package/dist/render/templates/partials/_breadcrumb.liquid +9 -0
  116. package/dist/render/templates/partials/_footer.liquid +7 -0
  117. package/dist/render/templates/partials/_growth-chart.liquid +7 -0
  118. package/dist/render/templates/partials/_key-decisions.liquid +20 -0
  119. package/dist/render/templates/partials/_links.liquid +16 -0
  120. package/dist/render/templates/partials/_narrative.liquid +8 -0
  121. package/dist/render/templates/partials/_phases.liquid +20 -0
  122. package/dist/render/templates/partials/_portfolio-header.liquid +20 -0
  123. package/dist/render/templates/partials/_portfolio-projects.liquid +16 -0
  124. package/dist/render/templates/partials/_portfolio-stats.liquid +19 -0
  125. package/dist/render/templates/partials/_qa.liquid +13 -0
  126. package/dist/render/templates/partials/_screenshot.liquid +15 -0
  127. package/dist/render/templates/partials/_session-cards.liquid +30 -0
  128. package/dist/render/templates/partials/_session-header.liquid +39 -0
  129. package/dist/render/templates/partials/_session-sidebar.liquid +30 -0
  130. package/dist/render/templates/partials/_skills.liquid +12 -0
  131. package/dist/render/templates/partials/_source-breakdown.liquid +22 -0
  132. package/dist/render/templates/partials/_stats.liquid +38 -0
  133. package/dist/render/templates/partials/_work-timeline.liquid +7 -0
  134. package/dist/render/templates/project.liquid +7 -4
  135. package/dist/render/templates/radar/portfolio.liquid +233 -0
  136. package/dist/render/templates/radar/project.liquid +278 -0
  137. package/dist/render/templates/radar/session.liquid +300 -0
  138. package/dist/render/templates/radar/styles.css +1049 -0
  139. package/dist/render/templates/showcase/portfolio.liquid +231 -0
  140. package/dist/render/templates/showcase/project.liquid +237 -0
  141. package/dist/render/templates/showcase/session.liquid +210 -0
  142. package/dist/render/templates/showcase/styles.css +1279 -0
  143. package/dist/render/templates/signal/portfolio.liquid +227 -0
  144. package/dist/render/templates/signal/project.liquid +278 -0
  145. package/dist/render/templates/signal/session.liquid +282 -0
  146. package/dist/render/templates/signal/styles.css +1395 -0
  147. package/dist/render/templates/strata/portfolio.liquid +192 -0
  148. package/dist/render/templates/strata/project.liquid +282 -0
  149. package/dist/render/templates/strata/session.liquid +261 -0
  150. package/dist/render/templates/strata/styles.css +1350 -0
  151. package/dist/render/templates/styles.css +1190 -0
  152. package/dist/render/templates/terminal/portfolio.liquid +118 -0
  153. package/dist/render/templates/terminal/project.liquid +161 -0
  154. package/dist/render/templates/terminal/session.liquid +145 -0
  155. package/dist/render/templates/terminal/styles.css +492 -0
  156. package/dist/render/templates/verdant/portfolio.liquid +333 -0
  157. package/dist/render/templates/verdant/project.liquid +309 -0
  158. package/dist/render/templates/verdant/session.liquid +237 -0
  159. package/dist/render/templates/verdant/styles.css +1257 -0
  160. package/dist/render/templates/zen/portfolio.liquid +136 -0
  161. package/dist/render/templates/zen/project.liquid +187 -0
  162. package/dist/render/templates/zen/session.liquid +203 -0
  163. package/dist/render/templates/zen/styles.css +1207 -0
  164. package/dist/render/templates.js +90 -0
  165. package/dist/routes/context.js +15 -10
  166. package/dist/routes/enhance.js +17 -40
  167. package/dist/routes/export.js +14 -4
  168. package/dist/routes/preview.js +480 -108
  169. package/dist/routes/projects.js +11 -19
  170. package/dist/routes/publish.js +15 -17
  171. package/dist/routes/settings.js +94 -1
  172. package/dist/routes/sse.js +9 -0
  173. package/dist/server.js +8 -2
  174. package/dist/settings.js +17 -9
  175. package/package.json +2 -4
  176. package/dist/public/assets/index-CC9G8EF1.js +0 -21
  177. package/dist/public/assets/index-Dalqz2mC.css +0 -1
@@ -45,6 +45,50 @@ body {
45
45
  a { color: var(--primary); text-decoration: none; }
46
46
  a:hover { text-decoration: underline; }
47
47
 
48
+ /* ── Screenshot browser frame ── */
49
+ .browser-frame {
50
+ border-radius: 8px;
51
+ overflow: hidden;
52
+ border: 1px solid var(--border, var(--outline, rgba(128,128,128,0.2)));
53
+ }
54
+ .browser-frame__bar {
55
+ display: flex;
56
+ align-items: center;
57
+ gap: 6px;
58
+ padding: 8px 12px;
59
+ background: rgba(128,128,128,0.08);
60
+ border-bottom: 1px solid var(--border, var(--outline, rgba(128,128,128,0.2)));
61
+ }
62
+ .browser-frame__dot {
63
+ width: 10px;
64
+ height: 10px;
65
+ border-radius: 50%;
66
+ background: rgba(128,128,128,0.3);
67
+ }
68
+ .browser-frame__url {
69
+ flex: 1;
70
+ margin-left: 8px;
71
+ padding: 3px 10px;
72
+ border-radius: 4px;
73
+ background: rgba(128,128,128,0.1);
74
+ font-family: var(--font-mono, monospace);
75
+ font-size: 11px;
76
+ color: var(--text-2, var(--on-surface-variant, #6b7280));
77
+ overflow: hidden;
78
+ text-overflow: ellipsis;
79
+ white-space: nowrap;
80
+ }
81
+ .browser-frame__viewport {
82
+ max-height: 24rem;
83
+ overflow-y: auto;
84
+ overflow-x: hidden;
85
+ }
86
+ .browser-frame__viewport img {
87
+ display: block;
88
+ width: 100%;
89
+ height: auto;
90
+ }
91
+
48
92
  /* ── Shared Components ── */
49
93
 
50
94
  .card {
@@ -597,3 +641,1149 @@ a:hover { text-decoration: underline; }
597
641
  .two-col { grid-template-columns: 1fr; }
598
642
  .stat-grid--4 { flex-wrap: wrap; }
599
643
  }
644
+
645
+ /* ══════════════════════════════════════════════════════════════
646
+ SHOWCASE TEMPLATE — dark theme with violet accent and scroll animations
647
+ ══════════════════════════════════════════════════════════════ */
648
+
649
+ [data-template="showcase"] {
650
+ --surface: #111113;
651
+ --surface-low: #18181b;
652
+ --surface-lowest: #09090b;
653
+ --surface-high: #27272a;
654
+ --on-surface: #fafafa;
655
+ --on-surface-variant: rgba(255,255,255,0.65);
656
+ --outline: rgba(255,255,255,0.4);
657
+ --ghost: rgba(255,255,255,0.06);
658
+ --primary: #818cf8;
659
+ --primary-hover: #a5b4fc;
660
+ --on-primary: #09090b;
661
+ --green: #4ade80;
662
+ --green-bg: rgba(74,222,128,0.1);
663
+ --violet: #818cf8;
664
+ --violet-bg: rgba(129,140,248,0.1);
665
+ --error: #f87171;
666
+
667
+ --border-accent: rgba(129,140,248,0.2);
668
+ --text-muted: rgba(255,255,255,0.25);
669
+
670
+ --font-mono: 'JetBrains Mono', monospace;
671
+
672
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
673
+ --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
674
+ --dur-micro: 150ms;
675
+ --dur-section: 600ms;
676
+ --dur-chart: 800ms;
677
+ --dur-slow: 1200ms;
678
+ }
679
+
680
+ [data-template="showcase"],
681
+ [data-template="showcase"] body {
682
+ background: #09090b;
683
+ color: #fafafa;
684
+ }
685
+
686
+ /* ── Scroll Animation System ── */
687
+
688
+ [data-template="showcase"] .sc-section {
689
+ opacity: 0;
690
+ transform: translateY(24px);
691
+ transition: opacity var(--dur-section) var(--ease-out),
692
+ transform var(--dur-section) var(--ease-out);
693
+ }
694
+ [data-template="showcase"] .sc-section.visible {
695
+ opacity: 1;
696
+ transform: translateY(0);
697
+ }
698
+
699
+ [data-template="showcase"] .sc-stagger {
700
+ opacity: 0;
701
+ transform: translateY(16px);
702
+ transition: opacity 400ms var(--ease-out), transform 400ms var(--ease-out);
703
+ }
704
+ [data-template="showcase"] .sc-section.visible .sc-stagger {
705
+ opacity: 1;
706
+ transform: translateY(0);
707
+ }
708
+ [data-template="showcase"] .sc-section.visible .sc-stagger:nth-child(1) { transition-delay: 0ms; }
709
+ [data-template="showcase"] .sc-section.visible .sc-stagger:nth-child(2) { transition-delay: 80ms; }
710
+ [data-template="showcase"] .sc-section.visible .sc-stagger:nth-child(3) { transition-delay: 160ms; }
711
+ [data-template="showcase"] .sc-section.visible .sc-stagger:nth-child(4) { transition-delay: 240ms; }
712
+ [data-template="showcase"] .sc-section.visible .sc-stagger:nth-child(5) { transition-delay: 320ms; }
713
+ [data-template="showcase"] .sc-section.visible .sc-stagger:nth-child(6) { transition-delay: 400ms; }
714
+ [data-template="showcase"] .sc-section.visible .sc-stagger:nth-child(7) { transition-delay: 480ms; }
715
+ [data-template="showcase"] .sc-section.visible .sc-stagger:nth-child(8) { transition-delay: 560ms; }
716
+
717
+ /* ── Chart animation classes ── */
718
+
719
+ [data-template="showcase"] .timeline-bar {
720
+ transform: scaleX(0);
721
+ transform-origin: left center;
722
+ transition: transform var(--dur-chart) var(--ease-out);
723
+ }
724
+ [data-template="showcase"] .sc-section.visible .timeline-bar { transform: scaleX(1); }
725
+
726
+ [data-template="showcase"] .fork-line {
727
+ transition: stroke-dashoffset var(--dur-slow) var(--ease-out);
728
+ }
729
+ [data-template="showcase"] .sc-section.visible .fork-line { stroke-dashoffset: 0 !important; }
730
+
731
+ [data-template="showcase"] .growth-line {
732
+ transition: stroke-dashoffset var(--dur-slow) var(--ease-in-out);
733
+ }
734
+ [data-template="showcase"] .sc-section.visible .growth-line { stroke-dashoffset: 0 !important; }
735
+
736
+ [data-template="showcase"] .growth-area {
737
+ opacity: 0;
738
+ transition: opacity 600ms var(--ease-out) 1000ms;
739
+ }
740
+ [data-template="showcase"] .sc-section.visible .growth-area { opacity: 1; }
741
+
742
+ [data-template="showcase"] .growth-dot {
743
+ opacity: 0;
744
+ transform-origin: center;
745
+ transform: scale(0);
746
+ transition: opacity 300ms var(--ease-out), transform 300ms var(--ease-out);
747
+ }
748
+ [data-template="showcase"] .sc-section.visible .growth-dot {
749
+ opacity: 1;
750
+ transform: scale(1);
751
+ }
752
+
753
+ /* ── Showcase project title ── */
754
+
755
+ [data-template="showcase"] .project-title {
756
+ font-size: 2.25rem;
757
+ letter-spacing: -0.02em;
758
+ line-height: 1.2;
759
+ margin-bottom: 0.5rem;
760
+ }
761
+
762
+ /* ── Narrative override for showcase ── */
763
+
764
+ [data-template="showcase"] .narrative-text {
765
+ border-left-color: transparent;
766
+ font-size: 1.0625rem;
767
+ color: var(--on-surface-variant);
768
+ line-height: 1.7;
769
+ transition: border-color 600ms var(--ease-out) 200ms;
770
+ }
771
+ [data-template="showcase"] .sc-section.visible .narrative-text {
772
+ border-left-color: var(--primary);
773
+ }
774
+
775
+ /* ── Stat card overrides ── */
776
+
777
+ [data-template="showcase"] .stat-card {
778
+ background: var(--surface);
779
+ border-color: var(--ghost);
780
+ }
781
+ [data-template="showcase"] .stat-card__value {
782
+ font-size: 2rem;
783
+ letter-spacing: -0.02em;
784
+ }
785
+
786
+ /* ── Two column card overrides ── */
787
+
788
+ [data-template="showcase"] .card {
789
+ background: var(--surface);
790
+ border-color: var(--ghost);
791
+ }
792
+
793
+ /* ── Source bar animation (showcase) ── */
794
+
795
+ [data-template="showcase"] .source-bar-fill {
796
+ transform: scaleX(0);
797
+ transform-origin: left;
798
+ transition: transform var(--dur-chart) var(--ease-out) 200ms;
799
+ }
800
+ [data-template="showcase"] .sc-section.visible .source-bar-fill { transform: scaleX(1); }
801
+
802
+ /* ── Phase timeline animation (showcase) ── */
803
+
804
+ [data-template="showcase"] .phase-timeline__line {
805
+ transform: scaleY(0);
806
+ transform-origin: top;
807
+ transition: transform var(--dur-slow) var(--ease-out);
808
+ }
809
+ [data-template="showcase"] .sc-section.visible .phase-timeline__line { transform: scaleY(1); }
810
+
811
+ [data-template="showcase"] .phase-timeline__dot {
812
+ background: var(--surface);
813
+ border: 2px solid var(--primary);
814
+ transform: scale(0);
815
+ transition: transform 400ms var(--ease-out);
816
+ }
817
+ [data-template="showcase"] .sc-section.visible .phase-timeline__dot { transform: scale(1); }
818
+ [data-template="showcase"] .phase-timeline__item:nth-child(1) .phase-timeline__dot { transition-delay: 100ms; }
819
+ [data-template="showcase"] .phase-timeline__item:nth-child(2) .phase-timeline__dot { transition-delay: 350ms; }
820
+ [data-template="showcase"] .phase-timeline__item:nth-child(3) .phase-timeline__dot { transition-delay: 600ms; }
821
+ [data-template="showcase"] .phase-timeline__item:nth-child(4) .phase-timeline__dot { transition-delay: 850ms; }
822
+
823
+ /* ── Session card hover (showcase) ── */
824
+
825
+ [data-template="showcase"] .session-card {
826
+ transition: border-color var(--dur-micro) ease, background var(--dur-micro) ease;
827
+ }
828
+ [data-template="showcase"] .session-card:hover {
829
+ border-color: var(--border-accent);
830
+ background: var(--surface-low);
831
+ }
832
+
833
+ /* ── Showcase session-specific styles ── */
834
+
835
+ [data-template="showcase"] .dev-take {
836
+ border-inline-start: 3px solid transparent;
837
+ padding-inline-start: 1rem;
838
+ transition: border-color 600ms var(--ease-out) 200ms;
839
+ }
840
+ [data-template="showcase"] .sc-section.visible .dev-take {
841
+ border-inline-start-color: var(--primary);
842
+ }
843
+ [data-template="showcase"] .dev-take p {
844
+ font-size: 1.0625rem;
845
+ color: var(--on-surface-variant);
846
+ line-height: 1.7;
847
+ font-style: italic;
848
+ }
849
+
850
+ /* ── Session two-column layout (showcase) ── */
851
+
852
+ [data-template="showcase"] .session-layout {
853
+ display: grid;
854
+ grid-template-columns: 1fr 280px;
855
+ gap: 2rem;
856
+ align-items: start;
857
+ }
858
+
859
+ /* ── Sidebar (showcase) ── */
860
+
861
+ [data-template="showcase"] .sidebar {
862
+ position: sticky;
863
+ top: 2rem;
864
+ }
865
+ [data-template="showcase"] .sidebar-card {
866
+ background: var(--surface);
867
+ border: 1px solid var(--ghost);
868
+ border-radius: var(--radius-md);
869
+ padding: 1.25rem;
870
+ margin-bottom: 1rem;
871
+ }
872
+ [data-template="showcase"] .sidebar-card:last-child { margin-bottom: 0; }
873
+ [data-template="showcase"] .sidebar-card h4 {
874
+ font-family: var(--font-display);
875
+ font-size: 0.8125rem;
876
+ font-weight: 600;
877
+ color: var(--on-surface);
878
+ margin-bottom: 0.75rem;
879
+ }
880
+
881
+ /* Tools table */
882
+ [data-template="showcase"] .tools-table {
883
+ width: 100%;
884
+ border-collapse: collapse;
885
+ }
886
+ [data-template="showcase"] .tools-table tr {
887
+ border-bottom: 1px solid var(--ghost);
888
+ }
889
+ [data-template="showcase"] .tools-table tr:last-child { border-bottom: none; }
890
+ [data-template="showcase"] .tools-table td {
891
+ padding: 0.375rem 0;
892
+ font-family: var(--font-mono);
893
+ font-size: 11px;
894
+ }
895
+ [data-template="showcase"] .tools-table td:first-child {
896
+ color: var(--on-surface-variant);
897
+ }
898
+ [data-template="showcase"] .tools-table td:last-child {
899
+ color: var(--outline);
900
+ text-align: right;
901
+ }
902
+
903
+ /* Files table */
904
+ [data-template="showcase"] .files-table {
905
+ width: 100%;
906
+ border-collapse: collapse;
907
+ }
908
+ [data-template="showcase"] .files-table tr {
909
+ border-bottom: 1px solid var(--ghost);
910
+ }
911
+ [data-template="showcase"] .files-table tr:last-child { border-bottom: none; }
912
+ [data-template="showcase"] .files-table td {
913
+ padding: 0.375rem 0;
914
+ font-family: var(--font-mono);
915
+ font-size: 10px;
916
+ vertical-align: top;
917
+ }
918
+ [data-template="showcase"] .files-table td:first-child {
919
+ color: var(--on-surface-variant);
920
+ word-break: break-all;
921
+ padding-inline-end: 0.5rem;
922
+ }
923
+ [data-template="showcase"] .files-table td:last-child {
924
+ color: var(--green);
925
+ white-space: nowrap;
926
+ text-align: right;
927
+ }
928
+
929
+ /* Sidebar skills */
930
+ [data-template="showcase"] .sidebar-skills {
931
+ display: flex;
932
+ flex-wrap: wrap;
933
+ gap: 0.375rem;
934
+ }
935
+ [data-template="showcase"] .skill-chip {
936
+ font-family: var(--font-mono);
937
+ font-size: 10px;
938
+ font-weight: 500;
939
+ color: var(--primary);
940
+ background: var(--violet-bg);
941
+ border: 1px solid var(--border-accent);
942
+ border-radius: var(--radius-sm);
943
+ padding: 0.2rem 0.5rem;
944
+ white-space: nowrap;
945
+ }
946
+
947
+ /* ── Beats (execution path) — showcase ── */
948
+
949
+ [data-template="showcase"] .sc-beats-list {
950
+ list-style: none;
951
+ counter-reset: none;
952
+ }
953
+ [data-template="showcase"] .beat-item {
954
+ position: relative;
955
+ padding-inline-start: 2.5rem;
956
+ padding-bottom: 1.5rem;
957
+ }
958
+ [data-template="showcase"] .beat-item:last-child { padding-bottom: 0; }
959
+ [data-template="showcase"] .beat-item::before {
960
+ content: '';
961
+ position: absolute;
962
+ left: 11px;
963
+ top: 32px;
964
+ bottom: 0;
965
+ width: 2px;
966
+ background: var(--ghost);
967
+ }
968
+ [data-template="showcase"] .beat-item:last-child::before { display: none; }
969
+ [data-template="showcase"] .beat-number {
970
+ position: absolute;
971
+ left: 0;
972
+ top: 2px;
973
+ width: 24px;
974
+ height: 24px;
975
+ border-radius: 50%;
976
+ background: var(--violet-bg);
977
+ border: 2px solid var(--primary);
978
+ display: flex;
979
+ align-items: center;
980
+ justify-content: center;
981
+ font-family: var(--font-mono);
982
+ font-size: 10px;
983
+ font-weight: 500;
984
+ color: var(--primary);
985
+ }
986
+ [data-template="showcase"] .beat-title {
987
+ font-family: var(--font-display);
988
+ font-size: 0.875rem;
989
+ font-weight: 600;
990
+ color: var(--on-surface);
991
+ margin-bottom: 0.375rem;
992
+ line-height: 1.4;
993
+ }
994
+ [data-template="showcase"] .beat-desc {
995
+ font-size: 0.8125rem;
996
+ color: var(--on-surface-variant);
997
+ line-height: 1.5;
998
+ }
999
+
1000
+ /* ── Q&A — showcase ── */
1001
+
1002
+ [data-template="showcase"] .qa-item {
1003
+ background: var(--surface);
1004
+ border: 1px solid var(--ghost);
1005
+ border-radius: var(--radius-md);
1006
+ padding: 1.25rem;
1007
+ margin-bottom: 0.75rem;
1008
+ }
1009
+ [data-template="showcase"] .qa-item:last-child { margin-bottom: 0; }
1010
+ [data-template="showcase"] .qa-question {
1011
+ font-family: var(--font-display);
1012
+ font-size: 0.875rem;
1013
+ font-weight: 600;
1014
+ color: var(--on-surface);
1015
+ margin-bottom: 0.75rem;
1016
+ display: flex;
1017
+ gap: 0.5rem;
1018
+ }
1019
+ [data-template="showcase"] .qa-question__marker {
1020
+ color: var(--primary);
1021
+ font-family: var(--font-mono);
1022
+ font-size: 0.75rem;
1023
+ font-weight: 700;
1024
+ flex-shrink: 0;
1025
+ margin-top: 1px;
1026
+ }
1027
+ [data-template="showcase"] .qa-answer {
1028
+ font-size: 0.8125rem;
1029
+ color: var(--on-surface-variant);
1030
+ line-height: 1.6;
1031
+ padding-inline-start: 1.5rem;
1032
+ }
1033
+
1034
+ /* ── Agent Summary — showcase ── */
1035
+
1036
+ [data-template="showcase"] .agent-timeline {
1037
+ background: var(--surface);
1038
+ border: 1px solid var(--ghost);
1039
+ border-radius: var(--radius-md);
1040
+ padding: 1.5rem;
1041
+ }
1042
+ [data-template="showcase"] .agent-row {
1043
+ display: flex;
1044
+ align-items: center;
1045
+ gap: 0.75rem;
1046
+ padding: 0.5rem 0;
1047
+ border-bottom: 1px solid var(--ghost);
1048
+ }
1049
+ [data-template="showcase"] .agent-row:last-child { border-bottom: none; }
1050
+ [data-template="showcase"] .agent-row__dot {
1051
+ width: 8px;
1052
+ height: 8px;
1053
+ border-radius: 50%;
1054
+ flex-shrink: 0;
1055
+ background: var(--primary);
1056
+ }
1057
+ [data-template="showcase"] .agent-row__name {
1058
+ font-family: var(--font-mono);
1059
+ font-size: 11px;
1060
+ color: var(--on-surface-variant);
1061
+ flex: 1;
1062
+ }
1063
+ [data-template="showcase"] .agent-row__dur {
1064
+ font-family: var(--font-mono);
1065
+ font-size: 11px;
1066
+ color: var(--outline);
1067
+ }
1068
+ [data-template="showcase"] .agent-row__loc {
1069
+ font-family: var(--font-mono);
1070
+ font-size: 11px;
1071
+ color: var(--outline);
1072
+ min-width: 3.5rem;
1073
+ text-align: right;
1074
+ }
1075
+ [data-template="showcase"] .agent-bar-track {
1076
+ width: 80px;
1077
+ height: 4px;
1078
+ background: var(--surface-high);
1079
+ border-radius: 2px;
1080
+ overflow: hidden;
1081
+ }
1082
+ [data-template="showcase"] .agent-bar-fill {
1083
+ height: 100%;
1084
+ border-radius: 2px;
1085
+ background: var(--primary);
1086
+ transform: scaleX(0);
1087
+ transform-origin: left;
1088
+ transition: transform var(--dur-chart) var(--ease-out) 200ms;
1089
+ }
1090
+ [data-template="showcase"] .sc-section.visible .agent-bar-fill { transform: scaleX(1); }
1091
+
1092
+ /* ── Showcase responsive ── */
1093
+
1094
+ @media (max-width: 768px) {
1095
+ [data-template="showcase"] .session-layout {
1096
+ grid-template-columns: 1fr;
1097
+ }
1098
+ [data-template="showcase"] .sidebar {
1099
+ position: static;
1100
+ order: -1;
1101
+ }
1102
+ }
1103
+
1104
+ /* ── Showcase reduced motion ── */
1105
+
1106
+ @media (prefers-reduced-motion: reduce) {
1107
+ [data-template="showcase"] .sc-section,
1108
+ [data-template="showcase"] .sc-stagger,
1109
+ [data-template="showcase"] .timeline-bar,
1110
+ [data-template="showcase"] .fork-line,
1111
+ [data-template="showcase"] .growth-line,
1112
+ [data-template="showcase"] .growth-area,
1113
+ [data-template="showcase"] .growth-dot,
1114
+ [data-template="showcase"] .phase-timeline__line,
1115
+ [data-template="showcase"] .phase-timeline__dot,
1116
+ [data-template="showcase"] .source-bar-fill,
1117
+ [data-template="showcase"] .narrative-text,
1118
+ [data-template="showcase"] .dev-take,
1119
+ [data-template="showcase"] .agent-bar-fill {
1120
+ opacity: 1 !important;
1121
+ transform: none !important;
1122
+ transition: none !important;
1123
+ stroke-dashoffset: 0 !important;
1124
+ }
1125
+ }
1126
+
1127
+ /* ══════════════════════════════════════════════════════════════
1128
+ NOIR — monochrome dark, sharp edges, no color accent
1129
+ ══════════════════════════════════════════════════════════════ */
1130
+
1131
+ [data-template="noir"] {
1132
+ --surface: #0a0a0a;
1133
+ --surface-low: #141414;
1134
+ --surface-lowest: #000000;
1135
+ --surface-high: #2a2a2a;
1136
+ --on-surface: #e5e5e5;
1137
+ --on-surface-variant: #a3a3a3;
1138
+ --outline: #404040;
1139
+ --ghost: rgba(255,255,255,0.06);
1140
+ --primary: #e5e5e5;
1141
+ --primary-hover: #ffffff;
1142
+ --on-primary: #000000;
1143
+ --green: #a3a3a3;
1144
+ --green-bg: rgba(163,163,163,0.1);
1145
+ --violet: #d4d4d4;
1146
+ --violet-bg: rgba(212,212,212,0.1);
1147
+ --error: #f87171;
1148
+
1149
+ --radius-sm: 0;
1150
+ --radius-md: 0;
1151
+ }
1152
+
1153
+ [data-template="noir"],
1154
+ [data-template="noir"] body {
1155
+ background: #000000;
1156
+ color: #e5e5e5;
1157
+ }
1158
+
1159
+ /* ══════════════════════════════════════════════════════════════
1160
+ NEON — deep purple dark with pink accent, subtle glow
1161
+ ══════════════════════════════════════════════════════════════ */
1162
+
1163
+ [data-template="neon"] {
1164
+ --surface: #1a0a2e;
1165
+ --surface-low: #22103a;
1166
+ --surface-lowest: #0c0014;
1167
+ --surface-high: #2e1650;
1168
+ --on-surface: #f0e6ff;
1169
+ --on-surface-variant: #a78bbd;
1170
+ --outline: rgba(244,114,182,0.3);
1171
+ --ghost: rgba(244,114,182,0.08);
1172
+ --primary: #f472b6;
1173
+ --primary-hover: #f9a8d4;
1174
+ --on-primary: #0c0014;
1175
+ --green: #22d3ee;
1176
+ --green-bg: rgba(34,211,238,0.1);
1177
+ --violet: #f472b6;
1178
+ --violet-bg: rgba(244,114,182,0.1);
1179
+ --error: #f87171;
1180
+
1181
+ --font-mono: 'JetBrains Mono', monospace;
1182
+ --radius-sm: 0.25rem;
1183
+ --radius-md: 0.5rem;
1184
+ }
1185
+
1186
+ [data-template="neon"],
1187
+ [data-template="neon"] body {
1188
+ background: #0c0014;
1189
+ color: #f0e6ff;
1190
+ }
1191
+
1192
+ /* ══════════════════════════════════════════════════════════════
1193
+ BLUEPRINT — light with slate/gray technical feel
1194
+ ══════════════════════════════════════════════════════════════ */
1195
+
1196
+ [data-template="blueprint"] {
1197
+ --surface: #f8fafc;
1198
+ --surface-low: #f1f5f9;
1199
+ --surface-lowest: #ffffff;
1200
+ --surface-high: #e2e8f0;
1201
+ --on-surface: #1e293b;
1202
+ --on-surface-variant: #64748b;
1203
+ --outline: #cbd5e1;
1204
+ --ghost: rgba(100,116,139,0.1);
1205
+ --primary: #64748b;
1206
+ --primary-hover: #475569;
1207
+ --on-primary: #ffffff;
1208
+ --green: #059669;
1209
+ --green-bg: #ecfdf5;
1210
+ --violet: #64748b;
1211
+ --violet-bg: rgba(100,116,139,0.1);
1212
+ --error: #dc2626;
1213
+ }
1214
+
1215
+ /* ══════════════════════════════════════════════════════════════
1216
+ STRATA — warm light with amber accent
1217
+ ══════════════════════════════════════════════════════════════ */
1218
+
1219
+ [data-template="strata"] {
1220
+ --surface: #f5f5f4;
1221
+ --surface-low: #fafaf9;
1222
+ --surface-lowest: #ffffff;
1223
+ --surface-high: #e7e5e4;
1224
+ --on-surface: #1c1917;
1225
+ --on-surface-variant: #78716c;
1226
+ --outline: #d6d3d1;
1227
+ --ghost: rgba(120,113,108,0.1);
1228
+ --primary: #d97706;
1229
+ --primary-hover: #b45309;
1230
+ --on-primary: #ffffff;
1231
+ --green: #059669;
1232
+ --green-bg: #ecfdf5;
1233
+ --violet: #d97706;
1234
+ --violet-bg: rgba(217,119,6,0.1);
1235
+ --error: #dc2626;
1236
+ }
1237
+
1238
+ /* ══════════════════════════════════════════════════════════════
1239
+ RADAR — deep navy dark with cyan accent
1240
+ ══════════════════════════════════════════════════════════════ */
1241
+
1242
+ [data-template="radar"] {
1243
+ --surface: #1e293b;
1244
+ --surface-low: #0f172a;
1245
+ --surface-lowest: #020617;
1246
+ --surface-high: #334155;
1247
+ --on-surface: #e2e8f0;
1248
+ --on-surface-variant: #94a3b8;
1249
+ --outline: #475569;
1250
+ --ghost: rgba(34,211,238,0.08);
1251
+ --primary: #22d3ee;
1252
+ --primary-hover: #67e8f9;
1253
+ --on-primary: #0f172a;
1254
+ --green: #34d399;
1255
+ --green-bg: rgba(52,211,153,0.1);
1256
+ --violet: #22d3ee;
1257
+ --violet-bg: rgba(34,211,238,0.1);
1258
+ --error: #f87171;
1259
+ }
1260
+
1261
+ [data-template="radar"],
1262
+ [data-template="radar"] body {
1263
+ background: #0f172a;
1264
+ color: #e2e8f0;
1265
+ }
1266
+
1267
+ /* ══════════════════════════════════════════════════════════════
1268
+ COSMOS — near-black dark with warm gold accent
1269
+ ══════════════════════════════════════════════════════════════ */
1270
+
1271
+ [data-template="cosmos"] {
1272
+ --surface: #111827;
1273
+ --surface-low: #0a0f1a;
1274
+ --surface-lowest: #030712;
1275
+ --surface-high: #1f2937;
1276
+ --on-surface: #fafafa;
1277
+ --on-surface-variant: #9ca3af;
1278
+ --outline: #374151;
1279
+ --ghost: rgba(251,191,36,0.08);
1280
+ --primary: #fbbf24;
1281
+ --primary-hover: #fcd34d;
1282
+ --on-primary: #030712;
1283
+ --green: #34d399;
1284
+ --green-bg: rgba(52,211,153,0.1);
1285
+ --violet: #fbbf24;
1286
+ --violet-bg: rgba(251,191,36,0.1);
1287
+ --error: #f87171;
1288
+ }
1289
+
1290
+ [data-template="cosmos"],
1291
+ [data-template="cosmos"] body {
1292
+ background: #030712;
1293
+ color: #fafafa;
1294
+ }
1295
+
1296
+ /* ══════════════════════════════════════════════════════════════
1297
+ BAUHAUS — light with bold red accent, geometric feel
1298
+ ══════════════════════════════════════════════════════════════ */
1299
+
1300
+ [data-template="bauhaus"] {
1301
+ --surface: #f5f5f5;
1302
+ --surface-low: #fafafa;
1303
+ --surface-lowest: #ffffff;
1304
+ --surface-high: #e5e5e5;
1305
+ --on-surface: #1a1a1a;
1306
+ --on-surface-variant: #737373;
1307
+ --outline: #d4d4d4;
1308
+ --ghost: rgba(220,38,38,0.06);
1309
+ --primary: #dc2626;
1310
+ --primary-hover: #b91c1c;
1311
+ --on-primary: #ffffff;
1312
+ --green: #16a34a;
1313
+ --green-bg: #f0fdf4;
1314
+ --violet: #dc2626;
1315
+ --violet-bg: rgba(220,38,38,0.08);
1316
+ --error: #dc2626;
1317
+ }
1318
+
1319
+ /* ══════════════════════════════════════════════════════════════
1320
+ GLACIER — cool blue light theme
1321
+ ══════════════════════════════════════════════════════════════ */
1322
+
1323
+ [data-template="glacier"] {
1324
+ --surface: #f0f9ff;
1325
+ --surface-low: #e0f2fe;
1326
+ --surface-lowest: #ffffff;
1327
+ --surface-high: #bae6fd;
1328
+ --on-surface: #1e293b;
1329
+ --on-surface-variant: #64748b;
1330
+ --outline: #7dd3fc;
1331
+ --ghost: rgba(56,189,248,0.1);
1332
+ --primary: #38bdf8;
1333
+ --primary-hover: #0ea5e9;
1334
+ --on-primary: #ffffff;
1335
+ --green: #059669;
1336
+ --green-bg: #ecfdf5;
1337
+ --violet: #38bdf8;
1338
+ --violet-bg: rgba(56,189,248,0.1);
1339
+ --error: #dc2626;
1340
+ }
1341
+
1342
+ /* ══════════════════════════════════════════════════════════════
1343
+ EMBER — warm dark with orange accent
1344
+ ══════════════════════════════════════════════════════════════ */
1345
+
1346
+ [data-template="ember"] {
1347
+ --surface: #1c1210;
1348
+ --surface-low: #231813;
1349
+ --surface-lowest: #120c0a;
1350
+ --surface-high: #362318;
1351
+ --on-surface: #fafafa;
1352
+ --on-surface-variant: #a8a29e;
1353
+ --outline: #57534e;
1354
+ --ghost: rgba(249,115,22,0.08);
1355
+ --primary: #f97316;
1356
+ --primary-hover: #fb923c;
1357
+ --on-primary: #1c1210;
1358
+ --green: #34d399;
1359
+ --green-bg: rgba(52,211,153,0.1);
1360
+ --violet: #f97316;
1361
+ --violet-bg: rgba(249,115,22,0.1);
1362
+ --error: #f87171;
1363
+ }
1364
+
1365
+ [data-template="ember"],
1366
+ [data-template="ember"] body {
1367
+ background: #1c1210;
1368
+ color: #fafafa;
1369
+ }
1370
+
1371
+ /* ══════════════════════════════════════════════════════════════
1372
+ ZEN — warm stone light, understated
1373
+ ══════════════════════════════════════════════════════════════ */
1374
+
1375
+ [data-template="zen"] {
1376
+ --surface: #f5f5f4;
1377
+ --surface-low: #fafaf9;
1378
+ --surface-lowest: #ffffff;
1379
+ --surface-high: #e7e5e4;
1380
+ --on-surface: #1c1917;
1381
+ --on-surface-variant: #78716c;
1382
+ --outline: #d6d3d1;
1383
+ --ghost: rgba(120,113,108,0.08);
1384
+ --primary: #78716c;
1385
+ --primary-hover: #57534e;
1386
+ --on-primary: #ffffff;
1387
+ --green: #059669;
1388
+ --green-bg: #ecfdf5;
1389
+ --violet: #78716c;
1390
+ --violet-bg: rgba(120,113,108,0.1);
1391
+ --error: #dc2626;
1392
+ }
1393
+
1394
+ /* ══════════════════════════════════════════════════════════════
1395
+ CIRCUIT — dark with electric lime accent
1396
+ ══════════════════════════════════════════════════════════════ */
1397
+
1398
+ [data-template="circuit"] {
1399
+ --surface: #121812;
1400
+ --surface-low: #0a0f0a;
1401
+ --surface-lowest: #060a06;
1402
+ --surface-high: #1e2a1e;
1403
+ --on-surface: #f1f5f9;
1404
+ --on-surface-variant: #94a3b8;
1405
+ --outline: #334155;
1406
+ --ghost: rgba(163,230,53,0.08);
1407
+ --primary: #a3e635;
1408
+ --primary-hover: #bef264;
1409
+ --on-primary: #0a0f0a;
1410
+ --green: #a3e635;
1411
+ --green-bg: rgba(163,230,53,0.1);
1412
+ --violet: #a3e635;
1413
+ --violet-bg: rgba(163,230,53,0.1);
1414
+ --error: #f87171;
1415
+ }
1416
+
1417
+ [data-template="circuit"],
1418
+ [data-template="circuit"] body {
1419
+ background: #0a0f0a;
1420
+ color: #f1f5f9;
1421
+ }
1422
+
1423
+ /* ══════════════════════════════════════════════════════════════
1424
+ PARCHMENT — warm cream light with brown accent
1425
+ ══════════════════════════════════════════════════════════════ */
1426
+
1427
+ [data-template="parchment"] {
1428
+ --surface: #fdf6e3;
1429
+ --surface-low: #fef9ee;
1430
+ --surface-lowest: #fffdf7;
1431
+ --surface-high: #f5e6c8;
1432
+ --on-surface: #3c2a14;
1433
+ --on-surface-variant: #78716c;
1434
+ --outline: #d6c6a8;
1435
+ --ghost: rgba(146,64,14,0.08);
1436
+ --primary: #92400e;
1437
+ --primary-hover: #78350f;
1438
+ --on-primary: #fdf6e3;
1439
+ --green: #059669;
1440
+ --green-bg: rgba(5,150,105,0.08);
1441
+ --violet: #92400e;
1442
+ --violet-bg: rgba(146,64,14,0.1);
1443
+ --error: #dc2626;
1444
+ }
1445
+
1446
+ /* ══════════════════════════════════════════════════════════════
1447
+ AURORA — dark navy with teal/emerald accent
1448
+ ══════════════════════════════════════════════════════════════ */
1449
+
1450
+ [data-template="aurora"] {
1451
+ --surface: #0f172a;
1452
+ --surface-low: #020617;
1453
+ --surface-lowest: #010409;
1454
+ --surface-high: #1e293b;
1455
+ --on-surface: #e2e8f0;
1456
+ --on-surface-variant: #94a3b8;
1457
+ --outline: #334155;
1458
+ --ghost: rgba(45,212,191,0.08);
1459
+ --primary: #2dd4bf;
1460
+ --primary-hover: #5eead4;
1461
+ --on-primary: #020617;
1462
+ --green: #2dd4bf;
1463
+ --green-bg: rgba(45,212,191,0.1);
1464
+ --violet: #2dd4bf;
1465
+ --violet-bg: rgba(45,212,191,0.1);
1466
+ --error: #f87171;
1467
+ }
1468
+
1469
+ [data-template="aurora"],
1470
+ [data-template="aurora"] body {
1471
+ background: #020617;
1472
+ color: #e2e8f0;
1473
+ }
1474
+
1475
+ /* ══════════════════════════════════════════════════════════════
1476
+ GRID — clean light with indigo accent
1477
+ ══════════════════════════════════════════════════════════════ */
1478
+
1479
+ [data-template="grid"] {
1480
+ --surface: #f8f8fa;
1481
+ --surface-low: #fafafa;
1482
+ --surface-lowest: #ffffff;
1483
+ --surface-high: #e5e7eb;
1484
+ --on-surface: #1e293b;
1485
+ --on-surface-variant: #64748b;
1486
+ --outline: #c7d2fe;
1487
+ --ghost: rgba(99,102,241,0.06);
1488
+ --primary: #6366f1;
1489
+ --primary-hover: #4f46e5;
1490
+ --on-primary: #ffffff;
1491
+ --green: #059669;
1492
+ --green-bg: #ecfdf5;
1493
+ --violet: #6366f1;
1494
+ --violet-bg: rgba(99,102,241,0.1);
1495
+ --error: #dc2626;
1496
+ }
1497
+
1498
+ /* ══════════════════════════════════════════════════════════════
1499
+ OBSIDIAN — dark with purple accent
1500
+ ══════════════════════════════════════════════════════════════ */
1501
+
1502
+ [data-template="obsidian"] {
1503
+ --surface: #111113;
1504
+ --surface-low: #18181b;
1505
+ --surface-lowest: #09090b;
1506
+ --surface-high: #27272a;
1507
+ --on-surface: #fafafa;
1508
+ --on-surface-variant: #a1a1aa;
1509
+ --outline: #3f3f46;
1510
+ --ghost: rgba(168,85,247,0.08);
1511
+ --primary: #a855f7;
1512
+ --primary-hover: #c084fc;
1513
+ --on-primary: #09090b;
1514
+ --green: #4ade80;
1515
+ --green-bg: rgba(74,222,128,0.1);
1516
+ --violet: #a855f7;
1517
+ --violet-bg: rgba(168,85,247,0.1);
1518
+ --error: #f87171;
1519
+ }
1520
+
1521
+ [data-template="obsidian"],
1522
+ [data-template="obsidian"] body {
1523
+ background: #09090b;
1524
+ color: #fafafa;
1525
+ }
1526
+
1527
+ /* ══════════════════════════════════════════════════════════════
1528
+ CHALK — soft light, muted monochrome
1529
+ ══════════════════════════════════════════════════════════════ */
1530
+
1531
+ [data-template="chalk"] {
1532
+ --surface: #f1f5f9;
1533
+ --surface-low: #f8fafc;
1534
+ --surface-lowest: #ffffff;
1535
+ --surface-high: #e2e8f0;
1536
+ --on-surface: #334155;
1537
+ --on-surface-variant: #64748b;
1538
+ --outline: #cbd5e1;
1539
+ --ghost: rgba(51,65,85,0.06);
1540
+ --primary: #334155;
1541
+ --primary-hover: #1e293b;
1542
+ --on-primary: #ffffff;
1543
+ --green: #059669;
1544
+ --green-bg: #ecfdf5;
1545
+ --violet: #334155;
1546
+ --violet-bg: rgba(51,65,85,0.08);
1547
+ --error: #dc2626;
1548
+ }
1549
+
1550
+ /* ══════════════════════════════════════════════════════════════
1551
+ SIGNAL — dark with red accent
1552
+ ══════════════════════════════════════════════════════════════ */
1553
+
1554
+ [data-template="signal"] {
1555
+ --surface: #1c1917;
1556
+ --surface-low: #0c0a09;
1557
+ --surface-lowest: #050403;
1558
+ --surface-high: #292524;
1559
+ --on-surface: #e7e5e4;
1560
+ --on-surface-variant: #a8a29e;
1561
+ --outline: #44403c;
1562
+ --ghost: rgba(239,68,68,0.08);
1563
+ --primary: #ef4444;
1564
+ --primary-hover: #f87171;
1565
+ --on-primary: #0c0a09;
1566
+ --green: #4ade80;
1567
+ --green-bg: rgba(74,222,128,0.1);
1568
+ --violet: #ef4444;
1569
+ --violet-bg: rgba(239,68,68,0.1);
1570
+ --error: #ef4444;
1571
+ }
1572
+
1573
+ [data-template="signal"],
1574
+ [data-template="signal"] body {
1575
+ background: #0c0a09;
1576
+ color: #e7e5e4;
1577
+ }
1578
+
1579
+ /* ══════════════════════════════════════════════════════════════
1580
+ CANVAS — clean light with rose/pink accent
1581
+ ══════════════════════════════════════════════════════════════ */
1582
+
1583
+ [data-template="canvas"] {
1584
+ --surface: #fafafa;
1585
+ --surface-low: #f5f5f5;
1586
+ --surface-lowest: #ffffff;
1587
+ --surface-high: #e5e5e5;
1588
+ --on-surface: #1e293b;
1589
+ --on-surface-variant: #64748b;
1590
+ --outline: #d4d4d4;
1591
+ --ghost: rgba(251,113,133,0.06);
1592
+ --primary: #fb7185;
1593
+ --primary-hover: #f43f5e;
1594
+ --on-primary: #ffffff;
1595
+ --green: #059669;
1596
+ --green-bg: #ecfdf5;
1597
+ --violet: #fb7185;
1598
+ --violet-bg: rgba(251,113,133,0.1);
1599
+ --error: #dc2626;
1600
+ }
1601
+
1602
+ /* ══════════════════════════════════════════════════════════════
1603
+ MERIDIAN — deep green dark with emerald accent
1604
+ ══════════════════════════════════════════════════════════════ */
1605
+
1606
+ [data-template="meridian"] {
1607
+ --surface: #052e16;
1608
+ --surface-low: #022c22;
1609
+ --surface-lowest: #011d15;
1610
+ --surface-high: #14532d;
1611
+ --on-surface: #e2e8f0;
1612
+ --on-surface-variant: #94a3b8;
1613
+ --outline: #166534;
1614
+ --ghost: rgba(52,211,153,0.08);
1615
+ --primary: #34d399;
1616
+ --primary-hover: #6ee7b7;
1617
+ --on-primary: #022c22;
1618
+ --green: #34d399;
1619
+ --green-bg: rgba(52,211,153,0.1);
1620
+ --violet: #34d399;
1621
+ --violet-bg: rgba(52,211,153,0.1);
1622
+ --error: #f87171;
1623
+ }
1624
+
1625
+ [data-template="meridian"],
1626
+ [data-template="meridian"] body {
1627
+ background: #022c22;
1628
+ color: #e2e8f0;
1629
+ }
1630
+
1631
+ /* ══════════════════════════════════════════════════════════════
1632
+ CARBON — neutral dark with cool gray accent
1633
+ ══════════════════════════════════════════════════════════════ */
1634
+
1635
+ [data-template="carbon"] {
1636
+ --surface: #1c1c1c;
1637
+ --surface-low: #171717;
1638
+ --surface-lowest: #0a0a0a;
1639
+ --surface-high: #2a2a2a;
1640
+ --on-surface: #d4d4d4;
1641
+ --on-surface-variant: #a3a3a3;
1642
+ --outline: #404040;
1643
+ --ghost: rgba(148,163,184,0.08);
1644
+ --primary: #94a3b8;
1645
+ --primary-hover: #cbd5e1;
1646
+ --on-primary: #171717;
1647
+ --green: #4ade80;
1648
+ --green-bg: rgba(74,222,128,0.1);
1649
+ --violet: #94a3b8;
1650
+ --violet-bg: rgba(148,163,184,0.1);
1651
+ --error: #f87171;
1652
+ }
1653
+
1654
+ [data-template="carbon"],
1655
+ [data-template="carbon"] body {
1656
+ background: #171717;
1657
+ color: #d4d4d4;
1658
+ }
1659
+
1660
+ /* ══════════════════════════════════════════════════════════════
1661
+ DAYLIGHT — bright light with sky blue accent
1662
+ ══════════════════════════════════════════════════════════════ */
1663
+
1664
+ [data-template="daylight"] {
1665
+ --surface: #f8fafc;
1666
+ --surface-low: #f0f9ff;
1667
+ --surface-lowest: #ffffff;
1668
+ --surface-high: #e0f2fe;
1669
+ --on-surface: #1e293b;
1670
+ --on-surface-variant: #64748b;
1671
+ --outline: #bae6fd;
1672
+ --ghost: rgba(14,165,233,0.06);
1673
+ --primary: #0ea5e9;
1674
+ --primary-hover: #0284c7;
1675
+ --on-primary: #ffffff;
1676
+ --green: #059669;
1677
+ --green-bg: #ecfdf5;
1678
+ --violet: #0ea5e9;
1679
+ --violet-bg: rgba(14,165,233,0.1);
1680
+ --error: #dc2626;
1681
+ }
1682
+
1683
+ /* ══════════════════════════════════════════════════════════════
1684
+ PAPER — warm off-white, monochrome, minimal
1685
+ ══════════════════════════════════════════════════════════════ */
1686
+
1687
+ [data-template="paper"] {
1688
+ --surface: #fafaf5;
1689
+ --surface-low: #fffff8;
1690
+ --surface-lowest: #ffffff;
1691
+ --surface-high: #e8e8e0;
1692
+ --on-surface: #1a1a1a;
1693
+ --on-surface-variant: #737373;
1694
+ --outline: #d4d4d4;
1695
+ --ghost: rgba(26,26,26,0.06);
1696
+ --primary: #1a1a1a;
1697
+ --primary-hover: #404040;
1698
+ --on-primary: #fffff8;
1699
+ --green: #059669;
1700
+ --green-bg: rgba(5,150,105,0.08);
1701
+ --violet: #525252;
1702
+ --violet-bg: rgba(82,82,82,0.08);
1703
+ --error: #dc2626;
1704
+ }
1705
+
1706
+ /* ══════════════════════════════════════════════════════════════
1707
+ VERDANT — light with forest green accent
1708
+ ══════════════════════════════════════════════════════════════ */
1709
+
1710
+ [data-template="verdant"] {
1711
+ --surface: #f5f5f0;
1712
+ --surface-low: #fefdfb;
1713
+ --surface-lowest: #ffffff;
1714
+ --surface-high: #e7e5e0;
1715
+ --on-surface: #1c1917;
1716
+ --on-surface-variant: #78716c;
1717
+ --outline: #d6d3d1;
1718
+ --ghost: rgba(21,128,61,0.06);
1719
+ --primary: #15803d;
1720
+ --primary-hover: #166534;
1721
+ --on-primary: #ffffff;
1722
+ --green: #15803d;
1723
+ --green-bg: #f0fdf4;
1724
+ --violet: #15803d;
1725
+ --violet-bg: rgba(21,128,61,0.1);
1726
+ --error: #dc2626;
1727
+ }
1728
+
1729
+ /* ══════════════════════════════════════════════════════════════
1730
+ PARALLAX — dark blue-gray with soft blue accent
1731
+ ══════════════════════════════════════════════════════════════ */
1732
+
1733
+ [data-template="parallax"] {
1734
+ --surface: #12121a;
1735
+ --surface-low: #0a0a0f;
1736
+ --surface-lowest: #050508;
1737
+ --surface-high: #1e1e2a;
1738
+ --on-surface: #f1f5f9;
1739
+ --on-surface-variant: #94a3b8;
1740
+ --outline: #334155;
1741
+ --ghost: rgba(96,165,250,0.08);
1742
+ --primary: #60a5fa;
1743
+ --primary-hover: #93bbfd;
1744
+ --on-primary: #0a0a0f;
1745
+ --green: #4ade80;
1746
+ --green-bg: rgba(74,222,128,0.1);
1747
+ --violet: #60a5fa;
1748
+ --violet-bg: rgba(96,165,250,0.1);
1749
+ --error: #f87171;
1750
+ }
1751
+
1752
+ [data-template="parallax"],
1753
+ [data-template="parallax"] body {
1754
+ background: #0a0a0f;
1755
+ color: #f1f5f9;
1756
+ }
1757
+
1758
+ /* ══════════════════════════════════════════════════════════════
1759
+ MONO — terminal-style dark with green-on-black
1760
+ ══════════════════════════════════════════════════════════════ */
1761
+
1762
+ [data-template="mono"] {
1763
+ --surface: #111111;
1764
+ --surface-low: #0a0a0a;
1765
+ --surface-lowest: #050505;
1766
+ --surface-high: #1a1a1a;
1767
+ --on-surface: #4ade80;
1768
+ --on-surface-variant: rgba(74,222,128,0.6);
1769
+ --outline: rgba(74,222,128,0.25);
1770
+ --ghost: rgba(74,222,128,0.06);
1771
+ --primary: #4ade80;
1772
+ --primary-hover: #86efac;
1773
+ --on-primary: #0a0a0a;
1774
+ --green: #4ade80;
1775
+ --green-bg: rgba(74,222,128,0.1);
1776
+ --violet: #4ade80;
1777
+ --violet-bg: rgba(74,222,128,0.1);
1778
+ --error: #f87171;
1779
+
1780
+ --font-display: 'IBM Plex Mono', monospace;
1781
+ --font-body: 'IBM Plex Mono', monospace;
1782
+ --font-mono: 'IBM Plex Mono', monospace;
1783
+ }
1784
+
1785
+ [data-template="mono"],
1786
+ [data-template="mono"] body {
1787
+ background: #0a0a0a;
1788
+ color: #4ade80;
1789
+ }