@sproutsocial/seeds-react-narrative-kit 0.6.2 → 0.6.5

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.
@@ -8,14 +8,14 @@ $ tsup --dts && cp src/narrative-container.css dist/narrative-container.css && c
8
8
  CLI Cleaning output folder
9
9
  CJS Build start
10
10
  ESM Build start
11
- ESM dist/esm/index.js 19.45 KB
12
- ESM dist/esm/index.js.map 39.67 KB
13
- ESM ⚡️ Build success in 33ms
14
11
  CJS dist/index.js 23.02 KB
15
12
  CJS dist/index.js.map 41.28 KB
16
- CJS ⚡️ Build success in 33ms
13
+ CJS ⚡️ Build success in 21ms
14
+ ESM dist/esm/index.js 19.45 KB
15
+ ESM dist/esm/index.js.map 39.67 KB
16
+ ESM ⚡️ Build success in 22ms
17
17
  DTS Build start
18
- DTS ⚡️ Build success in 1599ms
18
+ DTS ⚡️ Build success in 1593ms
19
19
  DTS dist/index.d.ts 24.75 KB
20
20
  DTS dist/index.d.mts 24.75 KB
21
- Done in 2.35s.
21
+ Done in 2.31s.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @sproutsocial/seeds-react-narrative-kit
2
2
 
3
+ ## 0.6.5
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [3371484]
8
+ - @sproutsocial/seeds-react-theme@4.4.0
9
+
10
+ ## 0.6.4
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [56661b6]
15
+ - @sproutsocial/seeds-react-theme@4.3.2
16
+
17
+ ## 0.6.3
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies [d8509a3]
22
+ - @sproutsocial/seeds-react-theme@4.3.1
23
+
3
24
  ## 0.6.2
4
25
 
5
26
  ### Patch Changes
package/README.md CHANGED
@@ -20,8 +20,8 @@ import { NarrativeContainer } from "@sproutsocial/racine";
20
20
 
21
21
  ## Exported primitives
22
22
 
23
- | Primitive | Description |
24
- | -------------------- | ------------------------------------------------------------------------------------ |
23
+ | Primitive | Description |
24
+ | -------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
25
25
  | `NarrativeContainer` | Foundational surface/card with a content slot and a top-left gradient accent border. Accepts standard `className` / `style`. |
26
26
 
27
27
  ## Adding a new primitive
@@ -11,29 +11,27 @@
11
11
  */
12
12
 
13
13
  @layer components {
14
-
15
- .seeds-ai-container {
16
- position: relative;
17
- overflow: hidden;
18
- box-sizing: border-box;
19
- border-radius: var(--radius-800);
20
- box-shadow: var(--shadow-low);
21
- font-family: var(--font-family);
22
- /* Subtle (default): the 20% AI gradient tint composited over the base
14
+ .seeds-ai-container {
15
+ position: relative;
16
+ overflow: hidden;
17
+ box-sizing: border-box;
18
+ border-radius: var(--radius-800);
19
+ box-shadow: var(--shadow-low);
20
+ font-family: var(--font-family);
21
+ /* Subtle (default): the 20% AI gradient tint composited over the base
23
22
  surface. --color-gradient-ai-subtle is already translucent, so layering it
24
23
  over the opaque base color produces the soft wash. */
25
- background-color: var(--color-container-bg-base);
26
- background-image: var(--color-gradient-ai-subtle);
27
- color: var(--color-text-headline);
28
- }
24
+ background-color: var(--color-container-bg-base);
25
+ background-image: var(--color-gradient-ai-subtle);
26
+ color: var(--color-text-headline);
27
+ }
29
28
 
30
- /* Vivid: the full-saturation AI gradient with white content. White has no
29
+ /* Vivid: the full-saturation AI gradient with white content. White has no
31
30
  semantic Seeds token; it is part of the AI gradient treatment (mirrors the
32
31
  raw brand hex used in --color-gradient-ai). */
33
- .seeds-ai-container-vivid {
34
- background-color: transparent;
35
- background-image: var(--color-gradient-ai);
36
- color: #fff;
37
- }
38
-
32
+ .seeds-ai-container-vivid {
33
+ background-color: transparent;
34
+ background-image: var(--color-gradient-ai);
35
+ color: #fff;
36
+ }
39
37
  }
@@ -10,28 +10,26 @@
10
10
  */
11
11
 
12
12
  @layer components {
13
-
14
- /* A solid gray pill matching the design: background and border are both the
13
+ /* A solid gray pill matching the design: background and border are both the
15
14
  #dee1e1 container-border-base token, which also tracks dark mode. The two
16
15
  pixel literals below have no exact theme token — the --space scale skips 6px
17
16
  (4px→8px) and the --font-size scale skips 12px (11px→13px) — so the design's
18
17
  values are kept verbatim. All colors use tokens. */
19
- .seeds-eyebrow-token {
20
- box-sizing: border-box;
21
- display: inline-flex;
22
- align-items: center;
23
- justify-content: center;
24
- gap: var(--space-100); /* 2px */
25
- padding: var(--space-100) var(--space-300); /* 2px / 8px */
26
- border: 1px solid var(--color-container-border-base); /* #dee1e1 */
27
- border-radius: var(--radius-500); /* 6px */
28
- background-color: var(--color-container-border-base); /* #dee1e1 */
29
- font-family: var(--font-family);
30
- font-size: 12px; /* text-sm */
31
- line-height: 20px;
32
- font-weight: var(--font-weight-normal);
33
- color: var(--color-text-body);
34
- white-space: nowrap;
35
- }
36
-
18
+ .seeds-eyebrow-token {
19
+ box-sizing: border-box;
20
+ display: inline-flex;
21
+ align-items: center;
22
+ justify-content: center;
23
+ gap: var(--space-100); /* 2px */
24
+ padding: var(--space-100) var(--space-300); /* 2px / 8px */
25
+ border: 1px solid var(--color-container-border-base); /* #dee1e1 */
26
+ border-radius: var(--radius-500); /* 6px */
27
+ background-color: var(--color-container-border-base); /* #dee1e1 */
28
+ font-family: var(--font-family);
29
+ font-size: 12px; /* text-sm */
30
+ line-height: 20px;
31
+ font-weight: var(--font-weight-normal);
32
+ color: var(--color-text-body);
33
+ white-space: nowrap;
34
+ }
37
35
  }
@@ -13,165 +13,173 @@
13
13
  */
14
14
 
15
15
  @layer components {
16
-
17
- .seeds-metric-highlight {
18
- box-sizing: border-box;
19
- display: flex;
20
- /* Wrap the fixed-width chart onto its own line when the metric block + chart
16
+ .seeds-metric-highlight {
17
+ box-sizing: border-box;
18
+ display: flex;
19
+ /* Wrap the fixed-width chart onto its own line when the metric block + chart
21
20
  can't sit side by side (narrow cards / mobile). The metric block claims its
22
21
  min-content width below, so a cramped row drops the chart down rather than
23
22
  overflowing the card and getting clipped by the container. */
24
- flex-wrap: wrap;
25
- align-items: flex-start;
26
- gap: var(--space-350); /* 12px */
27
- border-radius: var(--radius-800); /* 12px */
28
- font-family: var(--font-family);
29
- /* Container (default): a padded gray app surface (matches the design's
23
+ flex-wrap: wrap;
24
+ align-items: flex-start;
25
+ gap: var(--space-350); /* 12px */
26
+ border-radius: var(--radius-800); /* 12px */
27
+ font-family: var(--font-family);
28
+ /* Container (default): a padded gray app surface (matches the design's
30
29
  #f3f4f4 box). `-bare` strips it. */
31
- padding: var(--space-400) var(--space-450); /* 16px / 24px */
32
- background-color: var(--color-app-bg-base);
33
- }
34
-
35
- .seeds-metric-highlight-bare {
36
- padding: 0;
37
- background-color: transparent;
38
- }
39
-
40
- .seeds-metric-highlight-vertical {
41
- flex-direction: column;
42
- }
43
-
44
- /* The metric block: label + value/trend. Grows to fill the row in horizontal. */
45
- .seeds-metric-highlight-metric {
46
- box-sizing: border-box;
47
- display: flex;
48
- flex-direction: column;
49
- align-items: flex-start;
50
- gap: var(--space-200); /* 4px */
51
- /* Grow to fill the row, but never shrink below the metric's own content
30
+ padding: var(--space-400) var(--space-450); /* 16px / 24px */
31
+ background-color: var(--color-app-bg-base);
32
+ }
33
+
34
+ .seeds-metric-highlight-bare {
35
+ padding: 0;
36
+ background-color: transparent;
37
+ }
38
+
39
+ .seeds-metric-highlight-vertical {
40
+ flex-direction: column;
41
+ }
42
+
43
+ /* The metric block: label + value/trend. Grows to fill the row in horizontal. */
44
+ .seeds-metric-highlight-metric {
45
+ box-sizing: border-box;
46
+ display: flex;
47
+ flex-direction: column;
48
+ align-items: flex-start;
49
+ gap: var(--space-200); /* 4px */
50
+ /* Grow to fill the row, but never shrink below the metric's own content
52
51
  (the nowrap value + trend pill). That min-content floor is what forces the
53
52
  chart to wrap below on narrow cards instead of the row overflowing. */
54
- flex: 1 1 auto;
55
- min-width: min-content;
56
- }
57
-
58
- .seeds-metric-highlight-vertical .seeds-metric-highlight-metric {
59
- width: 100%;
60
- flex: 0 0 auto;
61
- }
62
-
63
- /* Small: label and value collapse onto a single centered row. */
64
- .seeds-metric-highlight-small .seeds-metric-highlight-metric {
65
- flex-direction: row;
66
- align-items: center;
67
- gap: var(--space-300); /* 8px */
68
- }
69
-
70
- .seeds-metric-highlight-label {
71
- margin: 0;
72
- font-size: var(--font-size-300); /* 16px */
73
- line-height: var(--line-height-400); /* ~28px */
74
- font-weight: var(--font-weight-normal);
75
- color: var(--color-text-body);
76
- overflow-wrap: break-word;
77
- }
78
-
79
- /* In small, the label takes the slack so the value/trend align to the end. */
80
- .seeds-metric-highlight-small .seeds-metric-highlight-label {
81
- flex: 1 0 0;
82
- min-width: 0;
83
- }
84
-
85
- .seeds-metric-highlight-value-row {
86
- display: flex;
87
- flex-wrap: wrap; /* trend pill drops under the value on very narrow cards */
88
- align-items: center;
89
- gap: var(--space-300); /* 8px */
90
- }
91
-
92
- .seeds-metric-highlight-small .seeds-metric-highlight-value-row {
93
- justify-content: flex-end;
94
- }
95
-
96
- .seeds-metric-highlight-value {
97
- margin: 0;
98
- /* No mono token exists yet; fall back to a system monospace stack. Mirrors the
53
+ flex: 1 1 auto;
54
+ min-width: min-content;
55
+ }
56
+
57
+ .seeds-metric-highlight-vertical .seeds-metric-highlight-metric {
58
+ width: 100%;
59
+ flex: 0 0 auto;
60
+ }
61
+
62
+ /* Small: label and value collapse onto a single centered row. */
63
+ .seeds-metric-highlight-small .seeds-metric-highlight-metric {
64
+ flex-direction: row;
65
+ align-items: center;
66
+ gap: var(--space-300); /* 8px */
67
+ }
68
+
69
+ .seeds-metric-highlight-label {
70
+ margin: 0;
71
+ font-size: var(--font-size-300); /* 16px */
72
+ line-height: var(--line-height-400); /* ~28px */
73
+ font-weight: var(--font-weight-normal);
74
+ color: var(--color-text-body);
75
+ overflow-wrap: break-word;
76
+ }
77
+
78
+ /* In small, the label takes the slack so the value/trend align to the end. */
79
+ .seeds-metric-highlight-small .seeds-metric-highlight-label {
80
+ flex: 1 0 0;
81
+ min-width: 0;
82
+ }
83
+
84
+ .seeds-metric-highlight-value-row {
85
+ display: flex;
86
+ flex-wrap: wrap; /* trend pill drops under the value on very narrow cards */
87
+ align-items: center;
88
+ gap: var(--space-300); /* 8px */
89
+ }
90
+
91
+ .seeds-metric-highlight-small .seeds-metric-highlight-value-row {
92
+ justify-content: flex-end;
93
+ }
94
+
95
+ .seeds-metric-highlight-value {
96
+ margin: 0;
97
+ /* No mono token exists yet; fall back to a system monospace stack. Mirrors the
99
98
  font/font-mono treatment in the design. */
100
- font-family: var(--font-family-mono, ui-monospace, "SF Mono", SFMono-Regular, Menlo, monospace);
101
- font-size: var(--font-size-700); /* 32px */
102
- line-height: var(--line-height-700); /* 40px */
103
- font-weight: var(--font-weight-bold);
104
- color: var(--color-text-headline);
105
- white-space: nowrap;
106
- }
107
-
108
- .seeds-metric-highlight-small .seeds-metric-highlight-value {
109
- font-size: var(--font-size-600); /* 24px */
110
- line-height: var(--line-height-600); /* 32px */
111
- }
112
-
113
- /* Trend badge — a rounded pill. Up is the positive (green) treatment; down
99
+ font-family: var(
100
+ --font-family-mono,
101
+ ui-monospace,
102
+ "SF Mono",
103
+ SFMono-Regular,
104
+ Menlo,
105
+ monospace
106
+ );
107
+ font-size: var(--font-size-700); /* 32px */
108
+ line-height: var(--line-height-700); /* 40px */
109
+ font-weight: var(--font-weight-bold);
110
+ color: var(--color-text-headline);
111
+ white-space: nowrap;
112
+ }
113
+
114
+ .seeds-metric-highlight-small .seeds-metric-highlight-value {
115
+ font-size: var(--font-size-600); /* 24px */
116
+ line-height: var(--line-height-600); /* 32px */
117
+ }
118
+
119
+ /* Trend badge — a rounded pill. Up is the positive (green) treatment; down
114
120
  swaps to the negative (red) treatment. Color flows to the arrow + value via
115
121
  currentColor. */
116
- .seeds-metric-highlight-trend {
117
- display: inline-flex;
118
- align-items: center;
119
- gap: var(--space-200); /* 4px */
120
- padding: var(--space-100) var(--space-300); /* 2px / 8px */
121
- border-radius: 999px;
122
- font-size: var(--font-size-200); /* 13px */
123
- line-height: var(--line-height-200);
124
- font-weight: var(--font-weight-bold);
125
- white-space: nowrap;
126
- background-color: var(--color-container-bg-decorative-green);
127
- color: var(--color-text-decorative-green);
128
- }
129
-
130
- .seeds-metric-highlight-trend-down {
131
- background-color: var(--color-container-bg-decorative-red);
132
- color: var(--color-text-decorative-red);
133
- }
134
-
135
- .seeds-metric-highlight-trend-arrow {
136
- flex: 0 0 auto;
137
- width: 1em;
138
- height: 1em;
139
- stroke: currentColor;
140
- stroke-width: 1.5;
141
- }
142
-
143
- /* Slot for an injected chart (e.g. a data-viz SparklineChart). Layout only — no
122
+ .seeds-metric-highlight-trend {
123
+ display: inline-flex;
124
+ align-items: center;
125
+ gap: var(--space-200); /* 4px */
126
+ padding: var(--space-100) var(--space-300); /* 2px / 8px */
127
+ border-radius: 999px;
128
+ font-size: var(--font-size-200); /* 13px */
129
+ line-height: var(--line-height-200);
130
+ font-weight: var(--font-weight-bold);
131
+ white-space: nowrap;
132
+ background-color: var(--color-container-bg-decorative-green);
133
+ color: var(--color-text-decorative-green);
134
+ }
135
+
136
+ .seeds-metric-highlight-trend-down {
137
+ background-color: var(--color-container-bg-decorative-red);
138
+ color: var(--color-text-decorative-red);
139
+ }
140
+
141
+ .seeds-metric-highlight-trend-arrow {
142
+ flex: 0 0 auto;
143
+ width: 1em;
144
+ height: 1em;
145
+ stroke: currentColor;
146
+ stroke-width: 1.5;
147
+ }
148
+
149
+ /* Slot for an injected chart (e.g. a data-viz SparklineChart). Layout only — no
144
150
  stroke/background styling, so the injected chart controls its own look. Heights
145
151
  are explicit (never percentage/stretch) so a Highcharts chart always measures a
146
152
  concrete container instead of falling back to its 400px default. */
147
- .seeds-metric-highlight-chart {
148
- box-sizing: border-box;
149
- flex: 0 0 auto;
150
- align-self: center;
151
- /* Center the injected chart as a flex item — an inline/inline-block child
153
+ .seeds-metric-highlight-chart {
154
+ box-sizing: border-box;
155
+ flex: 0 0 auto;
156
+ align-self: center;
157
+ /* Center the injected chart as a flex item — an inline/inline-block child
152
158
  (e.g. the data-viz SparklineChart) otherwise sits on the text baseline with
153
159
  descender space below it, reading as vertically off-center in the slot. */
154
- display: flex;
155
- align-items: center;
156
- }
157
-
158
- .seeds-metric-highlight:not(.seeds-metric-highlight-vertical) .seeds-metric-highlight-chart {
159
- width: 104px;
160
- height: 48px;
161
- }
162
-
163
- .seeds-metric-highlight-small:not(.seeds-metric-highlight-vertical) .seeds-metric-highlight-chart {
164
- width: 88px;
165
- height: 40px;
166
- }
167
-
168
- .seeds-metric-highlight-vertical .seeds-metric-highlight-chart {
169
- width: 100%;
170
- height: 96px;
171
- }
172
-
173
- .seeds-metric-highlight-vertical.seeds-metric-highlight-small .seeds-metric-highlight-chart {
174
- height: 56px;
175
- }
176
-
160
+ display: flex;
161
+ align-items: center;
162
+ }
163
+
164
+ .seeds-metric-highlight:not(.seeds-metric-highlight-vertical)
165
+ .seeds-metric-highlight-chart {
166
+ width: 104px;
167
+ height: 48px;
168
+ }
169
+
170
+ .seeds-metric-highlight-small:not(.seeds-metric-highlight-vertical)
171
+ .seeds-metric-highlight-chart {
172
+ width: 88px;
173
+ height: 40px;
174
+ }
175
+
176
+ .seeds-metric-highlight-vertical .seeds-metric-highlight-chart {
177
+ width: 100%;
178
+ height: 96px;
179
+ }
180
+
181
+ .seeds-metric-highlight-vertical.seeds-metric-highlight-small
182
+ .seeds-metric-highlight-chart {
183
+ height: 56px;
184
+ }
177
185
  }
@@ -14,43 +14,41 @@
14
14
  */
15
15
 
16
16
  @layer components {
17
+ /* Main container — horizontal layout with avatar, social icon, and user name. */
18
+ .seeds-narrative-attribution {
19
+ box-sizing: border-box;
20
+ display: flex;
21
+ align-items: center;
22
+ gap: var(--space-300); /* 8px */
23
+ font-family: var(--font-family);
24
+ }
17
25
 
18
- /* Main containerhorizontal layout with avatar, social icon, and user name. */
19
- .seeds-narrative-attribution {
20
- box-sizing: border-box;
21
- display: flex;
22
- align-items: center;
23
- gap: var(--space-300); /* 8px */;
24
- font-family: var(--font-family);
25
- }
26
-
27
- /* Circular avatar image — fixed size with rounded corners. */
28
- .seeds-narrative-attribution-avatar {
29
- width: var(--space-450); /* 24px */
30
- height: var(--space-450); /* 24px */
31
- border-radius: var(--radius-circular); /* 50% */
32
- object-fit: cover;
33
- flex-shrink: 0;
34
- }
26
+ /* Circular avatar image fixed size with rounded corners. */
27
+ .seeds-narrative-attribution-avatar {
28
+ width: var(--space-450); /* 24px */
29
+ height: var(--space-450); /* 24px */
30
+ border-radius: var(--radius-circular); /* 50% */
31
+ object-fit: cover;
32
+ flex-shrink: 0;
33
+ }
35
34
 
36
- /* Social network icon container — flexible sizing for partner logos. */
37
- .seeds-narrative-attribution-social-icon {
38
- flex-shrink: 0;
39
- display: flex;
40
- align-items: center;
41
- justify-content: center;
42
- }
43
-
44
- /* User name text — bold headline text with ellipsis overflow. */
45
- .seeds-narrative-attribution-user-name {
46
- overflow: hidden;
47
- color: var(--color-text-headline);
48
- text-overflow: ellipsis;
49
- font-family: var(--font-family);
50
- font-size: var(--text-base-font-size, 14px);
51
- font-style: normal;
52
- font-weight: var(--font-weight-bold, 700);
53
- line-height: var(--text-base-line-height, 24px);
54
- }
35
+ /* Social network icon container — flexible sizing for partner logos. */
36
+ .seeds-narrative-attribution-social-icon {
37
+ flex-shrink: 0;
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ }
55
42
 
43
+ /* User name text — bold headline text with ellipsis overflow. */
44
+ .seeds-narrative-attribution-user-name {
45
+ overflow: hidden;
46
+ color: var(--color-text-headline);
47
+ text-overflow: ellipsis;
48
+ font-family: var(--font-family);
49
+ font-size: var(--text-base-font-size, 14px);
50
+ font-style: normal;
51
+ font-weight: var(--font-weight-bold, 700);
52
+ line-height: var(--text-base-line-height, 24px);
53
+ }
56
54
  }
@@ -10,22 +10,21 @@
10
10
  */
11
11
 
12
12
  @layer components {
13
+ .seeds-narrative-container {
14
+ position: relative;
15
+ overflow: hidden;
16
+ box-sizing: border-box;
17
+ display: flex;
18
+ flex-direction: column;
19
+ align-items: stretch;
20
+ padding: var(--space-500);
21
+ border-radius: var(--radius-800);
22
+ box-shadow: var(--shadow-low);
23
+ background-color: var(--color-container-bg-base);
24
+ font-family: var(--font-family);
25
+ }
13
26
 
14
- .seeds-narrative-container {
15
- position: relative;
16
- overflow: hidden;
17
- box-sizing: border-box;
18
- display: flex;
19
- flex-direction: column;
20
- align-items: stretch;
21
- padding: var(--space-500);
22
- border-radius: var(--radius-800);
23
- box-shadow: var(--shadow-low);
24
- background-color: var(--color-container-bg-base);
25
- font-family: var(--font-family);
26
- }
27
-
28
- /* Grid and flex items default to `min-width: auto`, so they never shrink below
27
+ /* Grid and flex items default to `min-width: auto`, so they never shrink below
29
28
  their own min-content. A wide row of widgets (a metric grid, a card grid) then
30
29
  forces its column wider than the padded surface — and since the container clips
31
30
  with overflow:hidden, the excess is cut off at the edge, eating the right-hand
@@ -38,37 +37,35 @@
38
37
  default. Any component that needs a real floor (e.g. the data callout's 270px
39
38
  donut slot) sets its own min-width via a plain class and always wins, instead
40
39
  of racing this rule on source order. */
41
- :where(.seeds-narrative-container),
42
- :where(.seeds-narrative-container *) {
43
- min-width: 0;
44
- }
40
+ :where(.seeds-narrative-container),
41
+ :where(.seeds-narrative-container *) {
42
+ min-width: 0;
43
+ }
45
44
 
46
- /* Decorative inner gradient border anchored to the top-left corner.
45
+ /* Decorative inner gradient border anchored to the top-left corner.
47
46
  A masked ::before so the gradient renders as a uniform-width ring that follows
48
47
  border-radius and never tints the content. The radial ellipse fades to
49
48
  transparent away from the corner; its x-radius (80%) is larger than its
50
49
  y-radius (60%) so the accent runs slightly further along the top edge than down
51
50
  the left edge. Brand stops mirror --color-gradient-ai — tokenize to a
52
51
  --color-gradient-* token once one exists for a fade-to-transparent variant. */
53
- .seeds-narrative-container-accent::before {
54
- content: "";
55
- position: absolute;
56
- inset: 0;
57
- border-radius: inherit;
58
- padding: 4px;
59
- background: radial-gradient(
60
- ellipse 80% 60% at top left,
61
- #205bc3 0%,
62
- #9747ff 28%,
63
- #f282f5 50%,
64
- transparent 72%
65
- );
66
- -webkit-mask:
67
- linear-gradient(#fff 0 0) content-box,
68
- linear-gradient(#fff 0 0);
69
- -webkit-mask-composite: xor;
70
- mask-composite: exclude;
71
- pointer-events: none;
72
- }
73
-
52
+ .seeds-narrative-container-accent::before {
53
+ content: "";
54
+ position: absolute;
55
+ inset: 0;
56
+ border-radius: inherit;
57
+ padding: 4px;
58
+ background: radial-gradient(
59
+ ellipse 80% 60% at top left,
60
+ #205bc3 0%,
61
+ #9747ff 28%,
62
+ #f282f5 50%,
63
+ transparent 72%
64
+ );
65
+ -webkit-mask: linear-gradient(#fff 0 0) content-box,
66
+ linear-gradient(#fff 0 0);
67
+ -webkit-mask-composite: xor;
68
+ mask-composite: exclude;
69
+ pointer-events: none;
70
+ }
74
71
  }