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,87 @@
1
+ @import url('../phosphor/components-layout.css');
2
+
3
+ /* =============================================================================
4
+ * Neon — layout components
5
+ * Magenta accents glow. Cards get magenta-tinted borders against dark bg.
6
+ * Body text stays glow-free for readability.
7
+ * ===========================================================================*/
8
+
9
+ :root[data-theme="neon"] {
10
+ --neon-card-border: color-mix(in srgb, var(--accent) 30%, var(--dim-2));
11
+ --neon-card-border-blue: color-mix(in srgb, var(--blue) 30%, var(--dim-2));
12
+ }
13
+
14
+ /* ---------- ImageText ---------- */
15
+ :root[data-theme="neon"] .it-img-frame {
16
+ box-shadow:
17
+ inset 0 0 0 1px var(--neon-card-border),
18
+ 0 0 0 1px var(--neon-card-border),
19
+ 0 30px 60px -20px rgba(0,0,0,0.8),
20
+ 0 0 80px -10px var(--accent-glow);
21
+ }
22
+
23
+ /* ---------- FullImage ---------- */
24
+ :root[data-theme="neon"] .fi-headline {
25
+ text-shadow:
26
+ 0 2px 30px rgba(0,0,0,0.8),
27
+ 0 0 18px color-mix(in srgb, var(--accent) 35%, transparent);
28
+ }
29
+
30
+ /* ---------- Quote ---------- */
31
+ :root[data-theme="neon"] .q-mark {
32
+ text-shadow:
33
+ 0 0 28px var(--accent-glow),
34
+ 0 0 60px color-mix(in srgb, var(--accent) 35%, transparent);
35
+ }
36
+ :root[data-theme="neon"] .q-text { /* body text stays clean */ }
37
+
38
+ /* ---------- BigNumber ---------- */
39
+ :root[data-theme="neon"] .bn-num {
40
+ text-shadow:
41
+ 0 0 24px var(--accent-glow),
42
+ 0 0 70px color-mix(in srgb, var(--accent) 40%, transparent);
43
+ }
44
+
45
+ /* ---------- Stats ---------- */
46
+ :root[data-theme="neon"] .stat {
47
+ border-color: var(--neon-card-border);
48
+ background:
49
+ linear-gradient(135deg, color-mix(in srgb, var(--accent) 4%, transparent), transparent 60%),
50
+ var(--bg-elevated);
51
+ }
52
+ :root[data-theme="neon"] .stat--accent::before {
53
+ box-shadow: 0 0 18px var(--accent-glow);
54
+ }
55
+ :root[data-theme="neon"] .stat--blue { border-color: var(--neon-card-border-blue); }
56
+ :root[data-theme="neon"] .stat--blue::before {
57
+ box-shadow: 0 0 16px color-mix(in srgb, var(--blue) 60%, transparent);
58
+ }
59
+ :root[data-theme="neon"] .stat--accent .stat-num {
60
+ text-shadow: 0 0 28px var(--accent-glow);
61
+ }
62
+ :root[data-theme="neon"] .stat--blue .stat-num {
63
+ text-shadow: 0 0 22px color-mix(in srgb, var(--blue) 60%, transparent);
64
+ }
65
+
66
+ /* ---------- Bento ---------- */
67
+ :root[data-theme="neon"] .bento-cell {
68
+ border-color: var(--neon-card-border);
69
+ }
70
+ :root[data-theme="neon"] .bento-cell--accent {
71
+ border-color: var(--accent);
72
+ box-shadow:
73
+ 0 0 0 1px color-mix(in srgb, var(--accent) 50%, transparent),
74
+ 0 0 40px -8px var(--accent-glow);
75
+ }
76
+ :root[data-theme="neon"] .bento-cell--accent .bento-heading {
77
+ text-shadow: 0 0 16px var(--accent-glow);
78
+ }
79
+ :root[data-theme="neon"] .bento-cell--blue {
80
+ border-color: var(--blue);
81
+ box-shadow:
82
+ 0 0 0 1px color-mix(in srgb, var(--blue) 45%, transparent),
83
+ 0 0 36px -8px color-mix(in srgb, var(--blue) 55%, transparent);
84
+ }
85
+ :root[data-theme="neon"] .bento-cell--blue .bento-heading {
86
+ text-shadow: 0 0 14px color-mix(in srgb, var(--blue) 55%, transparent);
87
+ }
@@ -0,0 +1,87 @@
1
+ /* Pull in phosphor's core component CSS (KineticText, SectionCard, etc.) */
2
+ /* Note: phosphor's components.css also @imports the 6 family files, but the
3
+ neon family overrides below come AFTER, so they win the cascade. */
4
+ @import url('../phosphor/components.css');
5
+
6
+ /* Neon — Layer-2 component overrides (per-family).
7
+ Each file @imports its phosphor counterpart, but browsers dedupe identical
8
+ @import URLs, so families are not loaded twice. */
9
+ @import url('./components-layout.css');
10
+ @import url('./components-diagram.css');
11
+ @import url('./components-chart.css');
12
+ @import url('./components-data.css');
13
+ @import url('./components-business.css');
14
+ @import url('./components-content.css');
15
+
16
+ /* -----------------------------------------------------------------------------
17
+ * Neon glow on core (KineticText / SectionCard / Counter / ShiftArrow / Compare)
18
+ * Body text stays glow-free; only accent lines, numbers, and bullets light up.
19
+ * --------------------------------------------------------------------------- */
20
+
21
+ /* KineticText */
22
+ :root[data-theme="neon"] .kinetic .line.accent {
23
+ text-shadow:
24
+ 0 0 14px var(--accent-glow),
25
+ 0 0 36px color-mix(in srgb, var(--accent) 30%, transparent);
26
+ }
27
+ :root[data-theme="neon"] .kinetic .line.blue {
28
+ text-shadow:
29
+ 0 0 14px color-mix(in srgb, var(--blue) 65%, transparent),
30
+ 0 0 32px color-mix(in srgb, var(--blue) 28%, transparent);
31
+ }
32
+ :root[data-theme="neon"] .kinetic .line.amber {
33
+ text-shadow:
34
+ 0 0 12px color-mix(in srgb, var(--amber) 50%, transparent);
35
+ }
36
+
37
+ /* SectionCard */
38
+ :root[data-theme="neon"] .sec-title .accent {
39
+ text-shadow:
40
+ 0 0 22px var(--accent-glow),
41
+ 0 0 55px color-mix(in srgb, var(--accent) 30%, transparent);
42
+ }
43
+ :root[data-theme="neon"] .sec-line {
44
+ background: linear-gradient(90deg, transparent, var(--accent), transparent);
45
+ box-shadow: 0 0 8px var(--accent-glow);
46
+ }
47
+
48
+ /* Counter */
49
+ :root[data-theme="neon"] .counter-num.accent {
50
+ text-shadow:
51
+ 0 0 28px var(--accent-glow),
52
+ 0 0 70px color-mix(in srgb, var(--accent) 30%, transparent);
53
+ }
54
+ :root[data-theme="neon"] .counter-num.blue {
55
+ text-shadow:
56
+ 0 0 26px color-mix(in srgb, var(--blue) 65%, transparent),
57
+ 0 0 60px color-mix(in srgb, var(--blue) 28%, transparent);
58
+ }
59
+ :root[data-theme="neon"] .counter-label.accent .dot {
60
+ box-shadow: 0 0 10px var(--accent-glow);
61
+ }
62
+ :root[data-theme="neon"] .counter-label.blue .dot {
63
+ box-shadow: 0 0 10px color-mix(in srgb, var(--blue) 70%, transparent);
64
+ }
65
+
66
+ /* ShiftArrow */
67
+ :root[data-theme="neon"] .shift-to {
68
+ text-shadow:
69
+ 0 0 20px var(--accent-glow),
70
+ 0 0 50px color-mix(in srgb, var(--accent) 30%, transparent);
71
+ }
72
+ :root[data-theme="neon"] .shift-arrow {
73
+ text-shadow: 0 0 18px var(--accent-glow);
74
+ }
75
+
76
+ /* Compare */
77
+ :root[data-theme="neon"] .compare-h.new::before {
78
+ text-shadow: 0 0 12px var(--accent-glow);
79
+ }
80
+ :root[data-theme="neon"] .compare-list.accent li::before {
81
+ text-shadow: 0 0 10px var(--accent-glow);
82
+ }
83
+
84
+ /* ActivityList — accent words within names */
85
+ :root[data-theme="neon"] .activity .name .accent {
86
+ text-shadow: 0 0 14px var(--accent-glow);
87
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "neon",
3
+ "displayName": "Neon",
4
+ "description": "Cyberpunk, magenta + cyan, heavy glow.",
5
+ "fonts": [
6
+ "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700&family=JetBrains+Mono:wght@400;500&display=swap",
7
+ "https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0&display=swap"
8
+ ],
9
+ "stylesheets": [
10
+ "tokens.css",
11
+ "base.css",
12
+ "components.css",
13
+ "components-layout.css",
14
+ "components-diagram.css",
15
+ "components-chart.css",
16
+ "components-data.css",
17
+ "components-business.css",
18
+ "components-content.css",
19
+ "transitions.css"
20
+ ]
21
+ }
@@ -0,0 +1,17 @@
1
+ /* Stagecraft — Neon theme tokens */
2
+ :root[data-theme="neon"] {
3
+ --bg: #060214;
4
+ --bg-elevated: #0F0726;
5
+ --fg: #F0E9FF;
6
+ --dim: #6A5D9C;
7
+ --dim-2: #261A4E;
8
+ --accent: #FF2DE6; /* magenta */
9
+ --accent-soft: rgba(255, 45, 230, 0.15);
10
+ --accent-glow: rgba(255, 45, 230, 0.6);
11
+ --blue: #00E0FF; /* cyan */
12
+ --amber: #FFE94A;
13
+ --red: #FF4F77;
14
+ --mono: 'JetBrains Mono', ui-monospace, monospace;
15
+ --display: 'Space Grotesk', system-ui, sans-serif;
16
+ --body: 'Space Grotesk', system-ui, sans-serif;
17
+ }
@@ -0,0 +1,13 @@
1
+ @import url('../phosphor/transitions.css');
2
+
3
+ /* Neon: pinker glitch with cyan ghosting */
4
+ :root[data-theme="neon"] .tx-glitch-overlay {
5
+ background:
6
+ repeating-linear-gradient(
7
+ 0deg,
8
+ rgba(255, 45, 230, 0.08) 0,
9
+ rgba(255, 45, 230, 0.08) 1px,
10
+ transparent 1px,
11
+ transparent 3px
12
+ );
13
+ }
@@ -0,0 +1,9 @@
1
+ /* Paper theme — base styles. Token-driven, so most rules inherit from phosphor/base.css
2
+ * (you should also link that file). This file overrides anything paper-specific. */
3
+
4
+ @import url('../phosphor/base.css');
5
+
6
+ :root[data-theme="paper"] body::before,
7
+ :root[data-theme="paper"] body::after { display: none; }
8
+
9
+ :root[data-theme="paper"] .caret { animation: none; background: var(--accent); }
@@ -0,0 +1,196 @@
1
+ /* Stagecraft — Paper theme: business / marketing component overrides. */
2
+ @import url('../phosphor/components-business.css');
3
+
4
+ /* ---------------------------------------------------------------------------
5
+ * Pricing
6
+ * ------------------------------------------------------------------------- */
7
+ :root[data-theme="paper"] .pricing-tier {
8
+ background: #FFFFFF;
9
+ border: 1px solid var(--dim-2);
10
+ }
11
+ :root[data-theme="paper"] .pricing-tier--featured {
12
+ border-color: var(--accent);
13
+ box-shadow: 0 0 0 1px var(--accent);
14
+ }
15
+ :root[data-theme="paper"] .pricing-badge {
16
+ background: var(--accent);
17
+ color: #FFFFFF;
18
+ box-shadow: none;
19
+ }
20
+ :root[data-theme="paper"] .pricing-tier--featured .pricing-price {
21
+ color: var(--accent);
22
+ text-shadow: none;
23
+ }
24
+
25
+ /* ---------------------------------------------------------------------------
26
+ * Testimonial
27
+ * ------------------------------------------------------------------------- */
28
+ :root[data-theme="paper"] .testimonial-photo-wrap {
29
+ background: #FFFFFF;
30
+ border: 1px solid var(--dim-2);
31
+ box-shadow: 0 8px 24px -12px rgba(31, 79, 135, 0.25);
32
+ }
33
+ :root[data-theme="paper"] .testimonial-mark {
34
+ color: var(--accent);
35
+ text-shadow: none;
36
+ font-family: var(--mono); /* serif quote mark */
37
+ }
38
+ :root[data-theme="paper"] .testimonial-quote {
39
+ font-family: var(--mono); /* serif italic for editorial body */
40
+ }
41
+
42
+ /* ---------------------------------------------------------------------------
43
+ * TeamGrid
44
+ * ------------------------------------------------------------------------- */
45
+ :root[data-theme="paper"] .team-card {
46
+ background: #FFFFFF;
47
+ border: 1px solid var(--dim-2);
48
+ }
49
+ :root[data-theme="paper"] .team-photo-wrap {
50
+ background: #F4F4EF;
51
+ border: 1px solid var(--dim-2);
52
+ }
53
+
54
+ /* ---------------------------------------------------------------------------
55
+ * Agenda
56
+ * ------------------------------------------------------------------------- */
57
+ :root[data-theme="paper"] .agenda-dot {
58
+ background: #FFFFFF;
59
+ border: 1px solid var(--accent);
60
+ box-shadow: none;
61
+ }
62
+
63
+ /* ---------------------------------------------------------------------------
64
+ * Checklist
65
+ * ------------------------------------------------------------------------- */
66
+ :root[data-theme="paper"] .checklist-item {
67
+ background: #FFFFFF;
68
+ border: 1px solid var(--dim-2);
69
+ }
70
+ :root[data-theme="paper"] .checklist-item.is-done {
71
+ border-color: color-mix(in srgb, var(--accent) 35%, var(--dim-2));
72
+ }
73
+ :root[data-theme="paper"] .checklist-item.is-done .checklist-box {
74
+ color: var(--accent);
75
+ text-shadow: none;
76
+ }
77
+
78
+ /* ---------------------------------------------------------------------------
79
+ * Steps
80
+ * ------------------------------------------------------------------------- */
81
+ :root[data-theme="paper"] .step-card {
82
+ background: #FFFFFF;
83
+ border: 1px solid var(--dim-2);
84
+ }
85
+ :root[data-theme="paper"] .step-numeral {
86
+ text-shadow: none;
87
+ font-family: var(--mono); /* serif numeral for editorial feel */
88
+ }
89
+
90
+ /* ---------------------------------------------------------------------------
91
+ * CTA
92
+ * ------------------------------------------------------------------------- */
93
+ :root[data-theme="paper"] .cta {
94
+ background: #FFFFFF;
95
+ border: 1px solid var(--dim-2);
96
+ }
97
+ :root[data-theme="paper"] .cta--accent {
98
+ border-color: var(--accent);
99
+ box-shadow: 0 0 0 1px var(--accent);
100
+ background:
101
+ linear-gradient(135deg, var(--accent-soft), transparent 55%),
102
+ #FFFFFF;
103
+ }
104
+ :root[data-theme="paper"] .cta-button {
105
+ border: 1px solid var(--accent);
106
+ color: var(--accent);
107
+ background: transparent;
108
+ }
109
+ :root[data-theme="paper"] .cta--accent .cta-button {
110
+ background: var(--accent);
111
+ color: #FFFFFF;
112
+ box-shadow: none;
113
+ }
114
+
115
+ /* ---------------------------------------------------------------------------
116
+ * Callout
117
+ * ------------------------------------------------------------------------- */
118
+ :root[data-theme="paper"] .callout {
119
+ background: #FFFFFF;
120
+ border-left: 4px solid var(--dim-2);
121
+ }
122
+ :root[data-theme="paper"] .callout--info {
123
+ background: linear-gradient(90deg, rgba(31, 79, 135, 0.06), transparent 40%), #FFFFFF;
124
+ border-left-color: var(--blue);
125
+ }
126
+ :root[data-theme="paper"] .callout--tip {
127
+ background: linear-gradient(90deg, var(--accent-soft), transparent 45%), #FFFFFF;
128
+ border-left-color: var(--accent);
129
+ }
130
+ :root[data-theme="paper"] .callout--warning {
131
+ background: linear-gradient(90deg, rgba(181, 127, 44, 0.08), transparent 40%), #FFFFFF;
132
+ border-left-color: var(--amber);
133
+ }
134
+ :root[data-theme="paper"] .callout--danger {
135
+ background: linear-gradient(90deg, rgba(155, 44, 44, 0.07), transparent 40%), #FFFFFF;
136
+ border-left-color: var(--red);
137
+ }
138
+ :root[data-theme="paper"] .callout--success {
139
+ background: linear-gradient(90deg, var(--accent-soft), transparent 50%), #FFFFFF;
140
+ border-left-color: var(--accent);
141
+ }
142
+ :root[data-theme="paper"] .callout--success .callout-icon {
143
+ text-shadow: none;
144
+ }
145
+
146
+ /* ---------------------------------------------------------------------------
147
+ * Tip
148
+ * ------------------------------------------------------------------------- */
149
+ :root[data-theme="paper"] .tip {
150
+ background: #FFFFFF;
151
+ border: 1px solid var(--dim-2);
152
+ }
153
+ :root[data-theme="paper"] .tip--info { border-color: rgba(31, 79, 135, 0.4); }
154
+ :root[data-theme="paper"] .tip--tip { border-color: rgba(31, 79, 135, 0.4); }
155
+ :root[data-theme="paper"] .tip--warning { border-color: rgba(181, 127, 44, 0.45); }
156
+ :root[data-theme="paper"] .tip--danger { border-color: rgba(155, 44, 44, 0.45); }
157
+ :root[data-theme="paper"] .tip--success {
158
+ border-color: var(--accent);
159
+ background: linear-gradient(135deg, var(--accent-soft), transparent 60%), #FFFFFF;
160
+ }
161
+ :root[data-theme="paper"] .tip--success .tip-icon {
162
+ text-shadow: none;
163
+ }
164
+
165
+ /* ---------------------------------------------------------------------------
166
+ * BeforeAfter
167
+ * ------------------------------------------------------------------------- */
168
+ :root[data-theme="paper"] .ba-col {
169
+ background: #FFFFFF;
170
+ border: 1px solid var(--dim-2);
171
+ }
172
+ :root[data-theme="paper"] .ba-col.ba-after {
173
+ border-color: color-mix(in srgb, var(--accent) 40%, var(--dim-2));
174
+ }
175
+ :root[data-theme="paper"] .ba-arrow {
176
+ text-shadow: none;
177
+ }
178
+
179
+ :root[data-theme="paper"] .before-after--image {
180
+ background: #FFFFFF;
181
+ border: 1px solid var(--dim-2);
182
+ }
183
+ :root[data-theme="paper"] .ba-tag {
184
+ background: rgba(255, 255, 255, 0.85);
185
+ border: 1px solid var(--dim-2);
186
+ color: var(--fg);
187
+ }
188
+ :root[data-theme="paper"] .ba-tag--accent {
189
+ color: var(--accent);
190
+ border-color: var(--accent);
191
+ box-shadow: none;
192
+ }
193
+ :root[data-theme="paper"] .before-after--image .ba-divider {
194
+ background: var(--accent);
195
+ box-shadow: none;
196
+ }
@@ -0,0 +1,74 @@
1
+ /* Stagecraft — Paper theme: chart/relationship component overrides. */
2
+ @import url('../phosphor/components-chart.css');
3
+
4
+ /* ============================================================
5
+ * Matrix2x2
6
+ * ============================================================ */
7
+ :root[data-theme="paper"] .matrix2x2 .grid {
8
+ background: var(--dim-2);
9
+ border: 1px solid var(--dim-2);
10
+ }
11
+ :root[data-theme="paper"] .matrix2x2 .quadrant {
12
+ background: #FFFFFF;
13
+ filter: saturate(0.7);
14
+ }
15
+ :root[data-theme="paper"] .matrix2x2 .quadrant.active {
16
+ background: color-mix(in srgb, var(--q-color, var(--accent)) 8%, #FFFFFF);
17
+ box-shadow: inset 0 0 0 1px var(--q-color, var(--accent));
18
+ }
19
+
20
+ /* ============================================================
21
+ * BarChart
22
+ * ============================================================ */
23
+ :root[data-theme="paper"] .barchart .bar-track {
24
+ background: var(--dim-2);
25
+ }
26
+ :root[data-theme="paper"] .barchart .bar-fill {
27
+ /* drop glow */
28
+ box-shadow: none;
29
+ }
30
+
31
+ /* ============================================================
32
+ * Progress
33
+ * ============================================================ */
34
+ :root[data-theme="paper"] .progress-track {
35
+ background: var(--dim-2);
36
+ }
37
+ :root[data-theme="paper"] .progress-fill {
38
+ box-shadow: none;
39
+ }
40
+
41
+ /* ============================================================
42
+ * ProcessFlow
43
+ * ============================================================ */
44
+ :root[data-theme="paper"] .processflow {
45
+ --pf-card-bg: #FFFFFF;
46
+ --pf-card-border: var(--dim-2);
47
+ }
48
+ :root[data-theme="paper"] .processflow .pf-step {
49
+ background: #FFFFFF;
50
+ border: 1px solid var(--dim-2);
51
+ }
52
+ :root[data-theme="paper"] .processflow .pf-arrow.pulse {
53
+ /* dampen pulse: no glow shadow */
54
+ animation: pf-pulse-paper 900ms ease-out;
55
+ }
56
+ @keyframes pf-pulse-paper {
57
+ 0% { transform: scale(1); }
58
+ 40% { transform: scale(1.18); }
59
+ 100% { transform: scale(1); }
60
+ }
61
+
62
+ /* ============================================================
63
+ * Venn — fills already use --accent / --blue etc.; just brighten labels
64
+ * ============================================================ */
65
+ :root[data-theme="paper"] .venn .v-circle {
66
+ fill-opacity: 0.14;
67
+ stroke-width: 1.5;
68
+ }
69
+ :root[data-theme="paper"] .venn .v-label.set .name {
70
+ background: #FFFFFF;
71
+ }
72
+ :root[data-theme="paper"] .venn .v-label.overlap > span {
73
+ background: rgba(255, 255, 255, 0.85);
74
+ }
@@ -0,0 +1,108 @@
1
+ /* Stagecraft — Paper theme: content/typography component overrides. */
2
+ @import url('../phosphor/components-content.css');
3
+
4
+ /* ---------------------------------------------------------------------------
5
+ * Statement — no glow on emphasized words
6
+ * ------------------------------------------------------------------------- */
7
+ :root[data-theme="paper"] .statement .st-em {
8
+ color: var(--accent);
9
+ text-shadow: none;
10
+ }
11
+ :root[data-theme="paper"] .statement .st-em--amber { color: var(--amber); text-shadow: none; }
12
+ :root[data-theme="paper"] .statement .st-em--blue { color: var(--blue); text-shadow: none; }
13
+
14
+ /* ---------------------------------------------------------------------------
15
+ * QandA
16
+ * ------------------------------------------------------------------------- */
17
+ :root[data-theme="paper"] .qa-q {
18
+ color: var(--amber);
19
+ font-family: var(--mono); /* serif italic question */
20
+ }
21
+ :root[data-theme="paper"] .qa-a {
22
+ color: var(--accent);
23
+ text-shadow: none;
24
+ }
25
+
26
+ /* ---------------------------------------------------------------------------
27
+ * Manifesto
28
+ * ------------------------------------------------------------------------- */
29
+ :root[data-theme="paper"] .mf-num {
30
+ color: var(--accent);
31
+ text-shadow: none;
32
+ font-family: var(--mono); /* serif numeral */
33
+ }
34
+ :root[data-theme="paper"] .mf-item {
35
+ border-bottom: 1px solid var(--dim-2);
36
+ }
37
+
38
+ /* ---------------------------------------------------------------------------
39
+ * Punchline
40
+ * ------------------------------------------------------------------------- */
41
+ :root[data-theme="paper"] .pl-payoff {
42
+ color: var(--accent);
43
+ text-shadow: none;
44
+ }
45
+
46
+ /* ---------------------------------------------------------------------------
47
+ * Definition — feels academic already; just polish
48
+ * ------------------------------------------------------------------------- */
49
+ :root[data-theme="paper"] .df-term {
50
+ font-family: var(--mono); /* serif headword */
51
+ }
52
+ :root[data-theme="paper"] .df-pos {
53
+ font-family: var(--mono); /* italic serif pos */
54
+ }
55
+ :root[data-theme="paper"] .df-def::before {
56
+ color: var(--accent);
57
+ }
58
+ :root[data-theme="paper"] .df-mark {
59
+ background: var(--accent-soft);
60
+ color: var(--accent);
61
+ }
62
+
63
+ /* ---------------------------------------------------------------------------
64
+ * ImageGrid
65
+ * ------------------------------------------------------------------------- */
66
+ :root[data-theme="paper"] .ig-frame {
67
+ background: #FFFFFF;
68
+ border: 1px solid var(--dim-2);
69
+ }
70
+ :root[data-theme="paper"] .ig-frame::after {
71
+ /* drop the dark inner cast; keep just a hint of paper drop shadow */
72
+ box-shadow:
73
+ inset 0 0 0 1px rgba(0, 0, 0, 0.05),
74
+ 0 12px 26px -16px rgba(31, 79, 135, 0.2);
75
+ }
76
+ :root[data-theme="paper"] .ig-img {
77
+ filter: saturate(0.85) contrast(1.02);
78
+ }
79
+
80
+ /* ---------------------------------------------------------------------------
81
+ * Spotlight — drop the heavy shadow stack
82
+ * ------------------------------------------------------------------------- */
83
+ :root[data-theme="paper"] .sp-focus {
84
+ background: #FFFFFF;
85
+ border: 1px solid var(--accent);
86
+ box-shadow:
87
+ 0 0 0 1px var(--accent-soft),
88
+ 0 16px 40px -22px rgba(31, 79, 135, 0.25);
89
+ }
90
+ :root[data-theme="paper"] .sp-icon {
91
+ color: var(--accent);
92
+ text-shadow: none;
93
+ }
94
+ :root[data-theme="paper"] .sp-heading {
95
+ color: var(--accent);
96
+ }
97
+
98
+ /* ---------------------------------------------------------------------------
99
+ * Marquee — calmer accent row, no green glow
100
+ * ------------------------------------------------------------------------- */
101
+ :root[data-theme="paper"] .marquee {
102
+ mask-image: linear-gradient(90deg, transparent 0, rgba(0,0,0,1) 6%, rgba(0,0,0,1) 94%, transparent 100%);
103
+ }
104
+ :root[data-theme="paper"] .mq-track--b .mq-item {
105
+ color: var(--accent);
106
+ text-shadow: none;
107
+ font-family: var(--mono); /* serif italic emphasis row */
108
+ }