stagecraft 0.1.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 (133) hide show
  1. package/AGENT.md +792 -0
  2. package/LICENSE +21 -0
  3. package/README.md +210 -0
  4. package/bin/cli.js +51 -0
  5. package/bin/export.js +137 -0
  6. package/bin/init.js +52 -0
  7. package/bin/lib/edit-ops.js +405 -0
  8. package/bin/serve.js +278 -0
  9. package/dist/stagecraft.bundle.css +4443 -0
  10. package/dist/stagecraft.bundle.js +7621 -0
  11. package/dist/themes/brand.bundle.css +5262 -0
  12. package/dist/themes/neon.bundle.css +5289 -0
  13. package/dist/themes/paper.bundle.css +5276 -0
  14. package/dist/themes/phosphor.bundle.css +4443 -0
  15. package/dist/themes/shopware.bundle.css +5850 -0
  16. package/examples/closing-card.js +74 -0
  17. package/examples/orchestration-graph.js +156 -0
  18. package/examples/terminal-log.js +109 -0
  19. package/examples/token-stream.js +96 -0
  20. package/examples/whoami.js +90 -0
  21. package/package.json +41 -0
  22. package/src/components/activity-list.js +75 -0
  23. package/src/components/agenda.js +79 -0
  24. package/src/components/bar-chart.js +162 -0
  25. package/src/components/before-after.js +135 -0
  26. package/src/components/bento.js +73 -0
  27. package/src/components/big-number.js +87 -0
  28. package/src/components/callout.js +75 -0
  29. package/src/components/checklist.js +81 -0
  30. package/src/components/code-block.js +141 -0
  31. package/src/components/code-diff.js +98 -0
  32. package/src/components/compare.js +85 -0
  33. package/src/components/counter.js +80 -0
  34. package/src/components/cta.js +69 -0
  35. package/src/components/cycle.js +146 -0
  36. package/src/components/definition.js +96 -0
  37. package/src/components/donut-chart.js +179 -0
  38. package/src/components/full-image.js +82 -0
  39. package/src/components/funnel.js +111 -0
  40. package/src/components/gauge.js +147 -0
  41. package/src/components/heatmap.js +141 -0
  42. package/src/components/image-grid.js +80 -0
  43. package/src/components/image-text.js +96 -0
  44. package/src/components/kinetic-text.js +72 -0
  45. package/src/components/kpi.js +106 -0
  46. package/src/components/line-chart.js +215 -0
  47. package/src/components/manifesto.js +104 -0
  48. package/src/components/marquee.js +63 -0
  49. package/src/components/matrix2x2.js +151 -0
  50. package/src/components/pillars.js +80 -0
  51. package/src/components/pricing.js +90 -0
  52. package/src/components/process-flow.js +133 -0
  53. package/src/components/progress.js +136 -0
  54. package/src/components/punchline.js +82 -0
  55. package/src/components/pyramid.js +107 -0
  56. package/src/components/qanda.js +60 -0
  57. package/src/components/quote.js +70 -0
  58. package/src/components/roadmap.js +130 -0
  59. package/src/components/section-card.js +45 -0
  60. package/src/components/shift-arrow.js +41 -0
  61. package/src/components/spark-line.js +147 -0
  62. package/src/components/spotlight.js +85 -0
  63. package/src/components/statement.js +106 -0
  64. package/src/components/stats.js +91 -0
  65. package/src/components/steps.js +83 -0
  66. package/src/components/swot.js +110 -0
  67. package/src/components/team-grid.js +87 -0
  68. package/src/components/testimonial.js +99 -0
  69. package/src/components/timeline.js +91 -0
  70. package/src/components/tip.js +63 -0
  71. package/src/components/venn.js +198 -0
  72. package/src/edit-mode.js +1256 -0
  73. package/src/engine.js +823 -0
  74. package/src/helpers.js +169 -0
  75. package/src/transitions.js +101 -0
  76. package/starter/index.html +40 -0
  77. package/starter/slides/00-title.js +12 -0
  78. package/starter/stagecraft.config.js +8 -0
  79. package/themes/brand/base.css +4 -0
  80. package/themes/brand/components-business.css +173 -0
  81. package/themes/brand/components-chart.css +65 -0
  82. package/themes/brand/components-content.css +126 -0
  83. package/themes/brand/components-data.css +162 -0
  84. package/themes/brand/components-diagram.css +115 -0
  85. package/themes/brand/components-layout.css +112 -0
  86. package/themes/brand/components.css +46 -0
  87. package/themes/brand/manifest.json +20 -0
  88. package/themes/brand/tokens.css +20 -0
  89. package/themes/brand/transitions.css +4 -0
  90. package/themes/neon/base.css +10 -0
  91. package/themes/neon/components-business.css +189 -0
  92. package/themes/neon/components-chart.css +70 -0
  93. package/themes/neon/components-content.css +112 -0
  94. package/themes/neon/components-data.css +160 -0
  95. package/themes/neon/components-diagram.css +109 -0
  96. package/themes/neon/components-layout.css +87 -0
  97. package/themes/neon/components.css +87 -0
  98. package/themes/neon/manifest.json +21 -0
  99. package/themes/neon/tokens.css +17 -0
  100. package/themes/neon/transitions.css +13 -0
  101. package/themes/paper/base.css +9 -0
  102. package/themes/paper/components-business.css +196 -0
  103. package/themes/paper/components-chart.css +74 -0
  104. package/themes/paper/components-content.css +108 -0
  105. package/themes/paper/components-data.css +168 -0
  106. package/themes/paper/components-diagram.css +89 -0
  107. package/themes/paper/components-layout.css +105 -0
  108. package/themes/paper/components.css +60 -0
  109. package/themes/paper/manifest.json +10 -0
  110. package/themes/paper/tokens.css +21 -0
  111. package/themes/paper/transitions.css +11 -0
  112. package/themes/phosphor/base.css +511 -0
  113. package/themes/phosphor/components-business.css +818 -0
  114. package/themes/phosphor/components-chart.css +415 -0
  115. package/themes/phosphor/components-content.css +530 -0
  116. package/themes/phosphor/components-data.css +824 -0
  117. package/themes/phosphor/components-diagram.css +427 -0
  118. package/themes/phosphor/components-layout.css +450 -0
  119. package/themes/phosphor/components.css +223 -0
  120. package/themes/phosphor/manifest.json +11 -0
  121. package/themes/phosphor/tokens.css +17 -0
  122. package/themes/phosphor/transitions.css +213 -0
  123. package/themes/shopware/base.css +94 -0
  124. package/themes/shopware/components-business.css +344 -0
  125. package/themes/shopware/components-chart.css +121 -0
  126. package/themes/shopware/components-content.css +169 -0
  127. package/themes/shopware/components-data.css +219 -0
  128. package/themes/shopware/components-diagram.css +129 -0
  129. package/themes/shopware/components-layout.css +166 -0
  130. package/themes/shopware/components.css +83 -0
  131. package/themes/shopware/manifest.json +21 -0
  132. package/themes/shopware/tokens.css +68 -0
  133. package/themes/shopware/transitions.css +22 -0
@@ -0,0 +1,121 @@
1
+ /* Stagecraft — Shopware theme: chart/relationship component overrides. */
2
+ @import url('../phosphor/components-chart.css');
3
+
4
+ /* ============================================================
5
+ * Matrix2x2
6
+ * ============================================================ */
7
+ :root[data-theme="shopware"] .matrix2x2 .grid {
8
+ background: var(--border-primary);
9
+ border: 1px solid var(--border-primary);
10
+ border-radius: var(--radius-md);
11
+ overflow: hidden;
12
+ }
13
+ :root[data-theme="shopware"] .matrix2x2 .quadrant {
14
+ background: var(--bg);
15
+ filter: none;
16
+ }
17
+ :root[data-theme="shopware"] .matrix2x2 .quadrant.active {
18
+ background: color-mix(in srgb, var(--q-color, var(--accent)) 8%, var(--bg));
19
+ box-shadow: inset 0 0 0 1px var(--q-color, var(--accent));
20
+ }
21
+ :root[data-theme="shopware"] .matrix2x2 .quadrant .q-label { color: var(--dim); font-family: var(--display); }
22
+ :root[data-theme="shopware"] .matrix2x2 .quadrant .q-body { color: var(--fg); }
23
+ :root[data-theme="shopware"] .matrix2x2 .quadrant .q-tag { color: var(--dim); }
24
+ :root[data-theme="shopware"] .matrix2x2 .x-axis .label,
25
+ :root[data-theme="shopware"] .matrix2x2 .y-axis .label { color: var(--dim); font-family: var(--display); }
26
+
27
+ /* ============================================================
28
+ * BarChart — accent fill, no glow
29
+ * ============================================================ */
30
+ :root[data-theme="shopware"] .barchart .bar-track {
31
+ background: var(--border-primary);
32
+ border-radius: var(--radius-pill);
33
+ }
34
+ :root[data-theme="shopware"] .barchart .bar-fill {
35
+ background: var(--accent);
36
+ box-shadow: none;
37
+ border-radius: var(--radius-pill);
38
+ }
39
+ :root[data-theme="shopware"] .barchart .bar-row.accent .bar-fill { background: var(--accent); }
40
+ :root[data-theme="shopware"] .barchart .bar-row.blue .bar-fill { background: var(--blue); }
41
+ :root[data-theme="shopware"] .barchart .bar-row.amber .bar-fill { background: var(--amber); }
42
+ :root[data-theme="shopware"] .barchart .bar-row.red .bar-fill { background: var(--red); }
43
+ :root[data-theme="shopware"] .barchart .bar-row.dim .bar-fill { background: var(--dim); }
44
+ :root[data-theme="shopware"] .barchart .bar-label { color: var(--dim); font-family: var(--display); }
45
+ :root[data-theme="shopware"] .barchart .bar-value { color: var(--fg); font-family: var(--display); font-weight: 600; }
46
+
47
+ /* ============================================================
48
+ * Progress — accent fill, no glow
49
+ * ============================================================ */
50
+ :root[data-theme="shopware"] .progress-track {
51
+ background: var(--border-primary);
52
+ border-radius: var(--radius-pill);
53
+ }
54
+ :root[data-theme="shopware"] .progress-fill {
55
+ background: var(--accent);
56
+ box-shadow: none;
57
+ border-radius: var(--radius-pill);
58
+ }
59
+ :root[data-theme="shopware"] .progress-row.accent .progress-fill { background: var(--accent); }
60
+ :root[data-theme="shopware"] .progress-row.blue .progress-fill { background: var(--blue); }
61
+ :root[data-theme="shopware"] .progress-row.amber .progress-fill { background: var(--amber); }
62
+ :root[data-theme="shopware"] .progress-row.red .progress-fill { background: var(--red); }
63
+ :root[data-theme="shopware"] .progress-label { color: var(--fg); font-family: var(--display); }
64
+ :root[data-theme="shopware"] .progress-value { color: var(--dim); font-family: var(--display); font-weight: 600; }
65
+
66
+ /* ============================================================
67
+ * ProcessFlow
68
+ * ============================================================ */
69
+ :root[data-theme="shopware"] .processflow {
70
+ --pf-card-bg: var(--bg);
71
+ --pf-card-border: var(--border-primary);
72
+ }
73
+ :root[data-theme="shopware"] .processflow .pf-step {
74
+ background: var(--bg);
75
+ border: 1px solid var(--border-primary);
76
+ border-radius: var(--radius-md);
77
+ box-shadow: var(--shadow-sm);
78
+ }
79
+ :root[data-theme="shopware"] .processflow .pf-step.accent { border-color: color-mix(in srgb, var(--accent) 40%, var(--border-primary)); }
80
+ :root[data-theme="shopware"] .processflow .pf-step.amber { border-color: color-mix(in srgb, var(--amber) 40%, var(--border-primary)); }
81
+ :root[data-theme="shopware"] .processflow .pf-step.blue { border-color: color-mix(in srgb, var(--blue) 40%, var(--border-primary)); }
82
+ :root[data-theme="shopware"] .processflow .pf-step.red { border-color: color-mix(in srgb, var(--red) 40%, var(--border-primary)); }
83
+ :root[data-theme="shopware"] .processflow .pf-icon { color: var(--accent); }
84
+ :root[data-theme="shopware"] .processflow .pf-step.accent .pf-icon { color: var(--accent); }
85
+ :root[data-theme="shopware"] .processflow .pf-step.amber .pf-icon { color: var(--amber); }
86
+ :root[data-theme="shopware"] .processflow .pf-step.blue .pf-icon { color: var(--blue); }
87
+ :root[data-theme="shopware"] .processflow .pf-step.red .pf-icon { color: var(--red); }
88
+ :root[data-theme="shopware"] .processflow .pf-label { color: var(--fg); font-family: var(--display); font-weight: 600; }
89
+ :root[data-theme="shopware"] .processflow .pf-body { color: var(--dim); }
90
+ :root[data-theme="shopware"] .processflow .pf-arrow { color: var(--border-secondary); }
91
+ :root[data-theme="shopware"] .processflow .pf-arrow.pulse {
92
+ animation: pf-pulse-shopware 900ms ease-out;
93
+ color: var(--accent);
94
+ }
95
+ @keyframes pf-pulse-shopware {
96
+ 0% { transform: scale(1); }
97
+ 40% { transform: scale(1.18); }
98
+ 100% { transform: scale(1); }
99
+ }
100
+
101
+ /* ============================================================
102
+ * Venn — gentle fill opacities, white-backed labels
103
+ * ============================================================ */
104
+ :root[data-theme="shopware"] .venn .v-circle {
105
+ fill-opacity: 0.16;
106
+ stroke-width: 1.5;
107
+ }
108
+ :root[data-theme="shopware"] .venn .v-label.set .name {
109
+ background: var(--bg);
110
+ border: 1px solid var(--border-primary);
111
+ border-radius: var(--radius-sm);
112
+ color: var(--fg);
113
+ font-family: var(--display);
114
+ }
115
+ :root[data-theme="shopware"] .venn .v-label.overlap > span {
116
+ background: rgba(255, 255, 255, 0.92);
117
+ border: 1px solid var(--border-primary);
118
+ border-radius: var(--radius-sm);
119
+ color: var(--fg);
120
+ font-family: var(--display);
121
+ }
@@ -0,0 +1,169 @@
1
+ /* Stagecraft — Shopware theme: content/typography component overrides. */
2
+ @import url('../phosphor/components-content.css');
3
+
4
+ /* ---------------------------------------------------------------------------
5
+ * Statement — emphasized words pop in brand, no text glow
6
+ * ------------------------------------------------------------------------- */
7
+ :root[data-theme="shopware"] .statement-text {
8
+ font-family: var(--display);
9
+ font-weight: 600;
10
+ letter-spacing: -0.025em;
11
+ color: var(--fg);
12
+ }
13
+ :root[data-theme="shopware"] .statement .st-em {
14
+ color: var(--accent);
15
+ text-shadow: none;
16
+ }
17
+ :root[data-theme="shopware"] .statement .st-em--amber { color: var(--amber); text-shadow: none; }
18
+ :root[data-theme="shopware"] .statement .st-em--blue { color: var(--blue); text-shadow: none; }
19
+
20
+ /* ---------------------------------------------------------------------------
21
+ * QandA
22
+ * ------------------------------------------------------------------------- */
23
+ :root[data-theme="shopware"] .qa-q {
24
+ color: var(--dim);
25
+ font-family: var(--display);
26
+ font-style: normal;
27
+ font-weight: 500;
28
+ }
29
+ :root[data-theme="shopware"] .qa-q::before { color: var(--border-secondary); }
30
+ :root[data-theme="shopware"] .qa-a {
31
+ color: var(--accent);
32
+ text-shadow: none;
33
+ font-family: var(--display);
34
+ font-weight: 600;
35
+ letter-spacing: -0.02em;
36
+ }
37
+ :root[data-theme="shopware"] .qa-attr { color: var(--dim); font-family: var(--display); }
38
+
39
+ /* ---------------------------------------------------------------------------
40
+ * Manifesto
41
+ * ------------------------------------------------------------------------- */
42
+ :root[data-theme="shopware"] .mf-intro {
43
+ color: var(--dim);
44
+ font-family: var(--display);
45
+ }
46
+ :root[data-theme="shopware"] .mf-num {
47
+ color: var(--accent);
48
+ text-shadow: none;
49
+ font-family: var(--display);
50
+ font-weight: 700;
51
+ letter-spacing: -0.02em;
52
+ font-variant-numeric: tabular-nums;
53
+ }
54
+ :root[data-theme="shopware"] .mf-item {
55
+ border-bottom: 1px solid var(--border-primary);
56
+ }
57
+ :root[data-theme="shopware"] .mf-item.in { border-color: var(--border-primary); }
58
+ :root[data-theme="shopware"] .mf-text {
59
+ color: var(--fg);
60
+ font-family: var(--display);
61
+ }
62
+ :root[data-theme="shopware"] .mf-text .mf-em { color: var(--accent); }
63
+
64
+ /* ---------------------------------------------------------------------------
65
+ * Punchline
66
+ * ------------------------------------------------------------------------- */
67
+ :root[data-theme="shopware"] .pl-line {
68
+ color: var(--dim);
69
+ font-family: var(--display);
70
+ }
71
+ :root[data-theme="shopware"] .pl-payoff {
72
+ color: var(--accent);
73
+ text-shadow: none;
74
+ font-family: var(--display);
75
+ font-weight: 700;
76
+ letter-spacing: -0.03em;
77
+ }
78
+
79
+ /* ---------------------------------------------------------------------------
80
+ * Definition
81
+ * ------------------------------------------------------------------------- */
82
+ :root[data-theme="shopware"] .df-term {
83
+ color: var(--fg);
84
+ font-family: var(--display);
85
+ font-weight: 700;
86
+ letter-spacing: -0.025em;
87
+ }
88
+ :root[data-theme="shopware"] .df-pos {
89
+ color: var(--dim);
90
+ font-family: var(--display);
91
+ font-style: italic;
92
+ }
93
+ :root[data-theme="shopware"] .df-def {
94
+ color: var(--fg);
95
+ font-family: var(--display);
96
+ }
97
+ :root[data-theme="shopware"] .df-def::before { color: var(--accent); }
98
+ :root[data-theme="shopware"] .df-ety { color: var(--dim); font-family: var(--display); }
99
+ :root[data-theme="shopware"] .df-ex { color: var(--dim); font-family: var(--display); }
100
+ :root[data-theme="shopware"] .df-mark {
101
+ background: var(--accent-soft);
102
+ color: var(--accent);
103
+ border-radius: var(--radius-sm);
104
+ padding: 0 0.2em;
105
+ }
106
+
107
+ /* ---------------------------------------------------------------------------
108
+ * ImageGrid
109
+ * ------------------------------------------------------------------------- */
110
+ :root[data-theme="shopware"] .ig-frame {
111
+ background: var(--bg);
112
+ border: 1px solid var(--border-primary);
113
+ border-radius: var(--radius-md);
114
+ overflow: hidden;
115
+ box-shadow: var(--shadow-sm);
116
+ }
117
+ :root[data-theme="shopware"] .ig-frame::after {
118
+ box-shadow:
119
+ inset 0 0 0 1px rgba(0, 0, 0, 0.04),
120
+ var(--shadow-md);
121
+ }
122
+ :root[data-theme="shopware"] .ig-img { filter: none; }
123
+ :root[data-theme="shopware"] .ig-cap { color: var(--dim); font-family: var(--display); }
124
+
125
+ /* ---------------------------------------------------------------------------
126
+ * Spotlight — focused card pops with --shadow-brand
127
+ * ------------------------------------------------------------------------- */
128
+ :root[data-theme="shopware"] .sp-focus {
129
+ background: var(--bg);
130
+ border: 1px solid var(--accent);
131
+ border-radius: var(--radius-md);
132
+ box-shadow: var(--shadow-brand);
133
+ }
134
+ :root[data-theme="shopware"] .sp-icon {
135
+ color: var(--accent);
136
+ text-shadow: none;
137
+ }
138
+ :root[data-theme="shopware"] .sp-heading {
139
+ color: var(--accent);
140
+ font-family: var(--display);
141
+ font-weight: 600;
142
+ letter-spacing: -0.02em;
143
+ }
144
+ :root[data-theme="shopware"] .sp-body { color: var(--fg); }
145
+ :root[data-theme="shopware"] .sp-ctx-item {
146
+ color: var(--dim);
147
+ font-family: var(--display);
148
+ }
149
+ :root[data-theme="shopware"] .sp-ctx-item:hover { color: var(--fg); }
150
+
151
+ /* ---------------------------------------------------------------------------
152
+ * Marquee — calm brand-accent row
153
+ * ------------------------------------------------------------------------- */
154
+ :root[data-theme="shopware"] .marquee {
155
+ mask-image: linear-gradient(90deg, transparent 0, rgba(0,0,0,1) 6%, rgba(0,0,0,1) 94%, transparent 100%);
156
+ }
157
+ :root[data-theme="shopware"] .mq-item {
158
+ color: var(--fg);
159
+ font-family: var(--display);
160
+ font-weight: 500;
161
+ }
162
+ :root[data-theme="shopware"] .mq-track--b .mq-item {
163
+ color: var(--accent);
164
+ text-shadow: none;
165
+ font-family: var(--display);
166
+ font-weight: 600;
167
+ font-style: normal;
168
+ }
169
+ :root[data-theme="shopware"] .mq-sep { color: var(--border-secondary); }
@@ -0,0 +1,219 @@
1
+ /* Stagecraft — Shopware theme: data-visualization component overrides. */
2
+ @import url('../phosphor/components-data.css');
3
+
4
+ /* ============================================================
5
+ * KPI — white card, subtle shadow, brand-tinted active border
6
+ * ============================================================ */
7
+ :root[data-theme="shopware"] .kpi {
8
+ background: var(--bg);
9
+ border: 1px solid var(--border-primary);
10
+ border-radius: var(--radius-md);
11
+ box-shadow: var(--shadow-sm);
12
+ transition: opacity 700ms ease-out, transform 800ms cubic-bezier(0.16, 1, 0.3, 1),
13
+ border-color 200ms ease, box-shadow 200ms ease;
14
+ }
15
+ :root[data-theme="shopware"] .kpi:hover {
16
+ border-color: var(--accent);
17
+ box-shadow: var(--shadow-md);
18
+ }
19
+ :root[data-theme="shopware"] .kpi.in {
20
+ border-color: color-mix(in srgb, var(--data-color) 45%, var(--border-primary));
21
+ box-shadow: var(--shadow-sm);
22
+ }
23
+ :root[data-theme="shopware"] .kpi-icon { color: var(--data-color, var(--accent)); }
24
+ :root[data-theme="shopware"] .kpi-label { color: var(--dim); font-family: var(--display); }
25
+ :root[data-theme="shopware"] .kpi-num {
26
+ color: var(--data-color, var(--fg));
27
+ text-shadow: none;
28
+ font-family: var(--display);
29
+ font-weight: 600;
30
+ letter-spacing: -0.03em;
31
+ }
32
+ :root[data-theme="shopware"] .kpi-unit { color: var(--dim); }
33
+ :root[data-theme="shopware"] .kpi-change.up .kpi-arrow,
34
+ :root[data-theme="shopware"] .kpi-change.up .kpi-change-num { color: var(--green); }
35
+ :root[data-theme="shopware"] .kpi-change.down .kpi-arrow,
36
+ :root[data-theme="shopware"] .kpi-change.down .kpi-change-num { color: var(--red); }
37
+ :root[data-theme="shopware"] .kpi-change .kpi-change-period { color: var(--dim); }
38
+
39
+ /* ============================================================
40
+ * DonutChart
41
+ * ============================================================ */
42
+ :root[data-theme="shopware"] .donut-arc { filter: none; }
43
+ :root[data-theme="shopware"] .donut-dot { box-shadow: none; }
44
+ :root[data-theme="shopware"] .donut-center { color: var(--fg); font-family: var(--display); font-weight: 600; }
45
+ :root[data-theme="shopware"] .donut-leg-label { color: var(--fg); font-family: var(--display); }
46
+ :root[data-theme="shopware"] .donut-leg-value { color: var(--dim); font-family: var(--display); }
47
+ :root[data-theme="shopware"] .donut-leg-pct { color: var(--accent); font-family: var(--display); font-weight: 600; }
48
+
49
+ /* ============================================================
50
+ * LineChart
51
+ * ============================================================ */
52
+ :root[data-theme="shopware"] .lc-grid {
53
+ stroke: var(--border-primary);
54
+ opacity: 1;
55
+ }
56
+ :root[data-theme="shopware"] .lc-y-label,
57
+ :root[data-theme="shopware"] .lc-x-label {
58
+ font-family: var(--display);
59
+ color: var(--dim);
60
+ }
61
+ :root[data-theme="shopware"] .lc-line { filter: none; }
62
+ :root[data-theme="shopware"] .lc-dot { filter: none; }
63
+ :root[data-theme="shopware"] .lc-dot-leg { box-shadow: none; }
64
+ :root[data-theme="shopware"] .lc-leg-row { color: var(--fg); font-family: var(--display); }
65
+
66
+ /* ============================================================
67
+ * Gauge
68
+ * ============================================================ */
69
+ :root[data-theme="shopware"] .g-fill { filter: none; }
70
+ :root[data-theme="shopware"] .g-tick {
71
+ stroke: var(--border-secondary);
72
+ opacity: 0.8;
73
+ }
74
+ :root[data-theme="shopware"] .g-num {
75
+ text-shadow: none;
76
+ font-family: var(--display);
77
+ font-weight: 600;
78
+ color: var(--data-color, var(--fg));
79
+ }
80
+ :root[data-theme="shopware"] .g-num-max { color: var(--dim); font-family: var(--display); }
81
+ :root[data-theme="shopware"] .g-label { color: var(--dim); font-family: var(--display); }
82
+
83
+ /* ============================================================
84
+ * SparkLine — white card, brand line
85
+ * ============================================================ */
86
+ :root[data-theme="shopware"] .sparkline {
87
+ background: var(--bg);
88
+ border: 1px solid var(--border-primary);
89
+ border-radius: var(--radius-md);
90
+ box-shadow: var(--shadow-sm);
91
+ }
92
+ :root[data-theme="shopware"] .sl-num {
93
+ text-shadow: none;
94
+ font-family: var(--display);
95
+ font-weight: 600;
96
+ color: var(--data-color, var(--fg));
97
+ }
98
+ :root[data-theme="shopware"] .sl-label { color: var(--dim); font-family: var(--display); }
99
+ :root[data-theme="shopware"] .sl-line { filter: none; }
100
+ :root[data-theme="shopware"] .sl-period { color: var(--dim); font-family: var(--display); }
101
+
102
+ /* ============================================================
103
+ * Heatmap — accent shades on light bg.
104
+ * --hm-base resolves to var(--accent) by default; track is border-primary.
105
+ * ============================================================ */
106
+ :root[data-theme="shopware"] .heatmap {
107
+ --hm-base: var(--accent);
108
+ }
109
+ :root[data-theme="shopware"] .hm-cell {
110
+ background: color-mix(in srgb, var(--hm-base) calc(var(--hm-intensity) * 85%), var(--border-primary));
111
+ border: 1px solid color-mix(in srgb, var(--hm-base) calc(var(--hm-intensity) * 30%), var(--border-primary));
112
+ border-radius: var(--radius-sm);
113
+ }
114
+ :root[data-theme="shopware"] .hm-scale-step {
115
+ background: color-mix(in srgb, var(--hm-base) calc(var(--hm-intensity) * 85%), var(--border-primary));
116
+ border: 1px solid color-mix(in srgb, var(--hm-base) calc(var(--hm-intensity) * 30%), var(--border-primary));
117
+ border-radius: var(--radius-sm);
118
+ }
119
+ :root[data-theme="shopware"] .hm-x-label,
120
+ :root[data-theme="shopware"] .hm-y-label,
121
+ :root[data-theme="shopware"] .hm-scale-label { color: var(--dim); font-family: var(--display); }
122
+
123
+ /* ============================================================
124
+ * Roadmap
125
+ * ============================================================ */
126
+ :root[data-theme="shopware"] .rm-month { color: var(--dim); font-family: var(--display); }
127
+ :root[data-theme="shopware"] .rm-lane-label { color: var(--fg); font-family: var(--display); font-weight: 600; }
128
+ :root[data-theme="shopware"] .rm-lane-track {
129
+ background:
130
+ repeating-linear-gradient(
131
+ to right,
132
+ transparent 0,
133
+ transparent calc((100% / var(--rm-cols, 12)) - 1px),
134
+ var(--border-primary) calc((100% / var(--rm-cols, 12)) - 1px),
135
+ var(--border-primary) calc(100% / var(--rm-cols, 12))
136
+ ),
137
+ var(--bg);
138
+ border: 1px solid var(--border-primary);
139
+ border-radius: var(--radius-sm);
140
+ }
141
+ :root[data-theme="shopware"] .rm-bar {
142
+ background: color-mix(in srgb, var(--rm-bar-color) 16%, var(--bg));
143
+ border: 1px solid color-mix(in srgb, var(--rm-bar-color) 60%, var(--border-primary));
144
+ box-shadow: inset 3px 0 0 var(--rm-bar-color);
145
+ border-radius: var(--radius-sm);
146
+ }
147
+ :root[data-theme="shopware"] .rm-bar-label { color: var(--fg); font-family: var(--display); }
148
+
149
+ /* ============================================================
150
+ * SWOT — soft tints, no glow letter
151
+ * ============================================================ */
152
+ :root[data-theme="shopware"] .swot {
153
+ background: var(--border-primary);
154
+ border: 1px solid var(--border-primary);
155
+ border-radius: var(--radius-md);
156
+ overflow: hidden;
157
+ }
158
+ :root[data-theme="shopware"] .swot-cell { background: var(--bg); }
159
+ :root[data-theme="shopware"] .swot-cell.in {
160
+ background: color-mix(in srgb, var(--swot-color) 6%, var(--bg));
161
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--swot-color) 55%, var(--border-primary));
162
+ }
163
+ :root[data-theme="shopware"] .swot-letter {
164
+ text-shadow: none;
165
+ color: var(--swot-color, var(--accent));
166
+ font-family: var(--display);
167
+ font-weight: 600;
168
+ }
169
+ :root[data-theme="shopware"] .swot-title { color: var(--fg); font-family: var(--display); font-weight: 600; }
170
+
171
+ /* ============================================================
172
+ * CodeBlock — monospaced; file-header tab on elevated grey
173
+ * ============================================================ */
174
+ :root[data-theme="shopware"] .codeblock {
175
+ background: var(--bg);
176
+ border: 1px solid var(--border-primary);
177
+ border-radius: var(--radius-md);
178
+ box-shadow: var(--shadow-sm);
179
+ font-family: var(--mono);
180
+ }
181
+ :root[data-theme="shopware"] .cb-head {
182
+ background: var(--bg-elevated);
183
+ border-bottom: 1px solid var(--border-primary);
184
+ color: var(--dim);
185
+ font-family: var(--mono);
186
+ }
187
+ :root[data-theme="shopware"] .cb-line--highlight {
188
+ background: var(--accent-soft);
189
+ box-shadow: inset 2px 0 0 var(--accent);
190
+ }
191
+
192
+ /* ============================================================
193
+ * CodeDiff — monospaced; soft semantic line backgrounds
194
+ * ============================================================ */
195
+ :root[data-theme="shopware"] .codediff {
196
+ background: var(--bg);
197
+ border: 1px solid var(--border-primary);
198
+ border-radius: var(--radius-md);
199
+ box-shadow: var(--shadow-sm);
200
+ font-family: var(--mono);
201
+ }
202
+ :root[data-theme="shopware"] .cd-head {
203
+ background: var(--bg-elevated);
204
+ border-bottom: 1px solid var(--border-primary);
205
+ color: var(--dim);
206
+ font-family: var(--mono);
207
+ }
208
+ :root[data-theme="shopware"] .cd-line--add {
209
+ background: var(--green-soft);
210
+ }
211
+ :root[data-theme="shopware"] .cd-line--add .cd-text {
212
+ color: color-mix(in srgb, var(--green) 50%, var(--fg));
213
+ }
214
+ :root[data-theme="shopware"] .cd-line--remove {
215
+ background: var(--red-soft);
216
+ }
217
+ :root[data-theme="shopware"] .cd-line--remove .cd-text {
218
+ color: color-mix(in srgb, var(--red) 45%, var(--fg));
219
+ }
@@ -0,0 +1,129 @@
1
+ /* Stagecraft — Shopware theme: diagram component overrides. */
2
+ @import url('../phosphor/components-diagram.css');
3
+
4
+ /* ===========================================================================
5
+ * Pillars — icons in brand, white tile with subtle hover lift
6
+ * ===========================================================================*/
7
+ :root[data-theme="shopware"] .pillars-intro {
8
+ font-family: var(--display);
9
+ color: var(--dim);
10
+ }
11
+ :root[data-theme="shopware"] .pillar {
12
+ background: var(--bg);
13
+ border: 1px solid var(--border-primary);
14
+ border-radius: var(--radius-md);
15
+ box-shadow: var(--shadow-sm);
16
+ transition: opacity 700ms ease-out, transform 800ms cubic-bezier(0.16, 1, 0.3, 1),
17
+ border-color 200ms ease, box-shadow 200ms ease;
18
+ }
19
+ :root[data-theme="shopware"] .pillar:hover {
20
+ border-color: var(--accent);
21
+ box-shadow: var(--shadow-md);
22
+ transform: translateY(-2px);
23
+ }
24
+ :root[data-theme="shopware"] .pillar:hover .pillar-icon {
25
+ animation: none;
26
+ filter: none;
27
+ }
28
+ :root[data-theme="shopware"] .pillar-icon { color: var(--accent); }
29
+ :root[data-theme="shopware"] .pillar.pc-accent .pillar-icon { color: var(--accent); }
30
+ :root[data-theme="shopware"] .pillar.pc-blue .pillar-icon { color: var(--blue); }
31
+ :root[data-theme="shopware"] .pillar.pc-amber .pillar-icon { color: var(--amber); }
32
+ :root[data-theme="shopware"] .pillar.pc-red .pillar-icon { color: var(--red); }
33
+ :root[data-theme="shopware"] .pillar.pc-dim .pillar-icon { color: var(--dim); }
34
+ :root[data-theme="shopware"] .pillar.pc-fg .pillar-icon { color: var(--fg); }
35
+ :root[data-theme="shopware"] .pillar-heading {
36
+ color: var(--fg);
37
+ font-family: var(--display);
38
+ font-weight: 600;
39
+ letter-spacing: -0.015em;
40
+ }
41
+ :root[data-theme="shopware"] .pillar-body { color: var(--dim); }
42
+
43
+ /* ===========================================================================
44
+ * Timeline
45
+ * ===========================================================================*/
46
+ :root[data-theme="shopware"] .tl-dot {
47
+ background: var(--bg);
48
+ border: 1px solid var(--border-secondary);
49
+ box-shadow: var(--shadow-sm);
50
+ }
51
+ :root[data-theme="shopware"] .tl-event.active .tl-dot {
52
+ background: var(--accent);
53
+ border-color: var(--accent);
54
+ box-shadow: 0 0 0 4px var(--accent-soft);
55
+ }
56
+ :root[data-theme="shopware"] .tl-event.tc-accent.active .tl-dot { background: var(--accent); border-color: var(--accent); box-shadow: 0 0 0 4px var(--accent-soft); }
57
+ :root[data-theme="shopware"] .tl-event.tc-blue.active .tl-dot { background: var(--blue); border-color: var(--blue); box-shadow: 0 0 0 4px var(--blue-soft); }
58
+ :root[data-theme="shopware"] .tl-event.tc-amber.active .tl-dot { background: var(--amber); border-color: var(--amber); box-shadow: 0 0 0 4px var(--amber-soft); }
59
+ :root[data-theme="shopware"] .tl-event.tc-red.active .tl-dot { background: var(--red); border-color: var(--red); box-shadow: 0 0 0 4px var(--red-soft); }
60
+ :root[data-theme="shopware"] .tl-icon { color: #ffffff; }
61
+ :root[data-theme="shopware"] .tl-event:not(.active) .tl-icon { color: var(--dim); }
62
+ :root[data-theme="shopware"] .tl-date { color: var(--dim); font-family: var(--display); }
63
+ :root[data-theme="shopware"] .tl-heading { color: var(--fg); font-family: var(--display); font-weight: 600; }
64
+ :root[data-theme="shopware"] .tl-body { color: var(--dim); }
65
+ :root[data-theme="shopware"] .timeline-track { background: var(--border-primary); }
66
+
67
+ /* ===========================================================================
68
+ * Pyramid — tinted layers, brand border on active
69
+ * ===========================================================================*/
70
+ :root[data-theme="shopware"] .pyr-shape {
71
+ background: var(--bg);
72
+ border: 1px solid var(--border-primary);
73
+ border-radius: var(--radius-sm);
74
+ box-shadow: var(--shadow-sm);
75
+ }
76
+ :root[data-theme="shopware"] .pyr-layer.pyc-accent .pyr-shape { background: var(--accent-soft); border-color: var(--accent); }
77
+ :root[data-theme="shopware"] .pyr-layer.pyc-accent .pyr-label { color: var(--accent); }
78
+ :root[data-theme="shopware"] .pyr-layer.pyc-blue .pyr-shape { background: var(--blue-soft); border-color: var(--blue); }
79
+ :root[data-theme="shopware"] .pyr-layer.pyc-blue .pyr-label { color: var(--blue); }
80
+ :root[data-theme="shopware"] .pyr-layer.pyc-amber .pyr-shape { background: var(--amber-soft); border-color: var(--amber); }
81
+ :root[data-theme="shopware"] .pyr-layer.pyc-amber .pyr-label { color: var(--amber); }
82
+ :root[data-theme="shopware"] .pyr-layer.pyc-red .pyr-shape { background: var(--red-soft); border-color: var(--red); }
83
+ :root[data-theme="shopware"] .pyr-layer.pyc-red .pyr-label { color: var(--red); }
84
+ :root[data-theme="shopware"] .pyr-layer.pyc-dim .pyr-shape { background: var(--bg-elevated); border-color: var(--border-secondary); }
85
+ :root[data-theme="shopware"] .pyr-layer.pyc-dim .pyr-label { color: var(--dim); }
86
+ :root[data-theme="shopware"] .pyr-label { font-family: var(--display); font-weight: 600; }
87
+ :root[data-theme="shopware"] .pyr-body { color: var(--dim); }
88
+
89
+ /* ===========================================================================
90
+ * Cycle — clean ring + white circle items with colored borders
91
+ * ===========================================================================*/
92
+ :root[data-theme="shopware"] .cyc-ring {
93
+ stroke: var(--border-primary);
94
+ opacity: 1;
95
+ }
96
+ :root[data-theme="shopware"] .cyc-arc {
97
+ stroke: var(--accent);
98
+ opacity: 0;
99
+ }
100
+ :root[data-theme="shopware"] .cyc-arc.in { opacity: 0.9; }
101
+ :root[data-theme="shopware"] .cyc-arrow { color: var(--accent); }
102
+ :root[data-theme="shopware"] .cyc-item {
103
+ background: var(--bg);
104
+ border: 1px solid var(--border-primary);
105
+ box-shadow: var(--shadow-sm);
106
+ }
107
+ :root[data-theme="shopware"] .cyc-item.cyc-accent { border-color: var(--accent); }
108
+ :root[data-theme="shopware"] .cyc-item.cyc-accent .cyc-icon { color: var(--accent); }
109
+ :root[data-theme="shopware"] .cyc-item.cyc-blue { border-color: var(--blue); }
110
+ :root[data-theme="shopware"] .cyc-item.cyc-blue .cyc-icon { color: var(--blue); }
111
+ :root[data-theme="shopware"] .cyc-item.cyc-amber { border-color: var(--amber); }
112
+ :root[data-theme="shopware"] .cyc-item.cyc-amber .cyc-icon { color: var(--amber); }
113
+ :root[data-theme="shopware"] .cyc-item.cyc-red { border-color: var(--red); }
114
+ :root[data-theme="shopware"] .cyc-item.cyc-red .cyc-icon { color: var(--red); }
115
+ :root[data-theme="shopware"] .cyc-label { color: var(--fg); font-family: var(--display); font-weight: 500; }
116
+
117
+ /* ===========================================================================
118
+ * Funnel — soft tinted stages
119
+ * ===========================================================================*/
120
+ :root[data-theme="shopware"] .fn-shape {
121
+ background: var(--bg);
122
+ border-top: 1px solid var(--border-primary);
123
+ border-bottom: 1px solid var(--border-primary);
124
+ }
125
+ :root[data-theme="shopware"] .fn-stage.fnc-accent .fn-shape { background: var(--accent-soft); border-color: var(--accent); }
126
+ :root[data-theme="shopware"] .fn-stage.fnc-blue .fn-shape { background: var(--blue-soft); border-color: var(--blue); }
127
+ :root[data-theme="shopware"] .fn-stage.fnc-amber .fn-shape { background: var(--amber-soft); border-color: var(--amber); }
128
+ :root[data-theme="shopware"] .fn-stage.fnc-red .fn-shape { background: var(--red-soft); border-color: var(--red); }
129
+ :root[data-theme="shopware"] .fn-stage.fnc-dim .fn-shape { background: var(--bg-elevated); border-color: var(--border-secondary); }